llvmdbg: remove some commented dbgdwarf code

Also adjusted some hashtable sizes
This commit is contained in:
Jonas Maebe 2022-05-14 13:59:05 +02:00
parent e8da1d081a
commit 481741c65b

View File

@ -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;