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

Reply via email to