re PR libgcc/56846 (_Unwind_Backtrace on ARM and noexcept)
authorTony Wang <tony.wang@arm.com>
Wed, 10 Sep 2014 04:45:32 +0000 (04:45 +0000)
committerThomas Preud'homme <thopre01@gcc.gnu.org>
Wed, 10 Sep 2014 04:45:32 +0000 (04:45 +0000)
2014-09-10  Tony Wang  <tony.wang@arm.com>

    libstdc++-v3/
    PR target/56846
    * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION):
    Return with CONTINUE_UNWINDING when the state pattern
    contains: _US_VIRTUAL_UNWIND_FRAME | _US_FORCE_UNWIND

From-SVN: r215101

libstdc++-v3/ChangeLog
libstdc++-v3/libsupc++/eh_personality.cc

index a5acf92b2dc04de53d79299856f86bcbe011c3e7..e00adb5c86df2be0ccc2ac84a410cdfb69e53068 100644 (file)
@@ -1,3 +1,10 @@
+2014-09-10  Tony Wang  <tony.wang@arm.com>
+
+       PR target/56846
+       * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION):
+       Return with CONTINUE_UNWINDING when the state pattern
+       contains: _US_VIRTUAL_UNWIND_FRAME | _US_FORCE_UNWIND
+
 2014-09-09  Jonathan Wakely  <jwakely@redhat.com>
 
        * include/bits/deque.tcc (deque::operator=(const deque&)): Handle
index f315a8341b8fe19d8c911fec06d9915a655c905f..cb4467aa0327d7db32891c5927cf11e71fb64dcf 100644 (file)
@@ -378,6 +378,12 @@ PERSONALITY_FUNCTION (int version,
   switch (state & _US_ACTION_MASK)
     {
     case _US_VIRTUAL_UNWIND_FRAME:
+      // If the unwind state pattern is
+      // _US_VIRTUAL_UNWIND_FRAME | _US_FORCE_UNWIND
+      // then we don't need to search for any handler as it is not a real
+      // exception. Just unwind the stack.
+      if (state & _US_FORCE_UNWIND)
+       CONTINUE_UNWINDING;
       actions = _UA_SEARCH_PHASE;
       break;