This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFC 02/23] Remove 'arch' field from regset structure
- From: Andreas Arnez <arnez at linux dot vnet dot ibm dot com>
- To: Mark Kettenis <mark dot kettenis at xs4all dot nl>
- Cc: gdb-patches at sourceware dot org, kevinb at redhat dot com, yao at codesourcery dot com
- Date: Mon, 05 May 2014 15:35:36 +0200
- Subject: Re: [RFC 02/23] Remove 'arch' field from regset structure
- Authentication-results: sourceware.org; auth=none
- References: <87eh0h6bkq dot fsf at br87z6lw dot de dot ibm dot com> <8738gx6bc2 dot fsf at br87z6lw dot de dot ibm dot com> <201405050931 dot s459Vnbu027141 at glazunov dot sibelius dot xs4all dot nl>
On Mon, May 05 2014, Mark Kettenis wrote:
>> From: Andreas Arnez <arnez@linux.vnet.ibm.com>
>>
>> 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/
>> * 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.
>
>
> The
>
>> - const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
>> + const struct gdbarch_tdep *tdep = gdbarch_tdep (get_regcache_arch (regcache));
>
> changes make the lines too long. I suggest changing them to:
>
> struct gdbarch *gdbarch = get_regcache_arch (regcache);
> const struct gdbarch_tdep *tdep = gdbarch_tdep(gdbarch);
Done. (Adjusted patch 02/23 with the patch below.)
> Otherwise, this change is fine with me.
Thanks for reviewing!
--
diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
index df4a3f4..1b9797a 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 (get_regcache_arch (regcache));
+ 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 (get_regcache_arch (regcache));
+ 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 c5ed731..2cc0a0f 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 (get_regcache_arch (regcache));
+ 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 de783f6..7d2363f 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 (get_regcache_arch (regcache));
+ 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 (get_regcache_arch (regcache));
+ 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 (get_regcache_arch (regcache));
+ 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 (get_regcache_arch (regcache));
+ 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 bc29606..7d9ba93 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 (get_regcache_arch (regcache));
+ 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);