diff options
Diffstat (limited to 'libgcc')
-rw-r--r-- | libgcc/ChangeLog | 6 | ||||
-rw-r--r-- | libgcc/config/nds32/linux-unwind.h | 18 |
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; |