From ac2e5c890aa795612105a0c4d4ab48a57e5c60fd Mon Sep 17 00:00:00 2001 From: Benjamin Kosnik Date: Tue, 22 Dec 2009 08:23:08 +0000 Subject: re PR libstdc++/42456 (Revision 155377 failed some C++ atomic tests) 2009-12-21 Benjamin Kosnik PR libstdc++/42456 * src/atomic.cc: Move _GLIBCXX_ASM_SYMVER define within guard. * config/abi/pre/gnu.ver: Add non-volatile exports. From-SVN: r155393 --- libstdc++-v3/ChangeLog | 6 ++++++ libstdc++-v3/config/abi/pre/gnu.ver | 4 ++++ libstdc++-v3/src/atomic.cc | 16 +++++++++------- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 5c68811..fca9703 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,11 @@ 2009-12-21 Benjamin Kosnik + PR libstdc++/42456 + * src/atomic.cc: Move _GLIBCXX_ASM_SYMVER define within guard. + * config/abi/pre/gnu.ver: Add non-volatile exports. + +2009-12-21 Benjamin Kosnik + * scripts/run_doxygen: Update nested namespace exceptions. 2009-12-20 Benjamin Kosnik diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver index cbd0596..2d4b0c3 100644 --- a/libstdc++-v3/config/abi/pre/gnu.ver +++ b/libstdc++-v3/config/abi/pre/gnu.ver @@ -1050,6 +1050,10 @@ GLIBCXX_3.4.13 { GLIBCXX_3.4.14 { + # atomic + _ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order; + _ZNSt9__atomic011atomic_flag5clearESt12memory_order; + # future _ZSt15future_category; _ZNSt12future_errorD*; diff --git a/libstdc++-v3/src/atomic.cc b/libstdc++-v3/src/atomic.cc index bff8fa9..7ec08c5 100644 --- a/libstdc++-v3/src/atomic.cc +++ b/libstdc++-v3/src/atomic.cc @@ -78,15 +78,15 @@ namespace std { bool atomic_flag_test_and_set_explicit(__atomic_flag_base* __a, - memory_order __m) throw () + memory_order __m) throw() { atomic_flag* d = static_cast(__a); return d->test_and_set(__m); } void - atomic_flag_clear_explicit(__atomic_flag_base* __a, - memory_order __m) throw () + atomic_flag_clear_explicit(__atomic_flag_base* __a, + memory_order __m) throw() { atomic_flag* d = static_cast(__a); return d->clear(__m); @@ -94,14 +94,14 @@ namespace std void __atomic_flag_wait_explicit(__atomic_flag_base* __a, - memory_order __x) throw () + memory_order __x) throw() { while (atomic_flag_test_and_set_explicit(__a, __x)) { }; } __atomic_flag_base* - __atomic_flag_for_address(const void* __z) throw () + __atomic_flag_for_address(const void* __z) throw() { uintptr_t __u = reinterpret_cast(__z); __u += (__u >> 2) + (__u << 4); @@ -126,12 +126,14 @@ namespace std // In the future, GLIBCXX_ABI > 6 should remove all uses of // _GLIBCXX_*_SYMVER macros in this file. +#if defined(_GLIBCXX_SYMVER_GNU) && defined(PIC) \ + && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) + #define _GLIBCXX_ASM_SYMVER(cur, old, version) \ asm (".symver " #cur "," #old "@@" #version); -#if defined(_GLIBCXX_SYMVER_GNU) && defined(PIC) \ - && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) _GLIBCXX_ASM_SYMVER(_ZNSt9__atomic011atomic_flag5clearESt12memory_order, _ZNVSt9__atomic011atomic_flag5clearESt12memory_order, GLIBCXX_3.4.11) _GLIBCXX_ASM_SYMVER(_ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order, _ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order, GLIBCXX_3.4.11) + #endif -- cgit v1.1