This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC 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


H.J. Lu wrote:
On Fri, Aug 22, 2008 at 8:59 AM, Paolo Carlini <paolo.carlini@oracle.com> wrote:
Hi,

apparently, between Revisions 139407 and 139411, this test started failing
the build:

FAIL: abi/cxx_runtime_only_linkage.cc (test for excess errors)

Any idea what's going wrong? Maybe HJ can post the error?



/export/gnu/import/svn/gcc-test/bld/x86_64-unknown-linux-gnu/32/libstdc++-v3/libsupc++/.libs/libsupc++.a(eh_throw.o):
In function `__exchange_and_add_dispatch':^M
/export/gnu/import/svn/gcc-test/bld/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/ext/atomicity.h:84:
undefined reference to `__gnu_cxx::__exchange_and_add(int volatile*,
int)'^M
collect2: ld returned 1 exit status^M
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.

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.

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.

Also, it's curious that we haven't seen this test failure for real x86 builds. They don't default to __GTHREADS undefined, do they?

Sebastian


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