|
@@ -59,7 +59,6 @@ interface
|
|
private
|
|
private
|
|
writing_def_stabs : boolean;
|
|
writing_def_stabs : boolean;
|
|
global_stab_number : word;
|
|
global_stab_number : word;
|
|
- defnumberlist : TFPObjectList;
|
|
|
|
vardatadef: trecorddef;
|
|
vardatadef: trecorddef;
|
|
{ tsym writing }
|
|
{ tsym writing }
|
|
function sym_var_value(const s:string;arg:pointer):string;
|
|
function sym_var_value(const s:string;arg:pointer):string;
|
|
@@ -295,7 +294,10 @@ implementation
|
|
referenced by the symbols. Definitions will always include all
|
|
referenced by the symbols. Definitions will always include all
|
|
required stabs }
|
|
required stabs }
|
|
if def.dbg_state=dbg_state_unused then
|
|
if def.dbg_state=dbg_state_unused then
|
|
- def.dbg_state:=dbg_state_used;
|
|
|
|
|
|
+ begin
|
|
|
|
+ def.dbg_state:=dbg_state_used;
|
|
|
|
+ deftowritelist.Add(def);
|
|
|
|
+ end;
|
|
{ Need a new number? }
|
|
{ Need a new number? }
|
|
if def.stab_number=0 then
|
|
if def.stab_number=0 then
|
|
begin
|
|
begin
|
|
@@ -1348,8 +1350,12 @@ implementation
|
|
[c+def_stab_number(tprocdef(sym.owner.defowner)._class),tostr(sym.localloc.reference.offset)])
|
|
[c+def_stab_number(tprocdef(sym.owner.defowner)._class),tostr(sym.localloc.reference.offset)])
|
|
else
|
|
else
|
|
begin
|
|
begin
|
|
|
|
+ if (c='p') then
|
|
|
|
+ c:='R'
|
|
|
|
+ else
|
|
|
|
+ c:='a';
|
|
regidx:=findreg_by_number(sym.localloc.register);
|
|
regidx:=findreg_by_number(sym.localloc.register);
|
|
- ss:=sym_stabstr_evaluate(sym,'"$$t:r$1",${N_RSYM},0,0,$2',
|
|
|
|
|
|
+ ss:=sym_stabstr_evaluate(sym,'"$$t:$1",${N_RSYM},0,0,$2',
|
|
[c+def_stab_number(tprocdef(sym.owner.defowner)._class),tostr(regstabs_table[regidx])]);
|
|
[c+def_stab_number(tprocdef(sym.owner.defowner)._class),tostr(regstabs_table[regidx])]);
|
|
end
|
|
end
|
|
end;
|
|
end;
|
|
@@ -1493,6 +1499,7 @@ implementation
|
|
|
|
|
|
global_stab_number:=0;
|
|
global_stab_number:=0;
|
|
defnumberlist:=TFPObjectlist.create(false);
|
|
defnumberlist:=TFPObjectlist.create(false);
|
|
|
|
+ deftowritelist:=TFPObjectlist.create(false);
|
|
stabsvarlist:=TAsmList.create;
|
|
stabsvarlist:=TAsmList.create;
|
|
stabstypelist:=TAsmList.create;
|
|
stabstypelist:=TAsmList.create;
|
|
|
|
|
|
@@ -1532,6 +1539,8 @@ implementation
|
|
if assigned(current_module.localsymtable) then
|
|
if assigned(current_module.localsymtable) then
|
|
write_symtable_defs(stabstypelist,current_module.localsymtable);
|
|
write_symtable_defs(stabstypelist,current_module.localsymtable);
|
|
|
|
|
|
|
|
+ write_remaining_defs_to_write(stabstypelist);
|
|
|
|
+
|
|
current_asmdata.asmlists[al_stabs].concatlist(stabstypelist);
|
|
current_asmdata.asmlists[al_stabs].concatlist(stabstypelist);
|
|
current_asmdata.asmlists[al_stabs].concatlist(stabsvarlist);
|
|
current_asmdata.asmlists[al_stabs].concatlist(stabsvarlist);
|
|
|
|
|
|
@@ -1547,6 +1556,8 @@ implementation
|
|
|
|
|
|
defnumberlist.free;
|
|
defnumberlist.free;
|
|
defnumberlist:=nil;
|
|
defnumberlist:=nil;
|
|
|
|
+ deftowritelist.free;
|
|
|
|
+ deftowritelist:=nil;
|
|
|
|
|
|
stabsvarlist.free;
|
|
stabsvarlist.free;
|
|
stabstypelist.free;
|
|
stabstypelist.free;
|