nx86ld.pas, tx86loadnode:

* generate_threadvar_access: pass result of use_indirect_symbol() to RefAsmSymbol() to use an indirect access if necessary

git-svn-id: trunk@33283 -
This commit is contained in:
svenbarth 2016-03-18 22:39:41 +00:00
parent e4feacf29d
commit c4449fc5e6

View File

@ -39,7 +39,7 @@ implementation
uses
cutils,verbose,systems,
aasmtai,aasmdata,
aasmbase,aasmtai,aasmdata,
cgutils,cgobj,
symconst,symdef,symtable,
cgbase,cpubase,parabase,paramgr;
@ -65,9 +65,9 @@ implementation
pd:=search_system_proc('fpc_tls_add');
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
if not(vo_is_weak_external in gvs.varoptions) then
reference_reset_symbol(href,current_asmdata.RefAsmSymbol(gvs.mangledname),0,sizeof(pint))
reference_reset_symbol(href,current_asmdata.RefAsmSymbol(gvs.mangledname,AT_DATA,use_indirect_symbol(gvs)),0,sizeof(pint))
else
reference_reset_symbol(href,current_asmdata.WeakRefAsmSymbol(gvs.mangledname),0,sizeof(pint));
reference_reset_symbol(href,current_asmdata.WeakRefAsmSymbol(gvs.mangledname,AT_DATA),0,sizeof(pint));
cg.a_loadaddr_ref_cgpara(current_asmdata.CurrAsmList,href,paraloc1);
paramanager.freecgpara(current_asmdata.CurrAsmList,paraloc1);
paraloc1.done;