Browse Source

+ "set" support in dwarf debug info if compiler is compiled with
-dGDB_SUPPORTS_DWARF_SETS (not default, because supported only as of
gdb 6.6, and earlier versions refuse to debug programs containing
DW_TAG_set_type tags)

git-svn-id: trunk@7957 -

Jonas Maebe 18 years ago
parent
commit
9fedea7b9f
1 changed files with 15 additions and 0 deletions
  1. 15 0
      compiler/dbgdwarf.pas

+ 15 - 0
compiler/dbgdwarf.pas

@@ -2782,6 +2782,20 @@ implementation
 
     procedure TDebugInfoDwarf2.appenddef_set(def: tsetdef);
       begin
+{$ifdef GDB_SUPPORTS_DWARF_SETS}
+        { current (20070704 -- patch was committed on 20060513) gdb cvs supports set types }
+
+        if assigned(def.typesym) then
+          append_entry(DW_TAG_set_type,false,[
+            DW_AT_name,DW_FORM_string,symname(def.typesym)+#0,
+            DW_AT_byte_size,DW_FORM_data2,def.size
+            ])
+        else
+          append_entry(DW_TAG_set_type,false,[
+            DW_AT_byte_size,DW_FORM_data2,def.size
+            ]);
+        append_labelentry_ref(DW_AT_type,def_dwarf_lab(def.elementdef));
+{$else GDB_SUPPORTS_DWARF_SETS}
         { at least gdb up to 6.4 doesn't support sets in dwarf, there is a patch available to fix this:
           http://sources.redhat.com/ml/gdb-patches/2005-05/msg00278.html (FK) }
 
@@ -2796,6 +2810,7 @@ implementation
             DW_AT_encoding,DW_FORM_data1,DW_ATE_unsigned,
             DW_AT_byte_size,DW_FORM_data2,def.size
             ]);
+{$endif GDB_SUPPORTS_DWARF_SETS}
         finish_entry;
       end;