This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libstdc++/64735] std::future broken on armel


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64735

--- Comment #11 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Author: redi
Date: Wed Jan  4 10:54:59 2017
New Revision: 244051

URL: https://gcc.gnu.org/viewcvs?rev=244051&root=gcc&view=rev
Log:
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.

Added:
    trunk/libstdc++-v3/libsupc++/eh_atomics.h
Modified:
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/acinclude.m4
    trunk/libstdc++-v3/config.h.in
    trunk/libstdc++-v3/config/abi/pre/gnu.ver
    trunk/libstdc++-v3/configure
    trunk/libstdc++-v3/configure.ac
    trunk/libstdc++-v3/include/std/future
    trunk/libstdc++-v3/libsupc++/eh_ptr.cc
    trunk/libstdc++-v3/libsupc++/eh_throw.cc
    trunk/libstdc++-v3/libsupc++/eh_tm.cc
    trunk/libstdc++-v3/libsupc++/exception
    trunk/libstdc++-v3/libsupc++/exception_ptr.h
    trunk/libstdc++-v3/libsupc++/guard.cc
    trunk/libstdc++-v3/libsupc++/nested_exception.cc
    trunk/libstdc++-v3/libsupc++/nested_exception.h
    trunk/libstdc++-v3/src/c++11/future.cc
    trunk/libstdc++-v3/testsuite/18_support/exception_ptr/40296.cc
    trunk/libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc
    trunk/libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc
    trunk/libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc
    trunk/libstdc++-v3/testsuite/18_support/exception_ptr/64241.cc
    trunk/libstdc++-v3/testsuite/18_support/exception_ptr/current_exception.cc
    trunk/libstdc++-v3/testsuite/18_support/exception_ptr/lifespan.cc
    trunk/libstdc++-v3/testsuite/18_support/exception_ptr/make_exception_ptr.cc
   
trunk/libstdc++-v3/testsuite/18_support/exception_ptr/make_exception_ptr_2.cc
    trunk/libstdc++-v3/testsuite/18_support/exception_ptr/move.cc
    trunk/libstdc++-v3/testsuite/18_support/exception_ptr/requirements.cc
    trunk/libstdc++-v3/testsuite/18_support/exception_ptr/requirements_neg.cc
    trunk/libstdc++-v3/testsuite/18_support/exception_ptr/rethrow_exception.cc
    trunk/libstdc++-v3/testsuite/18_support/nested_exception/51438.cc
    trunk/libstdc++-v3/testsuite/18_support/nested_exception/62154.cc
    trunk/libstdc++-v3/testsuite/18_support/nested_exception/68139.cc
    trunk/libstdc++-v3/testsuite/18_support/nested_exception/cons.cc
    trunk/libstdc++-v3/testsuite/18_support/nested_exception/nested_ptr.cc
   
trunk/libstdc++-v3/testsuite/18_support/nested_exception/rethrow_if_nested.cc
    trunk/libstdc++-v3/testsuite/18_support/nested_exception/rethrow_nested.cc
   
