X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fmips64obsd-tdep.c;h=df8ec0f8dd8cd94226d77ad42bb25f0bc68f8449;hb=e26b7e41652e288dfdb4c48121bba470c4774150;hp=2ecb487cb4c6211c90d4d0afd0c07e3ef51f899e;hpb=89fa5cc8794dff9ad8c36409c56dc51648adf771;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/mips64obsd-tdep.c b/gdb/mips64obsd-tdep.c index 2ecb487cb4..df8ec0f8dd 100644 --- a/gdb/mips64obsd-tdep.c +++ b/gdb/mips64obsd-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for OpenBSD/mips64. - Copyright (C) 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 2004-2016 Free Software Foundation, Inc. This file is part of GDB. @@ -25,9 +25,7 @@ #include "trad-frame.h" #include "tramp-frame.h" -#include "gdb_assert.h" -#include "gdb_string.h" - +#include "obsd-tdep.h" #include "mips-tdep.h" #include "solib-svr4.h" @@ -48,7 +46,7 @@ mips64obsd_supply_gregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs, size_t len) { - const char *regs = gregs; + const char *regs = (const char *) gregs; int i; for (i = 0; i < MIPS64OBSD_NUM_REGS; i++) @@ -60,23 +58,21 @@ mips64obsd_supply_gregset (const struct regset *regset, /* OpenBSD/mips64 register set. */ -static struct regset mips64obsd_gregset = +static const struct regset mips64obsd_gregset = { NULL, mips64obsd_supply_gregset }; -/* Return the appropriate register set for the core section identified - by SECT_NAME and SECT_SIZE. */ +/* Iterate over core file register note sections. */ -static const struct regset * -mips64obsd_regset_from_core_section (struct gdbarch *gdbarch, - const char *sect_name, size_t sect_size) +static void +mips64obsd_iterate_over_regset_sections (struct gdbarch *gdbarch, + iterate_over_regset_sections_cb *cb, + void *cb_data, + const struct regcache *regcache) { - if (strcmp (sect_name, ".reg") == 0 && sect_size >= MIPS64OBSD_NUM_REGS * 8) - return &mips64obsd_gregset; - - return NULL; + cb (".reg", MIPS64OBSD_NUM_REGS * 8, &mips64obsd_gregset, NULL, cb_data); } @@ -147,14 +143,16 @@ mips64obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) /* OpenBSD/mips64 only supports the n64 ABI, but the braindamaged way GDB works, forces us to pretend we can handle them all. */ - set_gdbarch_regset_from_core_section - (gdbarch, mips64obsd_regset_from_core_section); + set_gdbarch_iterate_over_regset_sections + (gdbarch, mips64obsd_iterate_over_regset_sections); tramp_frame_prepend_unwinder (gdbarch, &mips64obsd_sigframe); set_gdbarch_long_double_bit (gdbarch, 128); set_gdbarch_long_double_format (gdbarch, floatformats_mips64_quad); + obsd_init_abi(info, gdbarch); + /* OpenBSD/mips64 has SVR4-style shared libraries. */ set_solib_svr4_fetch_link_map_offsets (gdbarch, svr4_lp64_fetch_link_map_offsets);