This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]