[NDS32] Refine force unwind. Linux kernel only uses RT_SIGRETURN.

libgcc/
	* config/nds32/linux-unwind.h (SIGRETURN): Remove.
	(RT_SIGRETURN): Update.
	(nds32_fallback_frame_state): Update.

From-SVN: r270363
This commit is contained in:
Monk Chiang 2019-04-15 08:19:23 +00:00 committed by Chung-Ju Wu
parent 3da4a68a3e
commit 887e182f05
2 changed files with 9 additions and 6 deletions

View File

@ -1,3 +1,9 @@
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> 2019-02-21 Martin Sebor <msebor@redhat.com>
* libgcc2.h (__clear_cache): Correct signature. * libgcc2.h (__clear_cache): Correct signature.

View File

@ -42,8 +42,7 @@ struct _rt_sigframe {
struct ucontext_t uc; struct ucontext_t uc;
}; };
#define SIGRETURN 0xeb0e0a64 #define RT_SIGRETURN 0x8b00f044
#define RT_SIGRETURN 0xab150a64
#define MD_FALLBACK_FRAME_STATE_FOR nds32_fallback_frame_state #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. /* Check if we are going through a signal handler.
See arch/nds32/kernel/signal.c implementation. 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. */ 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. /* Using '_sigfame' memory address to locate kernal's sigcontext.
The sigcontext structures in arch/nds32/include/asm/sigcontext.h. */ The sigcontext structures in arch/nds32/include/asm/sigcontext.h. */
struct _rt_sigframe *rt_; struct _rt_sigframe *rt_;
rt_ = context->cfa; rt_ = context->cfa;
sc_ = &rt_->sig.uc.uc_mcontext; sc_ = &rt_->uc.uc_mcontext;
} }
else else
return _URC_END_OF_STACK; return _URC_END_OF_STACK;