mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:54:41 +08:00
gdbarch: Use an anonymous union for target data in `gdbarch_info'
As an update to commit ede5f15146
("gdbarch.h: Change
gdbarch_info::tdep_info's type to void *") replace the definition of the
`tdep_info' member in `struct gdbarch_info' with an anonymous union,
comprising the original member, with its type reverted to `struct
gdbarch_tdep_info *', a `tdesc_data' member of a `struct tdesc_arch_data
*' type and an `id' member of an `int *' type. Remove now unnecessary
casts throughout use places then, making code easier to read an less
prone to errors, which may happen with casting.
gdb/
* gdbarch.sh (gdbarch_info): Replace the `tdep_info' member with
a union of `tdep_info', `tdesc_data' and `id'.
* aarch64-tdep.c (aarch64_gdbarch_init): Use `info.tdesc_data'
rather than `info.tdep_info'.
* amd64-linux-tdep.c (amd64_linux_init_abi): Likewise.
* i386-linux-tdep.c (i386_linux_init_abi): Likewise.
* i386-tdep.c (i386_gdbarch_init): Likewise.
* mips-linux-tdep.c (mips_linux_init_abi): Likewise.
* mips-tdep.c (mips_gdbarch_init): Likewise.
* nds32-tdep.c (nds32_gdbarch_init): Likewise.
* rs6000-tdep.c (rs6000_gdbarch_init): Likewise.
* ppc-linux-tdep.c (ppu2spu_sniffer): Use `info.id' rather than
`info.tdep_info'.
(ppc_linux_init_abi): Use `info.tdesc_data' rather than
`info.tdep_info'.
* sparc-tdep.c (sparc32_gdbarch_init): Likewise.
* spu-multiarch.c (spu_gdbarch): Use `info.id' rather than
`info.tdep_info'.
* spu-tdep.c (spu_gdbarch_init): Likewise.
* gdbarch.h: Regenerate.
This commit is contained in:
parent
16eb6b2db4
commit
0dba2a6c09
@ -1,3 +1,26 @@
|
||||
2017-08-07 Maciej W. Rozycki <macro@imgtec.com>
|
||||
|
||||
* gdbarch.sh (gdbarch_info): Replace the `tdep_info' member with
|
||||
a union of `tdep_info', `tdesc_data' and `id'.
|
||||
* aarch64-tdep.c (aarch64_gdbarch_init): Use `info.tdesc_data'
|
||||
rather than `info.tdep_info'.
|
||||
* amd64-linux-tdep.c (amd64_linux_init_abi): Likewise.
|
||||
* i386-linux-tdep.c (i386_linux_init_abi): Likewise.
|
||||
* i386-tdep.c (i386_gdbarch_init): Likewise.
|
||||
* mips-linux-tdep.c (mips_linux_init_abi): Likewise.
|
||||
* mips-tdep.c (mips_gdbarch_init): Likewise.
|
||||
* nds32-tdep.c (nds32_gdbarch_init): Likewise.
|
||||
* rs6000-tdep.c (rs6000_gdbarch_init): Likewise.
|
||||
* ppc-linux-tdep.c (ppu2spu_sniffer): Use `info.id' rather than
|
||||
`info.tdep_info'.
|
||||
(ppc_linux_init_abi): Use `info.tdesc_data' rather than
|
||||
`info.tdep_info'.
|
||||
* sparc-tdep.c (sparc32_gdbarch_init): Likewise.
|
||||
* spu-multiarch.c (spu_gdbarch): Use `info.id' rather than
|
||||
`info.tdep_info'.
|
||||
* spu-tdep.c (spu_gdbarch_init): Likewise.
|
||||
* gdbarch.h: Regenerate.
|
||||
|
||||
2017-08-07 Leszek Swirski <leszeks@google.com>
|
||||
|
||||
* dwarf2read.c (dwarf2_string_attr): Allow DW_FORM_GNU_strp_alt.
|
||||
|
@ -2997,7 +2997,7 @@ aarch64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
|
||||
/* Hook in the ABI-specific overrides, if they have been registered. */
|
||||
info.target_desc = tdesc;
|
||||
info.tdep_info = (void *) tdesc_data;
|
||||
info.tdesc_data = tdesc_data;
|
||||
gdbarch_init_osabi (info, gdbarch);
|
||||
|
||||
dwarf2_frame_set_init_reg (gdbarch, aarch64_dwarf2_frame_init_reg);
|
||||
|
@ -1863,8 +1863,7 @@ static void
|
||||
amd64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
struct tdesc_arch_data *tdesc_data
|
||||
= (struct tdesc_arch_data *) info.tdep_info;
|
||||
struct tdesc_arch_data *tdesc_data = info.tdesc_data;
|
||||
const struct tdesc_feature *feature;
|
||||
int valid_p;
|
||||
|
||||
@ -2077,8 +2076,7 @@ static void
|
||||
amd64_x32_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
struct tdesc_arch_data *tdesc_data
|
||||
= (struct tdesc_arch_data *) info.tdep_info;
|
||||
struct tdesc_arch_data *tdesc_data = info.tdesc_data;
|
||||
const struct tdesc_feature *feature;
|
||||
int valid_p;
|
||||
|
||||
|
@ -1647,7 +1647,21 @@ struct gdbarch_info
|
||||
bfd *abfd;
|
||||
|
||||
/* Use default: NULL (ZERO). */
|
||||
void *tdep_info;
|
||||
union
|
||||
{
|
||||
/* Architecture-specific information. The generic form for targets
|
||||
that have extra requirements. */
|
||||
struct gdbarch_tdep_info *tdep_info;
|
||||
|
||||
/* Architecture-specific target description data. Numerous targets
|
||||
need only this, so give them an easy way to hold it. */
|
||||
struct tdesc_arch_data *tdesc_data;
|
||||
|
||||
/* SPU file system ID. This is a single integer, so using the
|
||||
generic form would only complicate code. Other targets may
|
||||
reuse this member if suitable. */
|
||||
int *id;
|
||||
};
|
||||
|
||||
/* Use default: GDB_OSABI_UNINITIALIZED (-1). */
|
||||
enum gdb_osabi osabi;
|
||||
|
@ -1474,7 +1474,21 @@ struct gdbarch_info
|
||||
bfd *abfd;
|
||||
|
||||
/* Use default: NULL (ZERO). */
|
||||
void *tdep_info;
|
||||
union
|
||||
{
|
||||
/* Architecture-specific information. The generic form for targets
|
||||
that have extra requirements. */
|
||||
struct gdbarch_tdep_info *tdep_info;
|
||||
|
||||
/* Architecture-specific target description data. Numerous targets
|
||||
need only this, so give them an easy way to hold it. */
|
||||
struct tdesc_arch_data *tdesc_data;
|
||||
|
||||
/* SPU file system ID. This is a single integer, so using the
|
||||
generic form would only complicate code. Other targets may
|
||||
reuse this member if suitable. */
|
||||
int *id;
|
||||
};
|
||||
|
||||
/* Use default: GDB_OSABI_UNINITIALIZED (-1). */
|
||||
enum gdb_osabi osabi;
|
||||
|
@ -855,8 +855,7 @@ i386_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
const struct target_desc *tdesc = info.target_desc;
|
||||
struct tdesc_arch_data *tdesc_data
|
||||
= (struct tdesc_arch_data *) info.tdep_info;
|
||||
struct tdesc_arch_data *tdesc_data = info.tdesc_data;
|
||||
const struct tdesc_feature *feature;
|
||||
int valid_p;
|
||||
|
||||
|
@ -8604,7 +8604,7 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
/* Hook in ABI-specific overrides, if they have been registered.
|
||||
Note: If INFO specifies a 64 bit arch, this is where we turn
|
||||
a 32-bit i386 into a 64-bit amd64. */
|
||||
info.tdep_info = tdesc_data;
|
||||
info.tdesc_data = tdesc_data;
|
||||
gdbarch_init_osabi (info, gdbarch);
|
||||
|
||||
if (!i386_validate_tdesc_p (tdep, tdesc_data))
|
||||
|
@ -1616,8 +1616,7 @@ mips_linux_init_abi (struct gdbarch_info info,
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
enum mips_abi abi = mips_abi (gdbarch);
|
||||
struct tdesc_arch_data *tdesc_data
|
||||
= (struct tdesc_arch_data *) info.tdep_info;
|
||||
struct tdesc_arch_data *tdesc_data = info.tdesc_data;
|
||||
|
||||
linux_init_abi (info, gdbarch);
|
||||
|
||||
|
@ -8785,7 +8785,7 @@ mips_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
mips_register_g_packet_guesses (gdbarch);
|
||||
|
||||
/* Hook in OS ABI-specific overrides, if they have been registered. */
|
||||
info.tdep_info = tdesc_data;
|
||||
info.tdesc_data = tdesc_data;
|
||||
gdbarch_init_osabi (info, gdbarch);
|
||||
|
||||
/* The hook may have adjusted num_regs, fetch the final value and
|
||||
|
@ -2134,7 +2134,7 @@ nds32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
nds32_add_reggroups (gdbarch);
|
||||
|
||||
/* Hook in ABI-specific overrides, if they have been registered. */
|
||||
info.tdep_info = (void *) tdesc_data;
|
||||
info.tdesc_data = tdesc_data;
|
||||
gdbarch_init_osabi (info, gdbarch);
|
||||
|
||||
/* Override tdesc_register callbacks for system registers. */
|
||||
|
@ -1350,7 +1350,7 @@ ppu2spu_sniffer (const struct frame_unwind *self,
|
||||
info.bfd_arch_info = bfd_lookup_arch (bfd_arch_spu, bfd_mach_spu);
|
||||
info.byte_order = BFD_ENDIAN_BIG;
|
||||
info.osabi = GDB_OSABI_LINUX;
|
||||
info.tdep_info = &data.id;
|
||||
info.id = &data.id;
|
||||
data.gdbarch = gdbarch_find_by_info (info);
|
||||
if (!data.gdbarch)
|
||||
return 0;
|
||||
@ -1650,8 +1650,7 @@ ppc_linux_init_abi (struct gdbarch_info info,
|
||||
struct gdbarch *gdbarch)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
struct tdesc_arch_data *tdesc_data
|
||||
= (struct tdesc_arch_data *) info.tdep_info;
|
||||
struct tdesc_arch_data *tdesc_data = info.tdesc_data;
|
||||
static const char *const stap_integer_prefixes[] = { "i", NULL };
|
||||
static const char *const stap_register_indirection_prefixes[] = { "(",
|
||||
NULL };
|
||||
|
@ -6529,7 +6529,7 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
|
||||
/* Hook in ABI-specific overrides, if they have been registered. */
|
||||
info.target_desc = tdesc;
|
||||
info.tdep_info = tdesc_data;
|
||||
info.tdesc_data = tdesc_data;
|
||||
gdbarch_init_osabi (info, gdbarch);
|
||||
|
||||
switch (info.osabi)
|
||||
|
@ -1906,7 +1906,7 @@ sparc32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
}
|
||||
|
||||
/* Target description may have changed. */
|
||||
info.tdep_info = tdesc_data;
|
||||
info.tdesc_data = tdesc_data;
|
||||
tdesc_use_registers (gdbarch, tdesc, tdesc_data);
|
||||
}
|
||||
|
||||
|
@ -107,7 +107,7 @@ spu_gdbarch (int spufs_fd)
|
||||
info.bfd_arch_info = bfd_lookup_arch (bfd_arch_spu, bfd_mach_spu);
|
||||
info.byte_order = BFD_ENDIAN_BIG;
|
||||
info.osabi = GDB_OSABI_LINUX;
|
||||
info.tdep_info = &spufs_fd;
|
||||
info.id = &spufs_fd;
|
||||
return gdbarch_find_by_info (info);
|
||||
}
|
||||
|
||||
|
@ -2668,8 +2668,8 @@ spu_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
int id = -1;
|
||||
|
||||
/* Which spufs ID was requested as address space? */
|
||||
if (info.tdep_info)
|
||||
id = *(int *)info.tdep_info;
|
||||
if (info.id)
|
||||
id = *info.id;
|
||||
/* For objfile architectures of SPU solibs, decode the ID from the name.
|
||||
This assumes the filename convention employed by solib-spu.c. */
|
||||
else if (info.abfd)
|
||||
|
Loading…
Reference in New Issue
Block a user