aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorBenjamin Kosnik <bkoz@redhat.com>2009-12-22 08:23:08 +0000
committerBenjamin Kosnik <bkoz@gcc.gnu.org>2009-12-22 08:23:08 +0000
commitac2e5c890aa795612105a0c4d4ab48a57e5c60fd (patch)
tree7119ede6221db6193bea2b4b190f55f725e8e9e7 /libstdc++-v3
parent2471c0b93d489007962ec0a18d34323e6dfa3450 (diff)
downloadgcc-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
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog6
-rw-r--r--libstdc++-v3/config/abi/pre/gnu.ver4
-rw-r--r--libstdc++-v3/src/atomic.cc16
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