re PR libstdc++/42456 (Revision 155377 failed some C++ atomic tests)
authorBenjamin Kosnik <bkoz@redhat.com>
Tue, 22 Dec 2009 08:23:08 +0000 (08:23 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Tue, 22 Dec 2009 08:23:08 +0000 (08:23 +0000)
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

libstdc++-v3/ChangeLog
libstdc++-v3/config/abi/pre/gnu.ver
libstdc++-v3/src/atomic.cc

index 5c68811e3b9722dbee69b4bff822caa3c8ea566f..fca9703309bf9ec0a2e345bbb72a63f34ee7d075 100644 (file)
@@ -1,3 +1,9 @@
+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.
index cbd0596fa9b2102d969d1513078ecfe0e4644432..2d4b0c3c363161163292fd4c60758995e595796d 100644 (file)
@@ -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*;
index bff8fa98c647b2834fc9bb5d04e5563dc7174b38..7ec08c5d7c0ca80f1e3fbe7bf78aa8dbe8aed62f 100644 (file)
@@ -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