X86: Replace regset_alloc() invocations by static regset structures.
After removal of the regset_alloc invocations, the appropriate tdep fields become obsolete and are thus removed.
This commit is contained in:
parent
b7611c43bf
commit
ecc37a5acc
@ -1,3 +1,33 @@
|
||||
2014-05-21 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
||||
|
||||
* amd64-tdep.c (amd64_fpregset, amd64_xstateregset): New static
|
||||
regset structures.
|
||||
(amd64_regset_from_core_section): Remove dynamic regset
|
||||
allocations.
|
||||
* amd64obsd-tdep.c (amd64obsd_combined_regset): New static regset
|
||||
structure.
|
||||
(amd64obsd_regset_from_core_section): Remove dynamic regset
|
||||
allocation.
|
||||
* i386-cygwin-tdep.c (i386_windows_regset_from_core_section):
|
||||
Likewise.
|
||||
* i386-nto-tdep.c (i386nto_supply_gregset): Adjust call to
|
||||
x86-common regset supply function.
|
||||
* i386-tdep.c (i386_collect_gregset): Make static.
|
||||
(i386_gregset): New global regset structure.
|
||||
(i386_fpregset, i386_xstateregset): New static regset structures.
|
||||
(i386_regset_from_core_section): Remove dynamic regset
|
||||
allocations.
|
||||
(i386_gdbarch_init): Remove initialization of tdep fields
|
||||
'gregset', 'fpregset', and 'xstateregset'.
|
||||
* i386-tdep.h (struct gdbarch_tdep): Remove fields 'gregset',
|
||||
'fpregset', and 'xstateregset'.
|
||||
(i386_collect_gregset): Remove prototype.
|
||||
(i386_gregset): New declaration.
|
||||
* i386obsd-tdep.c (i386obsd_aout_gregset): New static regset
|
||||
structure.
|
||||
(i386obsd_aout_regset_from_core_section): Remove dynamic regset
|
||||
allocation.
|
||||
|
||||
2014-05-21 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
||||
|
||||
* arm-linux-tdep.c (arm_linux_gregset, arm_linux_fpregset)
|
||||
|
@ -2886,6 +2886,16 @@ amd64_collect_xstateregset (const struct regset *regset,
|
||||
amd64_collect_xsave (regcache, regnum, xstateregs, 1);
|
||||
}
|
||||
|
||||
static const struct regset amd64_fpregset =
|
||||
{
|
||||
NULL, amd64_supply_fpregset, amd64_collect_fpregset
|
||||
};
|
||||
|
||||
static const struct regset amd64_xstateregset =
|
||||
{
|
||||
NULL, amd64_supply_xstateregset, amd64_collect_xstateregset
|
||||
};
|
||||
|
||||
/* Return the appropriate register set for the core section identified
|
||||
by SECT_NAME and SECT_SIZE. */
|
||||
|
||||
@ -2896,23 +2906,10 @@ amd64_regset_from_core_section (struct gdbarch *gdbarch,
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
|
||||
if (strcmp (sect_name, ".reg2") == 0 && sect_size == tdep->sizeof_fpregset)
|
||||
{
|
||||
if (tdep->fpregset == NULL)
|
||||
tdep->fpregset = regset_alloc (gdbarch, amd64_supply_fpregset,
|
||||
amd64_collect_fpregset);
|
||||
|
||||
return tdep->fpregset;
|
||||
}
|
||||
return &amd64_fpregset;
|
||||
|
||||
if (strcmp (sect_name, ".reg-xstate") == 0)
|
||||
{
|
||||
if (tdep->xstateregset == NULL)
|
||||
tdep->xstateregset = regset_alloc (gdbarch,
|
||||
amd64_supply_xstateregset,
|
||||
amd64_collect_xstateregset);
|
||||
|
||||
return tdep->xstateregset;
|
||||
}
|
||||
return &amd64_xstateregset;
|
||||
|
||||
return i386_regset_from_core_section (gdbarch, sect_name, sect_size);
|
||||
}
|
||||
|
@ -55,6 +55,11 @@ amd64obsd_supply_regset (const struct regset *regset,
|
||||
((const gdb_byte *)regs) + tdep->sizeof_gregset);
|
||||
}
|
||||
|
||||
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)
|
||||
@ -66,11 +71,7 @@ amd64obsd_regset_from_core_section (struct gdbarch *gdbarch,
|
||||
|
||||
if (strcmp (sect_name, ".reg") == 0
|
||||
&& sect_size >= tdep->sizeof_gregset + I387_SIZEOF_FXSAVE)
|
||||
{
|
||||
if (tdep->gregset == NULL)
|
||||
tdep->gregset = regset_alloc (gdbarch, amd64obsd_supply_regset, NULL);
|
||||
return tdep->gregset;
|
||||
}
|
||||
return &amd64obsd_combined_regset;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -96,16 +96,9 @@ static const struct regset *
|
||||
i386_windows_regset_from_core_section (struct gdbarch *gdbarch,
|
||||
const char *sect_name, size_t sect_size)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
|
||||
if (strcmp (sect_name, ".reg") == 0
|
||||
&& sect_size == I386_WINDOWS_SIZEOF_GREGSET)
|
||||
{
|
||||
if (tdep->gregset == NULL)
|
||||
tdep->gregset = regset_alloc (gdbarch, i386_supply_gregset,
|
||||
i386_collect_gregset);
|
||||
return tdep->gregset;
|
||||
}
|
||||
return &i386_gregset;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -82,13 +82,9 @@ i386nto_supply_gregset (struct regcache *regcache, char *gpregs)
|
||||
struct gdbarch *gdbarch = get_regcache_arch (regcache);
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
|
||||
if(tdep->gregset == NULL)
|
||||
tdep->gregset = regset_alloc (gdbarch, i386_supply_gregset,
|
||||
i386_collect_gregset);
|
||||
|
||||
gdb_assert (tdep->gregset_reg_offset == i386nto_gregset_reg_offset);
|
||||
tdep->gregset->supply_regset (tdep->gregset, regcache, -1,
|
||||
gpregs, NUM_GPREGS * 4);
|
||||
i386_gregset.supply_regset (&i386_gregset, regcache, -1,
|
||||
gpregs, NUM_GPREGS * 4);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -3744,7 +3744,7 @@ i386_supply_gregset (const struct regset *regset, struct regcache *regcache,
|
||||
general-purpose register set REGSET. If REGNUM is -1, do this for
|
||||
all registers in REGSET. */
|
||||
|
||||
void
|
||||
static void
|
||||
i386_collect_gregset (const struct regset *regset,
|
||||
const struct regcache *regcache,
|
||||
int regnum, void *gregs, size_t len)
|
||||
@ -3828,6 +3828,23 @@ i386_collect_xstateregset (const struct regset *regset,
|
||||
i387_collect_xsave (regcache, regnum, xstateregs, 1);
|
||||
}
|
||||
|
||||
/* Register set definitions. */
|
||||
|
||||
const struct regset i386_gregset =
|
||||
{
|
||||
NULL, i386_supply_gregset, i386_collect_gregset
|
||||
};
|
||||
|
||||
static const struct regset i386_fpregset =
|
||||
{
|
||||
NULL, i386_supply_fpregset, i386_collect_fpregset
|
||||
};
|
||||
|
||||
static const struct regset i386_xstateregset =
|
||||
{
|
||||
NULL, i386_supply_xstateregset, i386_collect_xstateregset
|
||||
};
|
||||
|
||||
/* Return the appropriate register set for the core section identified
|
||||
by SECT_NAME and SECT_SIZE. */
|
||||
|
||||
@ -3838,32 +3855,15 @@ i386_regset_from_core_section (struct gdbarch *gdbarch,
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
|
||||
if (strcmp (sect_name, ".reg") == 0 && sect_size == tdep->sizeof_gregset)
|
||||
{
|
||||
if (tdep->gregset == NULL)
|
||||
tdep->gregset = regset_alloc (gdbarch, i386_supply_gregset,
|
||||
i386_collect_gregset);
|
||||
return tdep->gregset;
|
||||
}
|
||||
return &i386_gregset;
|
||||
|
||||
if ((strcmp (sect_name, ".reg2") == 0 && sect_size == tdep->sizeof_fpregset)
|
||||
|| (strcmp (sect_name, ".reg-xfp") == 0
|
||||
&& sect_size == I387_SIZEOF_FXSAVE))
|
||||
{
|
||||
if (tdep->fpregset == NULL)
|
||||
tdep->fpregset = regset_alloc (gdbarch, i386_supply_fpregset,
|
||||
i386_collect_fpregset);
|
||||
return tdep->fpregset;
|
||||
}
|
||||
return &i386_fpregset;
|
||||
|
||||
if (strcmp (sect_name, ".reg-xstate") == 0)
|
||||
{
|
||||
if (tdep->xstateregset == NULL)
|
||||
tdep->xstateregset = regset_alloc (gdbarch,
|
||||
i386_supply_xstateregset,
|
||||
i386_collect_xstateregset);
|
||||
|
||||
return tdep->xstateregset;
|
||||
}
|
||||
return &i386_xstateregset;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
@ -8287,17 +8287,13 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
gdbarch = gdbarch_alloc (&info, tdep);
|
||||
|
||||
/* General-purpose registers. */
|
||||
tdep->gregset = NULL;
|
||||
tdep->gregset_reg_offset = NULL;
|
||||
tdep->gregset_num_regs = I386_NUM_GREGS;
|
||||
tdep->sizeof_gregset = 0;
|
||||
|
||||
/* Floating-point registers. */
|
||||
tdep->fpregset = NULL;
|
||||
tdep->sizeof_fpregset = I387_SIZEOF_FSAVE;
|
||||
|
||||
tdep->xstateregset = NULL;
|
||||
|
||||
/* The default settings include the FPU registers, the MMX registers
|
||||
and the SSE registers. This can be overridden for a specific ABI
|
||||
by adjusting the members `st0_regnum', `mm0_regnum' and
|
||||
|
@ -56,18 +56,13 @@ enum struct_return
|
||||
struct gdbarch_tdep
|
||||
{
|
||||
/* General-purpose registers. */
|
||||
struct regset *gregset;
|
||||
int *gregset_reg_offset;
|
||||
int gregset_num_regs;
|
||||
size_t sizeof_gregset;
|
||||
|
||||
/* Floating-point registers. */
|
||||
struct regset *fpregset;
|
||||
size_t sizeof_fpregset;
|
||||
|
||||
/* XSAVE extended state. */
|
||||
struct regset *xstateregset;
|
||||
|
||||
/* Register number for %st(0). The register numbers for the other
|
||||
registers follow from this one. Set this to -1 to indicate the
|
||||
absence of an FPU. */
|
||||
@ -389,13 +384,8 @@ extern void i386_supply_gregset (const struct regset *regset,
|
||||
struct regcache *regcache, int regnum,
|
||||
const void *gregs, size_t len);
|
||||
|
||||
/* Collect register REGNUM from the register cache REGCACHE and store
|
||||
it in the buffer specified by GREGS and LEN as described by the
|
||||
general-purpose register set REGSET. If REGNUM is -1, do this for
|
||||
all registers in REGSET. */
|
||||
extern void i386_collect_gregset (const struct regset *regset,
|
||||
const struct regcache *regcache,
|
||||
int regnum, void *gregs, size_t len);
|
||||
/* General-purpose register set. */
|
||||
extern const struct regset i386_gregset;
|
||||
|
||||
/* Return the appropriate register set for the core section identified
|
||||
by SECT_NAME and SECT_SIZE. */
|
||||
|
@ -152,6 +152,11 @@ i386obsd_aout_supply_regset (const struct regset *regset,
|
||||
i387_supply_fsave (regcache, regnum, gregs + tdep->sizeof_gregset);
|
||||
}
|
||||
|
||||
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,
|
||||
@ -164,12 +169,7 @@ i386obsd_aout_regset_from_core_section (struct gdbarch *gdbarch,
|
||||
|
||||
if (strcmp (sect_name, ".reg") == 0
|
||||
&& sect_size >= tdep->sizeof_gregset + I387_SIZEOF_FSAVE)
|
||||
{
|
||||
if (tdep->gregset == NULL)
|
||||
tdep->gregset =
|
||||
regset_alloc (gdbarch, i386obsd_aout_supply_regset, NULL);
|
||||
return tdep->gregset;
|
||||
}
|
||||
return &i386obsd_aout_gregset;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user