2
0
Эх сурвалжийг харах

* disabled generation of DW_AT_low_pc/DW_AT_high_pc compilation unit
information for Win32, as it doesn't work there due to the way we
name sections on that platform
(http://lists.freepascal.org/lists/fpc-devel/2009-March/016591.html)

git-svn-id: trunk@12918 -

Jonas Maebe 16 жил өмнө
parent
commit
e9dedb7377
1 өөрчлөгдсөн 24 нэмэгдсэн , 15 устгасан
  1. 24 15
      compiler/dbgdwarf.pas

+ 24 - 15
compiler/dbgdwarf.pas

@@ -2254,19 +2254,23 @@ implementation
         fitem : TFileIndexItem;
         flist : TFPList;
       begin
-        { insert .Ltext0 label }
-        templist:=TAsmList.create;
-        new_section(templist,sec_code,'',0);
-        templist.concat(tai_symbol.createname(target_asm.labelprefix+'text0',AT_DATA,0));
-        current_asmdata.asmlists[al_start].insertlist(templist);
-        templist.free;
-
-        { insert .Letext0 label }
-        templist:=TAsmList.create;
-        new_section(templist,sec_code,'',0);
-        templist.concat(tai_symbol.createname(target_asm.labelprefix+'etext0',AT_DATA,0));
-        current_asmdata.asmlists[al_end].insertlist(templist);
-        templist.free;
+        { doesn't work for windows, because it puts no code per module in the .text section }
+        if not(target_info.system in system_all_windows) then
+          begin
+            { insert .Ltext0 label }
+            templist:=TAsmList.create;
+            new_section(templist,sec_code,'',0);
+            templist.concat(tai_symbol.createname(target_asm.labelprefix+'text0',AT_DATA,0));
+            current_asmdata.asmlists[al_start].insertlist(templist);
+            templist.free;
+    
+            { insert .Letext0 label }
+            templist:=TAsmList.create;
+            new_section(templist,sec_code,'',0);
+            templist.concat(tai_symbol.createname(target_asm.labelprefix+'etext0',AT_DATA,0));
+            current_asmdata.asmlists[al_end].insertlist(templist);
+            templist.free;
+          end;
 
         { insert .Ldebug_abbrev0 label }
         templist:=TAsmList.create;
@@ -2513,8 +2517,13 @@ implementation
           append_labelentry_dataptr_rel(DW_AT_stmt_list,
             current_asmdata.RefAsmSymbol(target_asm.labelprefix+'debug_linesection0'),
             current_asmdata.RefAsmSymbol(target_asm.labelprefix+'debug_line0'));
-        append_labelentry(DW_AT_low_pc,current_asmdata.RefAsmSymbol(target_asm.labelprefix+'text0'));
-        append_labelentry(DW_AT_high_pc,current_asmdata.RefAsmSymbol(target_asm.labelprefix+'etext0'));
+
+        { see comments above where these labels are created and inserted }
+        if not(target_info.system in system_all_windows) then
+          begin
+            append_labelentry(DW_AT_low_pc,current_asmdata.RefAsmSymbol(target_asm.labelprefix+'text0'));
+            append_labelentry(DW_AT_high_pc,current_asmdata.RefAsmSymbol(target_asm.labelprefix+'etext0'));
+          end;
 
         finish_entry;