This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Patch ARM v2] Fix PR target/56846


Hi there,

This is a updated patch to fix pr56846. Bootstrapped on x86_64-unknown-linux-gnu and no regression for
regression test on Linux and a cross regression test on arm-none-eabi.

OK for the trunk?

gcc/libstdc++-v3/ChangeLog:
2014-09-09   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

diff --git a/libstdc++-v3/libsupc++/eh_personality.cc b/libstdc++-v3/libsupc++/eh_personality.cc
index f315a83..836abee 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;




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]