Recent libstdc++ regression on i686-linux: abi/cxx_runtime_only_linkage.cc

Paolo Carlini paolo.carlini@oracle.com
Fri Aug 22 16:38:00 GMT 2008


Sebastian Redl wrote:
> That's my exception_ptr code again (indirectly, this time). 
> Apparently, __exchange_and_add has exactly the same problem as 
> __sync_add_and_fetch_4: it's just not implemented on i386 targets.
Not really, it would be too easy ;) It is implemented of course, but it 
is provided as an exported symbol by libstdc++. Thus, since the test 
only links libsupc++, it shows that the latter isn't selfcontained.
> That makes the regression range incorrect, though: the specified range 
> doesn't contain any changes to my code. This was introduced as early 
> as r139091.
Yes, that's rather mysterious.
> The other weird thing is that the 32-bit target of the x86_64 compiler 
> doesn't have _GLIBCXX_ATOMIC_BUILTINS_4 defined - apparently it 
> defaults to a i386 profile. Now, I understand that for the 32-bit x86 
> compiler, but the 64-bit compiler is not a cross-compiler and should 
> merely target the 32-bit mode of x86_64 CPUs. It should have the 
> __sync built-ins.
I don't think the 32-bit mode of x86_64 CPUs provide the builtins but, 
anyway...
> Also, it's curious that we haven't seen this test failure for real x86 
> builds.
We are seeing it, but only lately.

Anwyay, one way or the other, l porpose for now let's just support the 
new facility only for targets providing the sync builtins and be done 
with it. Agreed?

Paolo.



More information about the Libstdc++ mailing list