diff --git a/compiler/dbgdwarf.pas b/compiler/dbgdwarf.pas index 4deafa23b9..60ef3fa8c9 100644 --- a/compiler/dbgdwarf.pas +++ b/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);