X86: Migrate from 'regset_from_core_section' to 'iterate_over_regset_sections'

For all I386 and AMD64 targets, replace all occurrences of
regset_from_core_section by the iterator method.

gdb/ChangeLog:

	* amd64obsd-tdep.c (amd64obsd_regset_from_core_section): Remove.
	(amd64obsd_iterate_over_regset_sections): New.
	(amd64obsd_core_init_abi): Adjust gdbarch initialization.
	* i386-cygwin-tdep.c (i386_windows_regset_from_core_section):
	Remove.
	(i386_cygwin_init_abi): Clear tdep->sizeof_fpregset.  Drop
	regset_from_core_section initialization.
	* i386-tdep.c (i386_regset_from_core_section): Remove.
	(i386_iterate_over_regset_sections): New.
	(i386_gdbarch_init): Adjust gdbarch initialization.
	* i386-tdep.h (i386_regset_from_core_section): Remove prototype.
	(i386_iterate_over_regset_sections): New prototype.
	* i386obsd-tdep.c (i386obsd_aout_regset_from_core_section):
	Remove.
	(i386obsd_aout_iterate_over_regset_sections): New.
	(i386obsd_aout_init_abi): Adjust gdbarch initialization.
	* configure.tgt (gdb_target_obs): Add fbsd-tdep.o for all x86 FreeBSD
	targets.
	* amd64fbsd-tdep.c (fbsd-tdep.h): Include.
	(amd64fbsd_init_abi): Call fbsd_init_abi.
	* i386fbsd-tdep.c (fbsd-tdep.h): Include.
	(i386fbsd4_init_abi): Call fbsd_init_abi.
	* amd64fbsd-nat.c (_initialize_amd64fbsd_nat): No longer set
	target method 'make_corefile_notes'.
	* i386fbsd-nat.c (_initialize_i386fbsd_nat): Likewise.
This commit is contained in:
Andreas Arnez 2014-03-29 10:04:26 +00:00 committed by Andreas Krebbel
parent 50c5eb5335
commit 490496c342
11 changed files with 75 additions and 62 deletions

View File

@ -1,3 +1,31 @@
2014-09-30 Andreas Arnez <arnez@linux.vnet.ibm.com>
* amd64obsd-tdep.c (amd64obsd_regset_from_core_section): Remove.
(amd64obsd_iterate_over_regset_sections): New.
(amd64obsd_core_init_abi): Adjust gdbarch initialization.
* i386-cygwin-tdep.c (i386_windows_regset_from_core_section):
Remove.
(i386_cygwin_init_abi): Clear tdep->sizeof_fpregset. Drop
regset_from_core_section initialization.
* i386-tdep.c (i386_regset_from_core_section): Remove.
(i386_iterate_over_regset_sections): New.
(i386_gdbarch_init): Adjust gdbarch initialization.
* i386-tdep.h (i386_regset_from_core_section): Remove prototype.
(i386_iterate_over_regset_sections): New prototype.
* i386obsd-tdep.c (i386obsd_aout_regset_from_core_section):
Remove.
(i386obsd_aout_iterate_over_regset_sections): New.
(i386obsd_aout_init_abi): Adjust gdbarch initialization.
* configure.tgt (gdb_target_obs): Add fbsd-tdep.o for all x86 FreeBSD
targets.
* amd64fbsd-tdep.c (fbsd-tdep.h): Include.
(amd64fbsd_init_abi): Call fbsd_init_abi.
* i386fbsd-tdep.c (fbsd-tdep.h): Include.
(i386fbsd4_init_abi): Call fbsd_init_abi.
* amd64fbsd-nat.c (_initialize_amd64fbsd_nat): No longer set
target method 'make_corefile_notes'.
* i386fbsd-nat.c (_initialize_i386fbsd_nat): Likewise.
2014-09-30 Andreas Arnez <arnez@linux.vnet.ibm.com>
* hppa-hpux-tdep.c (hppa_hpux_regset_from_core_section): Remove.

View File

@ -183,7 +183,6 @@ _initialize_amd64fbsd_nat (void)
t->to_pid_to_exec_file = fbsd_pid_to_exec_file;
t->to_find_memory_regions = fbsd_find_memory_regions;
t->to_make_corefile_notes = fbsd_make_corefile_notes;
add_target (t);
/* Support debugging kernel virtual memory images. */

