http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52104
Bug #: 52104 Summary: go1 fails to link on Solaris 8/9 x86 with native TLS Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: r...@gcc.gnu.org CC: r...@gcc.gnu.org Host: i386-pc-solaris2.[89] Target: i386-pc-solaris2.[89] Build: i386-pc-solaris2.[89] Between 20120120 (last build) and 20120202, go1 fails to link on Solaris 8 and 9/x86 when native TLS is in use (the as/ld combination isn't affected): Undefined first referenced symbol in file std::function<void ()>::function<void std::call_once<void (std::thread::*)(), std::reference_wrapper<std::thread> >(std::once_flag&, void (std::thread::*&&)(), std::reference_wrapper<std::thread>&&)::{lambda()#1}>(void std::call_once<void (std::thread::*)(), std::reference_wrapper<std::thread> >(std::once_flag&, void (std::thread::*&&)(), std::reference_wrapper<std::thread>&&)::{lambda()#1}, std::enable_if<!std::is_integral<void std::call_once<void (std::thread::*)(), std::reference_wrapper<std::thread> >(std::once_flag&, void (std::thread::*&&)(), std::reference_wrapper<std::thread>&&)::{lambda()#1}>::value, std::function<void ()>::_Useless>::type) /var/gcc/regression/trunk/8-gcc-gas/build/prev-i386-pc-solaris2.8/libstdc++-v3/src/.libs/libstdc++.a(future.o) ld: fatal: Symbol referencing errors. No output written to go1 collect2: error: ld returned 1 exit status with COLLECT_NO_DEMANGLE=1: Undefined first referenced symbol in file _ZNSt8functionIFvvEEC1IZSt9call_onceIMSt6threadFvvEISt17reference_wrapperIS4_EEEvRSt9once_flagOT_DpOT0_EUlvE_EET_NSt9enable_ifIXntsrSt11is_integralISH_E5valueENS1_8_UselessEE4typeE /var/gcc/regression/trunk/8-gcc-gas/build/prev-i386-pc-solaris2.8/libstdc++-v3/src/.libs/libstdc++.a(future.o) I'm attaching the .ii and .s files for reference. I suspect this patch 2012-02-01 Jonathan Wakely <jwakely....@gmail.com> PR libstdc++/49204 * include/std/future (__future_base::_State_base::wait()): Use lambda expression for predicate and remove redundant test. might be related, but haven't verified yet. Rainer