aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2019-04-25 15:39:39 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2019-04-25 15:39:39 +0000
commitb34bfeb1979da5a970ef9ac5213178d67f269dbb (patch)
treeda1e9d7c746d8d6267957281bb1b5b53ac68dad0 /libgcc
parent9bafe5a81e42406b86a65ef14b011ed9acc96c5d (diff)
parentb16f214775619dd850e724a0630792da38ba3e40 (diff)
downloadgcc-b34bfeb1979da5a970ef9ac5213178d67f269dbb.zip
gcc-b34bfeb1979da5a970ef9ac5213178d67f269dbb.tar.gz
gcc-b34bfeb1979da5a970ef9ac5213178d67f269dbb.tar.bz2
Merge from trunk revision 270573.
From-SVN: r270577
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/ChangeLog16
-rw-r--r--libgcc/config/arm/pr-support.c1
-rw-r--r--libgcc/config/arm/unwind-arm.c1
-rw-r--r--libgcc/config/nds32/linux-unwind.h9
-rw-r--r--libgcc/unwind-c.c1
5 files changed, 22 insertions, 6 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 950eeab..30e4da4 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,19 @@
+2019-04-23 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
+ Bernd Edlinger <bernd.edlinger@hotmail.de>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR target/89093
+ * config/arm/pr-support.c: Add #pragma GCC target("general-regs-only").
+ * config/arm/unwind-arm.c: Likewise.
+ * unwind-c.c (PERSONALITY_FUNCTION): Add general-regs-only target
+ attribute for ARM.
+
+2019-04-15 Monk Chiang <sh.chiang04@gmail.com>
+
+ * config/nds32/linux-unwind.h (SIGRETURN): Remove.
+ (RT_SIGRETURN): Update.
+ (nds32_fallback_frame_state): Update.
+
2019-02-21 Martin Sebor <msebor@redhat.com>
* libgcc2.h (__clear_cache): Correct signature.
diff --git a/libgcc/config/arm/pr-support.c b/libgcc/config/arm/pr-support.c
index ed55739..bcf9b28 100644
--- a/libgcc/config/arm/pr-support.c
+++ b/libgcc/config/arm/pr-support.c
@@ -21,6 +21,7 @@
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
+#pragma GCC target ("general-regs-only")
#include "unwind.h"
/* We add a prototype for abort here to avoid creating a dependency on
diff --git a/libgcc/config/arm/unwind-arm.c b/libgcc/config/arm/unwind-arm.c
index 00e183d3..9ba73e7 100644
--- a/libgcc/config/arm/unwind-arm.c
+++ b/libgcc/config/arm/unwind-arm.c
@@ -21,6 +21,7 @@
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
+#pragma GCC target ("general-regs-only")
#include "unwind.h"
/* Misc constants. */
diff --git a/libgcc/config/nds32/linux-unwind.h b/libgcc/config/nds32/linux-unwind.h
index 0c4df4dd..adb6f9f 100644
--- a/libgcc/config/nds32/linux-unwind.h
+++ b/libgcc/config/nds32/linux-unwind.h
@@ -42,8 +42,7 @@ struct _rt_sigframe {
struct ucontext_t uc;
};
-#define SIGRETURN 0xeb0e0a64
-#define RT_SIGRETURN 0xab150a64
+#define RT_SIGRETURN 0x8b00f044
#define MD_FALLBACK_FRAME_STATE_FOR nds32_fallback_frame_state
@@ -74,16 +73,14 @@ nds32_fallback_frame_state (struct _Unwind_Context *context,
/* Check if we are going through a signal handler.
See arch/nds32/kernel/signal.c implementation.
- SWI_SYS_SIGRETURN -> (0xeb0e0a64)
- SWI_SYS_RT_SIGRETURN -> (0xab150a64)
FIXME: Currently we only handle little endian (EL) case. */
- if (pc[0] == SIGRETURN || pc[0] == RT_SIGRETURN)
+ if (pc[0] == RT_SIGRETURN)
{
/* Using '_sigfame' memory address to locate kernal's sigcontext.
The sigcontext structures in arch/nds32/include/asm/sigcontext.h. */
struct _rt_sigframe *rt_;
rt_ = context->cfa;
- sc_ = &rt_->sig.uc.uc_mcontext;
+ sc_ = &rt_->uc.uc_mcontext;
}
else
return _URC_END_OF_STACK;
diff --git a/libgcc/unwind-c.c b/libgcc/unwind-c.c
index 3e55cda..859735a 100644
--- a/libgcc/unwind-c.c
+++ b/libgcc/unwind-c.c
@@ -106,6 +106,7 @@ PERSONALITY_FUNCTION (_Unwind_State, struct _Unwind_Exception *,
struct _Unwind_Context *);
_Unwind_Reason_Code
+__attribute__((target ("general-regs-only")))
PERSONALITY_FUNCTION (_Unwind_State state,
struct _Unwind_Exception * ue_header,
struct _Unwind_Context * context)