mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-03 04:12:10 +08:00
SH: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'
For Super-H targets, no longer define the gdbarch method 'regset_from_core_section', but the iterator method instead. gdb/ChangeLog: * sh-linux-tdep.c (sh_linux_init_abi): Set tdep fields 'sizeof_gregset' and 'sizeof_fpregset'. * sh-tdep.c (sh_regset_from_core_section): Remove. (sh_iterate_over_regset_sections): New. (sh_gdbarch_init): Adjust gdbarch initialization. * sh-tdep.h (struct gdbarch_tdep): New fields sizeof_gregset and sizeof_fpregset. * shnbsd-tdep.c (shnbsd_init_abi): Set tdep field 'sizeof_gregset'.
This commit is contained in:
parent
9845a0b521
commit
c6d41a6f53
@ -1,3 +1,15 @@
|
||||
2014-09-30 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
||||
|
||||
* sh-linux-tdep.c (sh_linux_init_abi): Set tdep fields
|
||||
'sizeof_gregset' and 'sizeof_fpregset'.
|
||||
* sh-tdep.c (sh_regset_from_core_section): Remove.
|
||||
(sh_iterate_over_regset_sections): New.
|
||||
(sh_gdbarch_init): Adjust gdbarch initialization.
|
||||
* sh-tdep.h (struct gdbarch_tdep): New fields sizeof_gregset and
|
||||
sizeof_fpregset.
|
||||
* shnbsd-tdep.c (shnbsd_init_abi): Set tdep field
|
||||
'sizeof_gregset'.
|
||||
|
||||
2014-09-30 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
||||
|
||||
* score-tdep.c (score7_linux_regset_from_core_section): Remove.
|
||||
|
@ -200,8 +200,12 @@ sh_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
|
||||
/* Remember regset characteristics. The sizes should match
|
||||
elf_gregset_t and elf_fpregset_t from Linux. */
|
||||
tdep->core_gregmap = (struct sh_corefile_regmap *)gregs_table;
|
||||
tdep->sizeof_gregset = 92;
|
||||
tdep->core_fpregmap = (struct sh_corefile_regmap *)fpregs_table;
|
||||
tdep->sizeof_fpregset = 136;
|
||||
|
||||
tramp_frame_prepend_unwinder (gdbarch, &sh_linux_sigreturn_tramp_frame);
|
||||
tramp_frame_prepend_unwinder (gdbarch, &sh_linux_rt_sigreturn_tramp_frame);
|
||||
|
@ -2207,19 +2207,19 @@ static const struct regset sh_corefile_fpregset =
|
||||
sh_corefile_collect_regset
|
||||
};
|
||||
|
||||
static const struct regset *
|
||||
sh_regset_from_core_section (struct gdbarch *gdbarch, const char *sect_name,
|
||||
size_t sect_size)
|
||||
static void
|
||||
sh_iterate_over_regset_sections (struct gdbarch *gdbarch,
|
||||
iterate_over_regset_sections_cb *cb,
|
||||
void *cb_data,
|
||||
const struct regcache *regcache)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
|
||||
if (tdep->core_gregmap && strcmp (sect_name, ".reg") == 0)
|
||||
return &sh_corefile_gregset;
|
||||
if (tdep->core_gregmap != NULL)
|
||||
cb (".reg", tdep->sizeof_gregset, &sh_corefile_gregset, NULL, cb_data);
|
||||
|
||||
if (tdep->core_fpregmap && strcmp (sect_name, ".reg2") == 0)
|
||||
return &sh_corefile_fpregset;
|
||||
|
||||
return NULL;
|
||||
if (tdep->core_fpregmap != NULL)
|
||||
cb (".reg2", tdep->sizeof_fpregset, &sh_corefile_fpregset, NULL, cb_data);
|
||||
}
|
||||
|
||||
/* This is the implementation of gdbarch method
|
||||
@ -2298,7 +2298,8 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
|
||||
dwarf2_frame_set_init_reg (gdbarch, sh_dwarf2_frame_init_reg);
|
||||
|
||||
set_gdbarch_regset_from_core_section (gdbarch, sh_regset_from_core_section);
|
||||
set_gdbarch_iterate_over_regset_sections
|
||||
(gdbarch, sh_iterate_over_regset_sections);
|
||||
|
||||
switch (info.bfd_arch_info->mach)
|
||||
{
|
||||
|
@ -95,10 +95,12 @@ struct gdbarch_tdep
|
||||
where each general-purpose register is stored inside the associated
|
||||
core file section. */
|
||||
struct sh_corefile_regmap *core_gregmap;
|
||||
int sizeof_gregset;
|
||||
/* Non-NULL when debugging from a core file and when FP registers are
|
||||
available. Provides the offset where each FP register is stored
|
||||
inside the associated core file section. */
|
||||
struct sh_corefile_regmap *core_fpregmap;
|
||||
int sizeof_fpregset;
|
||||
};
|
||||
|
||||
extern const struct regset sh_corefile_gregset;
|
||||
|
@ -64,6 +64,7 @@ shnbsd_init_abi (struct gdbarch_info info,
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
|
||||
tdep->core_gregmap = (struct sh_corefile_regmap *)regmap;
|
||||
tdep->sizeof_gregset = 84;
|
||||
|
||||
set_solib_svr4_fetch_link_map_offsets
|
||||
(gdbarch, svr4_ilp32_fetch_link_map_offsets);
|
||||
|
Loading…
Reference in New Issue
Block a user