X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fm88k-tdep.c;h=1a3c2cdb74d20fc7d33f4dc49f0f02ef06c048fa;hb=93daf339a4d9496ecde15d3b1e852fbdb38c07d0;hp=7c8506b64c6ff07051090b9f9ce2f661e9847e6c;hpb=6d3d12ebef6fa7dd6bc8c34fbc5e440ac8d0a8c6;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/m88k-tdep.c b/gdb/m88k-tdep.c index 7c8506b64c..1a3c2cdb74 100644 --- a/gdb/m88k-tdep.c +++ b/gdb/m88k-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for the Motorola 88000 series. - Copyright (C) 2004-2014 Free Software Foundation, Inc. + Copyright (C) 2004-2016 Free Software Foundation, Inc. This file is part of GDB. @@ -533,11 +533,9 @@ m88k_analyze_prologue (struct gdbarch *gdbarch, /* Provide a dummy cache if necessary. */ if (cache == NULL) { - size_t sizeof_saved_regs = - (M88K_R31_REGNUM + 1) * sizeof (struct trad_frame_saved_reg); - - cache = alloca (sizeof (struct m88k_frame_cache)); - cache->saved_regs = alloca (sizeof_saved_regs); + cache = XALLOCA (struct m88k_frame_cache); + cache->saved_regs = + XALLOCAVEC (struct trad_frame_saved_reg, M88K_R31_REGNUM + 1); /* We only initialize the members we care about. */ cache->saved_regs[M88K_R1_REGNUM].addr = -1; @@ -654,7 +652,7 @@ m88k_frame_cache (struct frame_info *this_frame, void **this_cache) CORE_ADDR frame_sp; if (*this_cache) - return *this_cache; + return (struct m88k_frame_cache *) *this_cache; cache = FRAME_OBSTACK_ZALLOC (struct m88k_frame_cache); cache->saved_regs = trad_frame_alloc_saved_regs (this_frame); @@ -784,7 +782,7 @@ m88k_supply_gregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs, size_t len) { - const gdb_byte *regs = gregs; + const gdb_byte *regs = (const gdb_byte *) gregs; int i; for (i = 0; i < M88K_NUM_REGS; i++) @@ -802,17 +800,15 @@ static const struct regset m88k_gregset = m88k_supply_gregset }; -/* Return the appropriate register set for the core section identified - by SECT_NAME and SECT_SIZE. */ +/* Iterate over supported core file register note sections. */ -static const struct regset * -m88k_regset_from_core_section (struct gdbarch *gdbarch, - const char *sect_name, size_t sect_size) +static void +m88k_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 >= M88K_NUM_REGS * 4) - return &m88k_gregset; - - return NULL; + cb (".reg", M88K_NUM_REGS * 4, &m88k_gregset, NULL, cb_data); } @@ -842,8 +838,8 @@ m88k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_pc_regnum (gdbarch, M88K_SXIP_REGNUM); /* Core file support. */ - set_gdbarch_regset_from_core_section - (gdbarch, m88k_regset_from_core_section); + set_gdbarch_iterate_over_regset_sections + (gdbarch, m88k_iterate_over_regset_sections); set_gdbarch_print_insn (gdbarch, print_insn_m88k);