From be68937be28ad63bd6f7a75d0fa5c851ba4afc2b Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 11 Dec 2018 20:50:59 +0000 Subject: [PATCH] runtime: use _URC_FAILURE on ARM32 ARM32 EABI unwinder does not define _URC_NORMAL_STOP. Instead, it has _URC_FAILURE. Use _URC_FAILURE there. Should fix ARM32 build. Reviewed-on: https://go-review.googlesource.com/c/153417 From-SVN: r267033 --- gcc/go/gofrontend/MERGE | 2 +- libgo/runtime/go-unwind.c | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 062f9c79817..ccdfb1c61ff 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -f0266d382f8965b7bcaa380aa963498c1884505e +4db15776701a7cfc1abcef08f7a98c63343d17e6 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/libgo/runtime/go-unwind.c b/libgo/runtime/go-unwind.c index a1a9558597b..c44755f971c 100644 --- a/libgo/runtime/go-unwind.c +++ b/libgo/runtime/go-unwind.c @@ -392,6 +392,12 @@ parse_lsda_header (struct _Unwind_Context *context, const unsigned char *p, #define CONTINUE_UNWINDING return _URC_CONTINUE_UNWIND #endif +#ifdef __ARM_EABI_UNWINDER__ +#define STOP_UNWINDING _URC_FAILURE +#else +#define STOP_UNWINDING _URC_NORMAL_STOP +#endif + #ifdef __USING_SJLJ_EXCEPTIONS__ #define PERSONALITY_FUNCTION __gccgo_personality_sj0 #define __builtin_eh_return_data_regno(x) x @@ -751,7 +757,7 @@ scanstackwithmap_callback (struct _Unwind_Context *context, void *arg) // TODO: print gp, pc, sp runtime_throw ("no stack map"); } - return _URC_NORMAL_STOP; + return STOP_UNWINDING; } case FOUND: break; @@ -799,7 +805,7 @@ probestackmaps_callback (struct _Unwind_Context *context, // Found a stack map. No need to keep unwinding. runtime_usestackmaps = true; - return _URC_NORMAL_STOP; + return STOP_UNWINDING; } // Try to find a stack map, store the result in global variable runtime_usestackmaps. -- 2.30.2