X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fppcobsd-tdep.c;h=2cc62a0db3ba58dbf1fa1266d873eb39a1cfd54b;hb=21002a635bf3da33367592e3a3ab3cce24fe5299;hp=b7520a52d1803e7f6b90c0ae202334d74110071f;hpb=e17a4113357102b55cfa5b80557d590a46a43300;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/ppcobsd-tdep.c b/gdb/ppcobsd-tdep.c index b7520a52d1..2cc62a0db3 100644 --- a/gdb/ppcobsd-tdep.c +++ b/gdb/ppcobsd-tdep.c @@ -1,7 +1,6 @@ /* Target-dependent code for OpenBSD/powerpc. - Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 2004-2016 Free Software Foundation, Inc. This file is part of GDB. @@ -29,9 +28,6 @@ #include "symtab.h" #include "trad-frame.h" -#include "gdb_assert.h" -#include "gdb_string.h" - #include "ppc-tdep.h" #include "ppcobsd-tdep.h" #include "solib-svr4.h" @@ -57,7 +53,7 @@ ppcobsd_supply_gregset (const struct regset *regset, } /* Collect register REGNUM in the general-purpose register set - REGSET. from register cache REGCACHE into the buffer specified by + REGSET, from register cache REGCACHE into the buffer specified by GREGS and LEN. If REGNUM is -1, do this for all registers in REGSET. */ @@ -72,29 +68,27 @@ ppcobsd_collect_gregset (const struct regset *regset, /* OpenBSD/powerpc register set. */ -struct regset ppcobsd_gregset = +const struct regset ppcobsd_gregset = { &ppcobsd_reg_offsets, ppcobsd_supply_gregset }; -struct regset ppcobsd_fpregset = +const struct regset ppcobsd_fpregset = { &ppcobsd_fpreg_offsets, ppc_supply_fpregset }; -/* 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 * -ppcobsd_regset_from_core_section (struct gdbarch *gdbarch, - const char *sect_name, size_t sect_size) +static void +ppcobsd_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 >= 412) - return &ppcobsd_gregset; - - return NULL; + cb (".reg", 412, &ppcobsd_gregset, NULL, cb_data); } @@ -131,7 +125,7 @@ ppcobsd_sigtramp_frame_sniffer (const struct frame_unwind *self, CORE_ADDR pc = get_frame_pc (this_frame); CORE_ADDR start_pc = (pc & ~(ppcobsd_page_size - 1)); const int *offset; - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); if (name) @@ -176,7 +170,7 @@ ppcobsd_sigtramp_frame_cache (struct frame_info *this_frame, void **this_cache) int i; if (*this_cache) - return *this_cache; + return (struct trad_frame_cache *) *this_cache; cache = trad_frame_cache_zalloc (this_frame); *this_cache = cache; @@ -208,7 +202,7 @@ ppcobsd_sigtramp_frame_cache (struct frame_info *this_frame, void **this_cache) trad_frame_set_reg_addr (cache, tdep->ppc_ctr_regnum, addr); addr += tdep->wordsize; trad_frame_set_reg_addr (cache, gdbarch_pc_regnum (gdbarch), addr); - /* SRR0? */ + /* SRR0? */ addr += tdep->wordsize; /* Construct the frame ID using the function start. */ @@ -239,6 +233,7 @@ ppcobsd_sigtramp_frame_prev_register (struct frame_info *this_frame, static const struct frame_unwind ppcobsd_sigtramp_frame_unwind = { SIGTRAMP_FRAME, + default_frame_unwind_stop_reason, ppcobsd_sigtramp_frame_this_id, ppcobsd_sigtramp_frame_prev_register, NULL, @@ -260,8 +255,8 @@ ppcobsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) set_solib_svr4_fetch_link_map_offsets (gdbarch, svr4_ilp32_fetch_link_map_offsets); - set_gdbarch_regset_from_core_section - (gdbarch, ppcobsd_regset_from_core_section); + set_gdbarch_iterate_over_regset_sections + (gdbarch, ppcobsd_iterate_over_regset_sections); frame_unwind_append_unwinder (gdbarch, &ppcobsd_sigtramp_frame_unwind); }