57
57
case target_info.system of
58
58
system_powerpc_darwin:
60
if (symtableentry.typ = procsym) and
61
(tprocsym(symtableentry).owner.symtabletype in [staticsymtable,globalsymtable]) and
63
(not tprocsym(symtableentry).owner.iscurrentunit) or
64
(po_external in tprocsym(symtableentry).procdef[1].procoptions)
67
l:=objectlibrary.getasmsymbol('L'+tprocsym(symtableentry).procdef[1].mangledname+'$non_lazy_ptr');
68
if not(assigned(l)) then
70
l:=objectlibrary.newasmsymbol('L'+tprocsym(symtableentry).procdef[1].mangledname+'$non_lazy_ptr',AB_COMMON,AT_DATA);
71
picdata.concat(tai_symbol.create(l,0));
72
picdata.concat(tai_const.create_indirect_sym(objectlibrary.newasmsymbol(tprocsym(symtableentry).procdef[1].mangledname,AB_EXTERNAL,AT_DATA)));
73
picdata.concat(tai_const.create_32bit(0));
75
reference_reset_symbol(ref,l,0);
76
reference_reset_base(location.reference,cg.getaddressregister(exprasmlist),0);
77
cg.a_load_ref_reg(exprasmlist,OS_ADDR,OS_ADDR,ref,location.reference.base);
60
case symtableentry.typ of
63
if (po_external in tprocsym(symtableentry).procdef[1].procoptions) then
64
symname := tprocsym(symtableentry).procdef[1].mangledname;
68
if ([vo_is_dll_var,vo_is_external] * tglobalvarsym(symtableentry).varoptions <> []) then
69
symname := tglobalvarsym(symtableentry).mangledname;
87
procedure tppcloadnode.generate_picvaraccess;
92
case target_info.system of
93
system_powerpc_darwin:
95
if (vo_is_dll_var in tglobalvarsym(symtableentry).varoptions) or
96
((tglobalvarsym(symtableentry).owner.symtabletype in [staticsymtable,globalsymtable]) and
97
not(tglobalvarsym(symtableentry).owner.iscurrentunit)) then
99
l:=objectlibrary.getasmsymbol('L'+tglobalvarsym(symtableentry).mangledname+'$non_lazy_ptr');
100
if not(assigned(l)) then
102
l:=objectlibrary.newasmsymbol('L'+tglobalvarsym(symtableentry).mangledname+'$non_lazy_ptr',AB_COMMON,AT_DATA);
103
picdata.concat(tai_symbol.create(l,0));
104
picdata.concat(tai_const.create_indirect_sym(objectlibrary.newasmsymbol(tglobalvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA)));
105
picdata.concat(tai_const.create_32bit(0));
108
reference_reset_symbol(ref,l,0);
109
{ ref.base:=current_procinfo.got;
110
ref.relsymbol:=current_procinfo.gotlabel;}
111
reference_reset_base(location.reference,cg.getaddressregister(exprasmlist),0);
112
cg.a_load_ref_reg(exprasmlist,OS_ADDR,OS_ADDR,ref,location.reference.base);
115
internalerror(200403021);
118
internalerror(200402291);
74
if (symname = '') then
78
location_reset(location,LOC_REFERENCE,def_cgsize(resulttype.def));
79
reference_reset_base(location.reference,cg.getaddressregister(exprasmlist),0);
80
location.reference.base := tcgppc(cg).g_darwin_indirect_sym_load(exprasmlist,symname);
124
86
cloadnode:=tppcloadnode;
128
Revision 1.9 2005/02/14 17:13:10 peter
131
Revision 1.8 2005/01/24 18:13:46 jonas
132
* fixed bug introduced in revision 1.6
134
Revision 1.7 2005/01/20 17:47:01 peter
135
* remove copy_value_on_stack and a_param_copy_ref
137
Revision 1.6 2005/01/19 22:19:41 peter
138
* unit mapping rewrite