diff options
author | Pauli Nieminen <suokkos@gmail.com> | 2017-01-04 10:54:59 +0000 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2017-01-04 10:54:59 +0000 |
commit | ed3cb4970392edfbae74c82d7e25b7cd961ce70f (patch) | |
tree | a919cdc92c61faa689f062dc8895b39ea5465098 /libstdc++-v3/config/abi/pre/gnu.ver | |
parent | 165ba2e9c7a6a86dbb12182486359edefba1dd9d (diff) | |
download | gcc-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.ver | 47 |
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. |