|
@@ -737,7 +737,7 @@ implementation
|
|
recorddef :
|
|
recorddef :
|
|
result:=recorddef_stabstr(trecorddef(def));
|
|
result:=recorddef_stabstr(trecorddef(def));
|
|
variantdef :
|
|
variantdef :
|
|
- result:=def_stabstr_evaluate(def,'formal${numberstring};',[]);
|
|
|
|
|
|
+ result:=def_stabstr_evaluate(def,'${numberstring};',[]);
|
|
pointerdef :
|
|
pointerdef :
|
|
result:=strpnew('*'+def_stab_number(tpointerdef(def).pointeddef));
|
|
result:=strpnew('*'+def_stab_number(tpointerdef(def).pointeddef));
|
|
classrefdef :
|
|
classrefdef :
|
|
@@ -745,7 +745,7 @@ implementation
|
|
setdef :
|
|
setdef :
|
|
result:=def_stabstr_evaluate(def,'@s$1;S$2',[tostr(def.size*8),def_stab_number(tsetdef(def).elementdef)]);
|
|
result:=def_stabstr_evaluate(def,'@s$1;S$2',[tostr(def.size*8),def_stab_number(tsetdef(def).elementdef)]);
|
|
formaldef :
|
|
formaldef :
|
|
- result:=def_stabstr_evaluate(def,'formal${numberstring};',[]);
|
|
|
|
|
|
+ result:=def_stabstr_evaluate(def,'${numberstring};',[]);
|
|
arraydef :
|
|
arraydef :
|
|
if not is_packed_array(def) then
|
|
if not is_packed_array(def) then
|
|
result:=def_stabstr_evaluate(def,'ar$1;$2;$3;$4',[def_stab_number(tarraydef(def).rangedef),
|
|
result:=def_stabstr_evaluate(def,'ar$1;$2;$3;$4',[def_stab_number(tarraydef(def).rangedef),
|
|
@@ -765,7 +765,7 @@ implementation
|
|
objectdef :
|
|
objectdef :
|
|
result:=objectdef_stabstr(tobjectdef(def));
|
|
result:=objectdef_stabstr(tobjectdef(def));
|
|
undefineddef :
|
|
undefineddef :
|
|
- result:=def_stabstr_evaluate(def,'formal${numberstring};',[]);
|
|
|
|
|
|
+ result:=def_stabstr_evaluate(def,'${numberstring};',[]);
|
|
end;
|
|
end;
|
|
if result=nil then
|
|
if result=nil then
|
|
internalerror(200512203);
|
|
internalerror(200512203);
|
|
@@ -1259,9 +1259,9 @@ implementation
|
|
if paramanager.push_addr_param(sym.varspez,sym.vardef,tprocdef(sym.owner.defowner).proccalloption) and
|
|
if paramanager.push_addr_param(sym.varspez,sym.vardef,tprocdef(sym.owner.defowner).proccalloption) and
|
|
not(vo_has_local_copy in sym.varoptions) and
|
|
not(vo_has_local_copy in sym.varoptions) and
|
|
not is_open_string(sym.vardef) then
|
|
not is_open_string(sym.vardef) then
|
|
- st := 'v'+st { should be 'i' but 'i' doesn't work }
|
|
|
|
|
|
+ c:='v' { should be 'i' but 'i' doesn't work }
|
|
else
|
|
else
|
|
- st := 'p'+st;
|
|
|
|
|
|
+ c:='p';
|
|
case sym.localloc.loc of
|
|
case sym.localloc.loc of
|
|
LOC_REGISTER,
|
|
LOC_REGISTER,
|
|
LOC_CREGISTER,
|
|
LOC_CREGISTER,
|
|
@@ -1270,16 +1270,24 @@ implementation
|
|
LOC_FPUREGISTER,
|
|
LOC_FPUREGISTER,
|
|
LOC_CFPUREGISTER :
|
|
LOC_CFPUREGISTER :
|
|
begin
|
|
begin
|
|
|
|
+ if c='p' then
|
|
|
|
+ c:='R'
|
|
|
|
+ else
|
|
|
|
+ c:='a';
|
|
|
|
+ st:=c+st;
|
|
regidx:=findreg_by_number(sym.localloc.register);
|
|
regidx:=findreg_by_number(sym.localloc.register);
|
|
{ "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi", "eip", "ps", "cs", "ss", "ds", "es", "fs", "gs", }
|
|
{ "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi", "eip", "ps", "cs", "ss", "ds", "es", "fs", "gs", }
|
|
{ this is the register order for GDB}
|
|
{ this is the register order for GDB}
|
|
if regidx<>0 then
|
|
if regidx<>0 then
|
|
- result:=sym_stabstr_evaluate(sym,'"${name}:r$1",${N_RSYM},0,${line},$2',[st,tostr(longint(regstabs_table[regidx]))]);
|
|
|
|
|
|
+ result:=sym_stabstr_evaluate(sym,'"${name}:$1",${N_RSYM},0,${line},$2',[st,tostr(longint(regstabs_table[regidx]))]);
|
|
end;
|
|
end;
|
|
LOC_REFERENCE :
|
|
LOC_REFERENCE :
|
|
- { offset to ebp => will not work if the framepointer is esp
|
|
|
|
- so some optimizing will make things harder to debug }
|
|
|
|
- result:=sym_stabstr_evaluate(sym,'"${name}:$1",${N_TSYM},0,${line},$2',[st,tostr(sym.localloc.reference.offset)])
|
|
|
|
|
|
+ begin
|
|
|
|
+ st:=c+st;
|
|
|
|
+ { offset to ebp => will not work if the framepointer is esp
|
|
|
|
+ so some optimizing will make things harder to debug }
|
|
|
|
+ result:=sym_stabstr_evaluate(sym,'"${name}:$1",${N_TSYM},0,${line},$2',[st,tostr(sym.localloc.reference.offset)])
|
|
|
|
+ end;
|
|
else
|
|
else
|
|
internalerror(2003091814);
|
|
internalerror(2003091814);
|
|
end;
|
|
end;
|