X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fsparc64nbsd-tdep.c;h=32da6ac697ae46b16c17606b7ae57c00be0b5a97;hb=b1a921c8c6f9e3d033629f32473c6470c360b43f;hp=e80bad81bf89c3f56b90dc5623238b9b29705eb6;hpb=0b30217134add051e159a192066a1e568ebd837f;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/sparc64nbsd-tdep.c b/gdb/sparc64nbsd-tdep.c index e80bad81bf..32da6ac697 100644 --- a/gdb/sparc64nbsd-tdep.c +++ b/gdb/sparc64nbsd-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for NetBSD/sparc64. - Copyright (C) 2002-2012 Free Software Foundation, Inc. + Copyright (C) 2002-2015 Free Software Foundation, Inc. Based on code contributed by Wasabi Systems, Inc. This file is part of GDB. @@ -30,14 +30,11 @@ #include "solib-svr4.h" #include "trad-frame.h" -#include "gdb_assert.h" -#include "gdb_string.h" - #include "sparc64-tdep.h" #include "nbsd-tdep.h" /* From . */ -const struct sparc_gregset sparc64nbsd_gregset = +const struct sparc_gregmap sparc64nbsd_gregmap = { 0 * 8, /* "tstate" */ 1 * 8, /* %pc */ @@ -56,7 +53,7 @@ sparc64nbsd_supply_gregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs, size_t len) { - sparc64_supply_gregset (&sparc64nbsd_gregset, regcache, regnum, gregs); + sparc64_supply_gregset (&sparc64nbsd_gregmap, regcache, regnum, gregs); } static void @@ -64,7 +61,7 @@ sparc64nbsd_supply_fpregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *fpregs, size_t len) { - sparc64_supply_fpregset (regcache, regnum, fpregs); + sparc64_supply_fpregset (&sparc64_bsd_fpregmap, regcache, regnum, fpregs); } @@ -79,7 +76,7 @@ static const CORE_ADDR sparc64nbsd_sigtramp_start = 0xffffffffffffdee4ULL; static const CORE_ADDR sparc64nbsd_sigtramp_end = 0xffffffffffffe000ULL; static int -sparc64nbsd_pc_in_sigtramp (CORE_ADDR pc, char *name) +sparc64nbsd_pc_in_sigtramp (CORE_ADDR pc, const char *name) { if (pc >= sparc64nbsd_sigtramp_start && pc < sparc64nbsd_sigtramp_end) return 1; @@ -214,12 +211,12 @@ sparc64nbsd_sigtramp_frame_sniffer (const struct frame_unwind *self, void **this_cache) { CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); if (sparc64nbsd_pc_in_sigtramp (pc, name)) { - if (name == NULL || strncmp (name, "__sigtramp_sigcontext", 21)) + if (name == NULL || !startswith (name, "__sigtramp_sigcontext")) return 1; } @@ -237,15 +234,25 @@ static const struct frame_unwind sparc64nbsd_sigcontext_frame_unwind = }; +static const struct regset sparc64nbsd_gregset = + { + NULL, sparc64nbsd_supply_gregset, NULL + }; + +static const struct regset sparc64nbsd_fpregset = + { + NULL, sparc64nbsd_supply_fpregset, NULL + }; + static void sparc64nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - tdep->gregset = regset_alloc (gdbarch, sparc64nbsd_supply_gregset, NULL); + tdep->gregset = &sparc64nbsd_gregset; tdep->sizeof_gregset = 160; - tdep->fpregset = regset_alloc (gdbarch, sparc64nbsd_supply_fpregset, NULL); + tdep->fpregset = &sparc64nbsd_fpregset; tdep->sizeof_fpregset = 272; /* Make sure we can single-step "new" syscalls. */