]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR libgcc/56846 (_Unwind_Backtrace on ARM and noexcept)
authorThomas Preud'homme <thomas.preudhomme@arm.com>
Thu, 27 Nov 2014 14:10:10 +0000 (14:10 +0000)
committerThomas Preud'homme <thopre01@gcc.gnu.org>
Thu, 27 Nov 2014 14:10:10 +0000 (14:10 +0000)
2014-11-27  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    Backport from mainline
    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

From-SVN: r218127

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

index eadf70214df83990ee8d19fda3b1c81fa1f58445..d540174ead59edbb5e1f1c9d6b77d2ca6675c04f 100644 (file)
@@ -1,3 +1,13 @@
+2014-11-27  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+
+       Backport from mainline
+       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-11-05  David Edelsohn  <dje.gcc@gmail.com>
 
        Backported from mainline.
index e2ceb11600b9c098ef0efe2795ce68ceda57cd63..07456cf2c99f7c109fb12c13fe9861f8759ad0d3 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;