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
Showing
- libstdc++-v3/ChangeLog 37 additions, 0 deletionslibstdc++-v3/ChangeLog
- libstdc++-v3/acinclude.m4 37 additions, 0 deletionslibstdc++-v3/acinclude.m4
- libstdc++-v3/config.h.in 3 additions, 0 deletionslibstdc++-v3/config.h.in
- libstdc++-v3/config/abi/pre/gnu.ver 47 additions, 0 deletionslibstdc++-v3/config/abi/pre/gnu.ver
- libstdc++-v3/configure 49 additions, 0 deletionslibstdc++-v3/configure
- libstdc++-v3/configure.ac 3 additions, 0 deletionslibstdc++-v3/configure.ac
- libstdc++-v3/include/std/future 1 addition, 3 deletionslibstdc++-v3/include/std/future
- libstdc++-v3/libsupc++/eh_atomics.h 84 additions, 0 deletionslibstdc++-v3/libsupc++/eh_atomics.h
- libstdc++-v3/libsupc++/eh_ptr.cc 5 additions, 9 deletionslibstdc++-v3/libsupc++/eh_ptr.cc
- libstdc++-v3/libsupc++/eh_throw.cc 2 additions, 5 deletionslibstdc++-v3/libsupc++/eh_throw.cc
- libstdc++-v3/libsupc++/eh_tm.cc 2 additions, 3 deletionslibstdc++-v3/libsupc++/eh_tm.cc
- libstdc++-v3/libsupc++/exception 1 addition, 2 deletionslibstdc++-v3/libsupc++/exception
- libstdc++-v3/libsupc++/exception_ptr.h 0 additions, 4 deletionslibstdc++-v3/libsupc++/exception_ptr.h
- libstdc++-v3/libsupc++/guard.cc 1 addition, 0 deletionslibstdc++-v3/libsupc++/guard.cc
- libstdc++-v3/libsupc++/nested_exception.cc 0 additions, 2 deletionslibstdc++-v3/libsupc++/nested_exception.cc
- libstdc++-v3/libsupc++/nested_exception.h 0 additions, 4 deletionslibstdc++-v3/libsupc++/nested_exception.h
- libstdc++-v3/src/c++11/future.cc 1 addition, 2 deletionslibstdc++-v3/src/c++11/future.cc
- libstdc++-v3/testsuite/18_support/exception_ptr/40296.cc 0 additions, 1 deletionlibstdc++-v3/testsuite/18_support/exception_ptr/40296.cc
- libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc 0 additions, 1 deletion...-v3/testsuite/18_support/exception_ptr/60612-terminate.cc
- libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc 0 additions, 1 deletion...v3/testsuite/18_support/exception_ptr/60612-unexpected.cc
Loading
Please register or sign in to comment