summaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorTony Wang <tony.wang@arm.com>2014-09-10 04:45:32 +0000
committerThomas Preud'homme <thopre01@gcc.gnu.org>2014-09-10 04:45:32 +0000
commit0876bdf57b6d7a6920723e41952ea1ab7f2503dc (patch)
tree9499351ac6029003e5cb9116215ce9801b5f39b9 /libstdc++-v3
parent27be0c3223f143869834f6fc3ca55db940c3d1f4 (diff)
downloadgcc-0876bdf57b6d7a6920723e41952ea1ab7f2503dc.tar.gz
re PR libgcc/56846 (_Unwind_Backtrace on ARM and noexcept)
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
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog7
-rw-r--r--libstdc++-v3/libsupc++/eh_personality.cc6
2 files changed, 13 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index a5acf92b2dc..e00adb5c86d 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -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
diff --git a/libstdc++-v3/libsupc++/eh_personality.cc b/libstdc++-v3/libsupc++/eh_personality.cc
index f315a8341b8..cb4467aa032 100644
--- a/libstdc++-v3/libsupc++/eh_personality.cc
+++ b/libstdc++-v3/libsupc++/eh_personality.cc
@@ -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;