[Bug c/43553] libgcc built with -DHAVE_CC_TLS against xgcc when emutls in use
developer at sandoe-acoustics dot co dot uk
gcc-bugzilla@gcc.gnu.org
Thu Apr 1 08:02:00 GMT 2010
------- Comment #17 from developer at sandoe-acoustics dot co dot uk 2010-04-01 08:02 -------
AFAICT the root problem does not relate to export of symbols from emutls (or to
its use). Although this perhaps needs a different PR
The root problem is that the emutls implementation generates symbols in the
data area that are (AFAICT) translated into thread-unique addresses by
_emutls_get_address.
The two symbols in question are declared static and private and are being
optimized away. (you will find that the profile tests work at -O0).
I am not sure why they are being optimized away when there is a reference to
them in the asm file -- see (b) below.
The variables need to be preserved and coalesced within one binary.
a/ A work-round solution is to mark the two variables PUBLIC and COMMON. I've
tested that this works on i686-apple-darwin and ia32-pc-linux .... BUT....
b/ Looking at http://gcc.gnu.org/ml/gcc/2010-03/msg00482.html
It is perhaps the case that other attributes are not being copied that are
causing this problem.
Of course, maybe this is also a limitation of emutls.
I don't have time to do much on this today -- and the trunk freeze is fast
approaching.. input from more experienced would be welcome...
--
developer at sandoe-acoustics dot co dot uk changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |developer at sandoe-
| |acoustics dot co dot uk
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43553
More information about the Gcc-bugs
mailing list