trunk/libstdc++-v3/testsuite/18_support/nested_exception/throw_with_nested.cc
    trunk/libstdc++-v3/testsuite/30_threads/async/42819.cc
    trunk/libstdc++-v3/testsuite/30_threads/async/49668.cc
    trunk/libstdc++-v3/testsuite/30_threads/async/54297.cc
    trunk/libstdc++-v3/testsuite/30_threads/async/any.cc
    trunk/libstdc++-v3/testsuite/30_threads/async/async.cc
    trunk/libstdc++-v3/testsuite/30_threads/async/except.cc
    trunk/libstdc++-v3/testsuite/30_threads/async/forced_unwind.cc
    trunk/libstdc++-v3/testsuite/30_threads/async/launch.cc
    trunk/libstdc++-v3/testsuite/30_threads/async/lwg2021.cc
    trunk/libstdc++-v3/testsuite/30_threads/async/sync.cc
    trunk/libstdc++-v3/testsuite/30_threads/future/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/30_threads/future/cons/constexpr.cc
    trunk/libstdc++-v3/testsuite/30_threads/future/cons/copy_neg.cc
    trunk/libstdc++-v3/testsuite/30_threads/future/cons/default.cc
    trunk/libstdc++-v3/testsuite/30_threads/future/cons/move.cc
    trunk/libstdc++-v3/testsuite/30_threads/future/cons/move_assign.cc
    trunk/libstdc++-v3/testsuite/30_threads/future/members/45133.cc
    trunk/libstdc++-v3/testsuite/30_threads/future/members/get.cc
    trunk/libstdc++-v3/testsuite/30_threads/future/members/get2.cc
    trunk/libstdc++-v3/testsuite/30_threads/future/members/share.cc
    trunk/libstdc++-v3/testsuite/30_threads/future/members/valid.cc
    trunk/libstdc++-v3/testsuite/30_threads/future/members/wait.cc
    trunk/libstdc++-v3/testsuite/30_threads/future/members/wait_for.cc
    trunk/libstdc++-v3/testsuite/30_threads/future/members/wait_until.cc
   
trunk/libstdc++-v3/testsuite/30_threads/future/requirements/explicit_instantiation.cc
    trunk/libstdc++-v3/testsuite/30_threads/headers/future/types_std_c++0x.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/49668.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/60564.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/cons/1.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/cons/2.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/cons/3.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/cons/56492.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc2.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc_min.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/cons/copy_neg.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/cons/move.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/cons/move_assign.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/forced_unwind.cc
   
trunk/libstdc++-v3/testsuite/30_threads/packaged_task/members/at_thread_exit.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/members/get_future.cc
   
trunk/libstdc++-v3/testsuite/30_threads/packaged_task/members/get_future2.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke2.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke3.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke4.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke5.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/members/reset.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/members/reset2.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/members/swap.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/members/valid.cc
   
trunk/libstdc++-v3/testsuite/30_threads/packaged_task/requirements/explicit_instantiation.cc
    trunk/libstdc++-v3/testsuite/30_threads/packaged_task/uses_allocator.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/60966.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/69106.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/cons/1.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/cons/alloc.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/cons/alloc2.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/cons/alloc_min.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/cons/assign_neg.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/cons/copy_neg.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/cons/move.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/cons/move_assign.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/members/at_thread_exit.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/members/get_future.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/members/get_future2.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/members/set_exception.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/members/set_exception2.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/members/set_value.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/members/set_value2.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/members/set_value3.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/members/swap.cc
   
trunk/libstdc++-v3/testsuite/30_threads/promise/requirements/explicit_instantiation.cc
    trunk/libstdc++-v3/testsuite/30_threads/promise/uses_allocator.cc
    trunk/libstdc++-v3/testsuite/30_threads/shared_future/cons/assign.cc
    trunk/libstdc++-v3/testsuite/30_threads/shared_future/cons/constexpr.cc
    trunk/libstdc++-v3/testsuite/30_threads/shared_future/cons/copy.cc
    trunk/libstdc++-v3/testsuite/30_threads/shared_future/cons/default.cc
    trunk/libstdc++-v3/testsuite/30_threads/shared_future/cons/move.cc
    trunk/libstdc++-v3/testsuite/30_threads/shared_future/cons/move_assign.cc
    trunk/libstdc++-v3/testsuite/30_threads/shared_future/members/45133.cc
    trunk/libstdc++-v3/testsuite/30_threads/shared_future/members/get.cc
    trunk/libstdc++-v3/testsuite/30_threads/shared_future/members/get2.cc
    trunk/libstdc++-v3/testsuite/30_threads/shared_future/members/valid.cc
    trunk/libstdc++-v3/testsuite/30_threads/shared_future/members/wait.cc
    trunk/libstdc++-v3/testsuite/30_threads/shared_future/members/wait_for.cc
    trunk/libstdc++-v3/testsuite/30_threads/shared_future/members/wait_until.cc
   
trunk/libstdc++-v3/testsuite/30_threads/shared_future/requirements/explicit_instantiation.cc

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]