From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 72151 invoked by alias); 19 Sep 2017 20:48:35 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 71959 invoked by uid 89); 19 Sep 2017 20:48:32 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.3 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_HELO_PASS,SPF_SOFTFAIL autolearn=ham version=3.3.2 spammy= X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail.baldwin.cx Received: from bigwig.baldwin.cx (HELO mail.baldwin.cx) (96.47.65.170) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 19 Sep 2017 20:48:30 +0000 Received: from ralph.baldwin.cx.com (c-73-231-226-104.hsd1.ca.comcast.net [73.231.226.104]) by mail.baldwin.cx (Postfix) with ESMTPSA id 9C5B310A82D; Tue, 19 Sep 2017 16:48:23 -0400 (EDT) From: John Baldwin To: gdb-patches@sourceware.org, binutils@sourceware.org Subject: [PATCH 2/2] Add a signal frame unwinder for FreeBSD/mipsn32. Date: Tue, 19 Sep 2017 20:48:00 -0000 Message-Id: <20170919204814.93328-3-jhb@FreeBSD.org> In-Reply-To: <20170919204814.93328-1-jhb@FreeBSD.org> References: <20170919204814.93328-1-jhb@FreeBSD.org> X-IsSubscribed: yes X-SW-Source: 2017-09/txt/msg00474.txt.bz2 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. --- gdb/ChangeLog | 7 +++++++ gdb/mips-fbsd-tdep.c | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 4d544f116a..261df9d477 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,12 @@ 2017-09-19 John Baldwin + * 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-09-19 John Baldwin + * NEWS (Changes since GDB 8.0): Add starti. * infcmd.c (enum run_break): New. (run_command_1): Queue pending event for RUN_STOP_AT_FIRST_INSN diff --git a/gdb/mips-fbsd-tdep.c b/gdb/mips-fbsd-tdep.c index 05545e37d8..b1578d0cbb 100644 --- a/gdb/mips-fbsd-tdep.c +++ b/gdb/mips-fbsd-tdep.c @@ -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); -- 2.13.3