From: Thomas Preud'homme Date: Thu, 27 Nov 2014 14:10:10 +0000 (+0000) Subject: backport: re PR libgcc/56846 (_Unwind_Backtrace on ARM and noexcept) X-Git-Tag: releases/gcc-4.8.4~99 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9208692368419325f6390064cb24a1c6c8854ff4;p=thirdparty%2Fgcc.git backport: re PR libgcc/56846 (_Unwind_Backtrace on ARM and noexcept) 2014-11-27 Thomas Preud'homme Backport from mainline 2014-09-10 Tony Wang 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 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index eadf70214df8..d540174ead59 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,13 @@ +2014-11-27 Thomas Preud'homme + + Backport from mainline + 2014-09-10 Tony Wang + + 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 Backported from mainline. diff --git a/libstdc++-v3/libsupc++/eh_personality.cc b/libstdc++-v3/libsupc++/eh_personality.cc index e2ceb11600b9..07456cf2c99f 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;