aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/config/abi/pre/gnu.ver
diff options
context:
space:
mode:
authorPauli Nieminen <suokkos@gmail.com>2017-01-04 10:54:59 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2017-01-04 10:54:59 +0000
commited3cb4970392edfbae74c82d7e25b7cd961ce70f (patch)
treea919cdc92c61faa689f062dc8895b39ea5465098 /libstdc++-v3/config/abi/pre/gnu.ver
parent165ba2e9c7a6a86dbb12182486359edefba1dd9d (diff)
downloadgcc-ed3cb4970392edfbae74c82d7e25b7cd961ce70f.zip
gcc-ed3cb4970392edfbae74c82d7e25b7cd961ce70f.tar.gz
gcc-ed3cb4970392edfbae74c82d7e25b7cd961ce70f.tar.bz2
Support exception propagation without lock-free atomic int
2017-01-04 Pauli Nieminen <suokkos@gmail.com> Jonathan Wakely <jwakely@redhat.com> PR libstdc++/64735 * acinclude.m4 (GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER): Define. * config.h.in: Regenerate. * config/abi/pre/gnu.ver [HAVE_EXCEPTION_PTR_SINCE_GCC46] (GLIBCXX_3.4.15, GLIBCXX_3.4.21, CXXABI_1.3.3, CXXABI_1.3.5): Make exports for exception_ptr, nested_exception, and future conditional. [HAVE_EXCEPTION_PTR_SINCE_GCC46] (GLIBCXX_3.4.23, CXXABI_1.3.11): Add exports for exception_ptr, nested_exception, and future conditional. * configure: Regenerate. * configure.ac: Use GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER. * include/std/future: Remove check for ATOMIC_INT_LOCK_FREE * libsupc++/eh_atomics.h: New file for internal use only. (__eh_atomic_inc, __eh_atomic_dec): New. * libsupc++/eh_ptr.cc (exception_ptr::_M_addref) (exception_ptr::_M_release) (__gxx_dependent_exception_cleanup) (rethrow_exception): Use eh_atomics.h reference counting helpers. * libsupc++/eh_throw.cc (__gxx_exception_cleanup): Likewise. * libsupc++/eh_tm.cc (free_any_cxa_exception): Likewise. * libsupc++/exception: Remove check for ATOMIC_INT_LOCK_FREE. * libsupc++/exception_ptr.h: Likewise. * libsupc++/guard.cc: Include header for ATOMIC_INT_LOCK_FREE macro. * libsupc++/nested_exception.cc: Remove check for ATOMIC_INT_LOCK_FREE. * libsupc++/nested_exception.h: Likewise. * src/c++11/future.cc: Likewise. * testsuite/18_support/exception_ptr/*: Remove atomic builtins checks. * testsuite/18_support/nested_exception/*: Likewise. * testsuite/30_threads/async/*: Likewise. * testsuite/30_threads/future/*: Likewise. * testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise. * testsuite/30_threads/packaged_task/*: Likewise. * testsuite/30_threads/promise/*: Likewise. * testsuite/30_threads/shared_future/*: Likewise. Co-Authored-By: Jonathan Wakely <jwakely@redhat.com> From-SVN: r244051
Diffstat (limited to 'libstdc++-v3/config/abi/pre/gnu.ver')
-rw-r--r--libstdc++-v3/config/abi/pre/gnu.ver47
1 files changed, 47 insertions, 0 deletions
diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index 10bba01..3e6e70b 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -1503,6 +1503,9 @@ GLIBCXX_3.4.15 {
_ZNSt14error_categoryC*;
_ZNSt14error_categoryD*;
+#ifdef HAVE_EXCEPTION_PTR_SINCE_GCC46
+ # std::future symbols are only present in this version when
+ # atomic operations on int are always lock-free.
_ZNSt13__future_base12_Result_baseC*;
_ZNSt13__future_base12_Result_baseD*;
_ZTINSt13__future_base12_Result_baseE;
@@ -1511,6 +1514,7 @@ GLIBCXX_3.4.15 {
_ZNSt13__future_base11_State_baseD*;
_ZTINSt13__future_base11_State_baseE;
_ZTVNSt13__future_base11_State_baseE;
+#endif
} GLIBCXX_3.4.14;
@@ -1687,8 +1691,10 @@ GLIBCXX_3.4.21 {
# std::notify_all_at_thread_exit
_ZSt25notify_all_at_thread_exitRSt18condition_variableSt11unique_lockISt5mutexE;
+#ifdef HAVE_EXCEPTION_PTR_SINCE_GCC46
# std::__future_base::_State_baseV2::_Make_ready::_M_set()
_ZNSt13__future_base13_State_baseV211_Make_ready6_M_setEv;
+#endif
# ABI-tagged std::basic_string
_ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE1[01]**;
@@ -1947,6 +1953,16 @@ GLIBCXX_3.4.23 {
_ZNSsC[12]ERKSs[jmy]RKSaIcE;
_ZNSbIwSt11char_traitsIwESaIwEEC[12]ERKS2_mRKS1_;
+#ifndef HAVE_EXCEPTION_PTR_SINCE_GCC46
+ # std::future symbols are exported in the first version to support
+ # std::exception_ptr
+ _ZNSt13__future_base12_Result_baseC*;
+ _ZNSt13__future_base12_Result_baseD*;
+ _ZTINSt13__future_base12_Result_baseE;
+ _ZTVNSt13__future_base12_Result_baseE;
+ _ZNSt13__future_base13_State_baseV211_Make_ready6_M_setEv;
+#endif
+
} GLIBCXX_3.4.22;
# Symbols in the support library (libsupc++) have their own tag.
@@ -2080,6 +2096,7 @@ CXXABI_1.3.3 {
_ZTIPDi;
_ZTIPKDi;
+#ifdef HAVE_EXCEPTION_PTR_SINCE_GCC46
# exception_ptr
_ZNSt15__exception_ptr13exception_ptrC1Ev;
_ZNSt15__exception_ptr13exception_ptrC2Ev;
@@ -2099,6 +2116,7 @@ CXXABI_1.3.3 {
_ZSt17current_exceptionv;
_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE;
+#endif
} CXXABI_1.3.2;
@@ -2129,10 +2147,12 @@ CXXABI_1.3.5 {
# FNV hash.
_ZSt15_Fnv_hash_bytesPKv*;
+#ifdef HAVE_EXCEPTION_PTR_SINCE_GCC46
# std::nested_exception
_ZNSt16nested_exceptionD*;
_ZTISt16nested_exception;
_ZTVSt16nested_exception;
+#endif
} CXXABI_1.3.4;
@@ -2209,6 +2229,33 @@ CXXABI_1.3.11 {
_ZdaPvSt11align_val_tRKSt9nothrow_t;
_ZdaPv[jmy]St11align_val_t;
+#ifndef HAVE_EXCEPTION_PTR_SINCE_GCC46
+ # exception_ptr
+ _ZNSt15__exception_ptr13exception_ptrC1Ev;
+ _ZNSt15__exception_ptr13exception_ptrC2Ev;
+ _ZNSt15__exception_ptr13exception_ptrC1ERKS0_;
+ _ZNSt15__exception_ptr13exception_ptrC2ERKS0_;
+ _ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE;
+ _ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE;
+ _ZNSt15__exception_ptr13exception_ptrD1Ev;
+ _ZNSt15__exception_ptr13exception_ptrD2Ev;
+ _ZNSt15__exception_ptr13exception_ptraSERKS0_;
+ _ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv;
+ _ZNKSt15__exception_ptr13exception_ptrntEv;
+ _ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv;
+ _ZNSt15__exception_ptr13exception_ptr4swapERS0_;
+ _ZNSt15__exception_ptreqERKNS_13exception_ptrES2_;
+ _ZNSt15__exception_ptrneERKNS_13exception_ptrES2_;
+
+ _ZSt17current_exceptionv;
+ _ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE;
+
+ # std::nested_exception
+ _ZNSt16nested_exceptionD*;
+ _ZTISt16nested_exception;
+ _ZTVSt16nested_exception;
+#endif
+
} CXXABI_1.3.10;
# Symbols in the support library (libsupc++) supporting transactional memory.