diff options
author | Tony Wang <tony.wang@arm.com> | 2014-09-10 04:45:32 +0000 |
---|---|---|
committer | Thomas Preud'homme <thopre01@gcc.gnu.org> | 2014-09-10 04:45:32 +0000 |
commit | 0876bdf57b6d7a6920723e41952ea1ab7f2503dc (patch) | |
tree | 9499351ac6029003e5cb9116215ce9801b5f39b9 /libstdc++-v3 | |
parent | 27be0c3223f143869834f6fc3ca55db940c3d1f4 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | libstdc++-v3/libsupc++/eh_personality.cc | 6 |
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; |