diff options
author | Benjamin Kosnik <bkoz@redhat.com> | 2009-12-22 08:23:08 +0000 |
---|---|---|
committer | Benjamin Kosnik <bkoz@gcc.gnu.org> | 2009-12-22 08:23:08 +0000 |
commit | ac2e5c890aa795612105a0c4d4ab48a57e5c60fd (patch) | |
tree | 7119ede6221db6193bea2b4b190f55f725e8e9e7 | |
parent | 2471c0b93d489007962ec0a18d34323e6dfa3450 (diff) | |
download | gcc-ac2e5c890aa795612105a0c4d4ab48a57e5c60fd.zip gcc-ac2e5c890aa795612105a0c4d4ab48a57e5c60fd.tar.gz gcc-ac2e5c890aa795612105a0c4d4ab48a57e5c60fd.tar.bz2 |
re PR libstdc++/42456 (Revision 155377 failed some C++ atomic tests)
2009-12-21 Benjamin Kosnik <bkoz@redhat.com>
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
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/config/abi/pre/gnu.ver | 4 | ||||
-rw-r--r-- | 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 <bkoz@redhat.com> + 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 <bkoz@redhat.com> + * scripts/run_doxygen: Update nested namespace exceptions. 2009-12-20 Benjamin Kosnik <bkoz@redhat.com> 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<volatile atomic_flag*>(__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<volatile atomic_flag*>(__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<uintptr_t>(__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 |