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