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
This commit is contained in:
Benjamin Kosnik 2009-12-22 08:23:08 +00:00 committed by Benjamin Kosnik
parent 2471c0b93d
commit ac2e5c890a
3 changed files with 19 additions and 7 deletions

View 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.

View 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*;

View 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