mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-02 18:10:23 +02:00
+ introduced TObjData.SymbolPairDefine, to allow custom handling of symbol
pairs in the internal object writer
This commit is contained in:
parent
6e7e632682
commit
83f2f7bf37
@ -78,6 +78,8 @@ interface
|
|||||||
info alt_dbgline and alt_dbgfile, etc. }
|
info alt_dbgline and alt_dbgfile, etc. }
|
||||||
TAsmLabelType = (alt_jump,alt_addr,alt_data,alt_dbgline,alt_dbgfile,alt_dbgtype,alt_dbgframe,alt_eh_begin,alt_eh_end);
|
TAsmLabelType = (alt_jump,alt_addr,alt_data,alt_dbgline,alt_dbgfile,alt_dbgtype,alt_dbgframe,alt_eh_begin,alt_eh_end);
|
||||||
|
|
||||||
|
TSymbolPairKind = (spk_set, spk_set_global, spk_thumb_set, spk_localentry);
|
||||||
|
|
||||||
const
|
const
|
||||||
asmlabeltypeprefix : array[TAsmLabeltype] of string[2] = ('j','a','d','l','f','t','c','eb','ee');
|
asmlabeltypeprefix : array[TAsmLabeltype] of string[2] = ('j','a','d','l','f','t','c','eb','ee');
|
||||||
asmsymbindname : array[TAsmsymbind] of string[23] = ('none', 'external','common',
|
asmsymbindname : array[TAsmsymbind] of string[23] = ('none', 'external','common',
|
||||||
|
@ -432,8 +432,6 @@ interface
|
|||||||
ash_pushnv,ash_savenv
|
ash_pushnv,ash_savenv
|
||||||
);
|
);
|
||||||
|
|
||||||
TSymbolPairKind = (spk_set, spk_set_global, spk_thumb_set, spk_localentry);
|
|
||||||
|
|
||||||
|
|
||||||
const
|
const
|
||||||
regallocstr : array[tregalloctype] of string[10]=('allocated','released','sync','resized','used');
|
regallocstr : array[tregalloctype] of string[10]=('allocated','released','sync','resized','used');
|
||||||
|
@ -1790,6 +1790,9 @@ Implementation
|
|||||||
internalerror(2009090804); ;}
|
internalerror(2009090804); ;}
|
||||||
ObjData.SymbolDefine(Tai_symbol(hp).sym);
|
ObjData.SymbolDefine(Tai_symbol(hp).sym);
|
||||||
end;
|
end;
|
||||||
|
ait_symbolpair :
|
||||||
|
with tai_symbolpair(hp) do
|
||||||
|
ObjData.SymbolPairDefine(kind,sym^,value^);
|
||||||
ait_label :
|
ait_label :
|
||||||
ObjData.SymbolDefine(Tai_label(hp).labsym);
|
ObjData.SymbolDefine(Tai_label(hp).labsym);
|
||||||
ait_string :
|
ait_string :
|
||||||
@ -1951,6 +1954,9 @@ Implementation
|
|||||||
objsym:=ObjData.SymbolRef(Tai_symbol_end(hp).sym);
|
objsym:=ObjData.SymbolRef(Tai_symbol_end(hp).sym);
|
||||||
objsym.size:=ObjData.CurrObjSec.Size-objsym.offset;
|
objsym.size:=ObjData.CurrObjSec.Size-objsym.offset;
|
||||||
end;
|
end;
|
||||||
|
ait_symbolpair:
|
||||||
|
with tai_symbolpair(hp) do
|
||||||
|
ObjData.SymbolPairDefine(kind,sym^,value^);
|
||||||
ait_label :
|
ait_label :
|
||||||
ObjData.SymbolDefine(Tai_label(hp).labsym);
|
ObjData.SymbolDefine(Tai_label(hp).labsym);
|
||||||
ait_string :
|
ait_string :
|
||||||
|
@ -435,6 +435,7 @@ interface
|
|||||||
function symboldefine(const aname:string;abind:TAsmsymbind;atyp:Tasmsymtype):TObjSymbol;
|
function symboldefine(const aname:string;abind:TAsmsymbind;atyp:Tasmsymtype):TObjSymbol;
|
||||||
function symbolref(asmsym:TAsmSymbol):TObjSymbol;
|
function symbolref(asmsym:TAsmSymbol):TObjSymbol;
|
||||||
function symbolref(const aname:string):TObjSymbol;
|
function symbolref(const aname:string):TObjSymbol;
|
||||||
|
procedure symbolpairdefine(akind: TSymbolPairKind;const asym, avalue: string);virtual;
|
||||||
procedure ResetCachedAsmSymbols;
|
procedure ResetCachedAsmSymbols;
|
||||||
{ Allocation }
|
{ Allocation }
|
||||||
procedure alloc(len:TObjSectionOfs);
|
procedure alloc(len:TObjSectionOfs);
|
||||||
@ -1546,6 +1547,11 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TObjData.symbolpairdefine(akind: TSymbolPairKind; const asym, avalue: string);
|
||||||
|
begin
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TObjData.ResetCachedAsmSymbols;
|
procedure TObjData.ResetCachedAsmSymbols;
|
||||||
var
|
var
|
||||||
i : longint;
|
i : longint;
|
||||||
|
Loading…
Reference in New Issue
Block a user