* dwarf: procedure variables fixed

git-svn-id: trunk@2427 -
This commit is contained in:
florian 2006-02-04 14:02:07 +00:00
parent 733875c108
commit 5b9e0ab9d6

View File

@ -886,6 +886,7 @@ implementation
finish_entry; finish_entry;
end; end;
procedure append_dwarftag_procvardef(def:tprocvardef); procedure append_dwarftag_procvardef(def:tprocvardef);
procedure doappend; procedure doappend;
@ -901,12 +902,14 @@ implementation
append_entry(DW_TAG_subroutine_type,true,[ append_entry(DW_TAG_subroutine_type,true,[
DW_AT_prototyped,DW_FORM_flag,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 } { write parameters }
for i:=0 to def.paras.count-1 do for i:=0 to def.paras.count-1 do
begin 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 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)); append_labelentry_ref(DW_AT_type,def_dwarf_lab(tparavarsym(def.paras[i]).vartype.def));
@ -931,7 +934,7 @@ implementation
{ proc entry } { proc entry }
append_entry(DW_TAG_member,false,[ 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) 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))); asmlist[al_dwarf_info].concat(tai_const.create_8bit(ord(DW_OP_plus_uconst)));
@ -941,7 +944,7 @@ implementation
{ self entry } { self entry }
append_entry(DW_TAG_member,false,[ 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)) 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))); 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)); asmlist[al_dwarf_info].concat(tai_symbol.create(proc,0));
doappend; doappend;
finish_entry;
end end
else else
begin doappend;
doappend;
finish_entry;
end;
end; end;
@ -1137,7 +1136,7 @@ implementation
insertdef(list,class_tobject); insertdef(list,class_tobject);
{ parameters } { parameters }
for i:=0 to tprocvardef(def).paras.count-1 do 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; end;
procdef : procdef :
insertdef(list,tprocdef(def).rettype.def); insertdef(list,tprocdef(def).rettype.def);