summaryrefslogtreecommitdiffstats
path: root/libstdc++-v3/src/c++11
diff options
context:
space:
mode:
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2012-12-16 20:52:47 +0000
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2012-12-16 20:52:47 +0000
commite5f3c4cdbd63f731d5d7e5e1e5b5c37f126c14e9 (patch)
treef5ffd92152011d9acaa0e8d6b0392195a7fd4651 /libstdc++-v3/src/c++11
parent6d378771e076edff0e8a372713bfa197ed4eeb76 (diff)
downloadppe42-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.cc5
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();
OpenPOWER on IntegriCloud