View File

@ -26,6 +26,7 @@
#include "amd64-tdep.h"
#include "bsd-uthread.h"
#include "fbsd-tdep.h"
#include "solib-svr4.h"
/* Support for signal handlers. */
@ -182,6 +183,9 @@ amd64fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
/* Generic FreeBSD support. */
fbsd_init_abi (info, gdbarch);
/* Obviously FreeBSD is BSD-based. */
i386bsd_init_abi (info, gdbarch);

View File

@ -57,20 +57,19 @@ static const struct regset amd64obsd_combined_regset =
NULL, amd64obsd_supply_regset, NULL
};
static const struct regset *
amd64obsd_regset_from_core_section (struct gdbarch *gdbarch,
const char *sect_name, size_t sect_size)
static void
amd64obsd_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);
/* OpenBSD core dumps don't use seperate register sets for the
general-purpose and floating-point registers. */
if (strcmp (sect_name, ".reg") == 0
&& sect_size >= tdep->sizeof_gregset + I387_SIZEOF_FXSAVE)
return &amd64obsd_combined_regset;
return NULL;
cb (".reg", tdep->sizeof_gregset + I387_SIZEOF_FXSAVE,
&amd64obsd_combined_regset, NULL, cb_data);
}
@ -492,8 +491,8 @@ amd64obsd_core_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{
amd64obsd_init_abi (info, gdbarch);
set_gdbarch_regset_from_core_section
(gdbarch, amd64obsd_regset_from_core_section);
set_gdbarch_iterate_over_regset_sections
(gdbarch, amd64obsd_iterate_over_regset_sections);
}

View File

@ -189,7 +189,7 @@ i[34567]86-*-dicos*)
i[34567]86-*-freebsd* | i[34567]86-*-kfreebsd*-gnu)
# Target: FreeBSD/i386
gdb_target_obs="i386-tdep.o i387-tdep.o i386bsd-tdep.o i386fbsd-tdep.o \
bsd-uthread.o solib-svr4.o"
bsd-uthread.o fbsd-tdep.o solib-svr4.o"
;;
i[34567]86-*-netbsd* | i[34567]86-*-knetbsd*-gnu)
# Target: NetBSD/i386
@ -667,7 +667,7 @@ x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
# Target: FreeBSD/amd64
gdb_target_obs="amd64-tdep.o amd64fbsd-tdep.o i386-tdep.o \
i387-tdep.o i386bsd-tdep.o i386fbsd-tdep.o \
bsd-uthread.o solib-svr4.o"
bsd-uthread.o fbsd-tdep.o solib-svr4.o"
;;
x86_64-*-mingw* | x86_64-*-cygwin*)
# Target: MingW/amd64

View File

@ -88,20 +88,6 @@ static int i386_windows_gregset_reg_offset[] =
#define I386_WINDOWS_SIZEOF_GREGSET 716
/* Return the appropriate register set for the core section identified
by SECT_NAME and SECT_SIZE. */
static const struct regset *
i386_windows_regset_from_core_section (struct gdbarch *gdbarch,
const char *sect_name, size_t sect_size)
{
if (strcmp (sect_name, ".reg") == 0
&& sect_size == I386_WINDOWS_SIZEOF_GREGSET)
return &i386_gregset;
return NULL;
}
struct cpms_data
{
struct gdbarch *gdbarch;
@ -235,9 +221,9 @@ i386_cygwin_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
tdep->gregset_num_regs = ARRAY_SIZE (i386_windows_gregset_reg_offset);
tdep->sizeof_gregset = I386_WINDOWS_SIZEOF_GREGSET;
tdep->sizeof_fpregset = 0;
/* Core file support. */
set_gdbarch_regset_from_core_section
(gdbarch, i386_windows_regset_from_core_section);
set_gdbarch_core_xfer_shared_libraries
(gdbarch, windows_core_xfer_shared_libraries);
set_gdbarch_core_pid_to_str (gdbarch, i386_windows_core_pid_to_str);

View File

@ -3818,22 +3818,19 @@ const struct regset i386_fpregset =
NULL, i386_supply_fpregset, i386_collect_fpregset
};
/* Return the appropriate register set for the core section identified
by SECT_NAME and SECT_SIZE. */
/* Default iterator over core file register note sections. */
const struct regset *
i386_regset_from_core_section (struct gdbarch *gdbarch,
const char *sect_name, size_t sect_size)
void
i386_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 (strcmp (sect_name, ".reg") == 0 && sect_size == tdep->sizeof_gregset)
return &i386_gregset;
if (strcmp (sect_name, ".reg2") == 0 && sect_size == tdep->sizeof_fpregset)
return tdep->fpregset;
return NULL;
cb (".reg", tdep->sizeof_gregset, &i386_gregset, NULL, cb_data);
if (tdep->sizeof_fpregset)
cb (".reg2", tdep->sizeof_fpregset, tdep->fpregset, NULL, cb_data);
}
@ -8566,10 +8563,9 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
/* If we have a register mapping, enable the generic core file
support, unless it has already been enabled. */
if (tdep->gregset_reg_offset
&& !gdbarch_regset_from_core_section_p (gdbarch)
&& !gdbarch_iterate_over_regset_sections_p (gdbarch))
set_gdbarch_regset_from_core_section (gdbarch,
i386_regset_from_core_section);
set_gdbarch_iterate_over_regset_sections
(gdbarch, i386_iterate_over_regset_sections);
set_gdbarch_skip_permanent_breakpoint (gdbarch,
i386_skip_permanent_breakpoint);

