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: [email protected]
ReportedBy: [email protected]
CC: [email protected]
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 <[email protected]>
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