Bläddra i källkod

* write debug info for Variant with the name "Variant" instead of TVARDATA
so they can be distinguished by debugger frontends

git-svn-id: trunk@14298 -

Jonas Maebe 15 år sedan
förälder
incheckning
3bd7f55f92
1 ändrade filer med 12 tillägg och 2 borttagningar
  1. 12 2
      compiler/dbgdwarf.pas

+ 12 - 2
compiler/dbgdwarf.pas

@@ -275,6 +275,7 @@ interface
         procedure appenddef_float(list:TAsmList;def:tfloatdef);override;
         procedure appenddef_enum(list:TAsmList;def:tenumdef);override;
         procedure appenddef_array(list:TAsmList;def:tarraydef);override;
+        procedure appenddef_record_named(list:TAsmList;def:trecorddef;const name: shortstring);
         procedure appenddef_record(list:TAsmList;def:trecorddef);override;
         procedure appenddef_pointer(list:TAsmList;def:tpointerdef);override;
         procedure appenddef_string(list:TAsmList;def:tstringdef);override;
@@ -1416,8 +1417,17 @@ implementation
     procedure TDebugInfoDwarf.appenddef_record(list:TAsmList;def:trecorddef);
       begin
         if assigned(def.typesym) then
+          appenddef_record_named(list,def,symname(def.typesym))
+        else
+          appenddef_record_named(list,def,'');
+      end;
+
+
+    procedure TDebugInfoDwarf.appenddef_record_named(list:TAsmList;def:trecorddef;const name: shortstring);
+      begin
+        if (name<>'') then
           append_entry(DW_TAG_structure_type,true,[
-            DW_AT_name,DW_FORM_string,symname(def.typesym)+#0,
+            DW_AT_name,DW_FORM_string,name+#0,
             DW_AT_byte_size,DW_FORM_udata,def.size
             ])
         else
@@ -3246,7 +3256,7 @@ implementation
     procedure TDebugInfoDwarf2.appenddef_variant(list:TAsmList;def: tvariantdef);
       begin
         { variants aren't known to dwarf2 but writting tvardata should be enough }
-        appenddef_record(list,trecorddef(vardatadef));
+        appenddef_record_named(list,trecorddef(vardatadef),'Variant');
       end;
 
     function TDebugInfoDwarf2.dwarf_version: Word;