mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 05:08:06 +02:00
llvmdbg: remove some commented dbgdwarf code
Also adjusted some hashtable sizes
This commit is contained in:
parent
e8da1d081a
commit
481741c65b
@ -153,45 +153,6 @@ interface
|
||||
procedure insertlineinfo(list:TAsmList);override;
|
||||
function dwarf_version: Word; virtual; abstract;
|
||||
end;
|
||||
(*
|
||||
{ TDebugInfoDwarf2 }
|
||||
|
||||
TDebugInfoDwarf2 = class(TDebugInfoDwarf)
|
||||
private
|
||||
protected
|
||||
procedure appenddef_set_intern(list:TAsmList;def:tsetdef; force_tag_set: boolean);
|
||||
procedure append_object_struct(def: tobjectdef; const createlabel: boolean; const objectname: PShortString);
|
||||
|
||||
procedure appenddef_file(list:TAsmList;def:tfiledef); override;
|
||||
procedure appenddef_formal(list:TAsmList;def:tformaldef); override;
|
||||
procedure appenddef_object(list:TAsmList;def:tobjectdef); override;
|
||||
procedure appenddef_set(list:TAsmList;def:tsetdef); override;
|
||||
procedure appenddef_undefined(list:TAsmList;def:tundefineddef); override;
|
||||
procedure appenddef_variant(list:TAsmList;def:tvariantdef); override;
|
||||
public
|
||||
function dwarf_version: Word; override;
|
||||
end;
|
||||
|
||||
{ TDebugInfoDwarf3 }
|
||||
|
||||
TDebugInfoDwarf3 = class(TDebugInfoDwarf2)
|
||||
private
|
||||
protected
|
||||
procedure append_labelentry_addr_ref(attr : tdwarf_attribute;sym : tasmsymbol); override;
|
||||
procedure appenddef_array(list:TAsmList;def:tarraydef); override;
|
||||
procedure appenddef_string(list:TAsmList;def:tstringdef);override;
|
||||
procedure appenddef_file(list:TAsmList;def:tfiledef); override;
|
||||
procedure appenddef_formal(list:TAsmList;def:tformaldef); override;
|
||||
procedure appenddef_object(list:TAsmList;def:tobjectdef); override;
|
||||
procedure appenddef_set(list:TAsmList;def: tsetdef); override;
|
||||
procedure appenddef_undefined(list:TAsmList;def:tundefineddef); override;
|
||||
procedure appenddef_variant(list:TAsmList;def:tvariantdef); override;
|
||||
|
||||
function symdebugname(sym:tsym): String; override;
|
||||
public
|
||||
function dwarf_version: Word; override;
|
||||
end;
|
||||
*)
|
||||
|
||||
implementation
|
||||
|
||||
@ -204,15 +165,6 @@ implementation
|
||||
llvminfo,llvmbase,aasmllvm
|
||||
;
|
||||
|
||||
{
|
||||
TFileIndexItem = class(TFPHashObject)
|
||||
private
|
||||
ffilemeta: tai_llvmspecialisedmetadatanode;
|
||||
public
|
||||
constructor Create(AList:TFPHashObjectList; inputfile: TInputFile);
|
||||
property filemeta: tai_llvmspecialisedmetadatanode read ffilemeta;
|
||||
end;
|
||||
}
|
||||
{$push}
|
||||
{$scopedenums on}
|
||||
type
|
||||
@ -430,8 +382,8 @@ implementation
|
||||
fretainedtypes:=nil;
|
||||
fcunode:=nil;
|
||||
|
||||
ffilemeta:=thashset.Create(100,true,false);
|
||||
flocationmeta:=thashset.Create(1000,true,false);
|
||||
ffilemeta:=thashset.Create(10000,true,false);
|
||||
flocationmeta:=thashset.Create(10000,true,false);
|
||||
flexicalblockfilemeta:=thashset.Create(100,true,false);
|
||||
fdefmeta:=TLLVMMetaDefHashSet.Create(10000,true,false);
|
||||
|
||||
@ -490,6 +442,8 @@ implementation
|
||||
end;
|
||||
|
||||
procedure TDebugInfoLLVM.resetfornewmodule;
|
||||
var
|
||||
i: longint;
|
||||
begin
|
||||
{ for LLVM, we need to generate the procdef type info (or at least
|
||||
temporary references to it) already during the generation of the line
|
||||
@ -503,7 +457,14 @@ implementation
|
||||
ffilemeta.Clear;
|
||||
flocationmeta.Clear;
|
||||
flexicalblockfilemeta.Clear;
|
||||
fdefmeta.Clear;
|
||||
fdefmeta.free;
|
||||
{ one item per def, plus some extra space in case of nested types,
|
||||
externally used types etc (it will grow further if necessary) }
|
||||
i:=current_module.localsymtable.DefList.count*4;
|
||||
if assigned(current_module.globalsymtable) then
|
||||
inc(i,current_module.globalsymtable.DefList.count*2);
|
||||
fdefmeta:=TLLVMMetaDefHashSet.Create(i,true,false);
|
||||
|
||||
defnumberlist.Clear;
|
||||
deftowritelist.Clear;
|
||||
fcunode:=nil;
|
||||
@ -952,7 +913,6 @@ implementation
|
||||
|
||||
// def.symtable.symList.ForEachCall(@enum_membersyms_callback,dinode);
|
||||
write_symtable_procdefs(current_asmdata.asmlists[al_dwarf_info],def.symtable);
|
||||
// finish_children;
|
||||
end;
|
||||
|
||||
|
||||
@ -2256,119 +2216,15 @@ implementation
|
||||
dbgname: string;
|
||||
*)
|
||||
vardatatype: ttypesym;
|
||||
(*
|
||||
bind: tasmsymbind;
|
||||
*)
|
||||
|
||||
begin
|
||||
(*
|
||||
// FIXME
|
||||
include(current_module.moduleflags,mf_has_dwarf_debuginfo);
|
||||
storefilepos:=current_filepos;
|
||||
current_filepos:=current_module.mainfilepos;
|
||||
|
||||
if assigned(fdefmeta) then
|
||||
internalerror(2015100301);
|
||||
{ one item per def, plus some extra space in case of nested types,
|
||||
externally used types etc (it will grow further if necessary) }
|
||||
i:=current_module.localsymtable.DefList.count*4;
|
||||
if assigned(current_module.globalsymtable) then
|
||||
inc(i,current_module.globalsymtable.DefList.count*2);
|
||||
fdefmeta:=TLLVMMetaDefHashSet.Create(i,true,false);
|
||||
|
||||
defnumberlist:=TFPObjectList.create(false);
|
||||
deftowritelist:=TFPObjectList.create(false);
|
||||
|
||||
{ not exported (FK)
|
||||
FILEREC
|
||||
TEXTREC
|
||||
}
|
||||
*)
|
||||
vardatatype:=try_search_system_type('TVARDATA');
|
||||
if assigned(vardatatype) then
|
||||
vardatadef:=trecorddef(vardatatype.typedef);
|
||||
|
||||
(*
|
||||
current_asmdata.getlabel(lenstartlabel,alt_dbgfile);
|
||||
{ size }
|
||||
if use_64bit_headers then
|
||||
current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_32bit_unaligned(longint($FFFFFFFF)));
|
||||
current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_rel_sym(offsetreltype,
|
||||
lenstartlabel,current_asmdata.DefineAsmSymbol(target_asm.labelprefix+'edebug_info0',AB_LOCAL,AT_METADATA,voidpointertype)));
|
||||
|
||||
current_asmdata.asmlists[al_dwarf_info].concat(tai_label.create(lenstartlabel));
|
||||
{ version }
|
||||
current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_16bit_unaligned(dwarf_version));
|
||||
{ abbrev table (=relative from section start)}
|
||||
if not(tf_dwarf_relative_addresses in target_info.flags) then
|
||||
current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_type_sym(offsetabstype,
|
||||
current_asmdata.DefineAsmSymbol(target_asm.labelprefix+'debug_abbrev0',AB_LOCAL,AT_METADATA,voidpointertype)))
|
||||
else
|
||||
current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_rel_sym(offsetreltype,
|
||||
current_asmdata.DefineAsmSymbol(target_asm.labelprefix+'debug_abbrevsection0',AB_LOCAL,AT_METADATA,voidpointertype),
|
||||
current_asmdata.DefineAsmSymbol(target_asm.labelprefix+'debug_abbrev0',AB_LOCAL,AT_METADATA,voidpointertype)));
|
||||
|
||||
{ address size }
|
||||
current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_8bit(sizeof(pint)));
|
||||
|
||||
{ first manadatory compilation unit TAG }
|
||||
append_entry(DW_TAG_compile_unit,true,[
|
||||
DW_AT_name,DW_FORM_string,relative_dwarf_path(current_module.sourcefiles.get_file(1).path+current_module.sourcefiles.get_file(1).name)+#0,
|
||||
DW_AT_producer,DW_FORM_string,'Free Pascal '+full_version_string+' '+date_string+#0,
|
||||
DW_AT_comp_dir,DW_FORM_string,BSToSlash(FixPath(GetCurrentDir,false))+#0,
|
||||
DW_AT_language,DW_FORM_data1,lang,
|
||||
DW_AT_identifier_case,DW_FORM_data1,DW_ID_case_insensitive]);
|
||||
|
||||
{$ifdef i8086}
|
||||
case current_settings.x86memorymodel of
|
||||
mm_tiny,
|
||||
mm_small:
|
||||
append_attribute(DW_AT_WATCOM_memory_model,DW_FORM_data1,[DW_WATCOM_MEMORY_MODEL_small]);
|
||||
mm_medium:
|
||||
append_attribute(DW_AT_WATCOM_memory_model,DW_FORM_data1,[DW_WATCOM_MEMORY_MODEL_medium]);
|
||||
mm_compact:
|
||||
append_attribute(DW_AT_WATCOM_memory_model,DW_FORM_data1,[DW_WATCOM_MEMORY_MODEL_compact]);
|
||||
mm_large:
|
||||
append_attribute(DW_AT_WATCOM_memory_model,DW_FORM_data1,[DW_WATCOM_MEMORY_MODEL_large]);
|
||||
mm_huge:
|
||||
append_attribute(DW_AT_WATCOM_memory_model,DW_FORM_data1,[DW_WATCOM_MEMORY_MODEL_huge]);
|
||||
end;
|
||||
{$endif i8086}
|
||||
|
||||
{ reference to line info section }
|
||||
if not(tf_dwarf_relative_addresses in target_info.flags) then
|
||||
append_labelentry_dataptr_abs(DW_AT_stmt_list,current_asmdata.DefineAsmSymbol(target_asm.labelprefix+'debug_line0',AB_LOCAL,AT_METADATA,voidpointertype))
|
||||
else
|
||||
append_labelentry_dataptr_rel(DW_AT_stmt_list,
|
||||
current_asmdata.DefineAsmSymbol(target_asm.labelprefix+'debug_linesection0',AB_LOCAL,AT_METADATA,voidpointertype),
|
||||
current_asmdata.DefineAsmSymbol(target_asm.labelprefix+'debug_line0',AB_LOCAL,AT_METADATA,voidpointertype));
|
||||
|
||||
if (m_objectivec1 in current_settings.modeswitches) then
|
||||
append_attribute(DW_AT_APPLE_major_runtime_vers,DW_FORM_data1,[1]);
|
||||
|
||||
if target_info.system in systems_wasm then
|
||||
begin
|
||||
append_attribute(DW_AT_low_pc,DW_FORM_data4,[0]);
|
||||
{ todo: append DW_AT_ranges }
|
||||
end
|
||||
else
|
||||
begin
|
||||
dbgname:=make_mangledname('DEBUGSTART',current_module.localsymtable,'');
|
||||
if (target_info.system in systems_darwin) then
|
||||
begin
|
||||
bind:=AB_LOCAL;
|
||||
dbgname:='L'+dbgname;
|
||||
end
|
||||
else
|
||||
bind:=AB_GLOBAL;
|
||||
append_labelentry(DW_AT_low_pc,current_asmdata.DefineAsmSymbol(dbgname,bind,AT_METADATA,voidpointertype));
|
||||
dbgname:=make_mangledname('DEBUGEND',current_module.localsymtable,'');
|
||||
if (target_info.system in systems_darwin) then
|
||||
dbgname:='L'+dbgname;
|
||||
append_labelentry(DW_AT_high_pc,current_asmdata.DefineAsmSymbol(dbgname,bind,AT_METADATA,voidpointertype));
|
||||
end;
|
||||
|
||||
finish_entry;
|
||||
|
||||
{ write all global/local variables. This will flag all required tdefs }
|
||||
if assigned(current_module.globalsymtable) then
|
||||
write_symtable_syms(current_asmdata.asmlists[al_dwarf_info],current_module.globalsymtable);
|
||||
@ -2395,55 +2251,17 @@ implementation
|
||||
|
||||
{ write defs not written yet }
|
||||
write_remaining_defs_to_write(current_asmdata.asmlists[al_dwarf_info]);
|
||||
(*
|
||||
{ close compilation unit entry }
|
||||
finish_children;
|
||||
|
||||
{ end of debug info table }
|
||||
current_asmdata.asmlists[al_dwarf_info].concat(tai_symbol.createname(target_asm.labelprefix+'edebug_info0',AT_METADATA,0,voidpointertype));
|
||||
|
||||
{ end of abbrev table }
|
||||
current_asmdata.asmlists[al_dwarf_abbrev].concat(tai_const.create_8bit(0));
|
||||
|
||||
if not(target_info.system in systems_darwin) then
|
||||
begin
|
||||
{ end of aranges table }
|
||||
{$ifdef i8086}
|
||||
{ 32-bit offset }
|
||||
current_asmdata.asmlists[al_dwarf_aranges].concat(tai_const.Create_32bit_unaligned(0));
|
||||
{ 16-bit segment }
|
||||
current_asmdata.asmlists[al_dwarf_aranges].concat(tai_const.Create_16bit_unaligned(0));
|
||||
{ 32-bit length }
|
||||
current_asmdata.asmlists[al_dwarf_aranges].concat(tai_const.Create_32bit_unaligned(0));
|
||||
{$else i8086}
|
||||
{ offset }
|
||||
current_asmdata.asmlists[al_dwarf_aranges].concat(tai_const.Create_aint(0));
|
||||
{ length }
|
||||
current_asmdata.asmlists[al_dwarf_aranges].concat(tai_const.Create_aint(0));
|
||||
{$endif i8086}
|
||||
current_asmdata.asmlists[al_dwarf_aranges].concat(tai_symbol.createname(target_asm.labelprefix+'earanges0',AT_METADATA,0,voidpointertype));
|
||||
end;
|
||||
*)
|
||||
|
||||
{ reset all def debug states }
|
||||
{ reset all def debug states for LLVMTypeInfo (which also uses this
|
||||
field, to track for which types type info has been inserted already }
|
||||
for i:=0 to defnumberlist.count-1 do
|
||||
begin
|
||||
def := tdef(defnumberlist[i]);
|
||||
if assigned(def) then
|
||||
def.dbg_state:=dbg_state_unused;
|
||||
end;
|
||||
(*
|
||||
fdefmeta.free;
|
||||
fdefmeta:=nil;
|
||||
|
||||
defnumberlist.free;
|
||||
defnumberlist:=nil;
|
||||
deftowritelist.free;
|
||||
deftowritelist:=nil;
|
||||
|
||||
current_filepos:=storefilepos;
|
||||
*)
|
||||
|
||||
end;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user