Remove 'arch' field from regset structure.

Removes the 'arch' field from the regset structure, since it
represents the only "dynamic" data in a regset.  It was referenced in
some regset supply- and collect routines, to get access to the gdbarch
associated with the regset.  Naturally, the affected routines always
have access to the regcache to be supplied to or collected from.  Thus
the gdbarch associated with that regcache can be used instead.
This commit is contained in:
Andreas Arnez 2014-05-13 11:05:57 +00:00 committed by Andreas Krebbel
parent 3ca7dae4dd
commit 09424cff8c
10 changed files with 41 additions and 27 deletions

View file

@ -1,3 +1,21 @@
2014-05-21 Andreas Arnez <arnez@linux.vnet.ibm.com>
* regset.h (struct regset): Remove gdbarch field.
* regset.c (regset_alloc): Drop initialization of gdbarch field.
* nios2-linux-tdep.c (nios2_core_regset): Likewise.
* ppcfbsd-tdep.c (ppc32_fbsd_gregset, ppc64_fbsd_gregset):
Likewise.
* ppc-linux-tdep.c (ppc32_linux_gregset, ppc64_linux_gregset)
(ppc32_linux_fpregset, ppc32_linux_vrregset)
(ppc32_linux_vsxregset): Likewise.
* i386obsd-tdep.c (i386obsd_aout_supply_regset): Get the gdbarch
via the regcache instead of the regset.
* i386-tdep.c (i386_supply_gregset, i386_collect_gregset)
(i386_supply_fpregset, i386_collect_fpregset): Likewise.
* amd64obsd-tdep.c (amd64obsd_supply_regset): Likewise.
* amd64-tdep.c (amd64_supply_fpregset, amd64_collect_fpregset):
Likewise.
2014-05-21 Andreas Arnez <arnez@linux.vnet.ibm.com> 2014-05-21 Andreas Arnez <arnez@linux.vnet.ibm.com>
* alpha-linux-tdep.c (alpha_linux_gregset, alpha_linux_fpregset): * alpha-linux-tdep.c (alpha_linux_gregset, alpha_linux_fpregset):

View file