View File

@ -393,12 +393,12 @@ extern const struct regset i386_gregset;
/* Floating-point register set. */
extern const struct regset i386_fpregset;
/* Return the appropriate register set for the core section identified
by SECT_NAME and SECT_SIZE. */
extern const struct regset *
i386_regset_from_core_section (struct gdbarch *gdbarch,
const char *sect_name, size_t sect_size);
/* Default iterator over core file register note sections. */
extern void
i386_iterate_over_regset_sections (struct gdbarch *gdbarch,
iterate_over_regset_sections_cb *cb,
void *cb_data,
const struct regcache *regcache);
extern struct displaced_step_closure *i386_displaced_step_copy_insn
(struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to,

View File

@ -143,7 +143,6 @@ _initialize_i386fbsd_nat (void)
t->to_resume = i386fbsd_resume;
t->to_pid_to_exec_file = fbsd_pid_to_exec_file;
t->to_find_memory_regions = fbsd_find_memory_regions;
t->to_make_corefile_notes = fbsd_make_corefile_notes;
add_target (t);
/* Support debugging kernel virtual memory images. */

View File

@ -26,6 +26,7 @@
#include "i386-tdep.h"
#include "i387-tdep.h"
#include "bsd-uthread.h"
#include "fbsd-tdep.h"
#include "solib-svr4.h"
/* FreeBSD 3.0-RELEASE or later. */
@ -204,6 +205,9 @@ i386fbsd4_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
/* Generic FreeBSD support. */
fbsd_init_abi (info, gdbarch);
/* Inherit stuff from older releases. We assume that FreeBSD
4.0-RELEASE always uses ELF. */
i386fbsd_init_abi (info, gdbarch);

View File

@ -154,21 +154,19 @@ static const struct regset i386obsd_aout_gregset =
NULL, i386obsd_aout_supply_regset, NULL
};
static const struct regset *
i386obsd_aout_regset_from_core_section (struct gdbarch *gdbarch,
const char *sect_name,
size_t sect_size)
static void
i386obsd_aout_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);
/* OpenBSD a.out core dumps don't use seperate register sets for the
general-purpose and floating-point registers. */
if (strcmp (sect_name, ".reg") == 0
&& sect_size >= tdep->sizeof_gregset + I387_SIZEOF_FSAVE)
return &i386obsd_aout_gregset;
return NULL;
cb (".reg", tdep->sizeof_gregset + I387_SIZEOF_FSAVE,
&i386obsd_aout_gregset, NULL, cb_data);
}
@ -482,8 +480,8 @@ i386obsd_aout_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
i386obsd_init_abi (info, gdbarch);
/* OpenBSD a.out has a single register set. */
set_gdbarch_regset_from_core_section
(gdbarch, i386obsd_aout_regset_from_core_section);
set_gdbarch_iterate_over_regset_sections
(gdbarch, i386obsd_aout_iterate_over_regset_sections);
}
/* OpenBSD ELF. */