* split newasmsymbol to refasmsymbol and defineasmsymbol

git-svn-id: trunk@3057 -
This commit is contained in:
peter 2006-03-27 11:45:18 +00:00
parent 693d7e2463
commit 0ec2921bbe
38 changed files with 161 additions and 175 deletions

View File

@ -128,9 +128,9 @@ interface
constructor create(const n:string);
destructor destroy;override;
{ asmsymbol }
function newasmsymbol(const s : string;_bind:TAsmSymBind;_typ:TAsmsymtype) : tasmsymbol;
function DefineAsmSymbol(const s : string;_bind:TAsmSymBind;_typ:Tasmsymtype) : tasmsymbol;
function RefAsmSymbol(const s : string) : tasmsymbol;
function getasmsymbol(const s : string) : tasmsymbol;
function newasmlabel(nr:longint;alt:tasmlabeltype;is_global:boolean) : tasmlabel;
{ create new assembler label }
procedure getlabel(var l : tasmlabel;alt:tasmlabeltype);
procedure getjumplabel(var l : tasmlabel);
@ -315,25 +315,23 @@ implementation
end;
function TAsmData.newasmsymbol(const s : string;_bind:TAsmSymBind;_typ:Tasmsymtype) : tasmsymbol;
function TAsmData.DefineAsmSymbol(const s : string;_bind:TAsmSymBind;_typ:Tasmsymtype) : tasmsymbol;
var
hp : tasmsymbol;
begin
hp:=tasmsymbol(FAsmSymbolDict.search(s));
if assigned(hp) then
begin
{$IFDEF EXTDEBUG}
if (_typ <> AT_NONE) and
(hp.typ <> _typ) and
not(cs_compilesystem in aktmoduleswitches) and
(target_info.system <> system_powerpc_darwin) then
{ Redefine is allowed, but the types must be the same. The redefine
is needed for Darwin where the labels are first allocated }
if (hp.bind<>AB_EXTERNAL) then
begin
//Writeln('Error symbol '+hp.name+' type is ',Ord(_typ),', should be ',Ord(hp.typ));
InternalError(2004031501);
if (hp.bind<>_bind) and
(hp.typ<>_typ) then
internalerror(200603261);
end;
{$ENDIF}
if (_bind<>AB_EXTERNAL) then
hp.bind:=_bind
hp.typ:=_typ;
hp.bind:=_bind;
end
else
begin
@ -341,7 +339,22 @@ implementation
hp:=tasmsymbol.create(s,_bind,_typ);
FAsmSymbolDict.insert(hp);
end;
newasmsymbol:=hp;
result:=hp;
end;
function TAsmData.RefAsmSymbol(const s : string) : tasmsymbol;
var
hp : tasmsymbol;
begin
hp:=tasmsymbol(FAsmSymbolDict.search(s));
if not assigned(hp) then
begin
{ Not found, insert it. }
hp:=tasmsymbol.create(s,AB_EXTERNAL,AT_NONE);
FAsmSymbolDict.insert(hp);
end;
result:=hp;
end;
@ -372,19 +385,6 @@ implementation
end;
function TAsmData.newasmlabel(nr:longint;alt:tasmlabeltype;is_global:boolean) : tasmlabel;
var
hp : tasmlabel;
begin
if is_global then
hp:=tasmlabel.createglobal(name,nr,alt)
else
hp:=tasmlabel.createlocal(nr,alt);
FAsmSymbolDict.insert(hp);
result:=hp;
end;
procedure TAsmData.getlabel(var l : tasmlabel;alt:tasmlabeltype);
begin
l:=tasmlabel.createlocal(FNextLabelNr[alt],alt);

View File

@ -398,7 +398,7 @@ interface
constructor Create_rel_sym(_typ:taiconst_type;_sym,_endsym:tasmsymbol);
constructor Create_rva_sym(_sym:tasmsymbol);
constructor Create_indirect_sym(_sym:tasmsymbol);
constructor Createname(const name:string;_symtyp:Tasmsymtype;ofs:aint);
constructor Createname(const name:string;ofs:aint);
constructor Createname_rva(const name:string);
constructor ppuload(t:taitype;ppufile:tcompilerppufile);override;
procedure ppuwrite(ppufile:tcompilerppufile);override;
@ -856,7 +856,7 @@ implementation
begin
inherited Create;
typ:=ait_datablock;
sym:=current_asmdata.newasmsymbol(_name,AB_LOCAL,AT_DATA);
sym:=current_asmdata.DefineAsmSymbol(_name,AB_LOCAL,AT_DATA);
{ keep things aligned }
if _size<=0 then
_size:=4;
@ -869,7 +869,7 @@ implementation
begin
inherited Create;
typ:=ait_datablock;
sym:=current_asmdata.newasmsymbol(_name,AB_GLOBAL,AT_DATA);
sym:=current_asmdata.DefineAsmSymbol(_name,AB_GLOBAL,AT_DATA);
{ keep things aligned }
if _size<=0 then
_size:=4;
@ -931,7 +931,7 @@ implementation
begin
inherited Create;
typ:=ait_symbol;
sym:=current_asmdata.newasmsymbol(_name,AB_LOCAL,_symtyp);
sym:=current_asmdata.DefineAsmSymbol(_name,AB_LOCAL,_symtyp);
size:=siz;
is_global:=false;
end;
@ -941,7 +941,7 @@ implementation
begin
inherited Create;
typ:=ait_symbol;
sym:=current_asmdata.newasmsymbol(_name,AB_GLOBAL,_symtyp);
sym:=current_asmdata.DefineAsmSymbol(_name,AB_GLOBAL,_symtyp);
size:=siz;
is_global:=true;
end;
@ -986,7 +986,7 @@ implementation
begin
inherited Create;
typ:=ait_symbol_end;
sym:=current_asmdata.newasmsymbol(_name,AB_GLOBAL,AT_NONE);
sym:=current_asmdata.RefAsmSymbol(_name);
end;
@ -1231,12 +1231,12 @@ implementation
end;
constructor tai_const.Createname(const name:string;_symtyp:Tasmsymtype;ofs:aint);
constructor tai_const.Createname(const name:string;ofs:aint);
begin
inherited Create;
typ:=ait_const;
consttype:=aitconst_ptr;
sym:=current_asmdata.newasmsymbol(name,AB_EXTERNAL,_symtyp);
sym:=current_asmdata.RefAsmSymbol(name);
endsym:=nil;
value:=ofs;
{ update sym info }
@ -1249,7 +1249,7 @@ implementation
inherited Create;
typ:=ait_const;
consttype:=aitconst_rva_symbol;
sym:=current_asmdata.newasmsymbol(name,AB_EXTERNAL,AT_FUNCTION);
sym:=current_asmdata.RefAsmSymbol(name);
endsym:=nil;
value:=0;
{ update sym info }

View File

