mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-09 21:46:13 +02:00
* generate indirect symbols for LLVM too
git-svn-id: trunk@33722 -
This commit is contained in:
parent
44839ba0c0
commit
04c5d2ee6e
@ -45,13 +45,16 @@ implementation
|
|||||||
uses
|
uses
|
||||||
verbose,cutils,globals,fmodule,systems,
|
verbose,cutils,globals,fmodule,systems,
|
||||||
aasmbase,aasmtai,cpubase,llvmbase,aasmllvm,
|
aasmbase,aasmtai,cpubase,llvmbase,aasmllvm,
|
||||||
|
aasmcnst,
|
||||||
symbase,symtable,defutil,
|
symbase,symtable,defutil,
|
||||||
llvmtype;
|
llvmtype;
|
||||||
|
|
||||||
class procedure tllvmnodeutils.insertbsssym(list: tasmlist; sym: tstaticvarsym; size: asizeint; varalign: shortint);
|
class procedure tllvmnodeutils.insertbsssym(list: tasmlist; sym: tstaticvarsym; size: asizeint; varalign: shortint);
|
||||||
var
|
var
|
||||||
asmsym: tasmsymbol;
|
asmsym,
|
||||||
|
symind: tasmsymbol;
|
||||||
field1, field2: tsym;
|
field1, field2: tsym;
|
||||||
|
tcb: ttai_typedconstbuilder;
|
||||||
begin
|
begin
|
||||||
if sym.globalasmsym then
|
if sym.globalasmsym then
|
||||||
asmsym:=current_asmdata.DefineAsmSymbol(sym.mangledname,AB_GLOBAL,AT_DATA)
|
asmsym:=current_asmdata.DefineAsmSymbol(sym.mangledname,AB_GLOBAL,AT_DATA)
|
||||||
@ -65,6 +68,15 @@ implementation
|
|||||||
list.concat(taillvmdecl.createdef(asmsym,
|
list.concat(taillvmdecl.createdef(asmsym,
|
||||||
get_threadvar_record(sym.vardef,field1,field2),
|
get_threadvar_record(sym.vardef,field1,field2),
|
||||||
nil,sec_data,varalign));
|
nil,sec_data,varalign));
|
||||||
|
symind:=current_asmdata.DefineAsmSymbol(sym.mangledname,AB_INDIRECT,AT_DATA);
|
||||||
|
tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_new_section]);
|
||||||
|
tcb.emit_tai(Tai_const.Create_sym_offset(asmsym,0),cpointerdef.getreusable(sym.vardef));
|
||||||
|
list.concatlist(tcb.get_final_asmlist(
|
||||||
|
symind,cpointerdef.getreusable(sym.vardef),
|
||||||
|
sec_rodata,
|
||||||
|
lower(sym.mangledname),
|
||||||
|
const_align(sym.vardef.alignment)));
|
||||||
|
tcb.free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user