mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-15 05:09:49 +02:00
* dwarf: procedure variables fixed
git-svn-id: trunk@2427 -
This commit is contained in:
parent
733875c108
commit
5b9e0ab9d6
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user