@ -270,7 +270,7 @@ unit cgcpu;
procedure tcgarm.a_call_name(list : TAsmList;const s : string);
begin
list.concat(taicpu.op_sym(A_BL,current_asmdata.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
list.concat(taicpu.op_sym(A_BL,current_asmdata.RefAsmSymbol(s)));
{
the compiler does not properly set this flag anymore in pass 1, and
for now we only need it after pass 2 (I hope) (JM)
@ -936,7 +936,7 @@ unit cgcpu;
procedure tcgarm.a_jmp_name(list : TAsmList;const s : string);
begin
list.concat(taicpu.op_sym(A_B,current_asmdata.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
list.concat(taicpu.op_sym(A_B,current_asmdata.RefAsmSymbol(s)));
end;
@ -1478,7 +1478,7 @@ unit cgcpu;
end
{ case 0 }
else
list.concat(taicpu.op_sym(A_B,current_asmdata.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
list.concat(taicpu.op_sym(A_B,current_asmdata.RefAsmSymbol(procdef.mangledname)));
list.concat(Tai_symbol_end.Createname(labelname));
end;

View File

@ -1873,7 +1873,7 @@ implementation
paramanager.getintparaloc(pocall_default,2,cgpara2);
if (cs_check_object in aktlocalswitches) then
begin
reference_reset_symbol(hrefvmt,current_asmdata.newasmsymbol(objdef.vmt_mangledname,AB_EXTERNAL,AT_DATA),0);
reference_reset_symbol(hrefvmt,current_asmdata.RefAsmSymbol(objdef.vmt_mangledname),0);
paramanager.allocparaloc(list,cgpara2);
a_paramaddr_ref(list,hrefvmt,cgpara2);
paramanager.allocparaloc(list,cgpara1);
@ -2115,9 +2115,9 @@ implementation
l:=current_asmdata.getasmsymbol('L'+symname+'$non_lazy_ptr');
if not(assigned(l)) then
begin
l:=current_asmdata.newasmsymbol('L'+symname+'$non_lazy_ptr',AB_COMMON,AT_DATA);
l:=current_asmdata.DefineAsmSymbol('L'+symname+'$non_lazy_ptr',AB_COMMON,AT_DATA);
current_asmdata.asmlists[al_picdata].concat(tai_symbol.create(l,0));
current_asmdata.asmlists[al_picdata].concat(tai_const.create_indirect_sym(current_asmdata.newasmsymbol(symname,AB_EXTERNAL,AT_DATA)));
current_asmdata.asmlists[al_picdata].concat(tai_const.create_indirect_sym(current_asmdata.RefAsmSymbol(symname)));
current_asmdata.asmlists[al_picdata].concat(tai_const.create_32bit(0));
end;
result := cg.getaddressregister(list);

View File

@ -189,7 +189,7 @@ uses
}
current_asmdata.asmlists[al_resourcestrings].concat(Tai_cutobject.Create);
new_section(current_asmdata.asmlists[al_resourcestrings],sec_data,'resstridx_'+r.name,sizeof(aint));
resstrlab:=current_asmdata.newasmsymbol(make_mangledname('RESSTR',R.Sym.owner,R.Sym.name),AB_GLOBAL,AT_DATA);
resstrlab:=current_asmdata.DefineAsmSymbol(make_mangledname('RESSTR',R.Sym.owner,R.Sym.name),AB_GLOBAL,AT_DATA);
current_asmdata.asmlists[al_resourcestrings].concat(tai_symbol.Create_global(resstrlab,0));
current_asmdata.asmlists[al_resourcestrings].concat(tai_const.create_sym(namelab));
current_asmdata.asmlists[al_resourcestrings].concat(tai_const.create_sym(nil));

View File

@ -1450,7 +1450,7 @@ implementation
current_asmdata.getlabel(procendlabel,alt_dbgtype);
current_asmdata.asmlists[al_procedures].insertbefore(tai_label.create(procendlabel),pd.procendtai);
append_labelentry(DW_AT_low_pc,current_asmdata.newasmsymbol(pd.mangledname,AB_LOCAL,AT_DATA));
append_labelentry(DW_AT_low_pc,current_asmdata.RefAsmSymbol(pd.mangledname));
append_labelentry(DW_AT_high_pc,procendlabel);
{
@ -1551,7 +1551,7 @@ implementation
else
begin
templist.concat(tai_const.create_8bit(3));
templist.concat(tai_const.createname(sym.mangledname,AT_DATA,0));
templist.concat(tai_const.createname(sym.mangledname,0));
blocksize:=1+sizeof(aword);
end;
end;
@ -1707,7 +1707,7 @@ implementation
toasm :
begin
templist.concat(tai_const.create_8bit(3));
templist.concat(tai_const.createname(sym.mangledname,AT_DATA,0));
templist.concat(tai_const.createname(sym.mangledname,0));
blocksize:=1+sizeof(aword);
end;
tovar:
@ -1774,7 +1774,7 @@ implementation
]);
{ append block data }
current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_8bit(3));
current_asmdata.asmlists[al_dwarf_info].concat(tai_const.createname(sym.mangledname,AT_DATA,0));
current_asmdata.asmlists[al_dwarf_info].concat(tai_const.createname(sym.mangledname,0));
append_labelentry_ref(DW_AT_type,def_dwarf_lab(ttypedconstsym(sym).typedconsttype.def));
finish_entry;
@ -1920,10 +1920,10 @@ implementation
{ abbrev table }
if isdwarf64 then
current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_type_sym(aitconst_64bit,
current_asmdata.newasmsymbol('.Ldebug_abbrev0',AB_EXTERNAL,AT_DATA)))
current_asmdata.RefAsmSymbol('.Ldebug_abbrev0')))
else
current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_type_sym(aitconst_32bit,
current_asmdata.newasmsymbol('.Ldebug_abbrev0',AB_EXTERNAL,AT_DATA)));
current_asmdata.RefAsmSymbol('.Ldebug_abbrev0')));
{ address size }
current_asmdata.asmlists[al_dwarf_info].concat(tai_const.create_8bit(sizeof(aint)));
@ -1935,9 +1935,9 @@ implementation
DW_AT_identifier_case,DW_FORM_data1,DW_ID_case_insensitive]);
{ reference to line info section }
append_labelentry_data(DW_AT_stmt_list,current_asmdata.newasmsymbol('.Ldebug_line0',AB_LOCAL,AT_DATA));
append_labelentry(DW_AT_low_pc,current_asmdata.newasmsymbol('.Ltext0',AB_LOCAL,AT_DATA));
append_labelentry(DW_AT_high_pc,current_asmdata.newasmsymbol('.Letext0',AB_LOCAL,AT_DATA));
append_labelentry_data(DW_AT_stmt_list,current_asmdata.RefAsmSymbol('.Ldebug_line0'));
append_labelentry(DW_AT_low_pc,current_asmdata.RefAsmSymbol('.Ltext0'));
append_labelentry(DW_AT_high_pc,current_asmdata.RefAsmSymbol('.Letext0'));
finish_entry;

View File

@ -1495,11 +1495,11 @@ implementation
while assigned(hp) do
begin
If (hp.u.flags and uf_has_debuginfo)=uf_has_debuginfo then
list.concat(Tai_const.Createname(make_mangledname('DEBUGINFO',hp.u.globalsymtable,''),AT_DATA,0));
list.concat(Tai_const.Createname(make_mangledname('DEBUGINFO',hp.u.globalsymtable,''),0));
hp:=tused_unit(hp.next);
end;
{ include reference to debuginfo for this program }
list.concat(Tai_const.Createname(make_mangledname('DEBUGINFO',current_module.localsymtable,''),AT_DATA,0));
list.concat(Tai_const.Createname(make_mangledname('DEBUGINFO',current_module.localsymtable,''),0));
end;
end;

View File

@ -641,7 +641,7 @@ unit cgcpu;
{ case 0 }
else
begin
lab:=current_asmdata.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION);
lab:=current_asmdata.RefAsmSymbol(procdef.mangledname);
list.concat(taicpu.op_sym(A_JMP,S_NO,lab));
end;

View File

@ -1395,7 +1395,7 @@ Unit Ra386int;
if GotStar then
Message(asmr_e_only_add_relocatable_symbol);
if not assigned(oper.opr.ref.symbol) then
oper.opr.ref.symbol:=current_asmdata.newasmsymbol(tempstr,AB_EXTERNAL,tempsymtyp)
oper.opr.ref.symbol:=current_asmdata.RefAsmSymbol(tempstr)
else
Message(asmr_e_cant_have_multiple_relocatable_symbols);
end;
@ -1478,7 +1478,7 @@ Unit Ra386int;
begin
oper.opr.typ:=OPR_SYMBOL;
oper.opr.symofs:=l;
oper.opr.symbol:=current_asmdata.newasmsymbol(tempstr,AB_EXTERNAL,tempsymtyp);
oper.opr.symbol:=current_asmdata.RefAsmSymbol(tempstr);
end
else
if oper.opr.typ=OPR_NONE then

View File

