mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-16 10:19:30 +02:00
* big transformation of Tai_[const_]Symbol.Create[data]name*
This commit is contained in:
parent
138027e76e
commit
4fecc1a56f
@ -190,9 +190,7 @@ interface
|
||||
procedure Freeasmsymbolidx;
|
||||
procedure DerefAsmsymbol(var s:tasmsymbol);
|
||||
{ asmsymbol }
|
||||
function newasmsymbol(const s : string) : tasmsymbol;
|
||||
function newasmsymboldata(const s : string) : tasmsymbol;
|
||||
function newasmsymboltype(const s : string;_bind:TAsmSymBind;_typ:TAsmsymtype) : tasmsymbol;
|
||||
function newasmsymbol(const s : string;_bind:TAsmSymBind;_typ:TAsmsymtype) : tasmsymbol;
|
||||
function getasmsymbol(const s : string) : tasmsymbol;
|
||||
function renameasmsymbol(const sold, snew : string):tasmsymbol;
|
||||
function newasmlabel(nr:longint;is_addr,is_data:boolean) : tasmlabel;
|
||||
@ -702,37 +700,7 @@ implementation
|
||||
end;
|
||||
|
||||
|
||||
function TAsmLibraryData.newasmsymbol(const s : string) : tasmsymbol;
|
||||
var
|
||||
hp : tasmsymbol;
|
||||
begin
|
||||
hp:=tasmsymbol(symbolsearch.search(s));
|
||||
if not assigned(hp) then
|
||||
begin
|
||||
{ Not found, insert it as an External }
|
||||
hp:=tasmsymbol.create(s,AB_EXTERNAL,AT_FUNCTION);
|
||||
symbolsearch.insert(hp);
|
||||
end;
|
||||
newasmsymbol:=hp;
|
||||
end;
|
||||
|
||||
|
||||
function TAsmLibraryData.newasmsymboldata(const s : string) : tasmsymbol;
|
||||
var
|
||||
hp : tasmsymbol;
|
||||
begin
|
||||
hp:=tasmsymbol(symbolsearch.search(s));
|
||||
if not assigned(hp) then
|
||||
begin
|
||||
{ Not found, insert it as an External }
|
||||
hp:=tasmsymbol.create(s,AB_EXTERNAL,AT_DATA);
|
||||
symbolsearch.insert(hp);
|
||||
end;
|
||||
newasmsymboldata:=hp;
|
||||
end;
|
||||
|
||||
|
||||
function TAsmLibraryData.newasmsymboltype(const s : string;_bind:TAsmSymBind;_typ:Tasmsymtype) : tasmsymbol;
|
||||
function TAsmLibraryData.newasmsymbol(const s : string;_bind:TAsmSymBind;_typ:Tasmsymtype) : tasmsymbol;
|
||||
var
|
||||
hp : tasmsymbol;
|
||||
begin
|
||||
@ -744,11 +712,11 @@ implementation
|
||||
end
|
||||
else
|
||||
begin
|
||||
{ Not found, insert it as an External }
|
||||
{ Not found, insert it. }
|
||||
hp:=tasmsymbol.create(s,_bind,_typ);
|
||||
symbolsearch.insert(hp);
|
||||
end;
|
||||
newasmsymboltype:=hp;
|
||||
newasmsymbol:=hp;
|
||||
end;
|
||||
|
||||
|
||||
@ -905,7 +873,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.15 2003-05-23 14:27:35 peter
|
||||
Revision 1.16 2004-03-02 00:36:32 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.15 2003/05/23 14:27:35 peter
|
||||
* remove some unit dependencies
|
||||
* current_procinfo changes to store more info
|
||||
|
||||
|
@ -269,10 +269,8 @@ interface
|
||||
size : longint;
|
||||
constructor Create(_sym:tasmsymbol;siz:longint);
|
||||
constructor Create_Global(_sym:tasmsymbol;siz:longint);
|
||||
constructor Createname(const _name : string;siz:longint);
|
||||
constructor Createname_global(const _name : string;siz:longint);
|
||||
constructor Createdataname(const _name : string;siz:longint);
|
||||
constructor Createdataname_global(const _name : string;siz:longint);
|
||||
constructor Createname(const _name : string;_symtyp:Tasmsymtype;siz:longint);
|
||||
constructor Createname_global(const _name : string;_symtyp:Tasmsymtype;siz:longint);
|
||||
constructor ppuload(t:taitype;ppufile:tcompilerppufile);override;
|
||||
procedure ppuwrite(ppufile:tcompilerppufile);override;
|
||||
procedure derefimpl;override;
|
||||
@ -358,10 +356,8 @@ interface
|
||||
constructor Create(_sym:tasmsymbol);
|
||||
constructor Create_offset(_sym:tasmsymbol;ofs:longint);
|
||||
constructor Create_rva(_sym:tasmsymbol);
|
||||
constructor Createname(const name:string);
|
||||
constructor Createname_offset(const name:string;ofs:longint);
|
||||
constructor Createname(const name:string;_symtyp:Tasmsymtype;ofs:longint);
|
||||
constructor Createname_rva(const name:string);
|
||||
constructor Createdataname(const name:string);
|
||||
constructor ppuload(t:taitype;ppufile:tcompilerppufile);override;
|
||||
procedure ppuwrite(ppufile:tcompilerppufile);override;
|
||||
procedure derefimpl;override;
|
||||
@ -718,7 +714,7 @@ implementation
|
||||
begin
|
||||
inherited Create;
|
||||
typ:=ait_datablock;
|
||||
sym:=objectlibrary.newasmsymboltype(_name,AB_LOCAL,AT_DATA);
|
||||
sym:=objectlibrary.newasmsymbol(_name,AB_LOCAL,AT_DATA);
|
||||
{ keep things aligned }
|
||||
if _size<=0 then
|
||||
_size:=4;
|
||||
@ -731,7 +727,7 @@ implementation
|
||||
begin
|
||||
inherited Create;
|
||||
typ:=ait_datablock;
|
||||
sym:=objectlibrary.newasmsymboltype(_name,AB_GLOBAL,AT_DATA);
|
||||
sym:=objectlibrary.newasmsymbol(_name,AB_GLOBAL,AT_DATA);
|
||||
{ keep things aligned }
|
||||
if _size<=0 then
|
||||
_size:=4;
|
||||
@ -788,43 +784,24 @@ implementation
|
||||
is_global:=true;
|
||||
end;
|
||||
|
||||
constructor tai_symbol.Createname(const _name : string;siz:longint);
|
||||
constructor tai_symbol.Createname(const _name : string;_symtyp:Tasmsymtype;siz:longint);
|
||||
begin
|
||||
inherited Create;
|
||||
typ:=ait_symbol;
|
||||
sym:=objectlibrary.newasmsymboltype(_name,AB_LOCAL,AT_FUNCTION);
|
||||
sym:=objectlibrary.newasmsymbol(_name,AB_LOCAL,_symtyp);
|
||||
size:=siz;
|
||||
is_global:=false;
|
||||
end;
|
||||
|
||||
constructor tai_symbol.Createname_global(const _name : string;siz:longint);
|
||||
constructor tai_symbol.Createname_global(const _name : string;_symtyp:Tasmsymtype;siz:longint);
|
||||
begin
|
||||
inherited Create;
|
||||
typ:=ait_symbol;
|
||||
sym:=objectlibrary.newasmsymboltype(_name,AB_GLOBAL,AT_FUNCTION);
|
||||
sym:=objectlibrary.newasmsymbol(_name,AB_GLOBAL,_symtyp);
|
||||
size:=siz;
|
||||
is_global:=true;
|
||||
end;
|
||||
|
||||
constructor tai_symbol.Createdataname(const _name : string;siz:longint);
|
||||
begin
|
||||
inherited Create;
|
||||
typ:=ait_symbol;
|
||||
sym:=objectlibrary.newasmsymboltype(_name,AB_LOCAL,AT_DATA);
|
||||
size:=siz;
|
||||
is_global:=false;
|
||||
end;
|
||||
|
||||
constructor tai_symbol.Createdataname_global(const _name : string;siz:longint);
|
||||
begin
|
||||
inherited Create;
|
||||
typ:=ait_symbol;
|
||||
sym:=objectlibrary.newasmsymboltype(_name,AB_GLOBAL,AT_DATA);
|
||||
size:=siz;
|
||||
is_global:=true;
|
||||
end;
|
||||
|
||||
|
||||
constructor tai_symbol.ppuload(t:taitype;ppufile:tcompilerppufile);
|
||||
begin
|
||||
inherited ppuload(t,ppufile);
|
||||
@ -850,7 +827,7 @@ implementation
|
||||
|
||||
|
||||
{****************************************************************************
|
||||
TAI_SYMBOL
|
||||
TAI_SYMBOL_END
|
||||
****************************************************************************}
|
||||
|
||||
constructor tai_symbol_end.Create(_sym:tasmsymbol);
|
||||
@ -864,7 +841,7 @@ implementation
|
||||
begin
|
||||
inherited Create;
|
||||
typ:=ait_symbol_end;
|
||||
sym:=objectlibrary.newasmsymboltype(_name,AB_GLOBAL,AT_NONE);
|
||||
sym:=objectlibrary.newasmsymbol(_name,AB_GLOBAL,AT_NONE);
|
||||
end;
|
||||
|
||||
constructor tai_symbol_end.ppuload(t:taitype;ppufile:tcompilerppufile);
|
||||
@ -981,21 +958,11 @@ implementation
|
||||
sym.increfs;
|
||||
end;
|
||||
|
||||
constructor tai_const_symbol.Createname(const name:string);
|
||||
constructor tai_const_symbol.Createname(const name:string;_symtyp:Tasmsymtype;ofs:longint);
|
||||
begin
|
||||
inherited Create;
|
||||
typ:=ait_const_symbol;
|
||||
sym:=objectlibrary.newasmsymbol(name);
|
||||
offset:=0;
|
||||
{ update sym info }
|
||||
sym.increfs;
|
||||
end;
|
||||
|
||||
constructor tai_const_symbol.Createname_offset(const name:string;ofs:longint);
|
||||
begin
|
||||
inherited Create;
|
||||
typ:=ait_const_symbol;
|
||||
sym:=objectlibrary.newasmsymbol(name);
|
||||
sym:=objectlibrary.newasmsymbol(name,AB_EXTERNAL,_symtyp);
|
||||
offset:=ofs;
|
||||
{ update sym info }
|
||||
sym.increfs;
|
||||
@ -1005,24 +972,12 @@ implementation
|
||||
begin
|
||||
inherited Create;
|
||||
typ:=ait_const_rva;
|
||||
sym:=objectlibrary.newasmsymbol(name);
|
||||
sym:=objectlibrary.newasmsymbol(name,AB_EXTERNAL,AT_FUNCTION);
|
||||
offset:=0;
|
||||
{ update sym info }
|
||||
sym.increfs;
|
||||
end;
|
||||
|
||||
|
||||
constructor tai_const_symbol.Createdataname(const name:string);
|
||||
begin
|
||||
inherited Create;
|
||||
typ:=ait_const_symbol;
|
||||
sym:=objectlibrary.newasmsymboltype(name,AB_EXTERNAL,AT_DATA);
|
||||
offset:=0;
|
||||
{ update sym info }
|
||||
sym.increfs;
|
||||
end;
|
||||
|
||||
|
||||
constructor tai_const_symbol.ppuload(t:taitype;ppufile:tcompilerppufile);
|
||||
begin
|
||||
inherited ppuload(t,ppufile);
|
||||
@ -2005,7 +1960,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.74 2004-02-27 12:13:15 daniel
|
||||
Revision 1.75 2004-03-02 00:36:32 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.74 2004/02/27 12:13:15 daniel
|
||||
- Removed troublesome writeln statement
|
||||
|
||||
Revision 1.73 2004/02/27 10:21:04 florian
|
||||
|
@ -85,7 +85,7 @@ end;
|
||||
procedure tcgalpha.a_call_name(list : taasmoutput;const s : string);
|
||||
|
||||
begin
|
||||
{ list^.concat(taicpu,op_sym(A_CALL,S_NO,newasmsymbol(s)))); }
|
||||
{ list^.concat(taicpu,op_sym(A_CALL,S_NO,newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)))); }
|
||||
{!!!!!!!!!1 offset is ignored }
|
||||
abstract;
|
||||
end;
|
||||
@ -161,7 +161,10 @@ end;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.3 2002-09-29 23:42:45 florian
|
||||
Revision 1.4 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.3 2002/09/29 23:42:45 florian
|
||||
* several fixes to get forward with alpha compilation
|
||||
|
||||
Revision 1.2 2002/09/07 15:25:10 peter
|
||||
|
@ -249,7 +249,7 @@ unit cgcpu;
|
||||
|
||||
procedure tcgarm.a_call_name(list : taasmoutput;const s : string);
|
||||
begin
|
||||
list.concat(taicpu.op_sym(A_BL,objectlibrary.newasmsymbol(s)));
|
||||
list.concat(taicpu.op_sym(A_BL,objectlibrary.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
|
||||
if not(pi_do_call in current_procinfo.flags) then
|
||||
internalerror(2003060703);
|
||||
end;
|
||||
@ -800,7 +800,7 @@ unit cgcpu;
|
||||
|
||||
procedure tcgarm.a_jmp_always(list : taasmoutput;l: tasmlabel);
|
||||
begin
|
||||
list.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(l.name)));
|
||||
list.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(l.name,AB_EXTERNAL,AT_FUNCTION)));
|
||||
end;
|
||||
|
||||
|
||||
@ -1273,7 +1273,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.44 2004-02-04 22:01:13 peter
|
||||
Revision 1.45 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.44 2004/02/04 22:01:13 peter
|
||||
* first try to get cpupara working for x86_64
|
||||
|
||||
Revision 1.43 2004/01/29 17:09:32 florian
|
||||
|
@ -438,7 +438,7 @@ Unit raarmgas;
|
||||
{ not found, finally ... add it anyways ... }
|
||||
Message1(asmr_w_id_supposed_external,expr);
|
||||
oper.InitRef;
|
||||
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr);
|
||||
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr,AB_EXTERNAL,AT_FUNCTION);
|
||||
end;
|
||||
end
|
||||
else
|
||||
@ -748,7 +748,10 @@ initialization
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.7 2004-01-20 21:02:56 florian
|
||||
Revision 1.8 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.7 2004/01/20 21:02:56 florian
|
||||
* fixed symbol type writing for arm-linux
|
||||
* fixed assembler generation for abs
|
||||
|
||||
|
@ -750,7 +750,7 @@ Implementation
|
||||
{ the symbol can be external
|
||||
so we must use newasmsymbol and
|
||||
not getasmsymbol !! PM }
|
||||
ps:=objectlibrary.newasmsymbol(copy(s,1,j-1));
|
||||
ps:=objectlibrary.newasmsymbol(copy(s,1,j-1),AB_EXTERNAL,AT_FUNCTION);
|
||||
if not assigned(ps) then
|
||||
internalerror(33006)
|
||||
else
|
||||
@ -860,7 +860,7 @@ Implementation
|
||||
else
|
||||
curr_n:=n_includefile;
|
||||
{ get symbol for this includefile }
|
||||
hp:=objectlibrary.newasmsymboltype('Ltext'+ToStr(IncludeCount),AB_LOCAL,AT_FUNCTION);
|
||||
hp:=objectlibrary.newasmsymbol('Ltext'+ToStr(IncludeCount),AB_LOCAL,AT_FUNCTION);
|
||||
if currpass=1 then
|
||||
begin
|
||||
hp.setaddress(currpass,objectalloc.currsec,objectalloc.sectionsize,0);
|
||||
@ -912,7 +912,7 @@ Implementation
|
||||
exit;
|
||||
store_sec:=objectalloc.currsec;
|
||||
objectalloc.seTSection(sec_code);
|
||||
hp:=objectlibrary.newasmsymboltype('Letext',AB_LOCAL,AT_FUNCTION);
|
||||
hp:=objectlibrary.newasmsymbol('Letext',AB_LOCAL,AT_FUNCTION);
|
||||
if currpass=1 then
|
||||
begin
|
||||
hp.setaddress(currpass,objectalloc.currsec,objectalloc.sectionsize,0);
|
||||
@ -1659,7 +1659,10 @@ Implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.62 2004-02-27 10:21:05 florian
|
||||
Revision 1.63 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.62 2004/02/27 10:21:05 florian
|
||||
* top_symbol killed
|
||||
+ refaddr to treference added
|
||||
+ refsymbol to treference added
|
||||
|
@ -1878,7 +1878,7 @@ implementation
|
||||
paraloc2:=paramanager.getintparaloc(pocall_default,2);
|
||||
if (cs_check_object in aktlocalswitches) then
|
||||
begin
|
||||
reference_reset_symbol(hrefvmt,objectlibrary.newasmsymboldata(objdef.vmt_mangledname),0);
|
||||
reference_reset_symbol(hrefvmt,objectlibrary.newasmsymbol(objdef.vmt_mangledname,AB_EXTERNAL,AT_DATA),0);
|
||||
paramanager.allocparaloc(list,paraloc2);
|
||||
a_paramaddr_ref(list,hrefvmt,paraloc2);
|
||||
paramanager.allocparaloc(list,paraloc1);
|
||||
@ -2109,7 +2109,10 @@ finalization
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.159 2004-02-27 10:21:05 florian
|
||||
Revision 1.160 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.159 2004/02/27 10:21:05 florian
|
||||
* top_symbol killed
|
||||
+ refaddr to treference added
|
||||
+ refsymbol to treference added
|
||||
|
@ -196,7 +196,7 @@ begin
|
||||
if not(assigned(resourcestringlist)) then
|
||||
resourcestringlist:=taasmoutput.create;
|
||||
resourcestringlist.insert(tai_const.create_32bit(resstrcount));
|
||||
resourcestringlist.insert(tai_symbol.createdataname_global(make_mangledname('RESOURCESTRINGLIST',current_module.localsymtable,''),0));
|
||||
resourcestringlist.insert(tai_symbol.createname_global(make_mangledname('RESOURCESTRINGLIST',current_module.localsymtable,''),AT_DATA,0));
|
||||
resourcestringlist.insert(tai_align.Create(const_align(pointer_size)));
|
||||
R:=TResourceStringItem(List.First);
|
||||
While assigned(R) do
|
||||
@ -300,7 +300,10 @@ end;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.21 2004-02-26 16:16:38 peter
|
||||
Revision 1.22 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.21 2004/02/26 16:16:38 peter
|
||||
* tai_const.create_ptr added
|
||||
|
||||
Revision 1.20 2003/12/29 19:31:20 florian
|
||||
|
@ -809,7 +809,7 @@ uses
|
||||
typ:=tasmsymtype(ppufile.getbyte);
|
||||
case asmsymtype of
|
||||
1 :
|
||||
librarydata.asmsymbolidx^[i-1]:=librarydata.newasmsymboltype(name,bind,typ);
|
||||
librarydata.asmsymbolidx^[i-1]:=librarydata.newasmsymbol(name,bind,typ);
|
||||
2 :
|
||||
librarydata.asmsymbolidx^[i-1]:=librarydata.newasmlabel(labelnr,false,false);
|
||||
3 :
|
||||
@ -1514,7 +1514,10 @@ uses
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.52 2004-02-03 16:14:13 peter
|
||||
Revision 1.53 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.52 2004/02/03 16:14:13 peter
|
||||
* fix remembering path of main source file
|
||||
|
||||
Revision 1.51 2004/01/26 16:12:27 daniel
|
||||
|
@ -168,9 +168,9 @@ begin
|
||||
make_global:=true;
|
||||
|
||||
if make_global then
|
||||
exprasmList.concat(Tai_symbol.Createname_global(labelname,0))
|
||||
exprasmList.concat(Tai_symbol.Createname_global(labelname,AT_FUNCTION,0))
|
||||
else
|
||||
exprasmList.concat(Tai_symbol.Createname(labelname,0));
|
||||
exprasmList.concat(Tai_symbol.Createname(labelname,AT_FUNCTION,0));
|
||||
|
||||
{ set param1 interface to self }
|
||||
adjustselfvalue(procdef,ioffset);
|
||||
@ -223,7 +223,7 @@ begin
|
||||
{ case 0 }
|
||||
else
|
||||
begin
|
||||
lab:=objectlibrary.newasmsymbol(procdef.mangledname);
|
||||
lab:=objectlibrary.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION);
|
||||
emit_sym(A_JMP,S_NO,lab);
|
||||
end;
|
||||
|
||||
@ -238,7 +238,10 @@ initialization
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.31 2004-02-27 13:42:52 olle
|
||||
Revision 1.32 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.31 2004/02/27 13:42:52 olle
|
||||
+ added Tai_symbol_end
|
||||
|
||||
Revision 1.30 2004/02/27 10:21:05 florian
|
||||
|
@ -1378,7 +1378,7 @@ Unit Ra386int;
|
||||
begin
|
||||
oper.opr.typ:=OPR_SYMBOL;
|
||||
oper.opr.symofs:=l;
|
||||
oper.opr.symbol:=objectlibrary.newasmsymbol(tempstr);
|
||||
oper.opr.symbol:=objectlibrary.newasmsymbol(tempstr,AB_EXTERNAL,AT_FUNCTION);
|
||||
end
|
||||
else
|
||||
begin
|
||||
@ -1977,7 +1977,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.69 2004-01-14 23:39:05 florian
|
||||
Revision 1.70 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.69 2004/01/14 23:39:05 florian
|
||||
* another bunch of x86-64 fixes mainly calling convention and
|
||||
assembler reader related
|
||||
|
||||
|
@ -211,7 +211,7 @@ unit cgcpu;
|
||||
procedure tcg68k.a_call_name(list : taasmoutput;const s : string);
|
||||
|
||||
begin
|
||||
list.concat(taicpu.op_sym(A_JSR,S_NO,objectlibrary.newasmsymbol(s)));
|
||||
list.concat(taicpu.op_sym(A_JSR,S_NO,objectlibrary.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
|
||||
end;
|
||||
|
||||
|
||||
@ -1271,7 +1271,10 @@ end.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.21 2004-01-30 12:17:18 florian
|
||||
Revision 1.22 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.21 2004/01/30 12:17:18 florian
|
||||
* fixed some m68k compilation problems
|
||||
|
||||
Revision 1.20 2003/04/27 11:21:36 peter
|
||||
|
@ -1448,7 +1448,7 @@ type
|
||||
l:=opr.val;
|
||||
opr.typ := OPR_SYMBOL;
|
||||
opr.symofs := l;
|
||||
opr.symbol := objectlibrary.newasmsymbol(tempstr);
|
||||
opr.symbol := objectlibrary.newasmsymbol(tempstr,AB_EXTERNAL,AT_FUNCTION);
|
||||
end;
|
||||
end;
|
||||
{ // Constant memory offset . // }
|
||||
@ -1523,7 +1523,7 @@ type
|
||||
Begin
|
||||
{ not found, finally ... add it anyways ... }
|
||||
Message1(asmr_w_id_supposed_external,expr);
|
||||
opr.ref.symbol:=objectlibrary.newasmsymbol(expr);
|
||||
opr.ref.symbol:=objectlibrary.newasmsymbol(expr,AB_EXTERNAL,AT_FUNCTION);
|
||||
end;
|
||||
end
|
||||
else
|
||||
@ -2269,7 +2269,10 @@ Begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.13 2003-02-19 22:00:16 daniel
|
||||
Revision 1.14 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.13 2003/02/19 22:00:16 daniel
|
||||
* Code generator converted to new register notation
|
||||
- Horribily outdated todo.txt removed
|
||||
|
||||
|
@ -2140,10 +2140,10 @@ option_help_pages=11025_[
|
||||
**2Sp_same as -Mgpc
|
||||
**2Ss_constructor name must be init (destructor must be done)
|
||||
**2St_allow static keyword in objects
|
||||
**1s_don't call assembler and linker (only with -a)
|
||||
**1s_don't call assembler and linker
|
||||
**2sh_Generate script to link on host
|
||||
**2sr_Skip register allocation phase (optimizations will be disabled)
|
||||
**2st_Generate script to link on target
|
||||
**2sr_Skip register allocation phase (optimizations will be disabled)
|
||||
**1u<x>_undefines the symbol <x>
|
||||
**1U_unit options:
|
||||
**2Un_don't check the unit name
|
||||
|
@ -633,7 +633,7 @@ const
|
||||
option_info=11024;
|
||||
option_help_pages=11025;
|
||||
|
||||
MsgTxtSize = 36001;
|
||||
MsgTxtSize = 35986;
|
||||
|
||||
MsgIdxMax : array[1..20] of longint=(
|
||||
17,63,197,53,57,44,99,20,35,60,
|
||||
|
@ -1,7 +1,7 @@
|
||||
{$ifdef Delphi}
|
||||
const msgtxt : array[0..000150] of string[240]=(
|
||||
const msgtxt : array[0..000149] of string[240]=(
|
||||
{$else Delphi}
|
||||
const msgtxt : array[0..000150,1..240] of char=(
|
||||
const msgtxt : array[0..000149,1..240] of char=(
|
||||
{$endif Delphi}
|
||||
'01000_T_Compiler: $1'#000+
|
||||
'01001_D_Compiler OS: $1'#000+
|
||||
@ -773,100 +773,100 @@ const msgtxt : array[0..000150,1..240] of char=(
|
||||
'**','2Sp_same as -Mgpc'#010+
|
||||
'**2Ss_constructor name must be init (destructor must be done)'#010+
|
||||
'**2St_allow static keyword in objects'#010+
|
||||
'**1s_don'#039't call assembler and linker (only with -a)'#010+
|
||||
'**1s_don'#039't call assembler and linker'#010+
|
||||
'**2sh_Generate script to link on host'#010+
|
||||
'**2sr_Skip register allocation p','hase (optimizations will be disabled'+
|
||||
')'#010+
|
||||
'**2st_Generate script to link on target'#010+
|
||||
'**2sr_S','kip register allocation phase (optimizations will be disabled'+
|
||||
')'#010+
|
||||
'**1u<x>_undefines the symbol <x>'#010+
|
||||
'**1U_unit options:'#010+
|
||||
'**2Un_don'#039't check the unit name'#010+
|
||||
'**2Ur_generate release unit files'#010+
|
||||
'**2Us_compile a system unit'#010+
|
||||
'**1v<x>_Be verbo','se. <x> is a combination of the following letters:'#010+
|
||||
'**1v<x>_Be verbose. <x> is a co','mbination of the following letters:'#010+
|
||||
'**2*_e : Show errors (default) d : Show debug info'#010+
|
||||
'**2*_w : Show warnings u : Show unit info'#010+
|
||||
'**2*_n : Show notes t : Show tried/used files'#010+
|
||||
'**2*_h : Show',' hints m : Show defined macros'#010+
|
||||
'**2*_h : Show hints ',' m : Show defined macros'#010+
|
||||
'**2*_i : Show general info p : Show compiled procedures'#010+
|
||||
'**2*_l : Show linenumbers c : Show conditionals'#010+
|
||||
'**2*_a : Show everything 0 : Show nothing (except error','s'+
|
||||
')'#010+
|
||||
'**2*_b : Show all procedure r : Rhide/GCC compatibility mode'#010+
|
||||
'**2*_a : Show everything 0 : Show nothing (except errors)'#010+
|
||||
'**2*_b : Sho','w all procedure r : Rhide/GCC compatibility mod'+
|
||||
'e'#010+
|
||||
'**2*_ declarations if an error x : Executable info (Win32 only)'#010+
|
||||
'**2*_ occurs'#010+
|
||||
'**1V_write fpcdebug.txt file with lots of debugging info'#010+
|
||||
'**1X_executable options:',#010+
|
||||
'*L2Xc_link with the c library'#010+
|
||||
'**1X_executable options:'#010+
|
||||
'*L2Xc_link wit','h the c library'#010+
|
||||
'**2Xs_strip all symbols from executable'#010+
|
||||
'**2XD_try to link dynamic (defines FPC_LINK_DYNAMIC)'#010+
|
||||
'**2XS_try to link static (default) (defines FPC_LINK_STATIC)'#010+
|
||||
'**2XX_try to link smart (defines FP','C_LINK_SMART)'#010+
|
||||
'**0*_Processor specific options:'#010+
|
||||
'**2XX_try to link smart (defines FPC_LINK_SMART)'#010+
|
||||
'*','*0*_Processor specific options:'#010+
|
||||
'3*1A<x>_output format:'#010+
|
||||
'3*2Aas_assemble using GNU AS'#010+
|
||||
'3*2Anasmcoff_coff (Go32v2) file using Nasm'#010+
|
||||
'3*2Anasmelf_elf32 (Linux) file using Nasm'#010+
|
||||
'3*2Awasm_obj file using Wasm (Watcom)'#010+
|
||||
'3*2Anasmobj_obj fi','le using Nasm'#010+
|
||||
'3*2Amasm_obj file using Masm (Microsoft)'#010+
|
||||
'3*2Anasmobj_obj file using Nasm'#010+
|
||||
'3','*2Amasm_obj file using Masm (Microsoft)'#010+
|
||||
'3*2Atasm_obj file using Tasm (Borland)'#010+
|
||||
'3*2Acoff_coff (Go32v2) using internal writer'#010+
|
||||
'3*2Apecoff_pecoff (Win32) using internal writer'#010+
|
||||
'3*1R<x>_assembler reading style:'#010+
|
||||
'3*2Ratt_read AT&T st','yle assembler'#010+
|
||||
'3*2Rintel_read Intel style assembler'#010+
|
||||
'3*2Ratt_read AT&T style assembler'#010+
|
||||
'3','*2Rintel_read Intel style assembler'#010+
|
||||
'3*2Rdirect_copy assembler text directly to assembler file'#010+
|
||||
'3*1O<x>_optimizations:'#010+
|
||||
'3*2Og_generate smaller code'#010+
|
||||
'3*2OG_generate faster code (default)'#010+
|
||||
'3*2Or_keep certain variables in registers'#010+
|
||||
'3','*2Ou_enable uncertain optimizations (see docs)'#010+
|
||||
'3*2Ou_enable unc','ertain optimizations (see docs)'#010+
|
||||
'3*2O1_level 1 optimizations (quick optimizations)'#010+
|
||||
'3*2O2_level 2 optimizations (-O1 + slower optimizations)'#010+
|
||||
'3*2O3_level 3 optimizations (-O2 repeatedly, max 5 times)'#010+
|
||||
'3*2Op<x>_target processor:'#010+
|
||||
'3','*3Op1_set target processor to 386/486'#010+
|
||||
'3*3Op1_set targe','t processor to 386/486'#010+
|
||||
'3*3Op2_set target processor to Pentium/PentiumMMX (tm)'#010+
|
||||
'3*3Op3_set target processor to PPro/PII/c6x86/K6 (tm)'#010+
|
||||
'3*1T<x>_Target operating system:'#010+
|
||||
'3*2Temx_OS/2 via EMX (including EMX/RSX extender)'#010+
|
||||
'3*2Tgo32v2','_Version 2 of DJ Delorie DOS extender'#010+
|
||||
'3*2Tgo32v2_Version 2 of D','J Delorie DOS extender'#010+
|
||||
'3*2Tlinux_Linux'#010+
|
||||
'3*2Tnetware_Novell Netware Module (clib)'#010+
|
||||
'3*2Tos2_OS/2 / eComStation'#010+
|
||||
'3*2Tsunos_SunOS/Solaris'#010+
|
||||
'3*2Twatcom_Watcom compatible DOS extender'#010+
|
||||
'3*2Twdosx_WDOSX DOS extender'#010+
|
||||
'3*2Twin32_Windows 32 Bi','t'#010+
|
||||
'3*1W<x>_Win32-like target options'#010+
|
||||
'3*2Twin32_Windows 32 Bit'#010+
|
||||
'3*1W<x>_Win32','-like target options'#010+
|
||||
'3*2WB<x>_Set Image base to Hexadecimal <x> value'#010+
|
||||
'3*2WC_Specify console type application'#010+
|
||||
'3*2WD_Use DEFFILE to export functions of DLL or EXE'#010+
|
||||
'3*2WF_Specify full-screen type application (OS/2 only)'#010+
|
||||
'3*2WG_Spe','cify graphic type application'#010+
|
||||
'3*2WG_Specify graphic ty','pe application'#010+
|
||||
'3*2WN_Do not generate relocation code (necessary for debugging)'#010+
|
||||
'3*2WR_Generate relocation code'#010+
|
||||
'6*1A<x>_output format'#010+
|
||||
'6*2Aas_Unix o-file using GNU AS'#010+
|
||||
'6*2Agas_GNU Motorola assembler'#010+
|
||||
'6*2Amit_MIT Syntax (old GAS)'#010+
|
||||
'6','*2Amot_Standard Motorola assembler'#010+
|
||||
'6*2Amot_Standard',' Motorola assembler'#010+
|
||||
'6*1O_optimizations:'#010+
|
||||
'6*2Oa_turn on the optimizer'#010+
|
||||
'6*2Og_generate smaller code'#010+
|
||||
'6*2OG_generate faster code (default)'#010+
|
||||
'6*2Ox_optimize maximum (still BUGGY!!!)'#010+
|
||||
'6*2O0_set target processor to a MC68000'#010+
|
||||
'6*2O2_set ta','rget processor to a MC68020+ (default)'#010+
|
||||
'6*2O2_set target processor ','to a MC68020+ (default)'#010+
|
||||
'6*1R<x>_assembler reading style:'#010+
|
||||
'6*2RMOT_read motorola style assembler'#010+
|
||||
'6*1T<x>_Target operating system:'#010+
|
||||
'6*2Tamiga_Commodore Amiga'#010+
|
||||
'6*2Tatari_Atari ST/STe/TT'#010+
|
||||
'6*2Tlinux_Linux-68k'#010+
|
||||
'6*2Tmacos_Macintosh m68k'#010,
|
||||
'6*2Tpalmos_PalmOS'#010+
|
||||
'6*2Tmacos_Macintosh m68k'#010+
|
||||
'6*2Tpalmos_Palm','OS'#010+
|
||||
'P*1T<x>_Target operating system:'#010+
|
||||
'P*2Tdarwin_Darwin and MacOS X on PowerPC'#010+
|
||||
'P*2Tlinux_Linux on PowerPC'#010+
|
||||
@ -874,5 +874,5 @@ const msgtxt : array[0..000150,1..240] of char=(
|
||||
'P*2Tmorphos_MorphOS '#010+
|
||||
'**1*_'#010+
|
||||
'**1?_shows this help'#010+
|
||||
'**1h_shows this help without waiting',#000
|
||||
'**1h_shows this help without waiting'#000
|
||||
);
|
||||
|
@ -132,7 +132,7 @@ interface
|
||||
(str_length(left)=0) then
|
||||
begin
|
||||
reference_reset(hr);
|
||||
hr.symbol:=objectlibrary.newasmsymboldata('FPC_EMPTYCHAR');
|
||||
hr.symbol:=objectlibrary.newasmsymbol('FPC_EMPTYCHAR',AB_EXTERNAL,AT_DATA);
|
||||
location.register:=cg.getaddressregister(exprasmlist);
|
||||
cg.a_loadaddr_ref_reg(exprasmlist,hr,location.register);
|
||||
end
|
||||
@ -153,7 +153,7 @@ interface
|
||||
(str_length(left)=0) then
|
||||
begin
|
||||
reference_reset(hr);
|
||||
hr.symbol:=objectlibrary.newasmsymboldata('FPC_EMPTYCHAR');
|
||||
hr.symbol:=objectlibrary.newasmsymbol('FPC_EMPTYCHAR',AB_EXTERNAL,AT_DATA);
|
||||
location.register:=cg.getaddressregister(exprasmlist);
|
||||
cg.a_loadaddr_ref_reg(exprasmlist,hr,location.register);
|
||||
end
|
||||
@ -410,7 +410,7 @@ interface
|
||||
end;
|
||||
cg.a_cmp_const_reg_label(exprasmlist,OS_ADDR,OC_NE,0,location.register,l1);
|
||||
reference_reset(hr);
|
||||
hr.symbol:=objectlibrary.newasmsymboldata('FPC_EMPTYCHAR');
|
||||
hr.symbol:=objectlibrary.newasmsymbol('FPC_EMPTYCHAR',AB_EXTERNAL,AT_DATA);
|
||||
cg.a_loadaddr_ref_reg(exprasmlist,hr,location.register);
|
||||
cg.a_label(exprasmlist,l1);
|
||||
end;
|
||||
@ -535,7 +535,10 @@ end.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.55 2004-02-27 10:21:05 florian
|
||||
Revision 1.56 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.55 2004/02/27 10:21:05 florian
|
||||
* top_symbol killed
|
||||
+ refaddr to treference added
|
||||
+ refsymbol to treference added
|
||||
|
@ -1165,7 +1165,7 @@ implementation
|
||||
objectlibrary.getlabel(nextonlabel);
|
||||
|
||||
{ send the vmt parameter }
|
||||
reference_reset_symbol(href2,objectlibrary.newasmsymboldata(excepttype.vmt_mangledname),0);
|
||||
reference_reset_symbol(href2,objectlibrary.newasmsymbol(excepttype.vmt_mangledname,AB_EXTERNAL,AT_DATA),0);
|
||||
paraloc1:=paramanager.getintparaloc(pocall_default,1);
|
||||
paramanager.allocparaloc(exprasmlist,paraloc1);
|
||||
cg.a_paramaddr_ref(exprasmlist,href2,paraloc1);
|
||||
@ -1462,7 +1462,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.93 2004-02-27 10:21:05 florian
|
||||
Revision 1.94 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.93 2004/02/27 10:21:05 florian
|
||||
* top_symbol killed
|
||||
+ refaddr to treference added
|
||||
+ refsymbol to treference added
|
||||
|
@ -248,7 +248,7 @@ implementation
|
||||
if left.nodetype=typen then
|
||||
begin
|
||||
hregister:=cg.getaddressregister(exprasmlist);
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymboldata(tobjectdef(left.resulttype.def).vmt_mangledname),0);
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymbol(tobjectdef(left.resulttype.def).vmt_mangledname,AB_EXTERNAL,AT_DATA),0);
|
||||
cg.a_loadaddr_ref_reg(exprasmlist,href,hregister);
|
||||
end
|
||||
else
|
||||
@ -678,7 +678,10 @@ end.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.55 2004-02-27 10:21:05 florian
|
||||
Revision 1.56 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.55 2004/02/27 10:21:05 florian
|
||||
* top_symbol killed
|
||||
+ refaddr to treference added
|
||||
+ refsymbol to treference added
|
||||
|
@ -91,7 +91,7 @@ implementation
|
||||
location.reference.offset:=tabsolutesym(symtableentry).fieldoffset;
|
||||
end;
|
||||
toasm :
|
||||
location.reference.symbol:=objectlibrary.newasmsymboldata(tabsolutesym(symtableentry).mangledname);
|
||||
location.reference.symbol:=objectlibrary.newasmsymbol(tabsolutesym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
|
||||
else
|
||||
internalerror(200310283);
|
||||
end;
|
||||
@ -101,7 +101,7 @@ implementation
|
||||
if tconstsym(symtableentry).consttyp=constresourcestring then
|
||||
begin
|
||||
location_reset(location,LOC_CREFERENCE,OS_ADDR);
|
||||
location.reference.symbol:=objectlibrary.newasmsymboldata(make_mangledname('RESOURCESTRINGLIST',tconstsym(symtableentry).owner,''));
|
||||
location.reference.symbol:=objectlibrary.newasmsymbol(make_mangledname('RESOURCESTRINGLIST',tconstsym(symtableentry).owner,''),AB_EXTERNAL,AT_DATA);
|
||||
location.reference.offset:=tconstsym(symtableentry).resstrindex*16+8;
|
||||
end
|
||||
else
|
||||
@ -116,20 +116,20 @@ implementation
|
||||
{ C variable }
|
||||
if (vo_is_C_var in tvarsym(symtableentry).varoptions) then
|
||||
begin
|
||||
location.reference.symbol:=objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname);
|
||||
location.reference.symbol:=objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
|
||||
end
|
||||
{ DLL variable }
|
||||
else if (vo_is_dll_var in tvarsym(symtableentry).varoptions) then
|
||||
begin
|
||||
hregister:=cg.getaddressregister(exprasmlist);
|
||||
location.reference.symbol:=objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname);
|
||||
location.reference.symbol:=objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
|
||||
cg.a_load_ref_reg(exprasmlist,OS_ADDR,OS_ADDR,location.reference,hregister);
|
||||
reference_reset_base(location.reference,hregister,0);
|
||||
end
|
||||
{ external variable }
|
||||
else if (vo_is_external in tvarsym(symtableentry).varoptions) then
|
||||
begin
|
||||
location.reference.symbol:=objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname);
|
||||
location.reference.symbol:=objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
|
||||
end
|
||||
{ thread variable }
|
||||
else if (vo_is_thread_var in tvarsym(symtableentry).varoptions) then
|
||||
@ -149,12 +149,12 @@ implementation
|
||||
{ make sure hregister can't allocate the register necessary for the parameter }
|
||||
paraloc1:=paramanager.getintparaloc(pocall_default,1);
|
||||
hregister:=cg.getaddressregister(exprasmlist);
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymboldata('FPC_THREADVAR_RELOCATE'),0);
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymbol('FPC_THREADVAR_RELOCATE',AB_EXTERNAL,AT_DATA),0);
|
||||
cg.a_load_ref_reg(exprasmlist,OS_ADDR,OS_ADDR,href,hregister);
|
||||
cg.ungetregister(exprasmlist,hregister);
|
||||
cg.a_cmp_const_reg_label(exprasmlist,OS_ADDR,OC_EQ,0,hregister,norelocatelab);
|
||||
{ don't save the allocated register else the result will be destroyed later }
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname),0);
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA),0);
|
||||
paramanager.allocparaloc(exprasmlist,paraloc1);
|
||||
cg.a_param_ref(exprasmlist,OS_ADDR,href,paraloc1);
|
||||
paramanager.freeparaloc(exprasmlist,paraloc1);
|
||||
@ -171,7 +171,7 @@ implementation
|
||||
layout of a threadvar is (4 bytes pointer):
|
||||
0 - Threadvar index
|
||||
4 - Threadvar value in single threading }
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname),POINTER_SIZE);
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA),POINTER_SIZE);
|
||||
cg.a_loadaddr_ref_reg(exprasmlist,href,hregister);
|
||||
cg.a_label(exprasmlist,endrelocatelab);
|
||||
location.reference.base:=hregister;
|
||||
@ -227,10 +227,10 @@ implementation
|
||||
if cs_create_pic in aktmoduleswitches then
|
||||
begin
|
||||
location.reference.base:=current_procinfo.got;
|
||||
location.reference.symbol:=objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname+'@GOT');
|
||||
location.reference.symbol:=objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname+'@GOT',AB_EXTERNAL,AT_DATA);
|
||||
end
|
||||
else
|
||||
location.reference.symbol:=objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname);
|
||||
location.reference.symbol:=objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
|
||||
end;
|
||||
stt_exceptsymtable:
|
||||
begin
|
||||
@ -343,7 +343,7 @@ implementation
|
||||
{ we don't use the hregister }
|
||||
cg.ungetregister(exprasmlist,hregister);
|
||||
{ load address of the function }
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymbol(procdef.mangledname),0);
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION),0);
|
||||
hregister:=cg.getaddressregister(exprasmlist);
|
||||
cg.a_loadaddr_ref_reg(exprasmlist,href,hregister);
|
||||
cg.a_load_reg_ref(exprasmlist,OS_ADDR,OS_ADDR,hregister,location.reference);
|
||||
@ -353,12 +353,12 @@ implementation
|
||||
else
|
||||
begin
|
||||
{!!!!! Be aware, work on virtual methods too }
|
||||
location.reference.symbol:=objectlibrary.newasmsymbol(procdef.mangledname);
|
||||
location.reference.symbol:=objectlibrary.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION);
|
||||
end;
|
||||
end;
|
||||
typedconstsym :
|
||||
begin
|
||||
location.reference.symbol:=objectlibrary.newasmsymboldata(ttypedconstsym(symtableentry).mangledname);
|
||||
location.reference.symbol:=objectlibrary.newasmsymbol(ttypedconstsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
|
||||
end;
|
||||
else internalerror(4);
|
||||
end;
|
||||
@ -908,7 +908,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.112 2004-02-27 10:21:05 florian
|
||||
Revision 1.113 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.112 2004/02/27 10:21:05 florian
|
||||
* top_symbol killed
|
||||
+ refaddr to treference added
|
||||
+ refsymbol to treference added
|
||||
|
@ -163,7 +163,7 @@ implementation
|
||||
else
|
||||
begin
|
||||
reference_reset_symbol(href,
|
||||
objectlibrary.newasmsymboldata(tobjectdef(tclassrefdef(resulttype.def).pointertype.def).vmt_mangledname),0);
|
||||
objectlibrary.newasmsymbol(tobjectdef(tclassrefdef(resulttype.def).pointertype.def).vmt_mangledname,AB_EXTERNAL,AT_DATA),0);
|
||||
location.register:=cg.getaddressregister(exprasmlist);
|
||||
cg.a_loadaddr_ref_reg(exprasmlist,href,location.register);
|
||||
end;
|
||||
@ -882,7 +882,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.88 2004-02-27 10:21:05 florian
|
||||
Revision 1.89 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.88 2004/02/27 10:21:05 florian
|
||||
* top_symbol killed
|
||||
+ refaddr to treference added
|
||||
+ refsymbol to treference added
|
||||
|
@ -786,7 +786,7 @@ implementation
|
||||
end;
|
||||
end
|
||||
else
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymboldata(tvarsym(p).mangledname),0);
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymbol(tvarsym(p).mangledname,AB_EXTERNAL,AT_DATA),0);
|
||||
cg.g_initialize(list,tvarsym(p).vartype.def,href,false);
|
||||
end;
|
||||
end;
|
||||
@ -818,7 +818,7 @@ implementation
|
||||
end;
|
||||
end
|
||||
else
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymboldata(tvarsym(p).mangledname),0);
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymbol(tvarsym(p).mangledname,AB_EXTERNAL,AT_DATA),0);
|
||||
cg.g_finalize(list,tvarsym(p).vartype.def,href,false);
|
||||
end;
|
||||
end;
|
||||
@ -827,7 +827,7 @@ implementation
|
||||
if ttypedconstsym(p).is_writable and
|
||||
ttypedconstsym(p).typedconsttype.def.needs_inittable then
|
||||
begin
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymboldata(ttypedconstsym(p).mangledname),0);
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymbol(ttypedconstsym(p).mangledname,AB_EXTERNAL,AT_DATA),0);
|
||||
cg.g_finalize(list,ttypedconstsym(p).typedconsttype.def,href,false);
|
||||
end;
|
||||
end;
|
||||
@ -1280,12 +1280,12 @@ implementation
|
||||
if (target_info.system in [system_i386_win32,system_i386_wdosx]) and
|
||||
(cs_profile in aktmoduleswitches) then
|
||||
begin
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymboldata('etext'),0);
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymbol('etext',AB_EXTERNAL,AT_DATA),0);
|
||||
paraloc1:=paramanager.getintparaloc(pocall_default,1);
|
||||
paraloc2:=paramanager.getintparaloc(pocall_default,2);
|
||||
paramanager.allocparaloc(list,paraloc2);
|
||||
cg.a_paramaddr_ref(list,href,paraloc2);
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymboldata('__image_base__'),0);
|
||||
reference_reset_symbol(href,objectlibrary.newasmsymbol('__image_base__',AB_EXTERNAL,AT_DATA),0);
|
||||
paramanager.allocparaloc(list,paraloc1);
|
||||
cg.a_paramaddr_ref(list,href,paraloc1);
|
||||
paramanager.freeparaloc(list,paraloc2);
|
||||
@ -1359,9 +1359,9 @@ implementation
|
||||
{$endif GDB}
|
||||
if (cs_profile in aktmoduleswitches) or
|
||||
(po_public in current_procinfo.procdef.procoptions) then
|
||||
list.concat(Tai_symbol.createname_global(hs,0))
|
||||
list.concat(Tai_symbol.createname_global(hs,AT_FUNCTION,0))
|
||||
else
|
||||
list.concat(Tai_symbol.createname(hs,0));
|
||||
list.concat(Tai_symbol.createname(hs,AT_FUNCTION,0));
|
||||
until false;
|
||||
end;
|
||||
|
||||
@ -1797,9 +1797,9 @@ implementation
|
||||
(assigned(current_procinfo) and
|
||||
(current_procinfo.procdef.proccalloption=pocall_inline)) or
|
||||
DLLSource then
|
||||
curconstSegment.concat(Tai_symbol.Createdataname_global(sym.mangledname,l))
|
||||
curconstSegment.concat(Tai_symbol.Createname_global(sym.mangledname,AT_DATA,l))
|
||||
else
|
||||
curconstSegment.concat(Tai_symbol.Createdataname(sym.mangledname,l));
|
||||
curconstSegment.concat(Tai_symbol.Createname(sym.mangledname,AT_DATA,l));
|
||||
aktfilepos:=storefilepos;
|
||||
end;
|
||||
|
||||
@ -2141,7 +2141,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.194 2004-02-27 10:21:05 florian
|
||||
Revision 1.195 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.194 2004/02/27 10:21:05 florian
|
||||
* top_symbol killed
|
||||
+ refaddr to treference added
|
||||
+ refsymbol to treference added
|
||||
|
@ -304,7 +304,7 @@ implementation
|
||||
|
||||
{ write name label }
|
||||
dataSegment.concat(Tai_const_symbol.Create(p^.nl));
|
||||
dataSegment.concat(Tai_const_symbol.Createname(p^.data.mangledname));
|
||||
dataSegment.concat(Tai_const_symbol.Createname(p^.data.mangledname,AT_FUNCTION,0));
|
||||
|
||||
if assigned(p^.r) then
|
||||
writestrentry(p^.r);
|
||||
@ -345,7 +345,7 @@ implementation
|
||||
|
||||
{ write name label }
|
||||
dataSegment.concat(Tai_const.Create_32bit(p^.data.messageinf.i));
|
||||
dataSegment.concat(Tai_const_symbol.Createname(p^.data.mangledname));
|
||||
dataSegment.concat(Tai_const_symbol.Createname(p^.data.mangledname,AT_FUNCTION,0));
|
||||
|
||||
if assigned(p^.r) then
|
||||
writeintentry(p^.r);
|
||||
@ -420,7 +420,7 @@ implementation
|
||||
begin
|
||||
if assigned(p^.l) then
|
||||
writedmtaddressentry(p^.l);
|
||||
dataSegment.concat(Tai_const_symbol.Createname(p^.data.mangledname));
|
||||
dataSegment.concat(Tai_const_symbol.Createname(p^.data.mangledname,AT_FUNCTION,0));
|
||||
if assigned(p^.r) then
|
||||
writedmtaddressentry(p^.r);
|
||||
end;
|
||||
@ -490,7 +490,7 @@ implementation
|
||||
Consts.concat(Tai_string.Create(p.name));
|
||||
|
||||
dataSegment.concat(Tai_const_symbol.Create(l));
|
||||
dataSegment.concat(Tai_const_symbol.Createname(hp.mangledname));
|
||||
dataSegment.concat(Tai_const_symbol.Createname(hp.mangledname,AT_FUNCTION,0));
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -854,9 +854,9 @@ implementation
|
||||
implintf:=_class.implementedinterfaces;
|
||||
curintf:=implintf.interfaces(intfindex);
|
||||
if (cs_create_smart in aktmoduleswitches) then
|
||||
rawdata.concat(Tai_symbol.Createname_global(gintfgetvtbllabelname(intfindex),0))
|
||||
rawdata.concat(Tai_symbol.Createname_global(gintfgetvtbllabelname(intfindex),AT_FUNCTION,0))
|
||||
else
|
||||
rawdata.concat(Tai_symbol.Createname(gintfgetvtbllabelname(intfindex),0));
|
||||
rawdata.concat(Tai_symbol.Createname(gintfgetvtbllabelname(intfindex),AT_FUNCTION,0));
|
||||
proccount:=implintf.implproccount(intfindex);
|
||||
for i:=1 to proccount do
|
||||
begin
|
||||
@ -866,7 +866,7 @@ implementation
|
||||
{ create wrapper code }
|
||||
cgintfwrapper(rawcode,implintf.implprocs(intfindex,i),tmps,implintf.ioffsets(intfindex)^);
|
||||
{ create reference }
|
||||
rawdata.concat(Tai_const_symbol.Createname(tmps));
|
||||
rawdata.concat(Tai_const_symbol.Createname(tmps,AT_FUNCTION,0));
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -900,7 +900,7 @@ implementation
|
||||
dataSegment.concat(Tai_const.Create_ptr(0)); { nil }
|
||||
end;
|
||||
{ VTable }
|
||||
dataSegment.concat(Tai_const_symbol.Createname(gintfgetvtbllabelname(contintfindex)));
|
||||
dataSegment.concat(Tai_const_symbol.Createname(gintfgetvtbllabelname(contintfindex),AT_FUNCTION,0));
|
||||
{ IOffset field }
|
||||
dataSegment.concat(Tai_const.Create_32bit(implintf.ioffsets(contintfindex)^));
|
||||
{ IIDStr }
|
||||
@ -1155,7 +1155,7 @@ implementation
|
||||
begin
|
||||
if (cs_create_smart in aktmoduleswitches) then
|
||||
dataSegment.concat(Tai_cut.Create);
|
||||
dataSegment.concat(Tai_symbol.Createname_global(make_mangledname('IID',_class.owner,_class.objname^),0));
|
||||
dataSegment.concat(Tai_symbol.Createname_global(make_mangledname('IID',_class.owner,_class.objname^),AT_FUNCTION,0));
|
||||
dataSegment.concat(Tai_const.Create_32bit(_class.iidguid^.D1));
|
||||
dataSegment.concat(Tai_const.Create_16bit(_class.iidguid^.D2));
|
||||
dataSegment.concat(Tai_const.Create_16bit(_class.iidguid^.D3));
|
||||
@ -1164,7 +1164,7 @@ implementation
|
||||
end;
|
||||
if (cs_create_smart in aktmoduleswitches) then
|
||||
dataSegment.concat(Tai_cut.Create);
|
||||
dataSegment.concat(Tai_symbol.Createname_global(make_mangledname('IIDSTR',_class.owner,_class.objname^),0));
|
||||
dataSegment.concat(Tai_symbol.Createname_global(make_mangledname('IIDSTR',_class.owner,_class.objname^),AT_FUNCTION,0));
|
||||
dataSegment.concat(Tai_const.Create_8bit(length(_class.iidstr^)));
|
||||
dataSegment.concat(Tai_string.Create(_class.iidstr^));
|
||||
end;
|
||||
@ -1200,9 +1200,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_symbol.Createname('FPC_ABSTRACTERROR'))
|
||||
List.concat(Tai_const_symbol.Createname('FPC_ABSTRACTERROR',AT_FUNCTION,0))
|
||||
else
|
||||
List.concat(Tai_const_symbol.createname(procdefcoll^.data.mangledname));
|
||||
List.concat(Tai_const_symbol.createname(procdefcoll^.data.mangledname,AT_FUNCTION,0));
|
||||
end;
|
||||
end;
|
||||
procdefcoll:=procdefcoll^.next;
|
||||
@ -1269,7 +1269,7 @@ implementation
|
||||
end;
|
||||
{$endif GDB}
|
||||
dataSegment.concat(tai_align.create(const_align(POINTER_SIZE)));
|
||||
dataSegment.concat(Tai_symbol.Createdataname_global(_class.vmt_mangledname,0));
|
||||
dataSegment.concat(Tai_symbol.Createname_global(_class.vmt_mangledname,AT_DATA,0));
|
||||
|
||||
{ determine the size with symtable.datasize, because }
|
||||
{ size gives back 4 for classes }
|
||||
@ -1290,7 +1290,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
|
||||
dataSegment.concat(Tai_const_symbol.Createname(_class.childof.vmt_mangledname))
|
||||
dataSegment.concat(Tai_const_symbol.Createname(_class.childof.vmt_mangledname,AT_FUNCTION,0))
|
||||
else
|
||||
dataSegment.concat(Tai_const.Create_ptr(0));
|
||||
|
||||
@ -1380,7 +1380,10 @@ initialization
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.64 2004-02-27 10:21:05 florian
|
||||
Revision 1.65 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.64 2004/02/27 10:21:05 florian
|
||||
* top_symbol killed
|
||||
+ refaddr to treference added
|
||||
+ refsymbol to treference added
|
||||
|
@ -39,7 +39,7 @@ implementation
|
||||
cutils,cclasses,comphook,
|
||||
globals,verbose,fmodule,finput,fppu,
|
||||
symconst,symbase,symtype,symdef,symsym,symtable,
|
||||
aasmtai,aasmcpu,
|
||||
aasmtai,aasmcpu,aasmbase,
|
||||
cgbase,cpuinfo,cgobj,
|
||||
nbas,
|
||||
link,assemble,import,export,gendef,ppu,comprsrc,
|
||||
@ -167,8 +167,8 @@ implementation
|
||||
{$ifdef GDB}
|
||||
if assigned(debuglist) then
|
||||
begin
|
||||
debugList.insert(Tai_symbol.Createname('gcc2_compiled',0));
|
||||
debugList.insert(Tai_symbol.Createname('fpc_compiled',0));
|
||||
debugList.insert(Tai_symbol.Createname('gcc2_compiled',AT_FUNCTION,0));
|
||||
debugList.insert(Tai_symbol.Createname('fpc_compiled',AT_FUNCTION,0));
|
||||
fixseg(debuglist,sec_code);
|
||||
end;
|
||||
{$endif GDB}
|
||||
@ -188,7 +188,7 @@ implementation
|
||||
begin
|
||||
If (hp.u.flags and uf_threadvars)=uf_threadvars then
|
||||
begin
|
||||
ltvTables.concat(Tai_const_symbol.Createdataname(make_mangledname('THREADVARLIST',hp.u.globalsymtable,'')));
|
||||
ltvTables.concat(Tai_const_symbol.Createname(make_mangledname('THREADVARLIST',hp.u.globalsymtable,''),AT_DATA,0));
|
||||
inc(count);
|
||||
end;
|
||||
hp:=tused_unit(hp.next);
|
||||
@ -196,12 +196,12 @@ implementation
|
||||
{ Add program threadvars, if any }
|
||||
If (current_module.flags and uf_threadvars)=uf_threadvars then
|
||||
begin
|
||||
ltvTables.concat(Tai_const_symbol.Createdataname(make_mangledname('THREADVARLIST',current_module.localsymtable,'')));
|
||||
ltvTables.concat(Tai_const_symbol.Createname(make_mangledname('THREADVARLIST',current_module.localsymtable,''),AT_DATA,0));
|
||||
inc(count);
|
||||
end;
|
||||
{ TableCount }
|
||||
ltvTables.insert(Tai_const.Create_32bit(count));
|
||||
ltvTables.insert(Tai_symbol.Createdataname_global('FPC_THREADVARTABLES',0));
|
||||
ltvTables.insert(Tai_symbol.Createname_global('FPC_THREADVARTABLES',AT_DATA,0));
|
||||
ltvTables.insert(Tai_align.Create(const_align(pointer_size)));
|
||||
ltvTables.concat(Tai_symbol_end.Createname('FPC_THREADVARTABLES'));
|
||||
{ insert in data segment }
|
||||
@ -221,7 +221,7 @@ implementation
|
||||
(vo_is_thread_var in tvarsym(p).varoptions) then
|
||||
begin
|
||||
{ address of threadvar }
|
||||
ltvTable.concat(tai_const_symbol.createdataname(tvarsym(p).mangledname));
|
||||
ltvTable.concat(tai_const_symbol.Createname(tvarsym(p).mangledname,AT_DATA,0));
|
||||
{ size of threadvar }
|
||||
ltvTable.concat(tai_const.create_32bit(tvarsym(p).getsize));
|
||||
end;
|
||||
@ -241,7 +241,7 @@ implementation
|
||||
begin
|
||||
s:=make_mangledname('THREADVARLIST',current_module.localsymtable,'');
|
||||
{ add begin and end of the list }
|
||||
ltvTable.insert(tai_symbol.createdataname_global(s,0));
|
||||
ltvTable.insert(tai_symbol.Createname_global(s,AT_DATA,0));
|
||||
ltvTable.concat(tai_const.create_ptr(0)); { end of list marker }
|
||||
ltvTable.concat(tai_symbol_end.createname(s));
|
||||
if (cs_create_smart in aktmoduleswitches) then
|
||||
@ -266,7 +266,7 @@ implementation
|
||||
begin
|
||||
If (hp.u.flags and uf_has_resources)=uf_has_resources then
|
||||
begin
|
||||
ResourceStringTables.concat(Tai_const_symbol.Createdataname(make_mangledname('RESOURCESTRINGLIST',hp.u.globalsymtable,'')));
|
||||
ResourceStringTables.concat(Tai_const_symbol.Createname(make_mangledname('RESOURCESTRINGLIST',hp.u.globalsymtable,''),AT_DATA,0));
|
||||
inc(count);
|
||||
end;
|
||||
hp:=tused_unit(hp.next);
|
||||
@ -274,12 +274,12 @@ implementation
|
||||
{ Add program resources, if any }
|
||||
If ResourceStringList<>Nil then
|
||||
begin
|
||||
ResourceStringTables.concat(Tai_const_symbol.Createdataname(make_mangledname('RESOURCESTRINGLIST',current_module.localsymtable,'')));
|
||||
ResourceStringTables.concat(Tai_const_symbol.Createname(make_mangledname('RESOURCESTRINGLIST',current_module.localsymtable,''),AT_DATA,0));
|
||||
Inc(Count);
|
||||
end;
|
||||
{ TableCount }
|
||||
ResourceStringTables.insert(Tai_const.Create_32bit(count));
|
||||
ResourceStringTables.insert(Tai_symbol.Createdataname_global('FPC_RESOURCESTRINGTABLES',0));
|
||||
ResourceStringTables.insert(Tai_symbol.Createname_global('FPC_RESOURCESTRINGTABLES',AT_DATA,0));
|
||||
ResourceStringTables.insert(Tai_align.Create(const_align(4)));
|
||||
ResourceStringTables.concat(Tai_symbol_end.Createname('FPC_RESOURCESTRINGTABLES'));
|
||||
{ insert in data segment }
|
||||
@ -305,11 +305,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_symbol.Createname(make_mangledname('INIT$',hp.u.globalsymtable,'')))
|
||||
unitinits.concat(Tai_const_symbol.Createname(make_mangledname('INIT$',hp.u.globalsymtable,''),AT_FUNCTION,0))
|
||||
else
|
||||
unitinits.concat(Tai_const.Create_ptr(0));
|
||||
if (hp.u.flags and uf_finalize)<>0 then
|
||||
unitinits.concat(Tai_const_symbol.Createname(make_mangledname('FINALIZE$',hp.u.globalsymtable,'')))
|
||||
unitinits.concat(Tai_const_symbol.Createname(make_mangledname('FINALIZE$',hp.u.globalsymtable,''),AT_FUNCTION,0))
|
||||
else
|
||||
unitinits.concat(Tai_const.Create_ptr(0));
|
||||
inc(count);
|
||||
@ -320,11 +320,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_symbol.Createname(make_mangledname('INIT$',current_module.localsymtable,'')))
|
||||
unitinits.concat(Tai_const_symbol.Createname(make_mangledname('INIT$',current_module.localsymtable,''),AT_FUNCTION,0))
|
||||
else
|
||||
unitinits.concat(Tai_const.Create_ptr(0));
|
||||
if (current_module.flags and uf_finalize)<>0 then
|
||||
unitinits.concat(Tai_const_symbol.Createname(make_mangledname('FINALIZE$',current_module.localsymtable,'')))
|
||||
unitinits.concat(Tai_const_symbol.Createname(make_mangledname('FINALIZE$',current_module.localsymtable,''),AT_FUNCTION,0))
|
||||
else
|
||||
unitinits.concat(Tai_const.Create_ptr(0));
|
||||
inc(count);
|
||||
@ -332,7 +332,7 @@ implementation
|
||||
{ TableCount,InitCount }
|
||||
unitinits.insert(Tai_const.Create_32bit(0));
|
||||
unitinits.insert(Tai_const.Create_32bit(count));
|
||||
unitinits.insert(Tai_symbol.Createdataname_global('INITFINAL',0));
|
||||
unitinits.insert(Tai_symbol.Createname_global('INITFINAL',AT_DATA,0));
|
||||
unitinits.insert(Tai_align.Create(const_align(4)));
|
||||
unitinits.concat(Tai_symbol_end.Createname('INITFINAL'));
|
||||
{ insert in data segment }
|
||||
@ -379,12 +379,12 @@ implementation
|
||||
if target_info.system<>system_m68k_PalmOS then
|
||||
begin
|
||||
dataSegment.concat(Tai_align.Create(const_align(4)));
|
||||
dataSegment.concat(Tai_symbol.Createdataname_global('HEAPSIZE',4));
|
||||
dataSegment.concat(Tai_symbol.Createname_global('HEAPSIZE',AT_DATA,4));
|
||||
dataSegment.concat(Tai_const.Create_32bit(heapsize));
|
||||
end;
|
||||
{$else m68k}
|
||||
dataSegment.concat(Tai_align.Create(const_align(4)));
|
||||
dataSegment.concat(Tai_symbol.Createdataname_global('HEAPSIZE',4));
|
||||
dataSegment.concat(Tai_symbol.Createname_global('HEAPSIZE',AT_DATA,4));
|
||||
dataSegment.concat(Tai_const.Create_32bit(heapsize));
|
||||
{$endif m68k}
|
||||
end;
|
||||
@ -394,7 +394,7 @@ implementation
|
||||
begin
|
||||
{ stacksize can be specified and is now simulated }
|
||||
dataSegment.concat(Tai_align.Create(const_align(4)));
|
||||
dataSegment.concat(Tai_symbol.Createdataname_global('__stklen',4));
|
||||
dataSegment.concat(Tai_symbol.Createname_global('__stklen',AT_DATA,4));
|
||||
dataSegment.concat(Tai_const.Create_32bit(stacksize));
|
||||
end;
|
||||
|
||||
@ -1438,7 +1438,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.140 2004-02-26 16:16:38 peter
|
||||
Revision 1.141 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.140 2004/02/26 16:16:38 peter
|
||||
* tai_const.create_ptr added
|
||||
|
||||
Revision 1.139 2004/02/06 22:37:00 daniel
|
||||
|
@ -45,8 +45,9 @@ interface
|
||||
procedure WriteFileEndInfo;
|
||||
{$endif}
|
||||
procedure WriteAsmFileHeader;
|
||||
private
|
||||
procedure GenProcedureHeader(var hp:tai);
|
||||
private
|
||||
procedure WriteInstruction(hp : tai);
|
||||
procedure WriteProcedureHeader(var hp:tai);
|
||||
procedure WriteDataExportHeader(var s:string; isGlobal, isConst:boolean);
|
||||
end;
|
||||
|
||||
@ -108,7 +109,6 @@ var
|
||||
|
||||
|
||||
function getreferencestring(var ref : treference) : string;
|
||||
|
||||
var
|
||||
s : string;
|
||||
begin
|
||||
@ -156,7 +156,7 @@ var
|
||||
if (offset=0) then
|
||||
s:=s+gas_regname(base)+','+gas_regname(index)
|
||||
else
|
||||
internalerror(19992); // *** ???
|
||||
internalerror(19992);
|
||||
end
|
||||
else if (base=NR_NO) and (offset=0) then
|
||||
begin
|
||||
@ -321,7 +321,7 @@ var
|
||||
end;
|
||||
end;
|
||||
|
||||
Function GetInstruction(hp : tai):string; {CHANGED from method to proc}
|
||||
procedure TPPCMPWAssembler.WriteInstruction(hp : tai);
|
||||
var op: TAsmOp;
|
||||
s: string;
|
||||
i: byte;
|
||||
@ -346,44 +346,17 @@ var
|
||||
s := s + ',';
|
||||
end;
|
||||
end;
|
||||
if (taicpu(hp).oper[0]^.typ <> top_none) then
|
||||
s:=s+getopstr_jmp(taicpu(hp).oper[0]^);
|
||||
if (taicpu(hp).ops>0) and (taicpu(hp).oper[0]^.typ<>top_none) then
|
||||
begin
|
||||
{ first write the current contents of s, because the symbol }
|
||||
{ may be 255 characters }
|
||||
asmwrite(s);
|
||||
s:=getopstr_jmp(taicpu(hp).oper[0]^);
|
||||
end;
|
||||
end
|
||||
else
|
||||
{ process operands }
|
||||
begin
|
||||
case op of
|
||||
A_MFSPR:
|
||||
case taicpu(hp).oper[1]^.reg of
|
||||
NR_CR:
|
||||
begin
|
||||
op:=A_MFCR;
|
||||
taicpu(hp).ops:=1;
|
||||
end;
|
||||
NR_LR:
|
||||
begin
|
||||
op:=A_MFLR;
|
||||
taicpu(hp).ops:=1;
|
||||
end;
|
||||
else
|
||||
internalerror(2002100701);
|
||||
end;
|
||||
A_MTSPR:
|
||||
case taicpu(hp).oper[1]^.reg of
|
||||
NR_CR:
|
||||
begin
|
||||
op:=A_MTCR;
|
||||
taicpu(hp).ops:=1;
|
||||
end;
|
||||
NR_LR:
|
||||
begin
|
||||
op:=A_MTLR;
|
||||
taicpu(hp).ops:=1;
|
||||
end;
|
||||
else
|
||||
internalerror(2002100701);
|
||||
end;
|
||||
end;
|
||||
s:=#9+gas_op2str[op];
|
||||
if taicpu(hp).ops<>0 then
|
||||
begin
|
||||
@ -395,7 +368,7 @@ var
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
GetInstruction:=s;
|
||||
AsmWriteLn(s);
|
||||
end;
|
||||
|
||||
{*** Until here is copyed from agppcgas.pp. ***}
|
||||
@ -456,7 +429,7 @@ var
|
||||
{****************************************************************************
|
||||
PowerPC MPW Assembler
|
||||
****************************************************************************}
|
||||
procedure TPPCMPWAssembler.GenProcedureHeader(var hp:tai);
|
||||
procedure TPPCMPWAssembler.WriteProcedureHeader(var hp:tai);
|
||||
{Returns the current hp where the caller should continue from}
|
||||
{For multiple entry procedures, only the last is exported as xxx[PR]
|
||||
(if use_PR is set) }
|
||||
@ -1079,7 +1052,7 @@ var
|
||||
ait_symbol:
|
||||
begin
|
||||
if tai_symbol(hp).sym.typ=AT_FUNCTION then
|
||||
GenProcedureHeader(hp)
|
||||
WriteProcedureHeader(hp)
|
||||
else if tai_symbol(hp).sym.typ=AT_DATA then
|
||||
begin
|
||||
s:= tai_symbol(hp).sym.name;
|
||||
@ -1108,7 +1081,7 @@ var
|
||||
{$endif GDB}
|
||||
;
|
||||
ait_instruction:
|
||||
AsmWriteLn(GetInstruction(hp));
|
||||
WriteInstruction(hp);
|
||||
{$ifdef GDB}
|
||||
ait_stabn: ;
|
||||
ait_stabs: ;
|
||||
@ -1386,7 +1359,10 @@ initialization
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.31 2004-02-27 10:21:05 florian
|
||||
Revision 1.32 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.31 2004/02/27 10:21:05 florian
|
||||
* top_symbol killed
|
||||
+ refaddr to treference added
|
||||
+ refsymbol to treference added
|
||||
|
@ -305,7 +305,7 @@ const
|
||||
{ MacOS: The linker on MacOS (PPCLink) inserts a call to glue code,
|
||||
if it is a cross-TOC call. If so, it also replaces the NOP
|
||||
with some restore code.}
|
||||
list.concat(taicpu.op_sym(A_BL,objectlibrary.newasmsymbol(s)));
|
||||
list.concat(taicpu.op_sym(A_BL,objectlibrary.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
|
||||
if target_info.system=system_powerpc_macos then
|
||||
list.concat(taicpu.op_none(A_NOP));
|
||||
if not(pi_do_call in current_procinfo.flags) then
|
||||
@ -1074,11 +1074,11 @@ const
|
||||
{ save floating-point registers
|
||||
if (cs_create_pic in aktmoduleswitches) and not(usesgpr) then
|
||||
begin
|
||||
a_call_name(objectlibrary.newasmsymbol('_savefpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14)+'_g');
|
||||
a_call_name(objectlibrary.newasmsymbol('_savefpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14)+'_g',AB_EXTERNAL,AT_FUNCTION));
|
||||
gotgot:=true;
|
||||
end
|
||||
else
|
||||
a_call_name(objectlibrary.newasmsymbol('_savefpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14));
|
||||
a_call_name(objectlibrary.newasmsymbol('_savefpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14),AB_EXTERNAL,AT_FUNCTION));
|
||||
}
|
||||
reference_reset_base(href,NR_R12,-8);
|
||||
for regcounter:=firstregfpu to RS_F31 do
|
||||
@ -1100,11 +1100,11 @@ const
|
||||
{
|
||||
if cs_create_pic in aktmoduleswitches then
|
||||
begin
|
||||
a_call_name(objectlibrary.newasmsymbol('_savegpr_'+tostr(ord(firstreggpr)-ord(R_14)+14)+'_g');
|
||||
a_call_name(objectlibrary.newasmsymbol('_savegpr_'+tostr(ord(firstreggpr)-ord(R_14)+14)+'_g',AB_EXTERNAL,AT_FUNCTION));
|
||||
gotgot:=true;
|
||||
end
|
||||
else
|
||||
a_call_name(objectlibrary.newasmsymbol('_savegpr_'+tostr(ord(firstreggpr)-ord(R_14)+14))
|
||||
a_call_name(objectlibrary.newasmsymbol('_savegpr_'+tostr(ord(firstreggpr)-ord(R_14)+14),AB_EXTERNAL,AT_FUNCTION))
|
||||
}
|
||||
reference_reset_base(href,NR_R12,-4);
|
||||
for regcounter2:=RS_R13 to RS_R31 do
|
||||
@ -1299,7 +1299,7 @@ const
|
||||
{
|
||||
if (pi_do_call in current_procinfo.flags) then
|
||||
a_call_name(objectlibrary.newasmsymbol('_restfpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14)+
|
||||
'_x')
|
||||
'_x',AB_EXTERNAL,AT_FUNCTION))
|
||||
else
|
||||
{ leaf node => lr haven't to be restored }
|
||||
a_call_name('_restfpr_'+tostr(ord(firstregfpu.enum)-ord(R_F14)+14)+
|
||||
@ -2200,7 +2200,7 @@ const
|
||||
p: taicpu;
|
||||
|
||||
begin
|
||||
p := taicpu.op_sym(op,objectlibrary.newasmsymbol(l.name));
|
||||
p := taicpu.op_sym(op,objectlibrary.newasmsymbol(l.name,AB_EXTERNAL,AT_FUNCTION));
|
||||
if op <> A_B then
|
||||
create_cond_norm(c,crval,p.condition);
|
||||
p.is_jmp := true;
|
||||
@ -2321,7 +2321,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.164 2004-02-27 10:21:05 florian
|
||||
Revision 1.165 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.164 2004/02/27 10:21:05 florian
|
||||
* top_symbol killed
|
||||
+ refaddr to treference added
|
||||
+ refsymbol to treference added
|
||||
|
@ -142,9 +142,9 @@ begin
|
||||
make_global:=true;
|
||||
|
||||
if make_global then
|
||||
exprasmList.concat(Tai_symbol.Createname_global(labelname,0))
|
||||
exprasmList.concat(Tai_symbol.Createname_global(labelname,AT_FUNCTION,0))
|
||||
else
|
||||
exprasmList.concat(Tai_symbol.Createname(labelname,0));
|
||||
exprasmList.concat(Tai_symbol.Createname(labelname,AT_FUNCTION,0));
|
||||
|
||||
{ set param1 interface to self }
|
||||
adjustselfvalue(procdef,ioffset);
|
||||
@ -157,7 +157,7 @@ begin
|
||||
end
|
||||
{ case 0 }
|
||||
else
|
||||
asmlist.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(procdef.mangledname)));
|
||||
asmlist.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
|
||||
|
||||
exprasmList.concat(Tai_symbol_end.Createname(labelname));
|
||||
|
||||
@ -170,7 +170,10 @@ initialization
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.5 2004-02-27 13:42:56 olle
|
||||
Revision 1.6 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.5 2004/02/27 13:42:56 olle
|
||||
+ added Tai_symbol_end
|
||||
|
||||
Revision 1.4 2004/02/27 10:21:05 florian
|
||||
|
@ -452,7 +452,7 @@ Unit rappcgas;
|
||||
{ not found, finally ... add it anyways ... }
|
||||
Message1(asmr_w_id_supposed_external,expr);
|
||||
oper.InitRef;
|
||||
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr);
|
||||
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr,AB_EXTERNAL,AT_FUNCTION);
|
||||
end;
|
||||
end
|
||||
else
|
||||
@ -753,7 +753,10 @@ initialization
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.13 2004-02-28 16:00:45 florian
|
||||
Revision 1.14 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.13 2004/02/28 16:00:45 florian
|
||||
* fixed make cycle
|
||||
|
||||
Revision 1.12 2004/02/28 14:14:44 florian
|
||||
|
@ -53,6 +53,7 @@ implementation
|
||||
,dmisc
|
||||
,sysutils
|
||||
{$endif}
|
||||
,verbose
|
||||
;
|
||||
|
||||
|
||||
@ -80,7 +81,11 @@ implementation
|
||||
p.insert(tsyssym.create('Include',in_include_x_y));
|
||||
p.insert(tsyssym.create('Break',in_break));
|
||||
p.insert(tsyssym.create('Exit',in_exit));
|
||||
p.insert(tsyssym.create('Continue',in_continue));
|
||||
//if not (m_mac in aktmodeswitches) then
|
||||
p.insert(tsyssym.create('Continue',in_continue));
|
||||
//else
|
||||
p.insert(tsyssym.create('Cycle',in_continue));
|
||||
//comment(v_info,'Hubba Bubba');
|
||||
p.insert(tsyssym.create('Dec',in_dec_x));
|
||||
p.insert(tsyssym.create('Inc',in_inc_x));
|
||||
p.insert(tsyssym.create('Str',in_str_x_string));
|
||||
@ -489,7 +494,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.63 2004-02-26 16:16:38 peter
|
||||
Revision 1.64 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.63 2004/02/26 16:16:38 peter
|
||||
* tai_const.create_ptr added
|
||||
|
||||
Revision 1.62 2004/02/04 22:15:15 daniel
|
||||
|
@ -262,8 +262,8 @@ implementation
|
||||
begin
|
||||
if not Tobjectdef(pointertype.def).is_related(Tobjectdef(pointertype.def)) then
|
||||
message(cg_e_illegal_expression);
|
||||
curconstSegment.concat(Tai_const_symbol.Create(objectlibrary.newasmsymboldata(
|
||||
Tobjectdef(pointertype.def).vmt_mangledname)));
|
||||
curconstSegment.concat(Tai_const_symbol.Create(objectlibrary.newasmsymbol(
|
||||
Tobjectdef(pointertype.def).vmt_mangledname,AB_EXTERNAL,AT_DATA)));
|
||||
end;
|
||||
niln:
|
||||
curconstSegment.concat(Tai_const.Create_ptr(0));
|
||||
@ -426,12 +426,12 @@ implementation
|
||||
if po_abstractmethod in tprocsym(srsym).first_procdef.procoptions then
|
||||
Message(type_e_cant_take_address_of_abstract_method)
|
||||
else
|
||||
curconstSegment.concat(Tai_const_symbol.Createname_offset(tprocsym(srsym).first_procdef.mangledname,offset));
|
||||
curconstSegment.concat(Tai_const_symbol.Createname(tprocsym(srsym).first_procdef.mangledname,AT_FUNCTION,offset));
|
||||
end;
|
||||
varsym :
|
||||
curconstSegment.concat(Tai_const_symbol.Createname_offset(tvarsym(srsym).mangledname,offset));
|
||||
curconstSegment.concat(Tai_const_symbol.Createname(tvarsym(srsym).mangledname,AT_FUNCTION,offset));
|
||||
typedconstsym :
|
||||
curconstSegment.concat(Tai_const_symbol.Createname_offset(ttypedconstsym(srsym).mangledname,offset));
|
||||
curconstSegment.concat(Tai_const_symbol.Createname(ttypedconstsym(srsym).mangledname,AT_FUNCTION,offset));
|
||||
else
|
||||
Message(type_e_variable_id_expected);
|
||||
end;
|
||||
@ -447,7 +447,7 @@ implementation
|
||||
if (tinlinenode(p).left.nodetype=typen) then
|
||||
begin
|
||||
curconstSegment.concat(Tai_const_symbol.createname(
|
||||
tobjectdef(tinlinenode(p).left.resulttype.def).vmt_mangledname));
|
||||
tobjectdef(tinlinenode(p).left.resulttype.def).vmt_mangledname,AT_FUNCTION,0));
|
||||
end
|
||||
else
|
||||
Message(cg_e_illegal_expression);
|
||||
@ -764,7 +764,7 @@ implementation
|
||||
(tloadnode(p).symtableentry.typ=procsym) then
|
||||
begin
|
||||
curconstSegment.concat(Tai_const_symbol.createname(
|
||||
tprocsym(tloadnode(p).symtableentry).first_procdef.mangledname));
|
||||
tprocsym(tloadnode(p).symtableentry).first_procdef.mangledname,AT_FUNCTION,0));
|
||||
end
|
||||
else
|
||||
Message(cg_e_illegal_expression);
|
||||
@ -966,7 +966,7 @@ implementation
|
||||
begin
|
||||
for i:=1 to vmt_offset-aktpos do
|
||||
curconstsegment.concat(tai_const.create_8bit(0));
|
||||
curconstsegment.concat(tai_const_symbol.createname(vmt_mangledname));
|
||||
curconstsegment.concat(tai_const_symbol.createname(vmt_mangledname,AT_FUNCTION,0));
|
||||
{ this is more general }
|
||||
aktpos:=vmt_offset + pointer_size;
|
||||
end;
|
||||
@ -993,7 +993,7 @@ implementation
|
||||
begin
|
||||
for i:=1 to tobjectdef(t.def).vmt_offset-aktpos do
|
||||
curconstsegment.concat(tai_const.create_8bit(0));
|
||||
curconstsegment.concat(tai_const_symbol.createname(tobjectdef(t.def).vmt_mangledname));
|
||||
curconstsegment.concat(tai_const_symbol.createname(tobjectdef(t.def).vmt_mangledname,AT_FUNCTION,0));
|
||||
{ this is more general }
|
||||
aktpos:=tobjectdef(t.def).vmt_offset + pointer_size;
|
||||
end;
|
||||
@ -1020,7 +1020,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.79 2004-02-26 16:15:23 peter
|
||||
Revision 1.80 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.79 2004/02/26 16:15:23 peter
|
||||
* support @@procvar in typed consts
|
||||
|
||||
Revision 1.78 2004/02/07 23:28:34 daniel
|
||||
|
@ -1481,7 +1481,7 @@ unit raatt;
|
||||
begin
|
||||
oper.opr.typ:=OPR_SYMBOL;
|
||||
oper.opr.symofs:=l;
|
||||
oper.opr.symbol:=objectlibrary.newasmsymbol(tempstr);
|
||||
oper.opr.symbol:=objectlibrary.newasmsymbol(tempstr,AB_EXTERNAL,AT_FUNCTION);
|
||||
end
|
||||
else
|
||||
begin
|
||||
@ -1494,7 +1494,10 @@ end.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.9 2004-02-07 23:28:34 daniel
|
||||
Revision 1.10 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.9 2004/02/07 23:28:34 daniel
|
||||
* Take advantage of our new with statement optimization
|
||||
|
||||
Revision 1.8 2003/12/25 01:25:43 peter
|
||||
|
@ -871,7 +871,7 @@ Begin
|
||||
staticsymtable :
|
||||
begin
|
||||
initref;
|
||||
opr.ref.symbol:=objectlibrary.newasmsymboldata(tvarsym(sym).mangledname);
|
||||
opr.ref.symbol:=objectlibrary.newasmsymbol(tvarsym(sym).mangledname,AB_EXTERNAL,AT_DATA);
|
||||
end;
|
||||
parasymtable,
|
||||
localsymtable :
|
||||
@ -879,7 +879,7 @@ Begin
|
||||
if (vo_is_external in tvarsym(sym).varoptions) then
|
||||
begin
|
||||
initref;
|
||||
opr.ref.symbol:=objectlibrary.newasmsymboldata(tvarsym(sym).mangledname)
|
||||
opr.ref.symbol:=objectlibrary.newasmsymbol(tvarsym(sym).mangledname,AB_EXTERNAL,AT_DATA)
|
||||
end
|
||||
else
|
||||
begin
|
||||
@ -938,7 +938,7 @@ Begin
|
||||
typedconstsym :
|
||||
begin
|
||||
initref;
|
||||
opr.ref.symbol:=objectlibrary.newasmsymboldata(ttypedconstsym(sym).mangledname);
|
||||
opr.ref.symbol:=objectlibrary.newasmsymbol(ttypedconstsym(sym).mangledname,AB_EXTERNAL,AT_DATA);
|
||||
case ttypedconstsym(sym).typedconsttype.def.deftype of
|
||||
orddef,
|
||||
enumdef,
|
||||
@ -986,7 +986,7 @@ Begin
|
||||
Message(asmr_w_calling_overload_func);
|
||||
l:=opr.ref.offset;
|
||||
opr.typ:=OPR_SYMBOL;
|
||||
opr.symbol:=objectlibrary.newasmsymbol(tprocsym(sym).first_procdef.mangledname);
|
||||
opr.symbol:=objectlibrary.newasmsymbol(tprocsym(sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION);
|
||||
opr.symofs:=l;
|
||||
hasvar:=true;
|
||||
SetupVar:=TRUE;
|
||||
@ -1538,7 +1538,7 @@ end;
|
||||
|
||||
Procedure ConcatConstSymbol(p : TAAsmoutput;const sym:string;l:longint);
|
||||
begin
|
||||
p.concat(Tai_const_symbol.Createname_offset(sym,l));
|
||||
p.concat(Tai_const_symbol.Createname(sym,AT_FUNCTION,l));
|
||||
end;
|
||||
|
||||
|
||||
@ -1590,7 +1590,7 @@ end;
|
||||
{ linked list of instructions.(used by AT&T styled asm) }
|
||||
{*********************************************************************}
|
||||
begin
|
||||
p.concat(Tai_symbol.Createname_global(s,0));
|
||||
p.concat(Tai_symbol.Createname_global(s,AT_FUNCTION,0));
|
||||
end;
|
||||
|
||||
procedure ConcatLocal(p:TAAsmoutput;const s : string);
|
||||
@ -1600,7 +1600,7 @@ end;
|
||||
{ linked list of instructions. }
|
||||
{*********************************************************************}
|
||||
begin
|
||||
p.concat(Tai_symbol.Createname(s,0));
|
||||
p.concat(Tai_symbol.Createname(s,AT_FUNCTION,0));
|
||||
end;
|
||||
|
||||
Procedure ConcatGlobalBss(const s : string;size : longint);
|
||||
@ -1626,7 +1626,10 @@ end;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.81 2004-02-21 21:04:09 daniel
|
||||
Revision 1.82 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.81 2004/02/21 21:04:09 daniel
|
||||
* Micro-optimizations
|
||||
|
||||
Revision 1.80 2003/11/30 10:15:42 jonas
|
||||
|
@ -407,7 +407,7 @@ implementation
|
||||
|
||||
procedure TCgSparc.a_call_name(list:TAasmOutput;const s:string);
|
||||
begin
|
||||
list.concat(taicpu.op_sym(A_CALL,objectlibrary.newasmsymbol(s)));
|
||||
list.concat(taicpu.op_sym(A_CALL,objectlibrary.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
|
||||
{ Delay slot }
|
||||
list.concat(taicpu.op_none(A_NOP));
|
||||
end;
|
||||
@ -728,7 +728,7 @@ implementation
|
||||
|
||||
procedure TCgSparc.a_jmp_always(List:TAasmOutput;l:TAsmLabel);
|
||||
begin
|
||||
List.Concat(TAiCpu.op_sym(A_BA,objectlibrary.newasmsymbol(l.name)));
|
||||
List.Concat(TAiCpu.op_sym(A_BA,objectlibrary.newasmsymbol(l.name,AB_EXTERNAL,AT_FUNCTION)));
|
||||
{ Delay slot }
|
||||
list.Concat(TAiCpu.Op_none(A_NOP));
|
||||
end;
|
||||
@ -1107,7 +1107,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.79 2004-02-27 13:28:28 mazen
|
||||
Revision 1.80 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.79 2004/02/27 13:28:28 mazen
|
||||
* symaddr ==> refaddr to follow the rest of compiler changes
|
||||
|
||||
Revision 1.78 2004/02/04 22:01:13 peter
|
||||
|
@ -317,7 +317,7 @@ Interface
|
||||
Consume(AS_LPAREN);
|
||||
BuildConstSymbolExpression(false, true,false,l,tempstr);
|
||||
if not assigned(oper.opr.ref.symbol) then
|
||||
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(tempstr)
|
||||
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(tempstr,AB_EXTERNAL,AT_FUNCTION)
|
||||
else
|
||||
Message(asmr_e_cant_have_multiple_relocatable_symbols);
|
||||
case oper.opr.typ of
|
||||
@ -409,7 +409,7 @@ Interface
|
||||
{ not found, finally ... add it anyways ... }
|
||||
Message1(asmr_w_id_supposed_external,expr);
|
||||
oper.InitRef;
|
||||
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr);
|
||||
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr,AB_EXTERNAL,AT_FUNCTION);
|
||||
end;
|
||||
end
|
||||
else
|
||||
@ -626,7 +626,10 @@ initialization
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.7 2004-02-27 13:27:28 mazen
|
||||
Revision 1.8 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.7 2004/02/27 13:27:28 mazen
|
||||
* symaddr ==> refaddr to follow the rest of compiler changes
|
||||
|
||||
Revision 1.6 2004/01/12 22:11:39 peter
|
||||
|
@ -5348,7 +5348,7 @@ implementation
|
||||
exit;
|
||||
if not(po_virtualmethod in tprocdef(proc.procdef).procoptions) then
|
||||
begin
|
||||
rttiList.concat(Tai_const_symbol.Createname(tprocdef(proc.procdef).mangledname));
|
||||
rttiList.concat(Tai_const_symbol.Createname(tprocdef(proc.procdef).mangledname,AT_FUNCTION,0));
|
||||
typvalue:=1;
|
||||
end
|
||||
else
|
||||
@ -5373,7 +5373,7 @@ implementation
|
||||
internalerror(1509992);
|
||||
{ access to implicit class property as field }
|
||||
proctypesinfo:=(0 shl 0) or (0 shl 2) or (0 shl 4);
|
||||
rttiList.concat(Tai_const_symbol.Createname(tvarsym(sym.vartype.def.get_rtti_label)));
|
||||
rttiList.concat(Tai_const_symbol.Createname(tvarsym(sym.vartype.def.get_rtti_label),AT_FUNCTION,0));
|
||||
rttiList.concat(Tai_const.Create_32bit(tvarsym(sym.address)));
|
||||
rttiList.concat(Tai_const.Create_32bit(tvarsym(sym.address)));
|
||||
{ per default stored }
|
||||
@ -5547,7 +5547,7 @@ implementation
|
||||
hp:=tclasslistitem(classtablelist.first);
|
||||
while assigned(hp) do
|
||||
begin
|
||||
rttiList.concat(Tai_const_symbol.Createname(tobjectdef(hp.p).vmt_mangledname));
|
||||
rttiList.concat(Tai_const_symbol.Createname(tobjectdef(hp.p).vmt_mangledname,AT_FUNCTION,0));
|
||||
hp:=tclasslistitem(hp.next);
|
||||
end;
|
||||
|
||||
@ -5606,7 +5606,7 @@ implementation
|
||||
begin
|
||||
if (oo_has_vmt in objectoptions) and
|
||||
not(objecttype in [odt_interfacecom,odt_interfacecorba]) then
|
||||
rttiList.concat(Tai_const_symbol.Createname(vmt_mangledname))
|
||||
rttiList.concat(Tai_const_symbol.Createname(vmt_mangledname,AT_FUNCTION,0))
|
||||
else
|
||||
rttiList.concat(Tai_const.Create_ptr(0));
|
||||
|
||||
@ -6119,7 +6119,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.223 2004-02-26 16:16:38 peter
|
||||
Revision 1.224 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.223 2004/02/26 16:16:38 peter
|
||||
* tai_const.create_ptr added
|
||||
|
||||
Revision 1.222 2004/02/22 19:55:25 daniel
|
||||
|
@ -2246,7 +2246,7 @@ implementation
|
||||
begin
|
||||
{ the label is always a global label }
|
||||
if not assigned(lab) then
|
||||
lab:=objectlibrary.newasmsymboldata(mangledname);
|
||||
lab:=objectlibrary.newasmsymbol(mangledname,AB_EXTERNAL,AT_DATA);
|
||||
get_label:=lab;
|
||||
end;
|
||||
|
||||
@ -2254,7 +2254,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.161 2004-02-24 16:12:39 peter
|
||||
Revision 1.162 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.161 2004/02/24 16:12:39 peter
|
||||
* operator overload chooses rewrite
|
||||
* overload choosing is now generic and moved to htypechk
|
||||
|
||||
|
@ -176,8 +176,8 @@ begin
|
||||
{$ifdef i386}
|
||||
{ place jump in codesegment }
|
||||
codesegment.concat(Tai_align.Create_op(4,$90));
|
||||
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,0));
|
||||
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
|
||||
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,AT_FUNCTION,0));
|
||||
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
|
||||
codeSegment.concat(Tai_symbol_end.Createname(hp2.name^));
|
||||
{$endif i386}
|
||||
end;
|
||||
@ -505,7 +505,10 @@ initialization
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.8 2004-01-29 23:57:15 florian
|
||||
Revision 1.9 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.8 2004/01/29 23:57:15 florian
|
||||
* fixed linker response file handling
|
||||
|
||||
Revision 1.7 2004/01/29 22:50:53 florian
|
||||
|
@ -216,9 +216,9 @@ implementation
|
||||
if (po_public in hp2.procdef.procoptions) then
|
||||
begin
|
||||
importsSection.concat(Tai_section.Create(sec_code));
|
||||
importsSection.concat(Tai_symbol.createname_global(mangledstring,0));
|
||||
importsSection.concat(Tai_symbol.createname_global(mangledstring,AT_FUNCTION,0));
|
||||
mangledstring := '_$'+mangledstring;
|
||||
importsSection.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(mangledstring)));
|
||||
importsSection.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(mangledstring,AB_EXTERNAL,AT_FUNCTION)));
|
||||
end;
|
||||
{$else powerpc}
|
||||
internalerror(2004010501);
|
||||
@ -227,9 +227,9 @@ implementation
|
||||
importsSection.concat(Tai_section.Create(sec_data));
|
||||
importsSection.concat(Tai_direct.create(strpnew('.section __TEXT,__symbol_stub1,symbol_stubs,pure_instructions,16')));
|
||||
importsSection.concat(Tai_align.Create(4));
|
||||
importsSection.concat(Tai_symbol.Createname(mangledstring,0));
|
||||
importsSection.concat(Tai_symbol.Createname(mangledstring,AT_FUNCTION,0));
|
||||
importsSection.concat(Tai_direct.create(strpnew((#9+'.indirect_symbol ')+symname)));
|
||||
l1 := objectlibrary.newasmsymbol(mangledstring+'$lazy_ptr');
|
||||
l1 := objectlibrary.newasmsymbol(mangledstring+'$lazy_ptr',AB_EXTERNAL,AT_FUNCTION);
|
||||
reference_reset_symbol(href,l1,0);
|
||||
{$IfDef GDB}
|
||||
if (cs_debuginfo in aktmoduleswitches) and assigned(hp2.procdef) then
|
||||
@ -255,14 +255,14 @@ implementation
|
||||
importsSection.concat(Tai_direct.create(strpnew('.lazy_symbol_pointer')));
|
||||
importsSection.concat(Tai_symbol.Create(l1,0));
|
||||
importsSection.concat(Tai_direct.create(strpnew((#9+'.indirect_symbol ')+symname)));
|
||||
importsSection.concat(tai_const_symbol.createname(strpnew('dyld_stub_binding_helper')));
|
||||
importsSection.concat(tai_const_symbol.createname(strpnew('dyld_stub_binding_helper'),AT_FUNCTION,0));
|
||||
|
||||
end
|
||||
else
|
||||
begin
|
||||
importsSection.concat(Tai_section.Create(sec_data));
|
||||
importsSection.concat(Tai_direct.create(strpnew('.non_lazy_symbol_pointer')));
|
||||
importsSection.concat(Tai_symbol.Createname(hp2.func^,0));
|
||||
importsSection.concat(Tai_symbol.Createname(hp2.func^,AT_FUNCTION,0));
|
||||
importsSection.concat(Tai_direct.create(strpnew((#9+'.indirect_symbol ')+hp2.name^)));
|
||||
importsSection.concat(Tai_const.create_32bit(0));
|
||||
end;
|
||||
@ -381,8 +381,8 @@ begin
|
||||
{$ifdef i386}
|
||||
{ place jump in codesegment }
|
||||
codesegment.concat(Tai_align.Create_op(4,$90));
|
||||
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,0));
|
||||
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
|
||||
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,AT_FUNCTION,0));
|
||||
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
|
||||
codeSegment.concat(Tai_symbol_end.Createname(hp2.name^));
|
||||
{$endif i386}
|
||||
end;
|
||||
@ -760,7 +760,10 @@ initialization
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.10 2004-02-27 10:21:05 florian
|
||||
Revision 1.11 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.10 2004/02/27 10:21:05 florian
|
||||
* top_symbol killed
|
||||
+ refaddr to treference added
|
||||
+ refsymbol to treference added
|
||||
|
@ -178,22 +178,22 @@ begin
|
||||
{$ifdef i386}
|
||||
{ place jump in codesegment }
|
||||
codesegment.concat(Tai_align.Create_op(4,$90));
|
||||
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,0));
|
||||
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
|
||||
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,AT_FUNCTION,0));
|
||||
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
|
||||
codeSegment.concat(Tai_symbol_end.Createname(hp2.name^));
|
||||
{$else i386}
|
||||
{$ifdef m68k}
|
||||
{ place jump in codesegment }
|
||||
codesegment.concat(tai_align.create(4));
|
||||
codesegment.concat(tai_symbol.createname_global(hp2.name^,0));
|
||||
codesegment.concat(taicpu.op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
|
||||
codesegment.concat(tai_symbol.createname_global(hp2.name^,AT_FUNCTION,0));
|
||||
codesegment.concat(taicpu.op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
|
||||
codesegment.concat(tai_symbol_end.createname(hp2.name^));
|
||||
{$else m68k}
|
||||
{$ifdef powerpc}
|
||||
{ place jump in codesegment }
|
||||
codesegment.concat(tai_align.create(4));
|
||||
codesegment.concat(tai_symbol.createname_global(hp2.name^,0));
|
||||
codesegment.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
|
||||
codesegment.concat(tai_symbol.createname_global(hp2.name^,AT_FUNCTION,0));
|
||||
codesegment.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
|
||||
codesegment.concat(tai_symbol_end.createname(hp2.name^));
|
||||
{$endif powerpc}
|
||||
{$else powerpc}
|
||||
@ -578,7 +578,10 @@ end.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.14 2004-01-03 13:51:05 jonas
|
||||
Revision 1.15 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.14 2004/01/03 13:51:05 jonas
|
||||
+ support exported procedures for linuxppc
|
||||
* refuse to compile systems/t_linux.pas if processor-specific support
|
||||
for exported procedures is absent
|
||||
|
@ -241,8 +241,8 @@ begin
|
||||
{$ifdef i386}
|
||||
{ place jump in codesegment }
|
||||
codesegment.concat(Tai_align.Create_op(4,$90));
|
||||
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,0));
|
||||
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
|
||||
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,AT_FUNCTION,0));
|
||||
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
|
||||
codeSegment.concat(Tai_symbol_end.Createname(hp2.name^));
|
||||
{$endif i386}
|
||||
end;
|
||||
@ -547,7 +547,10 @@ initialization
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.9 2003-11-11 16:46:40 marco
|
||||
Revision 1.10 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.9 2003/11/11 16:46:40 marco
|
||||
* minor fix
|
||||
|
||||
Revision 1.8 2003/04/27 07:29:52 peter
|
||||
|
@ -189,8 +189,8 @@ begin
|
||||
{$ifdef i386}
|
||||
{ place jump in codesegment }
|
||||
codesegment.concat(Tai_align.Create_op(4,$90));
|
||||
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,0));
|
||||
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
|
||||
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,AT_FUNCTION,0));
|
||||
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
|
||||
codeSegment.concat(Tai_symbol_end.Createname(hp2.name^));
|
||||
{$endif i386}
|
||||
end;
|
||||
@ -489,7 +489,10 @@ initialization
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.6 2003-10-11 19:32:04 marco
|
||||
Revision 1.7 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.6 2003/10/11 19:32:04 marco
|
||||
* -Xd
|
||||
|
||||
Revision 1.5 2003/10/03 14:16:48 marco
|
||||
|
@ -328,7 +328,7 @@ const
|
||||
if (cs_debuginfo in aktmoduleswitches) then
|
||||
importsSection.concat(Tai_stab_function_name.Create(nil));
|
||||
{$EndIf GDB}
|
||||
importsSection.concat(Tai_symbol.Createname_global(hp2.func^,0));
|
||||
importsSection.concat(Tai_symbol.Createname_global(hp2.func^,AT_FUNCTION,0));
|
||||
importsSection.concat(Taicpu.Op_ref(A_JMP,S_NO,href));
|
||||
importsSection.concat(Tai_align.Create_op(4,$90));
|
||||
{$IfDef GDB}
|
||||
@ -351,7 +351,7 @@ const
|
||||
{ add jump field to imporTSection }
|
||||
importsSection.concat(Tai_section.Create(sec_idata5));
|
||||
if hp2.is_var then
|
||||
importsSection.concat(Tai_symbol.Createname_global(hp2.func^,0))
|
||||
importsSection.concat(Tai_symbol.Createname_global(hp2.func^,AT_FUNCTION,0))
|
||||
else
|
||||
importsSection.concat(Tai_label.Create(lcode));
|
||||
{$ifdef GDB}
|
||||
@ -366,7 +366,7 @@ const
|
||||
inc(suffix);
|
||||
importname:='__imp_'+hp2.name^+'_'+tostr(suffix);
|
||||
end;
|
||||
importssection.concat(tai_symbol.createname(importname,4));
|
||||
importssection.concat(tai_symbol.createname(importname,AT_FUNCTION,4));
|
||||
end
|
||||
else
|
||||
begin
|
||||
@ -377,7 +377,7 @@ const
|
||||
inc(suffix);
|
||||
importname:='__imp_by_ordinal'+tostr(hp2.ordnr)+'_'+tostr(suffix);
|
||||
end;
|
||||
importssection.concat(tai_symbol.createname(importname,4));
|
||||
importssection.concat(tai_symbol.createname(importname,AT_FUNCTION,4));
|
||||
end;
|
||||
end;
|
||||
{$endif GDB}
|
||||
@ -487,7 +487,7 @@ const
|
||||
if (cs_debuginfo in aktmoduleswitches) then
|
||||
importssection.concat(tai_stab_function_name.create(nil));
|
||||
{$EndIf GDB}
|
||||
importsSection.concat(Tai_symbol.Createname_global(hp2.func^,0));
|
||||
importsSection.concat(Tai_symbol.Createname_global(hp2.func^,AT_FUNCTION,0));
|
||||
importsSection.concat(Taicpu.Op_ref(A_JMP,S_NO,href));
|
||||
importsSection.concat(Tai_align.Create_op(4,$90));
|
||||
{$IfDef GDB}
|
||||
@ -513,7 +513,7 @@ const
|
||||
inc(suffix);
|
||||
importname:='__imp_'+hp2.name^+'_'+tostr(suffix);
|
||||
end;
|
||||
importssection.concat(tai_symbol.createname(importname,4));
|
||||
importssection.concat(tai_symbol.createname(importname,AT_FUNCTION,4));
|
||||
end
|
||||
else
|
||||
begin
|
||||
@ -524,7 +524,7 @@ const
|
||||
inc(suffix);
|
||||
importname:='__imp_by_ordinal'+tostr(hp2.ordnr)+'_'+tostr(suffix);
|
||||
end;
|
||||
importssection.concat(tai_symbol.createname(importname,4));
|
||||
importssection.concat(tai_symbol.createname(importname,AT_FUNCTION,4));
|
||||
end;
|
||||
end;
|
||||
{$endif GDB}
|
||||
@ -532,7 +532,7 @@ const
|
||||
end
|
||||
else
|
||||
begin
|
||||
importsSection.concat(Tai_symbol.Createname_global(hp2.func^,0));
|
||||
importsSection.concat(Tai_symbol.Createname_global(hp2.func^,AT_FUNCTION,0));
|
||||
end;
|
||||
importsSection.concat(Tai_const_symbol.Create_rva(hp2.lab));
|
||||
hp2:=twin32imported_item(hp2.next);
|
||||
@ -1606,7 +1606,10 @@ initialization
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.28 2004-02-27 10:21:05 florian
|
||||
Revision 1.29 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.28 2004/02/27 10:21:05 florian
|
||||
* top_symbol killed
|
||||
+ refaddr to treference added
|
||||
+ refsymbol to treference added
|
||||
|
@ -536,7 +536,7 @@ unit cgx86;
|
||||
|
||||
procedure tcgx86.a_call_name(list : taasmoutput;const s : string);
|
||||
begin
|
||||
list.concat(taicpu.op_sym(A_CALL,S_NO,objectlibrary.newasmsymbol(s)));
|
||||
list.concat(taicpu.op_sym(A_CALL,S_NO,objectlibrary.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
|
||||
end;
|
||||
|
||||
|
||||
@ -1659,7 +1659,7 @@ unit cgx86;
|
||||
if cs_create_pic in aktmoduleswitches then
|
||||
begin
|
||||
a_call_name(list,'FPC_GETEIPINEBX');
|
||||
list.concat(taicpu.op_sym_ofs_reg(A_ADD,tcgsize2opsize[OS_ADDR],objectlibrary.newasmsymboldata('_GLOBAL_OFFSET_TABLE_'),0,NR_PIC_OFFSET_REG));
|
||||
list.concat(taicpu.op_sym_ofs_reg(A_ADD,tcgsize2opsize[OS_ADDR],objectlibrary.newasmsymbol('_GLOBAL_OFFSET_TABLE_',AB_EXTERNAL,AT_DATA),0,NR_PIC_OFFSET_REG));
|
||||
list.concat(tai_regalloc.alloc(NR_PIC_OFFSET_REG));
|
||||
end;
|
||||
end;
|
||||
@ -1781,7 +1781,10 @@ unit cgx86;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.115 2004-02-27 10:21:06 florian
|
||||
Revision 1.116 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.115 2004/02/27 10:21:06 florian
|
||||
* top_symbol killed
|
||||
+ refaddr to treference added
|
||||
+ refsymbol to treference added
|
||||
|
@ -518,7 +518,7 @@ Implementation
|
||||
{ not found, finally ... add it anyways ... }
|
||||
Message1(asmr_w_id_supposed_external,expr);
|
||||
oper.InitRef;
|
||||
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr);
|
||||
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr,AB_EXTERNAL,AT_FUNCTION);
|
||||
end;
|
||||
end
|
||||
else
|
||||
@ -789,7 +789,10 @@ Implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.2 2004-02-09 19:23:48 peter
|
||||
Revision 1.3 2004-03-02 00:36:33 olle
|
||||
* big transformation of Tai_[const_]Symbol.Create[data]name*
|
||||
|
||||
Revision 1.2 2004/02/09 19:23:48 peter
|
||||
* reg_2_opsize replaced with reg_cgsize
|
||||
|
||||
Revision 1.1 2004/01/14 23:39:05 florian
|
||||
|
Loading…
Reference in New Issue
Block a user