diff options
| author | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-12-16 20:52:47 +0000 |
|---|---|---|
| committer | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-12-16 20:52:47 +0000 |
| commit | e5f3c4cdbd63f731d5d7e5e1e5b5c37f126c14e9 (patch) | |
| tree | f5ffd92152011d9acaa0e8d6b0392195a7fd4651 /libstdc++-v3/src/c++11 | |
| parent | 6d378771e076edff0e8a372713bfa197ed4eeb76 (diff) | |
| download | ppe42-gcc-e5f3c4cdbd63f731d5d7e5e1e5b5c37f126c14e9.tar.gz ppe42-gcc-e5f3c4cdbd63f731d5d7e5e1e5b5c37f126c14e9.zip | |
* src/c++11/thread.cc (execute_native_thread_routine): Do not swallow
__forced_unwind exceptions.
* testsuite/30_threads/thread/native_handle/cancel.cc: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@194539 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/src/c++11')
| -rw-r--r-- | libstdc++-v3/src/c++11/thread.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/libstdc++-v3/src/c++11/thread.cc b/libstdc++-v3/src/c++11/thread.cc index 084be426118..fa86a1bd34e 100644 --- a/libstdc++-v3/src/c++11/thread.cc +++ b/libstdc++-v3/src/c++11/thread.cc @@ -26,6 +26,7 @@ #include <thread> #include <system_error> #include <cerrno> +#include <cxxabi_forced.h> #if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) @@ -80,6 +81,10 @@ namespace std _GLIBCXX_VISIBILITY(default) { __t->_M_run(); } + __catch(const __cxxabiv1::__forced_unwind&) + { + __throw_exception_again; + } __catch(...) { std::terminate(); |

