mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-24 10:35:12 +08:00
Add a signal frame unwinder for FreeBSD/mipsn32.
The N32 signal frame uses an identical layout to N64, so reuse the N64 handler. The N32 signal trampoline does use one different instruction relative to N64, so a separate tramp_frame is required. gdb/ChangeLog: * mips-fbsd-tdep.c (MIPS_INST_ADDIU_A0_SP_N32): Define. (mipsn32_fbsd_sigframe): Define. (mips_fbsd_init_abi): Install mipsn32_fbsd_sigframe unwinder for FreeBSD/mipsn32.
This commit is contained in:
parent
6d5be5d6b8
commit
a80a647180
@ -1,3 +1,10 @@
|
||||
2017-10-05 John Baldwin <jhb@FreeBSD.org>
|
||||
|
||||
* mips-fbsd-tdep.c (MIPS_INST_ADDIU_A0_SP_N32): Define.
|
||||
(mipsn32_fbsd_sigframe): Define.
|
||||
(mips_fbsd_init_abi): Install mipsn32_fbsd_sigframe unwinder
|
||||
for FreeBSD/mipsn32.
|
||||
|
||||
2017-10-05 John Baldwin <jhb@FreeBSD.org>
|
||||
|
||||
* fbsd-tdep.c (fbsd_print_auxv_entry): Handle AT_EHDRFLAGS and
|
||||
|
@ -426,6 +426,23 @@ mips64_fbsd_sigframe_init (const struct tramp_frame *self,
|
||||
trad_frame_set_id (cache, frame_id_build (sp, func));
|
||||
}
|
||||
|
||||
#define MIPS_INST_ADDIU_A0_SP_N32 (0x27a40000 \
|
||||
+ N64_SIGFRAME_UCONTEXT_OFFSET)
|
||||
|
||||
static const struct tramp_frame mipsn32_fbsd_sigframe =
|
||||
{
|
||||
SIGTRAMP_FRAME,
|
||||
MIPS_INSN32_SIZE,
|
||||
{
|
||||
{ MIPS_INST_ADDIU_A0_SP_N32, -1 }, /* addiu a0, sp, SIGF_UC */
|
||||
{ MIPS_INST_LI_V0_SIGRETURN, -1 }, /* li v0, SYS_sigreturn */
|
||||
{ MIPS_INST_SYSCALL, -1 }, /* syscall */
|
||||
{ MIPS_INST_BREAK, -1 }, /* break */
|
||||
{ TRAMP_SENTINEL_INSN, -1 }
|
||||
},
|
||||
mips64_fbsd_sigframe_init
|
||||
};
|
||||
|
||||
#define MIPS_INST_DADDIU_A0_SP_N64 (0x67a40000 \
|
||||
+ N64_SIGFRAME_UCONTEXT_OFFSET)
|
||||
|
||||
@ -519,6 +536,7 @@ mips_fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
||||
tramp_frame_prepend_unwinder (gdbarch, &mips_fbsd_sigframe);
|
||||
break;
|
||||
case MIPS_ABI_N32:
|
||||
tramp_frame_prepend_unwinder (gdbarch, &mipsn32_fbsd_sigframe);
|
||||
break;
|
||||
case MIPS_ABI_N64:
|
||||
tramp_frame_prepend_unwinder (gdbarch, &mips64_fbsd_sigframe);
|
||||
|
Loading…
Reference in New Issue
Block a user