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