Browse Source

* dwarf: procedure variables fixed

git-svn-id: trunk@2427 -
florian 19 years ago
parent
commit
5b9e0ab9d6
1 changed files with 9 additions and 10 deletions
  1. 9 10
      compiler/dbgdwarf.pas

+ 9 - 10
compiler/dbgdwarf.pas

@@ -886,6 +886,7 @@ implementation
           finish_entry;
         end;
 
+
       procedure append_dwarftag_procvardef(def:tprocvardef);
 
         procedure doappend;
@@ -901,12 +902,14 @@ implementation
               append_entry(DW_TAG_subroutine_type,true,[
                 DW_AT_prototyped,DW_FORM_flag,true
               ]);
-            append_labelentry_ref(DW_AT_type,def_dwarf_lab(tprocvardef(def).rettype.def));
+            if not(is_void(tprocvardef(def).rettype.def)) then
+              append_labelentry_ref(DW_AT_type,def_dwarf_lab(tprocvardef(def).rettype.def));
+            finish_entry;
 
             { write parameters }
             for i:=0 to def.paras.count-1 do
               begin
-                append_entry(DW_TAG_subroutine_type,false,[
+                append_entry(DW_TAG_formal_parameter,false,[
                   DW_AT_name,DW_FORM_string,tparavarsym(def.paras[i]).name+#0
                 ]);
                 append_labelentry_ref(DW_AT_type,def_dwarf_lab(tparavarsym(def.paras[i]).vartype.def));
@@ -931,7 +934,7 @@ implementation
 
               { proc entry }
               append_entry(DW_TAG_member,false,[
-                DW_AT_name,DW_FORM_string,'PROC'#0,
+                DW_AT_name,DW_FORM_string,'Proc'#0,
                 DW_AT_data_member_location,DW_FORM_block1,1+lengthuleb128(0)
                 ]);
               asmlist[al_dwarf_info].concat(tai_const.create_8bit(ord(DW_OP_plus_uconst)));
@@ -941,7 +944,7 @@ implementation
 
               { self entry }
               append_entry(DW_TAG_member,false,[
-                DW_AT_name,DW_FORM_string,'SELF'#0,
+                DW_AT_name,DW_FORM_string,'Self'#0,
                 DW_AT_data_member_location,DW_FORM_block1,1+lengthuleb128(sizeof(aint))
                 ]);
               asmlist[al_dwarf_info].concat(tai_const.create_8bit(ord(DW_OP_plus_uconst)));
@@ -953,13 +956,9 @@ implementation
 
               asmlist[al_dwarf_info].concat(tai_symbol.create(proc,0));
               doappend;
-              finish_entry;
             end
           else
-            begin
-              doappend;
-              finish_entry;
-            end;
+            doappend;
         end;
 
 
@@ -1137,7 +1136,7 @@ implementation
                 insertdef(list,class_tobject);
               { parameters }
               for i:=0 to tprocvardef(def).paras.count-1 do
-                append_labelentry_ref(DW_AT_type,def_dwarf_lab(tparavarsym(tprocvardef(def).paras[i]).vartype.def));
+                insertdef(list,tparavarsym(tprocvardef(def).paras[i]).vartype.def);
             end;
           procdef :
             insertdef(list,tprocdef(def).rettype.def);