[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
This commit is contained in:
Monk Chiang 2018-09-21 08:39:35 +00:00 committed by Chung-Ju Wu
parent 229a033dac
commit 36ff254bf6
2 changed files with 10 additions and 14 deletions

View File

@ -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.

View File

@ -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;