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

--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-02-03 
11:08:47 UTC ---
So fixing that configure test should make the problem go away?

There's still a problem on non-TLS targets though.  I have no idea how to
explicitly instantiate the std::function template constructor for a lambda
type, I don't think it's possible, so it might be necessary to move the
~_Async_state_base destructor into the header file for non-TLS targets.  That
would result in larger object files because the vtable and typeinfo would be
emitted in every object using futures.

And there's still a Solaris 10 problem:

(In reply to comment #4)
> 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

That symbol is the one used when TLS *is* available.  __once_callable is just a
__thread void* so doesn't need instantiating. 
Why isn't the definition in mutex.o used?

Reply via email to