H.J. Lu wrote:
On Fri, Aug 22, 2008 at 8:59 AM, Paolo Carlini <[EMAIL PROTECTED]> 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