@ -247,7 +247,7 @@ unit cgcpu;
procedure tcg68k.a_call_name(list : TAsmList;const s : string);
begin
list.concat(taicpu.op_sym(A_JSR,S_NO,current_asmdata.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
list.concat(taicpu.op_sym(A_JSR,S_NO,current_asmdata.RefAsmSymbol(s)));
end;
@ -1261,7 +1261,7 @@ unit cgcpu;
end
{ case 0 }
else
// list.concat(taicpu.op_sym(A_B,current_asmdata.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
// list.concat(taicpu.op_sym(A_B,current_asmdata.RefAsmSymbol(procdef.mangledname)));
List.concat(Tai_symbol_end.Createname(labelname));
end;

View File

@ -1311,7 +1311,7 @@ const
l:=oper.opr.val;
oper.opr.typ := OPR_SYMBOL;
oper.opr.symofs := l;
oper.opr.symbol := current_asmdata.newasmsymbol(tempstr,AB_EXTERNAL,AT_FUNCTION);
oper.opr.symbol := current_asmdata.RefAsmSymbol(tempstr);
end;
end;
{ // Constant memory offset . // }

View File

@ -155,7 +155,7 @@ interface
if tstringconstnode(left).len=0 then
begin
reference_reset(hr);
hr.symbol:=current_asmdata.newasmsymbol('FPC_EMPTYCHAR',AB_EXTERNAL,AT_DATA);
hr.symbol:=current_asmdata.RefAsmSymbol('FPC_EMPTYCHAR');
location.register:=cg.getaddressregister(current_asmdata.CurrAsmList);
cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,hr,location.register);
end
@ -175,7 +175,7 @@ interface
if tstringconstnode(left).len=0 then
begin
reference_reset(hr);
hr.symbol:=current_asmdata.newasmsymbol('FPC_EMPTYCHAR',AB_EXTERNAL,AT_DATA);
hr.symbol:=current_asmdata.RefAsmSymbol('FPC_EMPTYCHAR');
location.register:=cg.getaddressregister(current_asmdata.CurrAsmList);
cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,hr,location.register);
end
@ -430,7 +430,7 @@ interface
end;
cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_ADDR,OC_NE,0,location.register,l1);
reference_reset(hr);
hr.symbol:=current_asmdata.newasmsymbol('FPC_EMPTYCHAR',AB_EXTERNAL,AT_DATA);
hr.symbol:=current_asmdata.RefAsmSymbol('FPC_EMPTYCHAR');
cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,hr,location.register);
cg.a_label(current_asmdata.CurrAsmList,l1);
end;

View File

@ -1242,7 +1242,7 @@ implementation
current_asmdata.getjumplabel(nextonlabel);
{ send the vmt parameter }
reference_reset_symbol(href2,current_asmdata.newasmsymbol(excepttype.vmt_mangledname,AB_EXTERNAL,AT_DATA),0);
reference_reset_symbol(href2,current_asmdata.RefAsmSymbol(excepttype.vmt_mangledname),0);
paramanager.getintparaloc(pocall_default,1,paraloc1);
paramanager.allocparaloc(current_asmdata.CurrAsmList,paraloc1);
cg.a_paramaddr_ref(current_asmdata.CurrAsmList,href2,paraloc1);

View File

@ -266,7 +266,7 @@ implementation
if left.nodetype=typen then
begin
hregister:=cg.getaddressregister(current_asmdata.CurrAsmList);
reference_reset_symbol(href,current_asmdata.newasmsymbol(tobjectdef(left.resulttype.def).vmt_mangledname,AB_EXTERNAL,AT_DATA),0);
reference_reset_symbol(href,current_asmdata.RefAsmSymbol(tobjectdef(left.resulttype.def).vmt_mangledname),0);
cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,href,hregister);
end
else

View File

