aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorMonk Chiang <sh.chiang04@gmail.com>2018-09-21 08:39:35 +0000
committerChung-Ju Wu <jasonwucj@gcc.gnu.org>2018-09-21 08:39:35 +0000
commit36ff254bf63f21dd8fc7a353c8b8f3aa08018654 (patch)
tree7b1e58415e221e957a2c7a9596a96ca3d32da087 /libgcc
parent229a033dac95e5a40960b77fb8c5a5cd74239c48 (diff)
downloadgcc-36ff254bf63f21dd8fc7a353c8b8f3aa08018654.zip
gcc-36ff254bf63f21dd8fc7a353c8b8f3aa08018654.tar.gz
gcc-36ff254bf63f21dd8fc7a353c8b8f3aa08018654.tar.bz2
[NDS32] Sync glibc and kernel structure, all use _rt_sigframe.
libgcc/ * config/nds32/linux-unwind.h (struct _rt_sigframe): Use struct ucontext_t type instead. (nds32_fallback_frame_state): Remove struct _sigframe statement. From-SVN: r264461
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/ChangeLog6
-rw-r--r--libgcc/config/nds32/linux-unwind.h18
2 files changed, 10 insertions, 14 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 7fdee61..8d3f440 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,9 @@
+2018-09-21 Monk Chiang <sh.chiang04@gmail.com>
+
+ * config/nds32/linux-unwind.h (struct _rt_sigframe): Use struct
+ ucontext_t type instead.
+ (nds32_fallback_frame_state): Remove struct _sigframe statement.
+
2018-09-21 Kito Cheng <kito.cheng@gmail.com>
* config/nds32/t-nds32-glibc: New file.
diff --git a/libgcc/config/nds32/linux-unwind.h b/libgcc/config/nds32/linux-unwind.h
index 921edf9..c8f5983 100644
--- a/libgcc/config/nds32/linux-unwind.h
+++ b/libgcc/config/nds32/linux-unwind.h
@@ -32,19 +32,16 @@
#include <signal.h>
#include <asm/unistd.h>
+#include <sys/ucontext.h>
/* Exactly the same layout as the kernel structures, unique names. */
/* arch/nds32/kernel/signal.c */
-struct _sigframe {
- struct ucontext uc;
- unsigned long retcode;
-};
-
struct _rt_sigframe {
siginfo_t info;
- struct _sigframe sig;
+ struct ucontext_t uc;
};
+
#define SIGRETURN 0xeb0e0a64
#define RT_SIGRETURN 0xab150a64
@@ -80,17 +77,10 @@ nds32_fallback_frame_state (struct _Unwind_Context *context,
SWI_SYS_SIGRETURN -> (0xeb0e0a64)
SWI_SYS_RT_SIGRETURN -> (0xab150a64)
FIXME: Currently we only handle little endian (EL) case. */
- if (pc[0] == SIGRETURN)
+ if (pc[0] == SIGRETURN || pc[0] == RT_SIGRETURN)
{
/* Using '_sigfame' memory address to locate kernal's sigcontext.
The sigcontext structures in arch/nds32/include/asm/sigcontext.h. */
- struct _sigframe *rt_;
- rt_ = context->cfa;
- sc_ = &rt_->uc.uc_mcontext;
- }
- else if (pc[0] == RT_SIGRETURN)
- {
- /* Using '_sigfame' memory address to locate kernal's sigcontext. */
struct _rt_sigframe *rt_;
rt_ = context->cfa;
sc_ = &rt_->sig.uc.uc_mcontext;