Browse Source

llvmdbg: remove some commented dbgdwarf code

Also adjusted some hashtable sizes
Jonas Maebe 3 years ago
parent
commit
481741c65b
1 changed files with 15 additions and 197 deletions
  1. 15 197
      compiler/llvm/dbgllvm.pas

+ 15 - 197
compiler/llvm/dbgllvm.pas

@@ -153,45 +153,6 @@ interface
         procedure insertlineinfo(list:TAsmList);override;
         procedure insertlineinfo(list:TAsmList);override;
         function  dwarf_version: Word; virtual; abstract;
         function  dwarf_version: Word; virtual; abstract;
       end;
       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
 implementation
 
 
@@ -204,15 +165,6 @@ implementation
       llvminfo,llvmbase,aasmllvm
       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}
 {$push}
 {$scopedenums on}
 {$scopedenums on}
     type
     type
@@ -430,8 +382,8 @@ implementation
         fretainedtypes:=nil;
         fretainedtypes:=nil;
         fcunode:=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);
         flexicalblockfilemeta:=thashset.Create(100,true,false);
         fdefmeta:=TLLVMMetaDefHashSet.Create(10000,true,false);
         fdefmeta:=TLLVMMetaDefHashSet.Create(10000,true,false);
 
 
@@ -490,6 +442,8 @@ implementation
       end;
       end;
 
 
     procedure TDebugInfoLLVM.resetfornewmodule;
     procedure TDebugInfoLLVM.resetfornewmodule;
+      var
+        i: longint;
       begin
       begin
         { for LLVM, we need to generate the procdef type info (or at least
         { for LLVM, we need to generate the procdef type info (or at least
           temporary references to it) already during the generation of the line
           temporary references to it) already during the generation of the line
@@ -503,7 +457,14 @@ implementation
         ffilemeta.Clear;
         ffilemeta.Clear;
         flocationmeta.Clear;
         flocationmeta.Clear;
         flexicalblockfilemeta.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;
         defnumberlist.Clear;
         deftowritelist.Clear;
         deftowritelist.Clear;
         fcunode:=nil;
         fcunode:=nil;
@@ -952,7 +913,6 @@ implementation
 
 
 //        def.symtable.symList.ForEachCall(@enum_membersyms_callback,dinode);
 //        def.symtable.symList.ForEachCall(@enum_membersyms_callback,dinode);
         write_symtable_procdefs(current_asmdata.asmlists[al_dwarf_info],def.symtable);
         write_symtable_procdefs(current_asmdata.asmlists[al_dwarf_info],def.symtable);
-//        finish_children;
       end;
       end;
 
 
 
 
@@ -2256,119 +2216,15 @@ implementation
         dbgname: string;
         dbgname: string;
 *)
 *)
         vardatatype: ttypesym;
         vardatatype: ttypesym;
-(*
-        bind: tasmsymbind;
-*)
-
       begin
       begin
-(*
-        // FIXME
-        include(current_module.moduleflags,mf_has_dwarf_debuginfo);
         storefilepos:=current_filepos;
         storefilepos:=current_filepos;
         current_filepos:=current_module.mainfilepos;
         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');
         vardatatype:=try_search_system_type('TVARDATA');
         if assigned(vardatatype) then
         if assigned(vardatatype) then
           vardatadef:=trecorddef(vardatatype.typedef);
           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  }
         { write all global/local variables. This will flag all required tdefs  }
         if assigned(current_module.globalsymtable) then
         if assigned(current_module.globalsymtable) then
           write_symtable_syms(current_asmdata.asmlists[al_dwarf_info],current_module.globalsymtable);
           write_symtable_syms(current_asmdata.asmlists[al_dwarf_info],current_module.globalsymtable);
@@ -2395,55 +2251,17 @@ implementation
 
 
         { write defs not written yet }
         { write defs not written yet }
         write_remaining_defs_to_write(current_asmdata.asmlists[al_dwarf_info]);
         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
         for i:=0 to defnumberlist.count-1 do
           begin
           begin
             def := tdef(defnumberlist[i]);
             def := tdef(defnumberlist[i]);
             if assigned(def) then
             if assigned(def) then
               def.dbg_state:=dbg_state_unused;
               def.dbg_state:=dbg_state_unused;
           end;
           end;
-(*
-        fdefmeta.free;
-        fdefmeta:=nil;
-
-        defnumberlist.free;
-        defnumberlist:=nil;
-        deftowritelist.free;
-        deftowritelist:=nil;
 
 
         current_filepos:=storefilepos;
         current_filepos:=storefilepos;
-*)
-
       end;
       end;