From 36ff254bf63f21dd8fc7a353c8b8f3aa08018654 Mon Sep 17 00:00:00 2001 From: Monk Chiang Date: Fri, 21 Sep 2018 08:39:35 +0000 Subject: [PATCH] [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 --- libgcc/ChangeLog | 6 ++++++ libgcc/config/nds32/linux-unwind.h | 18 ++++-------------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 7fdee61a132..8d3f440a994 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,9 @@ +2018-09-21 Monk Chiang + + * 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 * config/nds32/t-nds32-glibc: New file. diff --git a/libgcc/config/nds32/linux-unwind.h b/libgcc/config/nds32/linux-unwind.h index 921edf906ea..c8f5983c916 100644 --- a/libgcc/config/nds32/linux-unwind.h +++ b/libgcc/config/nds32/linux-unwind.h @@ -32,19 +32,16 @@ #include #include +#include /* 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;