runtime: let ARM32 EABI personality function continue unwind when called from traceback

On ARM32 EABI, unlike other platforms, the personality function is
    called during _Unwind_Backtrace (libgcc/unwind-arm-common.inc:581).
    In this case, simply unwind the frame without returning any
    handlers. Otherwise traceback will loop if there is a frame with
    a defer on stack.
    
    Reviewed-on: https://go-review.googlesource.com/c/155759

From-SVN: r267434
This commit is contained in:
Ian Lance Taylor 2018-12-27 16:31:50 +00:00
parent 96051ee57b
commit f1410e7e2e
2 changed files with 4 additions and 1 deletions

View File

@ -1,4 +1,4 @@
785414705628bf9d1279a8042e1886440424aade
5a9ff61d72c95a50cbbfb0e1bf57646197910363
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.

View File

@ -444,6 +444,9 @@ PERSONALITY_FUNCTION (int version,
switch (state & _US_ACTION_MASK)
{
case _US_VIRTUAL_UNWIND_FRAME:
if (state & _UA_FORCE_UNWIND)
/* We are called from _Unwind_Backtrace. No handler to run. */
CONTINUE_UNWINDING;
actions = _UA_SEARCH_PHASE;
break;