[Bug libstdc++/52104] go1 fails to link on Solaris 8/9 x86 with native TLS

ro at CeBiTec dot Uni-Bielefeld.DE gcc-bugzilla@gcc.gnu.org
Fri Feb 3 10:21:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52104

--- Comment #4 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> 2012-02-03 10:21:03 UTC ---
> --- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-02-03 10:11:40 UTC ---
> Looks as though we need an extra explicit instantiation in src/c++11/future.cc

Seems so.  This would most likely also resolve a bootstrap failure I'm
seeing on Solaris 10 and 11/x86 with the gas/gld combo:

go1 fails to run with

ld.so.1: go1: fatal: relocation error: R_386_UNKNOWN37: file
/var/gcc/regression/trunk/10-gcc-gas-gld/build/gcc/go1: symbol
_ZSt15__once_callable: offset size (0 bytes) is not supported
gccgo: internal compiler error: Killed (program go1)

That R_386_UNKNOWN37 relocation is R_386_TLS_TPOFF32, not supported even
on Solaris 11.  If I look at the previous (20120127) libstdc++.a (go1 is
linked with -static-libstdc++), I find:

> nm -A libstdc++.a |grep once_callable
libstdc++.a[mutex.o]: [29]      |         0|         4|TLS  |GLOB |0    |8     
|_ZSt15__once_callable

As of 20120202, I get this instead:

libstdc++.a[mutex.o]: [29]      |         0|         4|TLS  |GLOB |0    |8     
|_ZSt15__once_callable
libstdc++.a[future.o]: [144]    |         0|         0|TLS  |GLOB |0    |UNDEF 
|_ZSt15__once_callable

Seems to be the same issue.

    Rainer



More information about the Gcc-bugs mailing list