@ -2842,7 +2842,8 @@ static void
amd64_supply_fpregset (const struct regset *regset, struct regcache *regcache, amd64_supply_fpregset (const struct regset *regset, struct regcache *regcache,
int regnum, const void *fpregs, size_t len) int regnum, const void *fpregs, size_t len)
{ {
const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch); struct gdbarch *gdbarch = get_regcache_arch (regcache);
const struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
gdb_assert (len == tdep->sizeof_fpregset); gdb_assert (len == tdep->sizeof_fpregset);
amd64_supply_fxsave (regcache, regnum, fpregs); amd64_supply_fxsave (regcache, regnum, fpregs);
@ -2858,7 +2859,8 @@ amd64_collect_fpregset (const struct regset *regset,
const struct regcache *regcache, const struct regcache *regcache,
int regnum, void *fpregs, size_t len) int regnum, void *fpregs, size_t len)
{ {
const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch); struct gdbarch *gdbarch = get_regcache_arch (regcache);
const struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
gdb_assert (len == tdep->sizeof_fpregset); gdb_assert (len == tdep->sizeof_fpregset);
amd64_collect_fxsave (regcache, regnum, fpregs); amd64_collect_fxsave (regcache, regnum, fpregs);

View file

@ -45,7 +45,8 @@ amd64obsd_supply_regset (const struct regset *regset,
struct regcache *regcache, int regnum, struct regcache *regcache, int regnum,
const void *regs, size_t len) const void *regs, size_t len)
{ {
const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch); struct gdbarch *gdbarch = get_regcache_arch (regcache);
const struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
gdb_assert (len >= tdep->sizeof_gregset + I387_SIZEOF_FXSAVE); gdb_assert (len >= tdep->sizeof_gregset + I387_SIZEOF_FXSAVE);

View file

@ -3724,7 +3724,8 @@ void
i386_supply_gregset (const struct regset *regset, struct regcache *regcache, i386_supply_gregset (const struct regset *regset, struct regcache *regcache,
int regnum, const void *gregs, size_t len) int regnum, const void *gregs, size_t len)
{ {
const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch); struct gdbarch *gdbarch = get_regcache_arch (regcache);
const struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
const gdb_byte *regs = gregs; const gdb_byte *regs = gregs;
int i; int i;
@ -3748,7 +3749,8 @@ i386_collect_gregset (const struct regset *regset,
const struct regcache *regcache, const struct regcache *regcache,
int regnum, void *gregs, size_t len) int regnum, void *gregs, size_t len)
{ {
const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch); struct gdbarch *gdbarch = get_regcache_arch (regcache);
const struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
gdb_byte *regs = gregs; gdb_byte *regs = gregs;
int i; int i;
@ -3770,7 +3772,8 @@ static void
i386_supply_fpregset (const struct regset *regset, struct regcache *regcache, i386_supply_fpregset (const struct regset *regset, struct regcache *regcache,
int regnum, const void *fpregs, size_t len) int regnum, const void *fpregs, size_t len)
{ {
const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch); struct gdbarch *gdbarch = get_regcache_arch (regcache);
const struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
if (len == I387_SIZEOF_FXSAVE) if (len == I387_SIZEOF_FXSAVE)
{ {
@ -3792,7 +3795,8 @@ i386_collect_fpregset (const struct regset *regset,
const struct regcache *regcache, const struct regcache *regcache,
int regnum, void *fpregs, size_t len) int regnum, void *fpregs, size_t len)
{ {
const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch); struct gdbarch *gdbarch = get_regcache_arch (regcache);
const struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
if (len == I387_SIZEOF_FXSAVE) if (len == I387_SIZEOF_FXSAVE)
{ {

View file

@ -142,7 +142,8 @@ i386obsd_aout_supply_regset (const struct regset *regset,
struct regcache *regcache, int regnum, struct regcache *regcache, int regnum,
const void *regs, size_t len) const void *regs, size_t len)
{ {
const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch); struct gdbarch *gdbarch = get_regcache_arch (regcache);
const struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
const gdb_byte *gregs = regs; const gdb_byte *gregs = regs;
gdb_assert (len >= tdep->sizeof_gregset + I387_SIZEOF_FSAVE); gdb_assert (len >= tdep->sizeof_gregset + I387_SIZEOF_FSAVE);

View file

@ -78,7 +78,6 @@ static const struct regset nios2_core_regset =
NULL, NULL,
nios2_supply_gregset, nios2_supply_gregset,
NULL, NULL,
NULL
}; };
/* Implement the regset_from_core_section gdbarch method. */ /* Implement the regset_from_core_section gdbarch method. */

View file

@ -498,36 +498,31 @@ static const struct ppc_reg_offsets ppc64_linux_reg_offsets =
static const struct regset ppc32_linux_gregset = { static const struct regset ppc32_linux_gregset = {
&ppc32_linux_reg_offsets, &ppc32_linux_reg_offsets,
ppc_linux_supply_gregset, ppc_linux_supply_gregset,
ppc_linux_collect_gregset, ppc_linux_collect_gregset
NULL
}; };
static const struct regset ppc64_linux_gregset = { static const struct regset ppc64_linux_gregset = {
&ppc64_linux_reg_offsets, &ppc64_linux_reg_offsets,
ppc_linux_supply_gregset, ppc_linux_supply_gregset,
ppc_linux_collect_gregset, ppc_linux_collect_gregset
NULL
}; };
static const struct regset ppc32_linux_fpregset = { static const struct regset ppc32_linux_fpregset = {
&ppc32_linux_reg_offsets, &ppc32_linux_reg_offsets,
ppc_supply_fpregset, ppc_supply_fpregset,
ppc_collect_fpregset, ppc_collect_fpregset
NULL
}; };
static const struct regset ppc32_linux_vrregset = { static const struct regset ppc32_linux_vrregset = {
&ppc32_linux_reg_offsets, &ppc32_linux_reg_offsets,
ppc_supply_vrregset, ppc_supply_vrregset,
ppc_collect_vrregset, ppc_collect_vrregset
NULL
}; };
static const struct regset ppc32_linux_vsxregset = { static const struct regset ppc32_linux_vsxregset = {
&ppc32_linux_reg_offsets, &ppc32_linux_reg_offsets,
ppc_supply_vsxregset, ppc_supply_vsxregset,
ppc_collect_vsxregset, ppc_collect_vsxregset
NULL
}; };
const struct regset * const struct regset *

View file

@ -100,8 +100,7 @@ static const struct ppc_reg_offsets ppc64_fbsd_reg_offsets =
static const struct regset ppc32_fbsd_gregset = { static const struct regset ppc32_fbsd_gregset = {
&ppc32_fbsd_reg_offsets, &ppc32_fbsd_reg_offsets,
ppc_supply_gregset, ppc_supply_gregset,
ppc_collect_gregset, ppc_collect_gregset
NULL
}; };
/* 64-bit general-purpose register set. */ /* 64-bit general-purpose register set. */
@ -109,8 +108,7 @@ static const struct regset ppc32_fbsd_gregset = {
static const struct regset ppc64_fbsd_gregset = { static const struct regset ppc64_fbsd_gregset = {
&ppc64_fbsd_reg_offsets, &ppc64_fbsd_reg_offsets,
ppc_supply_gregset, ppc_supply_gregset,
ppc_collect_gregset, ppc_collect_gregset
NULL
}; };
/* 32-/64-bit floating-point register set. */ /* 32-/64-bit floating-point register set. */

View file

@ -36,7 +36,6 @@ regset_alloc (struct gdbarch *arch,
{ {
struct regset *regset = GDBARCH_OBSTACK_ZALLOC (arch, struct regset); struct regset *regset = GDBARCH_OBSTACK_ZALLOC (arch, struct regset);
regset->arch = arch;
regset->supply_regset = supply_regset; regset->supply_regset = supply_regset;
regset->collect_regset = collect_regset; regset->collect_regset = collect_regset;

View file

@ -50,9 +50,6 @@ struct regset
/* Function collecting values in a register set from a register cache. */ /* Function collecting values in a register set from a register cache. */
collect_regset_ftype *collect_regset; collect_regset_ftype *collect_regset;
/* Architecture associated with the register set. */
struct gdbarch *arch;
}; };
/* Allocate a fresh 'struct regset' whose supply_regset function is /* Allocate a fresh 'struct regset' whose supply_regset function is