* amd64nbsd-tdep.c (amd64nbsd_sigcontext_addr): Remove function.
(amd64nbsd_mcontext_addr): New function. (amd64nbsd_init_abi): Initialize TDEP->sigcontext_addr as amd64nbsd_mcontext_addr. Directly initialize TDEP->sc_reg_offset with amd64nbsd_r_reg_offset, instead of building it on the fly.
This commit is contained in:
parent
403e165601
commit
fa34704a30
2 changed files with 18 additions and 23 deletions
|
@ -1,5 +1,11 @@
|
|||
2004-04-10 Mark Kettenis <kettenis@gnu.org>
|
||||
|
||||
* amd64nbsd-tdep.c (amd64nbsd_sigcontext_addr): Remove function.
|
||||
(amd64nbsd_mcontext_addr): New function.
|
||||
(amd64nbsd_init_abi): Initialize TDEP->sigcontext_addr as
|
||||
amd64nbsd_mcontext_addr. Directly initialize TDEP->sc_reg_offset
|
||||
with amd64nbsd_r_reg_offset, instead of building it on the fly.
|
||||
|
||||
* corelow.c (core_xfer_partial): Fix coding standards violation.
|
||||
Add support for TARGET_OBJECT_WCOOKIE.
|
||||
|
||||
|
|
|
@ -47,18 +47,21 @@ amd64nbsd_sigtramp_p (struct frame_info *next_frame)
|
|||
return nbsd_pc_in_sigtramp (pc, name);
|
||||
}
|
||||
|
||||
/* Assuming NEXT_FRAME is for a frame following a BSD sigtramp
|
||||
routine, return the address of the associated sigcontext structure. */
|
||||
/* Assuming NEXT_FRAME is preceded by a frame corresponding to a
|
||||
NetBSD sigtramp routine, return the address of the associated
|
||||
mcontext structure. */
|
||||
|
||||
static CORE_ADDR
|
||||
amd64nbsd_sigcontext_addr (struct frame_info *next_frame)
|
||||
amd64nbsd_mcontext_addr (struct frame_info *next_frame)
|
||||
{
|
||||
CORE_ADDR sp;
|
||||
CORE_ADDR addr;
|
||||
|
||||
/* The stack pointer points at `struct sigcontext' upon entry of a
|
||||
/* The register %r15 points at `struct ucontext' upon entry of a
|
||||
signal trampoline. */
|
||||
sp = frame_unwind_register_unsigned (next_frame, AMD64_RSP_REGNUM);
|
||||
return sp;
|
||||
addr = frame_unwind_register_unsigned (next_frame, AMD64_R15_REGNUM);
|
||||
|
||||
/* The mcontext structure lives as offset 56 in `struct ucontext'. */
|
||||
return addr + 56;
|
||||
}
|
||||
|
||||
/* NetBSD 2.0 or later. */
|
||||
|
@ -99,8 +102,6 @@ static void
|
|||
amd64nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
int *sc_reg_offset;
|
||||
int i;
|
||||
|
||||
/* Initialize general-purpose register set details first. */
|
||||
tdep->gregset_reg_offset = amd64nbsd_r_reg_offset;
|
||||
|
@ -113,21 +114,9 @@ amd64nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
|||
|
||||
/* NetBSD has its own convention for signal trampolines. */
|
||||
tdep->sigtramp_p = amd64nbsd_sigtramp_p;
|
||||
tdep->sigcontext_addr = amd64nbsd_sigcontext_addr;
|
||||
|
||||
/* Initialize the array with register offsets in `struct
|
||||
sigcontext'. This `struct sigcontext' has an sc_mcontext member
|
||||
at offset 32, and in <machine/reg.h> we have an explicit comment
|
||||
saying that `struct reg' is the same as mcontext.__gregs. */
|
||||
tdep->sigcontext_addr = amd64nbsd_mcontext_addr;
|
||||
tdep->sc_reg_offset = amd64nbsd_r_reg_offset;
|
||||
tdep->sc_num_regs = ARRAY_SIZE (amd64nbsd_r_reg_offset);
|
||||
tdep->sc_reg_offset = XCALLOC (tdep->sc_num_regs, int);
|
||||
for (i = 0; i < tdep->sc_num_regs; i++)
|
||||
{
|
||||
if (amd64nbsd_r_reg_offset[i] < 0)
|
||||
tdep->sc_reg_offset[i] = -1;
|
||||
else
|
||||
tdep->sc_reg_offset[i] = 32 + amd64nbsd_r_reg_offset[i];
|
||||
}
|
||||
|
||||
/* NetBSD uses SVR4-style shared libraries. */
|
||||
set_solib_svr4_fetch_link_map_offsets
|
||||
|
|
Loading…
Reference in a new issue