@ -72,7 +72,7 @@ implementation
begin
{$ifndef sparc}
location.reference.base:=current_procinfo.got;
location.reference.symbol:=current_asmdata.newasmsymbol(tglobalvarsym(symtableentry).mangledname+'@GOT',AB_EXTERNAL,AT_DATA);
location.reference.symbol:=current_asmdata.RefAsmSymbol(tglobalvarsym(symtableentry).mangledname+'@GOT');
{$endif sparc}
end;
@ -105,7 +105,7 @@ implementation
location.reference.offset:=tabsolutevarsym(symtableentry).addroffset;
end;
toasm :
location.reference.symbol:=current_asmdata.newasmsymbol(tabsolutevarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
location.reference.symbol:=current_asmdata.RefAsmSymbol(tabsolutevarsym(symtableentry).mangledname);
else
internalerror(200310283);
end;
@ -115,7 +115,7 @@ implementation
if tconstsym(symtableentry).consttyp=constresourcestring then
begin
location_reset(location,LOC_CREFERENCE,OS_ADDR);
location.reference.symbol:=current_asmdata.newasmsymbol(make_mangledname('RESSTR',symtableentry.owner,symtableentry.name),AB_EXTERNAL,AT_DATA);
location.reference.symbol:=current_asmdata.RefAsmSymbol(make_mangledname('RESSTR',symtableentry.owner,symtableentry.name));
{ Resourcestring layout:
TResourceStringRecord = Packed Record
Name,
@ -147,7 +147,7 @@ implementation
{ DLL variable }
begin
hregister:=cg.getaddressregister(current_asmdata.CurrAsmList);
location.reference.symbol:=current_asmdata.newasmsymbol(tglobalvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
location.reference.symbol:=current_asmdata.RefAsmSymbol(tglobalvarsym(symtableentry).mangledname);
cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,location.reference,hregister);
reference_reset_base(location.reference,hregister,0);
end
@ -171,11 +171,11 @@ implementation
paraloc1.init;
paramanager.getintparaloc(pocall_default,1,paraloc1);
hregister:=cg.getaddressregister(current_asmdata.CurrAsmList);
reference_reset_symbol(href,current_asmdata.newasmsymbol('FPC_THREADVAR_RELOCATE',AB_EXTERNAL,AT_DATA),0);
reference_reset_symbol(href,current_asmdata.RefAsmSymbol('FPC_THREADVAR_RELOCATE'),0);
cg.a_load_ref_reg(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,href,hregister);
cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_ADDR,OC_EQ,0,hregister,norelocatelab);
{ don't save the allocated register else the result will be destroyed later }
reference_reset_symbol(href,current_asmdata.newasmsymbol(tglobalvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA),0);
reference_reset_symbol(href,current_asmdata.RefAsmSymbol(tglobalvarsym(symtableentry).mangledname),0);
paramanager.allocparaloc(current_asmdata.CurrAsmList,paraloc1);
cg.a_param_ref(current_asmdata.CurrAsmList,OS_32,href,paraloc1);
paramanager.freeparaloc(current_asmdata.CurrAsmList,paraloc1);
@ -193,7 +193,7 @@ implementation
layout of a threadvar is (4 bytes pointer):
0 - Threadvar index
4 - Threadvar value in single threading }
reference_reset_symbol(href,current_asmdata.newasmsymbol(tglobalvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA),sizeof(aint));
reference_reset_symbol(href,current_asmdata.RefAsmSymbol(tglobalvarsym(symtableentry).mangledname),sizeof(aint));
cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,href,hregister);
cg.a_label(current_asmdata.CurrAsmList,endrelocatelab);
location.reference.base:=hregister;
@ -246,7 +246,7 @@ implementation
staticsymtable :
begin
if tabstractnormalvarsym(symtableentry).localloc.loc=LOC_INVALID then
reference_reset_symbol(location.reference,current_asmdata.newasmsymbol(tglobalvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA),0)
reference_reset_symbol(location.reference,current_asmdata.RefAsmSymbol(tglobalvarsym(symtableentry).mangledname),0)
else
location:=tglobalvarsym(symtableentry).localloc;
{$ifdef i386}
@ -360,7 +360,7 @@ implementation
else
begin
{ load address of the function }
reference_reset_symbol(href,current_asmdata.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION),0);
reference_reset_symbol(href,current_asmdata.RefAsmSymbol(procdef.mangledname),0);
hregister:=cg.getaddressregister(current_asmdata.CurrAsmList);
cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,href,hregister);
cg.a_load_reg_ref(current_asmdata.CurrAsmList,OS_ADDR,OS_ADDR,hregister,location.reference);
@ -372,11 +372,11 @@ implementation
location.reference.base := cg.g_indirect_sym_load(current_asmdata.CurrAsmList,tprocsym(symtableentry).procdef[1].mangledname);
{!!!!! Be aware, work on virtual methods too }
if (location.reference.base = NR_NO) then
location.reference.symbol:=current_asmdata.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION);
location.reference.symbol:=current_asmdata.RefAsmSymbol(procdef.mangledname);
end;
end;
typedconstsym :
location.reference.symbol:=current_asmdata.newasmsymbol(ttypedconstsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
location.reference.symbol:=current_asmdata.RefAsmSymbol(ttypedconstsym(symtableentry).mangledname);
labelsym :
location.reference.symbol:=tcglabelnode((tlabelsym(symtableentry).code)).getasmlabel;
else internalerror(200510032);

View File

@ -101,7 +101,7 @@ implementation
if (left.nodetype=typen) then
begin
reference_reset_symbol(href,
current_asmdata.newasmsymbol(tobjectdef(tclassrefdef(resulttype.def).pointertype.def).vmt_mangledname,AB_EXTERNAL,AT_DATA),0);
current_asmdata.RefAsmSymbol(tobjectdef(tclassrefdef(resulttype.def).pointertype.def).vmt_mangledname),0);
location.register:=cg.getaddressregister(current_asmdata.CurrAsmList);
cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,href,location.register);
end
@ -312,7 +312,7 @@ implementation
LOC_REFERENCE,
LOC_CREFERENCE:
;
{ record regvars are not supported yet
{ record regvars are not supported yet
LOC_CREGISTER: }
else
internalerror(2006031901);
@ -697,7 +697,7 @@ implementation
current_asmdata.getjumplabel(current_procinfo.CurrFalseLabel);
end;
secondpass(right);
{ if mulsize = 1, we won't have to modify the index }
location_force_reg(current_asmdata.CurrAsmList,right.location,OS_ADDR,(mulsize = 1));

View File

@ -1737,11 +1737,7 @@ implementation
item := tstringlistitem(pd.aliasnames.first);
while assigned(item) do
begin
if (cs_profile in aktmoduleswitches) or
(po_global in current_procinfo.procdef.procoptions) then
current_asmdata.newasmsymbol(item.str,AB_GLOBAL,AT_FUNCTION)
else
current_asmdata.newasmsymbol(item.str,AB_GLOBAL,AT_FUNCTION);
current_asmdata.DefineAsmSymbol(item.str,AB_GLOBAL,AT_FUNCTION);
item := tstringlistitem(item.next);
end;
end;
@ -1786,7 +1782,7 @@ implementation
else
list.concat(tai_directive.create(asd_mod_term_func,''));
list.concat(tai_align.create(4));
list.concat(Tai_const.Createname(current_procinfo.procdef.mangledname,AT_FUNCTION,0));
list.concat(Tai_const.Createname(current_procinfo.procdef.mangledname,0));
end;
if (current_procinfo.procdef.proctypeoption=potype_proginit) then
@ -1940,7 +1936,7 @@ implementation
begin
current_module.requires_ebx_pic_helper:=true;
cg.a_call_name_static(list,'fpc_geteipasebx');
list.concat(taicpu.op_sym_ofs_reg(A_ADD,S_L,current_asmdata.newasmsymbol('_GLOBAL_OFFSET_TABLE_',AB_EXTERNAL,AT_DATA),0,NR_PIC_OFFSET_REG));
list.concat(taicpu.op_sym_ofs_reg(A_ADD,S_L,current_asmdata.RefAsmSymbol('_GLOBAL_OFFSET_TABLE_'),0,NR_PIC_OFFSET_REG));
list.concat(tai_regalloc.alloc(NR_PIC_OFFSET_REG,nil));
{ ecx could be used in leave procedures }
current_procinfo.got:=NR_EBX;
@ -2110,7 +2106,7 @@ implementation
{ PIC, DLL and Threadvar need extra code and are handled in ncgld }
if not(vo_is_dll_var in varoptions) and ((tf_section_threadvars in target_info.flags) or
not(vo_is_thread_var in varoptions)) then
reference_reset_symbol(localloc.reference,current_asmdata.newasmsymbol(mangledname,AB_EXTERNAL,AT_DATA),0);
reference_reset_symbol(localloc.reference,current_asmdata.RefAsmSymbol(mangledname),0);
end;
else
internalerror(200410103);

View File

@ -280,7 +280,7 @@ implementation
{ write name label }
current_asmdata.asmlists[al_globals].concat(Tai_const.Create_sym(p^.nl));
current_asmdata.asmlists[al_globals].concat(Tai_const.Createname(p^.data.mangledname,AT_FUNCTION,0));
current_asmdata.asmlists[al_globals].concat(Tai_const.Createname(p^.data.mangledname,0));
if assigned(p^.r) then
writestrentry(p^.r);
@ -322,7 +322,7 @@ implementation
{ write name label }
current_asmdata.asmlists[al_globals].concat(Tai_const.Create_32bit(p^.data.messageinf.i));
current_asmdata.asmlists[al_globals].concat(Tai_const.Createname(p^.data.mangledname,AT_FUNCTION,0));
current_asmdata.asmlists[al_globals].concat(Tai_const.Createname(p^.data.mangledname,0));
if assigned(p^.r) then
writeintentry(p^.r);
@ -398,7 +398,7 @@ implementation
begin
if assigned(p^.l) then
writedmtaddressentry(p^.l);
al_globals.concat(Tai_const_symbol.Createname(p^.data.mangledname,AT_FUNCTION,0));
al_globals.concat(Tai_const_symbol.Createname(p^.data.mangledname,0));
if assigned(p^.r) then
writedmtaddressentry(p^.r);
end;
@ -484,7 +484,7 @@ implementation
if po_abstractmethod in pd.procoptions then
current_asmdata.asmlists[al_globals].concat(Tai_const.Create_sym(nil))
else
current_asmdata.asmlists[al_globals].concat(Tai_const.Createname(pd.mangledname,AT_FUNCTION,0));
current_asmdata.asmlists[al_globals].concat(Tai_const.Createname(pd.mangledname,0));
end;
end;
end;
@ -884,7 +884,7 @@ implementation
tostr(i)+'_$_'+
implintf.implprocs(intfindex,i).mangledname);
{ create reference }
rawdata.concat(Tai_const.Createname(tmps,AT_FUNCTION,0));
rawdata.concat(Tai_const.Createname(tmps,0));
end;
section_symbol_end(rawdata,gintfgetvtbllabelname(intfindex));
end;
@ -919,7 +919,7 @@ implementation
current_asmdata.asmlists[al_globals].concat(Tai_const.Create_sym(nil));
end;
{ VTable }
current_asmdata.asmlists[al_globals].concat(Tai_const.Createname(gintfgetvtbllabelname(contintfindex),AT_DATA,0));
current_asmdata.asmlists[al_globals].concat(Tai_const.Createname(gintfgetvtbllabelname(contintfindex),0));
{ IOffset field }
current_asmdata.asmlists[al_globals].concat(Tai_const.Create_aint(implintf.ioffsets(contintfindex)));
{ IIDStr }
@ -1232,9 +1232,9 @@ implementation
{ class abstract and it's not allow to }
{ generates an instance }
if (po_abstractmethod in procdefcoll^.data.procoptions) then
List.concat(Tai_const.Createname('FPC_ABSTRACTERROR',AT_FUNCTION,0))
List.concat(Tai_const.Createname('FPC_ABSTRACTERROR',0))
else
List.concat(Tai_const.createname(procdefcoll^.data.mangledname,AT_FUNCTION,0));
List.concat(Tai_const.createname(procdefcoll^.data.mangledname,0));
end;
end;
procdefcoll:=procdefcoll^.next;
@ -1310,7 +1310,7 @@ implementation
{ it is not written for parents that don't have any vmt !! }
if assigned(_class.childof) and
(oo_has_vmt in _class.childof.objectoptions) then
current_asmdata.asmlists[al_globals].concat(Tai_const.Createname(_class.childof.vmt_mangledname,AT_DATA,0))
current_asmdata.asmlists[al_globals].concat(Tai_const.Createname(_class.childof.vmt_mangledname,0))
else
current_asmdata.asmlists[al_globals].concat(Tai_const.Create_sym(nil));

View File

@ -164,7 +164,7 @@ implementation
begin
If (hp.u.flags and uf_threadvars)=uf_threadvars then
begin
ltvTables.concat(Tai_const.Createname(make_mangledname('THREADVARLIST',hp.u.globalsymtable,''),AT_DATA,0));
ltvTables.concat(Tai_const.Createname(make_mangledname('THREADVARLIST',hp.u.globalsymtable,''),0));
inc(count);
end;
hp:=tused_unit(hp.next);
@ -172,7 +172,7 @@ implementation
{ Add program threadvars, if any }
If (current_module.flags and uf_threadvars)=uf_threadvars then
begin
ltvTables.concat(Tai_const.Createname(make_mangledname('THREADVARLIST',current_module.localsymtable,''),AT_DATA,0));
ltvTables.concat(Tai_const.Createname(make_mangledname('THREADVARLIST',current_module.localsymtable,''),0));
inc(count);
end;
{ Insert TableCount at start }
@ -195,7 +195,7 @@ implementation
(vo_is_thread_var in tglobalvarsym(p).varoptions) then
begin
{ address of threadvar }
ltvTable.concat(tai_const.Createname(tglobalvarsym(p).mangledname,AT_DATA,0));
ltvTable.concat(tai_const.Createname(tglobalvarsym(p).mangledname,0));
{ size of threadvar }
ltvTable.concat(tai_const.create_32bit(tglobalvarsym(p).getsize));
end;
@ -255,7 +255,7 @@ implementation
begin
{ Valid pointer to resource information }
ResourceInfo.concat(Tai_symbol.Createname_global('FPC_RESLOCATION',AT_DATA,0));
ResourceInfo.concat(Tai_const.Createname('FPC_RESSYMBOL',AT_DATA,0));
ResourceInfo.concat(Tai_const.Createname('FPC_RESSYMBOL',0));
{$ifdef EXTERNALRESPTRS}
current_module.linkotherofiles.add('resptrs.o',link_always);
{$else EXTERNALRESPTRS}
@ -291,8 +291,8 @@ implementation
begin
If (hp.flags and uf_has_resourcestrings)=uf_has_resourcestrings then
begin
ResourceStringTables.concat(Tai_const.Createname(make_mangledname('RESSTR',hp.localsymtable,'START'),AT_DATA,0));
ResourceStringTables.concat(Tai_const.Createname(make_mangledname('RESSTR',hp.localsymtable,'END'),AT_DATA,0));
ResourceStringTables.concat(Tai_const.Createname(make_mangledname('RESSTR',hp.localsymtable,'START'),0));
ResourceStringTables.concat(Tai_const.Createname(make_mangledname('RESSTR',hp.localsymtable,'END'),0));
inc(count);
end;
hp:=tmodule(hp.next);
@ -324,11 +324,11 @@ implementation
if (hp.u.flags and (uf_init or uf_finalize))<>0 then
begin
if (hp.u.flags and uf_init)<>0 then
unitinits.concat(Tai_const.Createname(make_mangledname('INIT$',hp.u.globalsymtable,''),AT_FUNCTION,0))
unitinits.concat(Tai_const.Createname(make_mangledname('INIT$',hp.u.globalsymtable,''),0))
else
unitinits.concat(Tai_const.Create_sym(nil));
if (hp.u.flags and uf_finalize)<>0 then
unitinits.concat(Tai_const.Createname(make_mangledname('FINALIZE$',hp.u.globalsymtable,''),AT_FUNCTION,0))
unitinits.concat(Tai_const.Createname(make_mangledname('FINALIZE$',hp.u.globalsymtable,''),0))
else
unitinits.concat(Tai_const.Create_sym(nil));
inc(count);
@ -339,11 +339,11 @@ implementation
if (current_module.flags and (uf_init or uf_finalize))<>0 then
begin
if (current_module.flags and uf_init)<>0 then
unitinits.concat(Tai_const.Createname(make_mangledname('INIT$',current_module.localsymtable,''),AT_FUNCTION,0))
unitinits.concat(Tai_const.Createname(make_mangledname('INIT$',current_module.localsymtable,''),0))
else
unitinits.concat(Tai_const.Create_sym(nil));
if (current_module.flags and uf_finalize)<>0 then
unitinits.concat(Tai_const.Createname(make_mangledname('FINALIZE$',current_module.localsymtable,''),AT_FUNCTION,0))
unitinits.concat(Tai_const.Createname(make_mangledname('FINALIZE$',current_module.localsymtable,''),0))
else
unitinits.concat(Tai_const.Create_sym(nil));
inc(count);

View File

@ -371,10 +371,10 @@ const
current_asmdata.asmlists[al_imports].concat(Tai_section.create(sec_stub,'',0));
current_asmdata.asmlists[al_imports].concat(Tai_align.Create(16));
result := current_asmdata.newasmsymbol(stubname,AB_EXTERNAL,AT_FUNCTION);
result := current_asmdata.RefAsmSymbol(stubname);
current_asmdata.asmlists[al_imports].concat(Tai_symbol.Create(result,0));
current_asmdata.asmlists[al_imports].concat(tai_directive.create(asd_indirect_symbol,s));
l1 := current_asmdata.newasmsymbol('L'+s+'$lazy_ptr',AB_EXTERNAL,AT_FUNCTION);
l1 := current_asmdata.RefAsmSymbol('L'+s+'$lazy_ptr');
reference_reset_symbol(href,l1,0);
href.refaddr := addr_hi;
current_asmdata.asmlists[al_imports].concat(taicpu.op_reg_ref(A_LIS,NR_R11,href));
@ -386,7 +386,7 @@ const
current_asmdata.asmlists[al_imports].concat(tai_directive.create(asd_lazy_symbol_pointer,''));
current_asmdata.asmlists[al_imports].concat(Tai_symbol.Create(l1,0));
current_asmdata.asmlists[al_imports].concat(tai_directive.create(asd_indirect_symbol,s));
current_asmdata.asmlists[al_imports].concat(tai_const.createname(strpnew('dyld_stub_binding_helper'),AT_FUNCTION,0));
current_asmdata.asmlists[al_imports].concat(tai_const.createname(strpnew('dyld_stub_binding_helper'),0));
end;
@ -398,7 +398,7 @@ const
with some restore code.}
if (target_info.system <> system_powerpc_darwin) then
begin
list.concat(taicpu.op_sym(A_BL,current_asmdata.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
list.concat(taicpu.op_sym(A_BL,current_asmdata.RefAsmSymbol(s)));
if target_info.system=system_powerpc_macos then
list.concat(taicpu.op_none(A_NOP));
end
@ -907,7 +907,7 @@ const
if (target_info.system = system_powerpc_darwin) then
p := taicpu.op_sym(A_B,get_darwin_call_stub(s))
else
p := taicpu.op_sym(A_B,current_asmdata.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION));
p := taicpu.op_sym(A_B,current_asmdata.RefAsmSymbol(s));
p.is_jmp := true;
list.concat(p)
end;
@ -1112,11 +1112,11 @@ const
{ save floating-point registers
if (cs_create_pic in aktmoduleswitches) and not(usesgpr) then
begin
a_call_name(current_asmdata.newasmsymbol('_savefpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14)+'_g',AB_EXTERNAL,AT_FUNCTION));
a_call_name(current_asmdata.RefAsmSymbol('_savefpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14)+'_g'));
gotgot:=true;
end
else
a_call_name(current_asmdata.newasmsymbol('_savefpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14),AB_EXTERNAL,AT_FUNCTION));
a_call_name(current_asmdata.RefAsmSymbol('_savefpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14)));
}
reference_reset_base(href,NR_R1,-8);
@ -1138,11 +1138,11 @@ const
{
if cs_create_pic in aktmoduleswitches then
begin
a_call_name(current_asmdata.newasmsymbol('_savegpr_'+tostr(ord(firstreggpr)-ord(R_14)+14)+'_g',AB_EXTERNAL,AT_FUNCTION));
a_call_name(current_asmdata.RefAsmSymbol('_savegpr_'+tostr(ord(firstreggpr)-ord(R_14)+14)+'_g'));
gotgot:=true;
end
else
a_call_name(current_asmdata.newasmsymbol('_savegpr_'+tostr(ord(firstreggpr)-ord(R_14)+14),AB_EXTERNAL,AT_FUNCTION))
a_call_name(current_asmdata.RefAsmSymbol('_savegpr_'+tostr(ord(firstreggpr)-ord(R_14)+14)))
}
if (firstregint <= RS_R22) or
((cs_opt_size in aktoptimizerswitches) and
@ -1302,12 +1302,10 @@ const
list.concat(taicpu.op_reg_reg_const(A_ADDI,r,r,(ord(R_F31)-ord(firstregfpu.enum)+1)*8));
{
if (pi_do_call in current_procinfo.flags) then
a_call_name(current_asmdata.newasmsymbol('_restfpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14)+
'_x',AB_EXTERNAL,AT_FUNCTION))
a_call_name(current_asmdata.RefAsmSymbol('_restfpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14)+'_x'))
else
{ leaf node => lr haven't to be restored }
a_call_name('_restfpr_'+tostr(ord(firstregfpu.enum)-ord(R_F14)+14)+
'_l');
a_call_name('_restfpr_'+tostr(ord(firstregfpu.enum)-ord(R_F14)+14)+'_l');
genret:=false;
}
end;
@ -2003,7 +2001,7 @@ const
end
{ case 0 }
else
list.concat(taicpu.op_sym(A_B,current_asmdata.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
list.concat(taicpu.op_sym(A_B,current_asmdata.RefAsmSymbol(procdef.mangledname)));
List.concat(Tai_symbol_end.Createname(labelname));
end;

View File

@ -85,7 +85,7 @@ implementation
cg.getcpuregister(current_asmdata.CurrAsmList,NR_R31);
reference_reset(tmpref);
tmpref.symbol:=current_asmdata.newasmsymbol(tglobalvarsym(tprocdef(procdefinition).libsym).mangledname,AB_EXTERNAL,AT_DATA);
tmpref.symbol:=current_asmdata.RefAsmSymbol(tglobalvarsym(tprocdef(procdefinition).libsym).mangledname);
tmpref.refaddr:=addr_hi;
current_asmdata.CurrAsmList.concat(taicpu.op_reg_ref(A_LIS,NR_R31,tmpref));
tmpref.base:=NR_R31;

View File

@ -563,8 +563,7 @@ procedure tcgppc.a_call_name_direct(list: TAsmList; s: string; prependDot : bool
begin
if (prependDot) then
s := '.' + s;
list.concat(taicpu.op_sym(A_BL, current_asmdata.newasmsymbol(s, AB_EXTERNAL,
AT_FUNCTION)));
list.concat(taicpu.op_sym(A_BL, current_asmdata.RefAsmSymbol(s)));
if (addNOP) then
list.concat(taicpu.op_none(A_NOP));
@ -1196,8 +1195,7 @@ procedure tcgppc.a_jmp_name(list: TAsmList; const s: string);
var
p: taicpu;
begin
p := taicpu.op_sym(A_B, current_asmdata.newasmsymbol(s, AB_EXTERNAL,
AT_LABEL));
p := taicpu.op_sym(A_B, current_asmdata.RefAsmSymbol(s));
p.is_jmp := true;
list.concat(p)
end;
@ -1893,9 +1891,7 @@ begin
op_onr11methodaddr;
end else
{$note ts:todo add GOT change?? - think not needed :) }
list.concat(taicpu.op_sym(A_B,
current_asmdata.newasmsymbol('.' + procdef.mangledname, AB_EXTERNAL,
AT_FUNCTION)));
list.concat(taicpu.op_sym(A_B,current_asmdata.RefAsmSymbol('.' + procdef.mangledname)));
List.concat(Tai_symbol_end.Createname(labelname));
end;
@ -1927,7 +1923,7 @@ begin
symname := '_$' + current_asmdata.name + '$got$' + symbol;
l:=current_asmdata.getasmsymbol(symname);
if not(assigned(l)) then begin
l:=current_asmdata.newasmsymbol(symname, AB_COMMON, AT_DATA);
l:=current_asmdata.DefineAsmSymbol(symname, AB_COMMON, AT_DATA);
current_asmdata.asmlists[al_picdata].concat(tai_section.create(sec_toc, '.toc', 8));
current_asmdata.asmlists[al_picdata].concat(tai_symbol.create_global(l,0));
current_asmdata.asmlists[al_picdata].concat(tai_directive.create(asd_toc_entry, symbol + '[TC], ' + symbol));
@ -2145,8 +2141,7 @@ var
p: taicpu;
begin
p := taicpu.op_sym(op, current_asmdata.newasmsymbol(l.name, AB_EXTERNAL,
AT_LABEL));
p := taicpu.op_sym(op, current_asmdata.RefAsmSymbol(l.name));
if op <> A_B then
create_cond_norm(c, crval, p.condition);
p.is_jmp := true;
@ -2169,7 +2164,7 @@ begin
symname := '_$' + current_asmdata.name + '$toc$' + hexstr(a, sizeof(a)*2);
l:=current_asmdata.getasmsymbol(symname);
if not(assigned(l)) then begin
l:=current_asmdata.newasmsymbol(symname,AB_GLOBAL, AT_DATA);
l:=current_asmdata.DefineAsmSymbol(symname,AB_GLOBAL, AT_DATA);
current_asmdata.asmlists[al_picdata].concat(tai_section.create(sec_toc, '.toc', 8));
current_asmdata.asmlists[al_picdata].concat(tai_symbol.create_global(l,0));
current_asmdata.asmlists[al_picdata].concat(tai_directive.create(asd_toc_entry, symname + '[TC], ' + inttostr(a)));

View File

@ -1543,9 +1543,9 @@ implementation
begin
if (po_global in pd.procoptions) or
(cs_profile in aktmoduleswitches) then
current_asmdata.newasmsymbol(pd.mangledname,AB_GLOBAL,AT_FUNCTION)
current_asmdata.DefineAsmSymbol(pd.mangledname,AB_GLOBAL,AT_FUNCTION)
else
current_asmdata.newasmsymbol(pd.mangledname,AB_LOCAL,AT_FUNCTION);
current_asmdata.DefineAsmSymbol(pd.mangledname,AB_LOCAL,AT_FUNCTION);
end;
current_procinfo:=old_current_procinfo;

View File

@ -249,8 +249,8 @@ implementation
begin
if not Tobjectdef(pointertype.def).is_related(Tobjectdef(pointertype.def)) then
message(parser_e_illegal_expression);
datalist.concat(Tai_const.Create_sym(current_asmdata.newasmsymbol(
Tobjectdef(pointertype.def).vmt_mangledname,AB_EXTERNAL,AT_DATA)));
datalist.concat(Tai_const.Create_sym(current_asmdata.RefAsmSymbol(
Tobjectdef(pointertype.def).vmt_mangledname)));
end;
niln:
datalist.concat(Tai_const.Create_sym(nil));
@ -413,17 +413,17 @@ implementation
if po_abstractmethod in tprocsym(srsym).first_procdef.procoptions then
Message(type_e_cant_take_address_of_abstract_method)
else
datalist.concat(Tai_const.Createname(tprocsym(srsym).first_procdef.mangledname,AT_FUNCTION,offset));
datalist.concat(Tai_const.Createname(tprocsym(srsym).first_procdef.mangledname,offset));
end;
globalvarsym :
datalist.concat(Tai_const.Createname(tglobalvarsym(srsym).mangledname,AT_DATA,offset));
datalist.concat(Tai_const.Createname(tglobalvarsym(srsym).mangledname,offset));
typedconstsym :
datalist.concat(Tai_const.Createname(ttypedconstsym(srsym).mangledname,AT_DATA,offset));
datalist.concat(Tai_const.Createname(ttypedconstsym(srsym).mangledname,offset));
labelsym :
datalist.concat(Tai_const.Createname(tlabelsym(srsym).mangledname,AT_LABEL,offset));
datalist.concat(Tai_const.Createname(tlabelsym(srsym).mangledname,offset));
constsym :
if tconstsym(srsym).consttyp=constresourcestring then
datalist.concat(Tai_const.Createname(make_mangledname('RESOURCESTRINGLIST',tconstsym(srsym).owner,''),AT_DATA,tconstsym(srsym).resstrindex*(4+sizeof(aint)*3)+4+sizeof(aint)))
datalist.concat(Tai_const.Createname(make_mangledname('RESOURCESTRINGLIST',tconstsym(srsym).owner,''),tconstsym(srsym).resstrindex*(4+sizeof(aint)*3)+4+sizeof(aint)))
else
Message(type_e_variable_id_expected);
else
@ -441,7 +441,7 @@ implementation
if (tinlinenode(p).left.nodetype=typen) then
begin
datalist.concat(Tai_const.createname(
tobjectdef(tinlinenode(p).left.resulttype.def).vmt_mangledname,AT_DATA,0));
tobjectdef(tinlinenode(p).left.resulttype.def).vmt_mangledname,0));
end
else
Message(parser_e_illegal_expression);
@ -740,7 +740,7 @@ implementation
(tloadnode(p).symtableentry.typ=procsym) then
begin
datalist.concat(Tai_const.createname(
tprocsym(tloadnode(p).symtableentry).first_procdef.mangledname,AT_FUNCTION,0));
tprocsym(tloadnode(p).symtableentry).first_procdef.mangledname,0));
end
else
Message(parser_e_illegal_expression);
@ -942,7 +942,7 @@ implementation
begin
for i:=1 to vmt_offset-aktpos do
datalist.concat(tai_const.create_8bit(0));
datalist.concat(tai_const.createname(vmt_mangledname,AT_DATA,0));
datalist.concat(tai_const.createname(vmt_mangledname,0));
{ this is more general }
aktpos:=vmt_offset + sizeof(aint);
end;
@ -968,7 +968,7 @@ implementation
begin
for i:=1 to tobjectdef(t.def).vmt_offset-aktpos do
datalist.concat(tai_const.create_8bit(0));
datalist.concat(tai_const.createname(tobjectdef(t.def).vmt_mangledname,AT_DATA,0));
datalist.concat(tai_const.createname(tobjectdef(t.def).vmt_mangledname,0));
{ this is more general }
aktpos:=tobjectdef(t.def).vmt_offset + sizeof(aint);
end;

View File

@ -1522,7 +1522,7 @@ unit raatt;
begin
oper.opr.typ:=OPR_SYMBOL;
oper.opr.symofs:=l;
oper.opr.symbol:=current_asmdata.newasmsymbol(tempstr,AB_EXTERNAL,tempsymtyp);
oper.opr.symbol:=current_asmdata.RefAsmSymbol(tempstr);
end
else
begin

View File

@ -810,7 +810,7 @@ Begin
staticsymtable :
begin
initref;
opr.ref.symbol:=current_asmdata.newasmsymbol(tglobalvarsym(sym).mangledname,AB_EXTERNAL,AT_DATA);
opr.ref.symbol:=current_asmdata.RefAsmSymbol(tglobalvarsym(sym).mangledname);
end;
parasymtable,
localsymtable :
@ -872,7 +872,7 @@ Begin
typedconstsym :
begin
initref;
opr.ref.symbol:=current_asmdata.newasmsymbol(ttypedconstsym(sym).mangledname,AB_EXTERNAL,AT_DATA);
opr.ref.symbol:=current_asmdata.RefAsmSymbol(ttypedconstsym(sym).mangledname);
case ttypedconstsym(sym).typedconsttype.def.deftype of
orddef,
enumdef,
@ -920,7 +920,7 @@ Begin
Message(asmr_w_calling_overload_func);
l:=opr.ref.offset;
opr.typ:=OPR_SYMBOL;
opr.symbol:=current_asmdata.newasmsymbol(tprocsym(sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION);
opr.symbol:=current_asmdata.RefAsmSymbol(tprocsym(sym).first_procdef.mangledname);
opr.symofs:=l;
hasvar:=true;
SetupVar:=TRUE;
@ -1484,7 +1484,7 @@ end;
Procedure ConcatConstSymbol(p : TAsmList;const sym:string;symtyp:tasmsymtype;l:aint);
begin
p.concat(Tai_const.Createname(sym,symtyp,l));
p.concat(Tai_const.Createname(sym,l));
end;

View File

@ -427,7 +427,7 @@ implementation
procedure TCgSparc.a_call_name(list:TAsmList;const s:string);
begin
list.concat(taicpu.op_sym(A_CALL,current_asmdata.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
list.concat(taicpu.op_sym(A_CALL,current_asmdata.RefAsmSymbol(s)));
{ Delay slot }
list.concat(taicpu.op_none(A_NOP));
end;
@ -883,7 +883,7 @@ implementation
procedure TCgSparc.a_jmp_always(List:TAsmList;l:TAsmLabel);
begin
List.Concat(TAiCpu.op_sym(A_BA,current_asmdata.newasmsymbol(l.name,AB_EXTERNAL,AT_FUNCTION)));
List.Concat(TAiCpu.op_sym(A_BA,current_asmdata.RefAsmSymbol(l.name)));
{ Delay slot }
list.Concat(TAiCpu.Op_none(A_NOP));
end;
@ -891,7 +891,7 @@ implementation
procedure tcgsparc.a_jmp_name(list : TAsmList;const s : string);
begin
List.Concat(TAiCpu.op_sym(A_BA,current_asmdata.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
List.Concat(TAiCpu.op_sym(A_BA,current_asmdata.RefAsmSymbol(s)));
{ Delay slot }
list.Concat(TAiCpu.Op_none(A_NOP));
end;
@ -1298,7 +1298,7 @@ implementation
list.concat(taicpu.op_reg(A_JMP,NR_L1));
end
else
list.concat(taicpu.op_sym(A_BA,current_asmdata.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
list.concat(taicpu.op_sym(A_BA,current_asmdata.RefAsmSymbol(procdef.mangledname)));
{ Delay slot }
list.Concat(TAiCpu.Op_none(A_NOP));

View File

@ -343,7 +343,7 @@ Interface
Consume(AS_LPAREN);
BuildConstSymbolExpression(false, true,false,l,tempstr,tempsymtyp);
if not assigned(oper.opr.ref.symbol) then
oper.opr.ref.symbol:=current_asmdata.newasmsymbol(tempstr,AB_EXTERNAL,tempsymtyp)
oper.opr.ref.symbol:=current_asmdata.RefAsmSymbol(tempstr)
else
Message(asmr_e_cant_have_multiple_relocatable_symbols);
case oper.opr.typ of

View File

@ -4732,7 +4732,7 @@ implementation
exit;
if not(po_virtualmethod in tprocdef(proc.procdef).procoptions) then
begin
current_asmdata.asmlists[al_rtti].concat(Tai_const.createname(tprocdef(proc.procdef).mangledname,AT_FUNCTION,0));
current_asmdata.asmlists[al_rtti].concat(Tai_const.createname(tprocdef(proc.procdef).mangledname,0));
typvalue:=1;
end
else
@ -4887,7 +4887,7 @@ implementation
hp:=tproptablelistitem(proptablelist.first);
while assigned(hp) do
begin
current_asmdata.asmlists[al_rtti].concat(Tai_const.Createname(tobjectdef(hp.def).vmt_mangledname,AT_DATA,0));
current_asmdata.asmlists[al_rtti].concat(Tai_const.Createname(tobjectdef(hp.def).vmt_mangledname,0));
hp:=tproptablelistitem(hp.next);
end;
@ -4951,7 +4951,7 @@ implementation
if not(objecttype in [odt_interfacecom,odt_interfacecorba]) then
begin
if (oo_has_vmt in objectoptions) then
current_asmdata.asmlists[al_rtti].concat(Tai_const.Createname(vmt_mangledname,AT_DATA,0))
current_asmdata.asmlists[al_rtti].concat(Tai_const.Createname(vmt_mangledname,0))
else
current_asmdata.asmlists[al_rtti].concat(Tai_const.create_sym(nil));
end;

View File

@ -2338,7 +2338,7 @@ implementation
begin
{ the label is always a global label }
if not assigned(lab) then
lab:=current_asmdata.newasmsymbol(mangledname,AB_EXTERNAL,AT_DATA);
lab:=current_asmdata.RefAsmSymbol(mangledname);
get_label:=lab;
end;

View File

@ -167,7 +167,7 @@ begin
{ place jump in al_procedures }
current_asmdata.asmlists[al_procedures].concat(Tai_align.Create_op(4,$90));
current_asmdata.asmlists[al_procedures].concat(Tai_symbol.Createname_global(hp2.name^,AT_FUNCTION,0));
current_asmdata.asmlists[al_procedures].concat(Taicpu.Op_sym(A_JMP,S_NO,current_asmdata.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
current_asmdata.asmlists[al_procedures].concat(Taicpu.Op_sym(A_JMP,S_NO,current_asmdata.RefAsmSymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
current_asmdata.asmlists[al_procedures].concat(Tai_symbol_end.Createname(hp2.name^));
{$endif i386}
end;

View File

@ -231,7 +231,7 @@ begin
(target_info.system in [system_i386_freebsd]) then
begin
{$ifdef x86}
sym:=current_asmdata.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION);
sym:=current_asmdata.RefAsmSymbol(tprocsym(hp2.sym).first_procdef.mangledname);
reference_reset_symbol(r,sym,0);
if cs_create_pic in aktmoduleswitches then
r.refaddr:=addr_pic

View File

@ -179,7 +179,7 @@ begin
(target_info.system in [system_x86_64_linux,system_i386_linux]) then
begin
{$ifdef x86}
sym:=current_asmdata.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION);
sym:=current_asmdata.RefAsmSymbol(tprocsym(hp2.sym).first_procdef.mangledname);
reference_reset_symbol(r,sym,0);
if cs_create_pic in aktmoduleswitches then
r.refaddr:=addr_pic

View File

@ -244,7 +244,7 @@ begin
{ place jump in al_procedures }
current_asmdata.asmlists[al_procedures].concat(Tai_align.Create_op(4,$90));
current_asmdata.asmlists[al_procedures].concat(Tai_symbol.Createname_global(hp2.name^,AT_FUNCTION,0));
current_asmdata.asmlists[al_procedures].concat(Taicpu.Op_sym(A_JMP,S_NO,current_asmdata.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
current_asmdata.asmlists[al_procedures].concat(Taicpu.Op_sym(A_JMP,S_NO,current_asmdata.RefAsmSymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
current_asmdata.asmlists[al_procedures].concat(Tai_symbol_end.Createname(hp2.name^));
{$endif i386}
end;

View File

@ -236,7 +236,7 @@ begin
{ place jump in al_procedures }
current_asmdata.asmlists[al_procedures].concat(Tai_align.Create_op(4,$90));
current_asmdata.asmlists[al_procedures].concat(Tai_symbol.Createname_global(hp2.name^,AT_FUNCTION,0));
current_asmdata.asmlists[al_procedures].concat(Taicpu.Op_sym(A_JMP,S_NO,current_asmdata.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
current_asmdata.asmlists[al_procedures].concat(Taicpu.Op_sym(A_JMP,S_NO,current_asmdata.RefAsmSymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
current_asmdata.asmlists[al_procedures].concat(Tai_symbol_end.Createname(hp2.name^));
{$endif i386}
end;

View File

@ -525,7 +525,7 @@ unit cgx86;
procedure tcgx86.a_jmp_name(list : TAsmList;const s : string);
begin
list.concat(taicpu.op_sym(A_JMP,S_NO,current_asmdata.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
list.concat(taicpu.op_sym(A_JMP,S_NO,current_asmdata.RefAsmSymbol(s)));
end;
@ -550,7 +550,7 @@ unit cgx86;
current_asmdata.asmlists[al_imports]:=TAsmList.create;
current_asmdata.asmlists[al_imports].concat(Tai_section.create(sec_stub,'',0));
result := current_asmdata.newasmsymbol(stubname,AB_EXTERNAL,AT_FUNCTION);
result := current_asmdata.RefAsmSymbol(stubname);
current_asmdata.asmlists[al_imports].concat(Tai_symbol.Create(result,0));
current_asmdata.asmlists[al_imports].concat(tai_directive.create(asd_indirect_symbol,s));
current_asmdata.asmlists[al_imports].concat(taicpu.op_none(A_HLT));
@ -569,7 +569,7 @@ unit cgx86;
if (target_info.system <> system_i386_darwin) then
begin
sym:=current_asmdata.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION);
sym:=current_asmdata.RefAsmSymbol(s);
reference_reset_symbol(r,sym,0);
if cs_create_pic in aktmoduleswitches then
begin
@ -595,7 +595,7 @@ unit cgx86;
sym : tasmsymbol;
r : treference;
begin
sym:=current_asmdata.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION);
sym:=current_asmdata.RefAsmSymbol(s);
reference_reset_symbol(r,sym,0);
r.refaddr:=addr_full;
list.concat(taicpu.op_ref(A_CALL,S_NO,r));
@ -808,8 +808,7 @@ unit cgx86;
system_i386_linux:
if segment=NR_GS then
begin
reference_reset_symbol(tmpref,current_asmdata.newasmsymbol(
'___fpc_threadvar_offset',AB_EXTERNAL,AT_DATA),0);
reference_reset_symbol(tmpref,current_asmdata.RefAsmSymbol('___fpc_threadvar_offset'),0);
tmpref.segment:=NR_GS;
list.concat(Taicpu.op_ref_reg(A_ADD,tcgsize2opsize[OS_ADDR],tmpref,r));
end

View File

@ -225,11 +225,9 @@ implementation
location:=left.location;
case tfloatdef(resulttype.def).typ of
s32real:
reference_reset_symbol(href,
current_asmdata.newasmsymbol('FPC_ABSMASK_SINGLE',AB_EXTERNAL,AT_DATA),0);
reference_reset_symbol(href,current_asmdata.RefAsmSymbol('FPC_ABSMASK_SINGLE'),0);
s64real:
reference_reset_symbol(href,
current_asmdata.newasmsymbol('FPC_ABSMASK_DOUBLE',AB_EXTERNAL,AT_DATA),0);
reference_reset_symbol(href,current_asmdata.RefAsmSymbol('FPC_ABSMASK_DOUBLE'),0);
else
internalerror(200506081);
end;

View File

@ -128,7 +128,7 @@ unit cgcpu;
end
else
begin
sym:=current_asmdata.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION);
sym:=current_asmdata.RefAsmSymbol(procdef.mangledname);
reference_reset_symbol(r,sym,0);
if cs_create_pic in aktmoduleswitches then
r.refaddr:=addr_pic