From 972206e0c20a36d6b5a85e3842b52879330f5783 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 24 Apr 2019 12:45:45 +0000 Subject: [PATCH] re PR target/89093 (C++ exception handling clobbers d8 VFP register) PR target/89093 runtime: mark unwind functions general-regs-only on ARM For https://gcc.gnu.org/PR89093. Change-Id: Ic426b43d633c77104bda01d4e7835bc9ab4695ef Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/173657 Reviewed-by: Ian Lance Taylor From-SVN: r270542 --- gcc/go/gofrontend/MERGE | 2 +- libgo/runtime/go-unwind.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index f5e8bd7b636..2e1c39947bb 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -1d2b98a4af0188f3f1d4a3eaae928e1db8383a63 +56fe6a00892252edb4b28f8660ce29a985c48702 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 9fd9596926a..ad3142cb05d 100644 --- a/libgo/runtime/go-unwind.c +++ b/libgo/runtime/go-unwind.c @@ -411,7 +411,7 @@ parse_lsda_header (struct _Unwind_Context *context, const unsigned char *p, _Unwind_Reason_Code PERSONALITY_FUNCTION (_Unwind_State, struct _Unwind_Exception *, struct _Unwind_Context *) - __attribute__ ((no_split_stack, flatten)); + __attribute__ ((no_split_stack, flatten, target ("general-regs-only"))); _Unwind_Reason_Code PERSONALITY_FUNCTION (_Unwind_State state, @@ -604,6 +604,9 @@ __gccgo_personality_dummy (int, _Unwind_Action, _Unwind_Exception_Class, __attribute__ ((no_split_stack)); _Unwind_Reason_Code +#ifdef __ARM_EABI_UNWINDER__ +__attribute__ ((target ("general-regs-only"))) +#endif __gccgo_personality_dummy (int version __attribute__ ((unused)), _Unwind_Action actions __attribute__ ((unused)), _Unwind_Exception_Class exception_class __attribute__ ((unused)), -- 2.30.2