summaryrefslogtreecommitdiff
path: root/gcc48-pr62258.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gcc48-pr62258.patch')
-rw-r--r--gcc48-pr62258.patch87
1 files changed, 87 insertions, 0 deletions
diff --git a/gcc48-pr62258.patch b/gcc48-pr62258.patch
new file mode 100644
index 0000000..4589214
--- /dev/null
+++ b/gcc48-pr62258.patch
@@ -0,0 +1,87 @@
+2015-09-03 Jonathan Wakely <jwakely@redhat.com>
+
+ Backport from mainline
+ 2015-04-27 Dmitry Prokoptsev <dprokoptsev@gmail.com>
+ Michael Hanselmann <public@hansmi.ch>
+
+ PR libstdc++/62258
+ * libsupc++/eh_ptr.cc (rethrow_exception): Increment count of
+ uncaught exceptions.
+ * testsuite/18_support/exception_ptr/62258.cc: New.
+
+--- libstdc++-v3/libsupc++/eh_ptr.cc (revision 227455)
++++ libstdc++-v3/libsupc++/eh_ptr.cc (revision 227456)
+@@ -245,6 +245,9 @@ std::rethrow_exception(std::exception_pt
+ __GXX_INIT_DEPENDENT_EXCEPTION_CLASS(dep->unwindHeader.exception_class);
+ dep->unwindHeader.exception_cleanup = __gxx_dependent_exception_cleanup;
+
++ __cxa_eh_globals *globals = __cxa_get_globals ();
++ globals->uncaughtExceptions += 1;
++
+ #ifdef _GLIBCXX_SJLJ_EXCEPTIONS
+ _Unwind_SjLj_RaiseException (&dep->unwindHeader);
+ #else
+--- libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc (revision 0)
++++ libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc (revision 227456)
+@@ -0,0 +1,61 @@
++// { dg-options "-std=gnu++11" }
++// { dg-require-atomic-builtins "" }
++
++// Copyright (C) 2015 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 3, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING3. If not see
++// <http://www.gnu.org/licenses/>.
++
++// PR libstdc++/62258
++
++#include <exception>
++#include <testsuite_hooks.h>
++
++struct check_on_destruct
++{
++ ~check_on_destruct();
++};
++
++check_on_destruct::~check_on_destruct()
++{
++ VERIFY(std::uncaught_exception());
++}
++
++int main ()
++{
++ VERIFY(!std::uncaught_exception());
++
++ try
++ {
++ check_on_destruct check;
++
++ try
++ {
++ throw 1;
++ }
++ catch (...)
++ {
++ VERIFY(!std::uncaught_exception());
++
++ std::rethrow_exception(std::current_exception());
++ }
++ }
++ catch (...)
++ {
++ VERIFY(!std::uncaught_exception());
++ }
++
++ VERIFY(!std::uncaught_exception());
++}