diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 5c68811e3b9..fca9703309b 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +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. diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver index cbd0596fa9b..2d4b0c3c363 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 bff8fa98c64..7ec08c5d7c0 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