X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fsparc64fbsd-tdep.c;h=27ca52e66a21485f9bb23a4b8438520fefe9e3f5;hb=285963233bc7509edb07c035426ee0096650b0af;hp=f58e73b525515d9354e4e180d030760954f199c2;hpb=2c02bd729076b940958bccf68f1cc0b1ecf8403b;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/sparc64fbsd-tdep.c b/gdb/sparc64fbsd-tdep.c index f58e73b525..27ca52e66a 100644 --- a/gdb/sparc64fbsd-tdep.c +++ b/gdb/sparc64fbsd-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for FreeBSD/sparc64. - Copyright (C) 2003-2005, 2007-2012 Free Software Foundation, Inc. + Copyright (C) 2003-2016 Free Software Foundation, Inc. This file is part of GDB. @@ -27,14 +27,12 @@ #include "target.h" #include "trad-frame.h" -#include "gdb_assert.h" -#include "gdb_string.h" - #include "sparc64-tdep.h" +#include "fbsd-tdep.h" #include "solib-svr4.h" /* From . */ -const struct sparc_gregset sparc64fbsd_gregset = +const struct sparc_gregmap sparc64fbsd_gregmap = { 26 * 8, /* "tstate" */ 25 * 8, /* %pc */ @@ -53,7 +51,7 @@ sparc64fbsd_supply_gregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs, size_t len) { - sparc64_supply_gregset (&sparc64fbsd_gregset, regcache, regnum, gregs); + sparc64_supply_gregset (&sparc64fbsd_gregmap, regcache, regnum, gregs); } static void @@ -61,7 +59,7 @@ sparc64fbsd_collect_gregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *gregs, size_t len) { - sparc64_collect_gregset (&sparc64fbsd_gregset, regcache, regnum, gregs); + sparc64_collect_gregset (&sparc64fbsd_gregmap, regcache, regnum, gregs); } static void @@ -69,7 +67,7 @@ sparc64fbsd_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); } static void @@ -77,7 +75,7 @@ sparc64fbsd_collect_fpregset (const struct regset *regset, const struct regcache *regcache, int regnum, void *fpregs, size_t len) { - sparc64_collect_fpregset (regcache, regnum, fpregs); + sparc64_collect_fpregset (&sparc64_bsd_fpregmap, regcache, regnum, fpregs); } @@ -99,7 +97,7 @@ sparc64fbsd_sigtramp_frame_cache (struct frame_info *this_frame, int regnum; if (*this_cache) - return *this_cache; + return (struct sparc_frame_cache *) *this_cache; cache = sparc_frame_cache (this_frame, this_cache); gdb_assert (cache == *this_cache); @@ -209,17 +207,28 @@ static const struct frame_unwind sparc64fbsd_sigtramp_frame_unwind = }; +static const struct regset sparc64fbsd_gregset = + { + NULL, sparc64fbsd_supply_gregset, sparc64fbsd_collect_gregset + }; + +static const struct regset sparc64fbsd_fpregset = + { + NULL, sparc64fbsd_supply_fpregset, sparc64fbsd_collect_fpregset + }; + static void sparc64fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - tdep->gregset = regset_alloc (gdbarch, sparc64fbsd_supply_gregset, - sparc64fbsd_collect_gregset); + /* Generic FreeBSD support. */ + fbsd_init_abi (info, gdbarch); + + tdep->gregset = &sparc64fbsd_gregset; tdep->sizeof_gregset = 256; - tdep->fpregset = regset_alloc (gdbarch, sparc64fbsd_supply_fpregset, - sparc64fbsd_collect_fpregset); + tdep->fpregset = &sparc64fbsd_fpregset; tdep->sizeof_fpregset = 272; frame_unwind_append_unwinder (gdbarch, &sparc64fbsd_sigtramp_frame_unwind);