From 09424cff8c26073312e0bdc342989a955c766e31 Mon Sep 17 00:00:00 2001 From: Andreas Arnez Date: Tue, 13 May 2014 11:05:57 +0000 Subject: [PATCH] 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. --- gdb/ChangeLog | 18 ++++++++++++++++++ gdb/amd64-tdep.c | 6 ++++-- gdb/amd64obsd-tdep.c | 3 ++- gdb/i386-tdep.c | 12 ++++++++---- gdb/i386obsd-tdep.c | 3 ++- gdb/nios2-linux-tdep.c | 1 - gdb/ppc-linux-tdep.c | 15 +++++---------- gdb/ppcfbsd-tdep.c | 6 ++---- gdb/regset.c | 1 - gdb/regset.h | 3 --- 10 files changed, 41 insertions(+), 27 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 38cd57c5783..d329143898d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,21 @@ +2014-05-21 Andreas Arnez + + * 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 * alpha-linux-tdep.c (alpha_linux_gregset, alpha_linux_fpregset): diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c index 035b460afa1..1b9797a29a5 100644 --- a/gdb/amd64-tdep.c +++ b/gdb/amd64-tdep.c @@ -2842,7 +2842,8 @@ static void amd64_supply_fpregset (const struct regset *regset, struct regcache *regcache, 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); amd64_supply_fxsave (regcache, regnum, fpregs); @@ -2858,7 +2859,8 @@ amd64_collect_fpregset (const struct regset *regset, const struct regcache *regcache, 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); amd64_collect_fxsave (regcache, regnum, fpregs); diff --git a/gdb/amd64obsd-tdep.c b/gdb/amd64obsd-tdep.c index 94463180b48..2cc0a0f2542 100644 --- a/gdb/amd64obsd-tdep.c +++ b/gdb/amd64obsd-tdep.c @@ -45,7 +45,8 @@ amd64obsd_supply_regset (const struct regset *regset, struct regcache *regcache, int regnum, 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); diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index ecbf7305d7a..7d2363fd9b6 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -3724,7 +3724,8 @@ void i386_supply_gregset (const struct regset *regset, struct regcache *regcache, 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; int i; @@ -3748,7 +3749,8 @@ i386_collect_gregset (const struct regset *regset, const struct regcache *regcache, 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; int i; @@ -3770,7 +3772,8 @@ static void i386_supply_fpregset (const struct regset *regset, struct regcache *regcache, 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) { @@ -3792,7 +3795,8 @@ i386_collect_fpregset (const struct regset *regset, const struct regcache *regcache, 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) { diff --git a/gdb/i386obsd-tdep.c b/gdb/i386obsd-tdep.c index cf19c5007b1..7d9ba930ec0 100644 --- a/gdb/i386obsd-tdep.c +++ b/gdb/i386obsd-tdep.c @@ -142,7 +142,8 @@ i386obsd_aout_supply_regset (const struct regset *regset, struct regcache *regcache, int regnum, 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; gdb_assert (len >= tdep->sizeof_gregset + I387_SIZEOF_FSAVE); diff --git a/gdb/nios2-linux-tdep.c b/gdb/nios2-linux-tdep.c index d9a51a85494..84ab576205b 100644 --- a/gdb/nios2-linux-tdep.c +++ b/gdb/nios2-linux-tdep.c @@ -78,7 +78,6 @@ static const struct regset nios2_core_regset = NULL, nios2_supply_gregset, NULL, - NULL }; /* Implement the regset_from_core_section gdbarch method. */ diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c index 5278a24fd0f..54105545373 100644 --- a/gdb/ppc-linux-tdep.c +++ b/gdb/ppc-linux-tdep.c @@ -498,36 +498,31 @@ static const struct ppc_reg_offsets ppc64_linux_reg_offsets = static const struct regset ppc32_linux_gregset = { &ppc32_linux_reg_offsets, ppc_linux_supply_gregset, - ppc_linux_collect_gregset, - NULL + ppc_linux_collect_gregset }; static const struct regset ppc64_linux_gregset = { &ppc64_linux_reg_offsets, ppc_linux_supply_gregset, - ppc_linux_collect_gregset, - NULL + ppc_linux_collect_gregset }; static const struct regset ppc32_linux_fpregset = { &ppc32_linux_reg_offsets, ppc_supply_fpregset, - ppc_collect_fpregset, - NULL + ppc_collect_fpregset }; static const struct regset ppc32_linux_vrregset = { &ppc32_linux_reg_offsets, ppc_supply_vrregset, - ppc_collect_vrregset, - NULL + ppc_collect_vrregset }; static const struct regset ppc32_linux_vsxregset = { &ppc32_linux_reg_offsets, ppc_supply_vsxregset, - ppc_collect_vsxregset, - NULL + ppc_collect_vsxregset }; const struct regset * diff --git a/gdb/ppcfbsd-tdep.c b/gdb/ppcfbsd-tdep.c index 77292f375e4..28f5b7bf82b 100644 --- a/gdb/ppcfbsd-tdep.c +++ b/gdb/ppcfbsd-tdep.c @@ -100,8 +100,7 @@ static const struct ppc_reg_offsets ppc64_fbsd_reg_offsets = static const struct regset ppc32_fbsd_gregset = { &ppc32_fbsd_reg_offsets, ppc_supply_gregset, - ppc_collect_gregset, - NULL + ppc_collect_gregset }; /* 64-bit general-purpose register set. */ @@ -109,8 +108,7 @@ static const struct regset ppc32_fbsd_gregset = { static const struct regset ppc64_fbsd_gregset = { &ppc64_fbsd_reg_offsets, ppc_supply_gregset, - ppc_collect_gregset, - NULL + ppc_collect_gregset }; /* 32-/64-bit floating-point register set. */ diff --git a/gdb/regset.c b/gdb/regset.c index a56641f1ca0..1d19d3431a4 100644 --- a/gdb/regset.c +++ b/gdb/regset.c @@ -36,7 +36,6 @@ regset_alloc (struct gdbarch *arch, { struct regset *regset = GDBARCH_OBSTACK_ZALLOC (arch, struct regset); - regset->arch = arch; regset->supply_regset = supply_regset; regset->collect_regset = collect_regset; diff --git a/gdb/regset.h b/gdb/regset.h index fe804cc295d..f1a6e241d96 100644 --- a/gdb/regset.h +++ b/gdb/regset.h @@ -50,9 +50,6 @@ struct regset /* Function collecting values in a register set from a register cache. */ collect_regset_ftype *collect_regset; - - /* Architecture associated with the register set. */ - struct gdbarch *arch; }; /* Allocate a fresh 'struct regset' whose supply_regset function is -- 2.30.2