http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58595
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Created attachment 32252
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32252&action=edit
gcc49-pr58595.patch
Untested fix. While the testcase does compile with -O2 -fpic -fno-gcse, I
don't see how it could work,
ldr r3, .L5
ldr r2, .L5+4
.LPIC0:
add r3, pc, r3
ldr r4, [r3, r2]
add r4, r4, #4
...
.L5:
.word _GLOBAL_OFFSET_TABLE_-(.LPIC0+8)
.word s(GOT)
simply can't load correct TLS symbol s value when s is in .tbss.
This untested patch does roughly what i386.c does, call legitimize_tls_address
even when we see a constant addition to a TLS SYMBOL_REF.