Browse Source

* dwarf for sets and typesyms

git-svn-id: trunk@2367 -
florian 19 years ago
parent
commit
3fad2d3c72
1 changed files with 22 additions and 3 deletions
  1. 22 3
      compiler/dbgdwarf.pas

+ 22 - 3
compiler/dbgdwarf.pas

@@ -804,8 +804,22 @@ implementation
             result:=def_stabstr_evaluate(def,'formal${numberstring};',[]);
             result:=def_stabstr_evaluate(def,'formal${numberstring};',[]);
           classrefdef :
           classrefdef :
             result:=strpnew(def_stab_number(pvmttype.def));
             result:=strpnew(def_stab_number(pvmttype.def));
+        }
           setdef :
           setdef :
-            result:=def_stabstr_evaluate(def,'@s$1;S$2',[tostr(def.size*8),def_stab_number(tsetdef(def).elementtype.def)]);
+            begin
+              if assigned(def.typesym) then
+                append_entry(DW_TAG_enumeration_type,true,[
+                  DW_AT_name,DW_FORM_string,def.typesym.name+#0,
+                  DW_AT_byte_size,DW_FORM_data1,def.size
+                  ])
+              else
+                append_entry(DW_TAG_enumeration_type,true,[
+                  DW_AT_byte_size,DW_FORM_data1,def.size
+                  ]);
+              append_labelentry_ref(DW_AT_type,def_dwarf_lab(tsetdef(def).elementtype.def));
+              finish_entry
+            end;
+        {
           formaldef :
           formaldef :
             result:=def_stabstr_evaluate(def,'formal${numberstring};',[]);
             result:=def_stabstr_evaluate(def,'formal${numberstring};',[]);
           arraydef :
           arraydef :
@@ -1306,9 +1320,14 @@ implementation
                 [def_stab_number(ttypedconstsym(sym).typedconsttype.def)]);
                 [def_stab_number(ttypedconstsym(sym).typedconsttype.def)]);
           constsym :
           constsym :
             stabstr:=constsym_stabstr(tconstsym(sym));
             stabstr:=constsym_stabstr(tconstsym(sym));
-          typesym :
-            stabstr:=typesym_stabstr(ttypesym(sym));
           }
           }
+          typesym :
+            begin
+              append_entry(DW_TAG_pointer_type,false,[
+                DW_AT_name,DW_FORM_string,sym.name+#0
+              ]);
+              append_labelentry_ref(DW_AT_type,def_dwarf_lab(ttypesym(sym).restype.def));
+            end;
           enumsym :
           enumsym :
             { ignore enum syms, they are written by the owner }
             { ignore enum syms, they are written by the owner }
             ;
             ;