gdb: remove gdbarch_info_init

While reviewing another patch, I realized that gdbarch_info_init could
easily be removed in favor of initializing gdbarch_info fields directly
in the struct declaration.  The only odd part is the union.  I don't
know if it's actually important for it to be zero-initialized, but I
presume it is.  I added a constructor to gdbarch_info to take care of
that.  A proper solution would be to use std::variant.  Or, these could
also be separate fields, the little extra space required wouldn't
matter.

gdb/ChangeLog:

	* gdbarch.sh (struct gdbarch_info): Initialize fields, add
	constructor.
	* gdbarch.h: Re-generate.
	* arch-utils.h (gdbarch_info_init): Remove, delete all usages.
	* arch-utils.c (gdbarch_info_init): Remove.

Change-Id: I7502e08fe0f278d84eef1667a072e8a97bda5ab5
This commit is contained in:
Simon Marchi
2021-06-28 11:49:22 -04:00
parent c87c999c51
commit b447dd03c1
18 changed files with 43 additions and 92 deletions

View File

@@ -1,3 +1,11 @@
2021-06-28 Simon Marchi <simon.marchi@polymtl.ca>
* gdbarch.sh (struct gdbarch_info): Initialize fields, add
constructor.
* gdbarch.h: Re-generate.
* arch-utils.h (gdbarch_info_init): Remove, delete all usages.
* arch-utils.c (gdbarch_info_init): Remove.
2021-06-28 Simon Marchi <simon.marchi@polymtl.ca> 2021-06-28 Simon Marchi <simon.marchi@polymtl.ca>
* gdbarch.sh (struct gdbarch_info) <tdep_info>: Remove. * gdbarch.sh (struct gdbarch_info) <tdep_info>: Remove.

View File

@@ -1060,7 +1060,6 @@ aarch64_linux_nat_target::thread_architecture (ptid_t ptid)
new one), stashing the vector length inside id. Use -1 for when SVE new one), stashing the vector length inside id. Use -1 for when SVE
unavailable, to distinguish from an unset value of 0. */ unavailable, to distinguish from an unset value of 0. */
struct gdbarch_info info; struct gdbarch_info info;
gdbarch_info_init (&info);
info.bfd_arch_info = bfd_lookup_arch (bfd_arch_aarch64, bfd_mach_aarch64); info.bfd_arch_info = bfd_lookup_arch (bfd_arch_aarch64, bfd_mach_aarch64);
info.id = (int *) (vq == 0 ? -1 : vq); info.id = (int *) (vq == 0 ? -1 : vq);
return gdbarch_find_by_info (info); return gdbarch_find_by_info (info);

View File

@@ -627,7 +627,6 @@ aarch64_analyze_prologue_test (void)
{ {
struct gdbarch_info info; struct gdbarch_info info;
gdbarch_info_init (&info);
info.bfd_arch_info = bfd_scan_arch ("aarch64"); info.bfd_arch_info = bfd_scan_arch ("aarch64");
struct gdbarch *gdbarch = gdbarch_find_by_info (info); struct gdbarch *gdbarch = gdbarch_find_by_info (info);
@@ -4559,7 +4558,6 @@ aarch64_process_record_test (void)
struct gdbarch_info info; struct gdbarch_info info;
uint32_t ret; uint32_t ret;
gdbarch_info_init (&info);
info.bfd_arch_info = bfd_scan_arch ("aarch64"); info.bfd_arch_info = bfd_scan_arch ("aarch64");
struct gdbarch *gdbarch = gdbarch_find_by_info (info); struct gdbarch *gdbarch = gdbarch_find_by_info (info);

View File

@@ -389,8 +389,6 @@ set_endian (const char *ignore_args, int from_tty, struct cmd_list_element *c)
{ {
struct gdbarch_info info; struct gdbarch_info info;
gdbarch_info_init (&info);
if (set_endian_string == endian_auto) if (set_endian_string == endian_auto)
{ {
target_byte_order_user = BFD_ENDIAN_UNKNOWN; target_byte_order_user = BFD_ENDIAN_UNKNOWN;
@@ -548,8 +546,6 @@ set_architecture (const char *ignore_args,
{ {
struct gdbarch_info info; struct gdbarch_info info;
gdbarch_info_init (&info);
if (strcmp (set_architecture_string, "auto") == 0) if (strcmp (set_architecture_string, "auto") == 0)
{ {
target_architecture_user = NULL; target_architecture_user = NULL;
@@ -630,7 +626,6 @@ struct gdbarch *
gdbarch_from_bfd (bfd *abfd) gdbarch_from_bfd (bfd *abfd)
{ {
struct gdbarch_info info; struct gdbarch_info info;
gdbarch_info_init (&info);
info.abfd = abfd; info.abfd = abfd;
return gdbarch_find_by_info (info); return gdbarch_find_by_info (info);
@@ -645,7 +640,6 @@ set_gdbarch_from_file (bfd *abfd)
struct gdbarch_info info; struct gdbarch_info info;
struct gdbarch *gdbarch; struct gdbarch *gdbarch;
gdbarch_info_init (&info);
info.abfd = abfd; info.abfd = abfd;
info.target_desc = target_current_description (); info.target_desc = target_current_description ();
gdbarch = gdbarch_find_by_info (info); gdbarch = gdbarch_find_by_info (info);
@@ -679,10 +673,6 @@ void
initialize_current_architecture (void) initialize_current_architecture (void)
{ {
const char **arches = gdbarch_printable_names (); const char **arches = gdbarch_printable_names ();
struct gdbarch_info info;
/* determine a default architecture and byte order. */
gdbarch_info_init (&info);
/* Find a default architecture. */ /* Find a default architecture. */
if (default_bfd_arch == NULL) if (default_bfd_arch == NULL)
@@ -705,6 +695,7 @@ initialize_current_architecture (void)
_("initialize_current_architecture: Arch not found")); _("initialize_current_architecture: Arch not found"));
} }
gdbarch_info info;
info.bfd_arch_info = default_bfd_arch; info.bfd_arch_info = default_bfd_arch;
/* Take several guesses at a byte order. */ /* Take several guesses at a byte order. */
@@ -769,21 +760,6 @@ initialize_current_architecture (void)
} }
} }
/* Initialize a gdbarch info to values that will be automatically
overridden. Note: Originally, this ``struct info'' was initialized
using memset(0). Unfortunately, that ran into problems, namely
BFD_ENDIAN_BIG is zero. An explicit initialization function that
can explicitly set each field to a well defined value is used. */
void
gdbarch_info_init (struct gdbarch_info *info)
{
memset (info, 0, sizeof (struct gdbarch_info));
info->byte_order = BFD_ENDIAN_UNKNOWN;
info->byte_order_for_code = info->byte_order;
}
/* Similar to init, but this time fill in the blanks. Information is /* Similar to init, but this time fill in the blanks. Information is
obtained from the global "set ..." options and explicitly obtained from the global "set ..." options and explicitly
initialized INFO fields. */ initialized INFO fields. */

View File

@@ -196,12 +196,6 @@ extern enum bfd_endian selected_byte_order (void);
was explicitly selected. */ was explicitly selected. */
extern const char *selected_architecture_name (void); extern const char *selected_architecture_name (void);
/* Initialize a ``struct info''. Can't use memset(0) since some
default values are not zero. "fill" takes all available
information and fills in any unspecified fields. */
extern void gdbarch_info_init (struct gdbarch_info *info);
/* Similar to init, but this time fill in the blanks. Information is /* Similar to init, but this time fill in the blanks. Information is
obtained from the global "set ..." options and explicitly obtained from the global "set ..." options and explicitly
initialized INFO fields. */ initialized INFO fields. */

View File

@@ -8403,15 +8403,12 @@ arm_skip_stub (struct frame_info *frame, CORE_ADDR pc)
static void static void
arm_update_current_architecture (void) arm_update_current_architecture (void)
{ {
struct gdbarch_info info;
/* If the current architecture is not ARM, we have nothing to do. */ /* If the current architecture is not ARM, we have nothing to do. */
if (gdbarch_bfd_arch_info (target_gdbarch ())->arch != bfd_arch_arm) if (gdbarch_bfd_arch_info (target_gdbarch ())->arch != bfd_arch_arm)
return; return;
/* Update the architecture. */ /* Update the architecture. */
gdbarch_info_init (&info); gdbarch_info info;
if (!gdbarch_update_p (info)) if (!gdbarch_update_p (info))
internal_error (__FILE__, __LINE__, _("could not update architecture")); internal_error (__FILE__, __LINE__, _("could not update architecture"));
} }
@@ -13237,7 +13234,6 @@ static void
arm_record_test (void) arm_record_test (void)
{ {
struct gdbarch_info info; struct gdbarch_info info;
gdbarch_info_init (&info);
info.bfd_arch_info = bfd_scan_arch ("arm"); info.bfd_arch_info = bfd_scan_arch ("arm");
struct gdbarch *gdbarch = gdbarch_find_by_info (info); struct gdbarch *gdbarch = gdbarch_find_by_info (info);
@@ -13329,7 +13325,6 @@ arm_analyze_prologue_test ()
for (bfd_endian endianness : {BFD_ENDIAN_LITTLE, BFD_ENDIAN_BIG}) for (bfd_endian endianness : {BFD_ENDIAN_LITTLE, BFD_ENDIAN_BIG})
{ {
struct gdbarch_info info; struct gdbarch_info info;
gdbarch_info_init (&info);
info.byte_order = endianness; info.byte_order = endianness;
info.byte_order_for_code = endianness; info.byte_order_for_code = endianness;
info.bfd_arch_info = bfd_scan_arch ("arm"); info.bfd_arch_info = bfd_scan_arch ("arm");

View File

@@ -165,7 +165,6 @@ core_target::core_target ()
if (tdesc != nullptr) if (tdesc != nullptr)
{ {
struct gdbarch_info info; struct gdbarch_info info;
gdbarch_info_init (&info);
info.abfd = core_bfd; info.abfd = core_bfd;
info.target_desc = tdesc; info.target_desc = tdesc;
m_core_gdbarch = gdbarch_find_by_info (info); m_core_gdbarch = gdbarch_find_by_info (info);

View File

@@ -3879,7 +3879,6 @@ set_cris_version (const char *ignore_args, int from_tty,
usr_cmd_cris_version_valid = 1; usr_cmd_cris_version_valid = 1;
/* Update the current architecture, if needed. */ /* Update the current architecture, if needed. */
gdbarch_info_init (&info);
if (!gdbarch_update_p (info)) if (!gdbarch_update_p (info))
internal_error (__FILE__, __LINE__, internal_error (__FILE__, __LINE__,
_("cris_gdbarch_update: failed to update architecture.")); _("cris_gdbarch_update: failed to update architecture."));
@@ -3892,7 +3891,6 @@ set_cris_mode (const char *ignore_args, int from_tty,
struct gdbarch_info info; struct gdbarch_info info;
/* Update the current architecture, if needed. */ /* Update the current architecture, if needed. */
gdbarch_info_init (&info);
if (!gdbarch_update_p (info)) if (!gdbarch_update_p (info))
internal_error (__FILE__, __LINE__, internal_error (__FILE__, __LINE__,
"cris_gdbarch_update: failed to update architecture."); "cris_gdbarch_update: failed to update architecture.");
@@ -3905,7 +3903,6 @@ set_cris_dwarf2_cfi (const char *ignore_args, int from_tty,
struct gdbarch_info info; struct gdbarch_info info;
/* Update the current architecture, if needed. */ /* Update the current architecture, if needed. */
gdbarch_info_init (&info);
if (!gdbarch_update_p (info)) if (!gdbarch_update_p (info))
internal_error (__FILE__, __LINE__, internal_error (__FILE__, __LINE__,
_("cris_gdbarch_update: failed to update architecture.")); _("cris_gdbarch_update: failed to update architecture."));

View File

@@ -1781,18 +1781,20 @@ struct gdbarch_list
struct gdbarch_info struct gdbarch_info
{ {
/* Use default: NULL (ZERO). */ gdbarch_info ()
const struct bfd_arch_info *bfd_arch_info; /* Ensure the union is zero-initialized. Relies on the fact that there's
no member larger than TDESC_DATA. */
: tdesc_data ()
{}
/* Use default: BFD_ENDIAN_UNKNOWN (NB: is not ZERO). */ const struct bfd_arch_info *bfd_arch_info = nullptr;
enum bfd_endian byte_order;
enum bfd_endian byte_order_for_code; enum bfd_endian byte_order = BFD_ENDIAN_UNKNOWN;
/* Use default: NULL (ZERO). */ enum bfd_endian byte_order_for_code = BFD_ENDIAN_UNKNOWN;
bfd *abfd;
bfd *abfd = nullptr;
/* Use default: NULL (ZERO). */
union union
{ {
/* Architecture-specific target description data. Numerous targets /* Architecture-specific target description data. Numerous targets
@@ -1805,11 +1807,9 @@ struct gdbarch_info
int *id; int *id;
}; };
/* Use default: GDB_OSABI_UNINITIALIZED (-1). */ enum gdb_osabi osabi = GDB_OSABI_UNKNOWN;
enum gdb_osabi osabi;
/* Use default: NULL (ZERO). */ const struct target_desc *target_desc = nullptr;
const struct target_desc *target_desc;
}; };
typedef struct gdbarch *(gdbarch_init_ftype) (struct gdbarch_info info, struct gdbarch_list *arches); typedef struct gdbarch *(gdbarch_init_ftype) (struct gdbarch_info info, struct gdbarch_list *arches);
@@ -1883,8 +1883,8 @@ extern int gdbarch_update_p (struct gdbarch_info info);
/* Helper function. Find an architecture matching info. /* Helper function. Find an architecture matching info.
INFO should be initialized using gdbarch_info_init, relevant fields INFO should have relevant fields set, and then finished using
set, and then finished using gdbarch_info_fill. gdbarch_info_fill.
Returns the corresponding architecture, or NULL if no matching Returns the corresponding architecture, or NULL if no matching
architecture was found. */ architecture was found. */

View File

@@ -1533,18 +1533,20 @@ struct gdbarch_list
struct gdbarch_info struct gdbarch_info
{ {
/* Use default: NULL (ZERO). */ gdbarch_info ()
const struct bfd_arch_info *bfd_arch_info; /* Ensure the union is zero-initialized. Relies on the fact that there's
no member larger than TDESC_DATA. */
: tdesc_data ()
{}
/* Use default: BFD_ENDIAN_UNKNOWN (NB: is not ZERO). */ const struct bfd_arch_info *bfd_arch_info = nullptr;
enum bfd_endian byte_order;
enum bfd_endian byte_order_for_code; enum bfd_endian byte_order = BFD_ENDIAN_UNKNOWN;
/* Use default: NULL (ZERO). */ enum bfd_endian byte_order_for_code = BFD_ENDIAN_UNKNOWN;
bfd *abfd;
bfd *abfd = nullptr;
/* Use default: NULL (ZERO). */
union union
{ {
/* Architecture-specific target description data. Numerous targets /* Architecture-specific target description data. Numerous targets
@@ -1557,11 +1559,9 @@ struct gdbarch_info
int *id; int *id;
}; };
/* Use default: GDB_OSABI_UNINITIALIZED (-1). */ enum gdb_osabi osabi = GDB_OSABI_UNKNOWN;
enum gdb_osabi osabi;
/* Use default: NULL (ZERO). */ const struct target_desc *target_desc = nullptr;
const struct target_desc *target_desc;
}; };
typedef struct gdbarch *(gdbarch_init_ftype) (struct gdbarch_info info, struct gdbarch_list *arches); typedef struct gdbarch *(gdbarch_init_ftype) (struct gdbarch_info info, struct gdbarch_list *arches);
@@ -1637,8 +1637,8 @@ extern int gdbarch_update_p (struct gdbarch_info info);
/* Helper function. Find an architecture matching info. /* Helper function. Find an architecture matching info.
INFO should be initialized using gdbarch_info_init, relevant fields INFO should have relevant fields set, and then finished using
set, and then finished using gdbarch_info_fill. gdbarch_info_fill.
Returns the corresponding architecture, or NULL if no matching Returns the corresponding architecture, or NULL if no matching
architecture was found. */ architecture was found. */

View File

@@ -479,7 +479,6 @@ darwin_check_osabi (darwin_inferior *inf, thread_t thread)
{ {
/* Attaching to a process. Let's figure out what kind it is. */ /* Attaching to a process. Let's figure out what kind it is. */
x86_thread_state_t gp_regs; x86_thread_state_t gp_regs;
struct gdbarch_info info;
unsigned int gp_count = x86_THREAD_STATE_COUNT; unsigned int gp_count = x86_THREAD_STATE_COUNT;
kern_return_t ret; kern_return_t ret;
@@ -491,7 +490,7 @@ darwin_check_osabi (darwin_inferior *inf, thread_t thread)
return; return;
} }
gdbarch_info_init (&info); gdbarch_info info;
gdbarch_info_fill (&info); gdbarch_info_fill (&info);
info.byte_order = gdbarch_byte_order (target_gdbarch ()); info.byte_order = gdbarch_byte_order (target_gdbarch ());
info.osabi = GDB_OSABI_DARWIN; info.osabi = GDB_OSABI_DARWIN;

View File

@@ -747,7 +747,6 @@ add_inferior_with_spaces (void)
struct address_space *aspace; struct address_space *aspace;
struct program_space *pspace; struct program_space *pspace;
struct inferior *inf; struct inferior *inf;
struct gdbarch_info info;
/* If all inferiors share an address space on this system, this /* If all inferiors share an address space on this system, this
doesn't really return a new address space; otherwise, it doesn't really return a new address space; otherwise, it
@@ -760,7 +759,7 @@ add_inferior_with_spaces (void)
/* Setup the inferior's initial arch, based on information obtained /* Setup the inferior's initial arch, based on information obtained
from the global "set ..." options. */ from the global "set ..." options. */
gdbarch_info_init (&info); gdbarch_info info;
inf->gdbarch = gdbarch_find_by_info (info); inf->gdbarch = gdbarch_find_by_info (info);
/* The "set ..." options reject invalid settings, so we should /* The "set ..." options reject invalid settings, so we should
always have a valid arch by now. */ always have a valid arch by now. */

View File

@@ -865,7 +865,6 @@ set_mips64_transfers_32bit_regs (const char *args, int from_tty,
struct cmd_list_element *c) struct cmd_list_element *c)
{ {
struct gdbarch_info info; struct gdbarch_info info;
gdbarch_info_init (&info);
/* FIXME: cagney/2003-11-15: Should be setting a field in "info" /* FIXME: cagney/2003-11-15: Should be setting a field in "info"
instead of relying on globals. Doing that would let generic code instead of relying on globals. Doing that would let generic code
handle the search for this specific architecture. */ handle the search for this specific architecture. */
@@ -6918,7 +6917,6 @@ static void
set_mipsfpu_single_command (const char *args, int from_tty) set_mipsfpu_single_command (const char *args, int from_tty)
{ {
struct gdbarch_info info; struct gdbarch_info info;
gdbarch_info_init (&info);
mips_fpu_type = MIPS_FPU_SINGLE; mips_fpu_type = MIPS_FPU_SINGLE;
mips_fpu_type_auto = 0; mips_fpu_type_auto = 0;
/* FIXME: cagney/2003-11-15: Should be setting a field in "info" /* FIXME: cagney/2003-11-15: Should be setting a field in "info"
@@ -6932,7 +6930,6 @@ static void
set_mipsfpu_double_command (const char *args, int from_tty) set_mipsfpu_double_command (const char *args, int from_tty)
{ {
struct gdbarch_info info; struct gdbarch_info info;
gdbarch_info_init (&info);
mips_fpu_type = MIPS_FPU_DOUBLE; mips_fpu_type = MIPS_FPU_DOUBLE;
mips_fpu_type_auto = 0; mips_fpu_type_auto = 0;
/* FIXME: cagney/2003-11-15: Should be setting a field in "info" /* FIXME: cagney/2003-11-15: Should be setting a field in "info"
@@ -6946,7 +6943,6 @@ static void
set_mipsfpu_none_command (const char *args, int from_tty) set_mipsfpu_none_command (const char *args, int from_tty)
{ {
struct gdbarch_info info; struct gdbarch_info info;
gdbarch_info_init (&info);
mips_fpu_type = MIPS_FPU_NONE; mips_fpu_type = MIPS_FPU_NONE;
mips_fpu_type_auto = 0; mips_fpu_type_auto = 0;
/* FIXME: cagney/2003-11-15: Should be setting a field in "info" /* FIXME: cagney/2003-11-15: Should be setting a field in "info"
@@ -8790,7 +8786,6 @@ mips_abi_update (const char *ignore_args,
/* Force the architecture to update, and (if it's a MIPS architecture) /* Force the architecture to update, and (if it's a MIPS architecture)
mips_gdbarch_init will take care of the rest. */ mips_gdbarch_init will take care of the rest. */
gdbarch_info_init (&info);
gdbarch_update_p (info); gdbarch_update_p (info);
} }

View File

@@ -598,8 +598,6 @@ generic_elf_osabi_sniffer (bfd *abfd)
static void static void
set_osabi (const char *args, int from_tty, struct cmd_list_element *c) set_osabi (const char *args, int from_tty, struct cmd_list_element *c)
{ {
struct gdbarch_info info;
if (strcmp (set_osabi_string, "auto") == 0) if (strcmp (set_osabi_string, "auto") == 0)
user_osabi_state = osabi_auto; user_osabi_state = osabi_auto;
else if (strcmp (set_osabi_string, "default") == 0) else if (strcmp (set_osabi_string, "default") == 0)
@@ -630,7 +628,7 @@ set_osabi (const char *args, int from_tty, struct cmd_list_element *c)
/* NOTE: At some point (true multiple architectures) we'll need to be more /* NOTE: At some point (true multiple architectures) we'll need to be more
graceful here. */ graceful here. */
gdbarch_info_init (&info); gdbarch_info info;
if (! gdbarch_update_p (info)) if (! gdbarch_update_p (info))
internal_error (__FILE__, __LINE__, _("Updating OS ABI failed.")); internal_error (__FILE__, __LINE__, _("Updating OS ABI failed."));
} }

View File

@@ -558,7 +558,6 @@ rs6000_nat_target::create_inferior (const char *exec_file,
enum bfd_architecture arch; enum bfd_architecture arch;
unsigned long mach; unsigned long mach;
bfd abfd; bfd abfd;
struct gdbarch_info info;
inf_ptrace_target::create_inferior (exec_file, allargs, env, from_tty); inf_ptrace_target::create_inferior (exec_file, allargs, env, from_tty);
@@ -593,7 +592,7 @@ rs6000_nat_target::create_inferior (const char *exec_file,
bfd_default_set_arch_mach (&abfd, arch, mach); bfd_default_set_arch_mach (&abfd, arch, mach);
gdbarch_info_init (&info); gdbarch_info info;
info.bfd_arch_info = bfd_get_arch_info (&abfd); info.bfd_arch_info = bfd_get_arch_info (&abfd);
info.abfd = current_program_space->exec_bfd (); info.abfd = current_program_space->exec_bfd ();

View File

@@ -7260,7 +7260,6 @@ powerpc_set_soft_float (const char *args, int from_tty,
struct gdbarch_info info; struct gdbarch_info info;
/* Update the architecture. */ /* Update the architecture. */
gdbarch_info_init (&info);
if (!gdbarch_update_p (info)) if (!gdbarch_update_p (info))
internal_error (__FILE__, __LINE__, _("could not update architecture")); internal_error (__FILE__, __LINE__, _("could not update architecture"));
} }
@@ -7269,7 +7268,6 @@ static void
powerpc_set_vector_abi (const char *args, int from_tty, powerpc_set_vector_abi (const char *args, int from_tty,
struct cmd_list_element *c) struct cmd_list_element *c)
{ {
struct gdbarch_info info;
int vector_abi; int vector_abi;
for (vector_abi = POWERPC_VEC_AUTO; for (vector_abi = POWERPC_VEC_AUTO;
@@ -7287,7 +7285,7 @@ powerpc_set_vector_abi (const char *args, int from_tty,
powerpc_vector_abi_string); powerpc_vector_abi_string);
/* Update the architecture. */ /* Update the architecture. */
gdbarch_info_init (&info); gdbarch_info info;
if (!gdbarch_update_p (info)) if (!gdbarch_update_p (info))
internal_error (__FILE__, __LINE__, _("could not update architecture")); internal_error (__FILE__, __LINE__, _("could not update architecture"));
} }

View File

@@ -64,7 +64,6 @@ struct gdbarch_selftest : public selftest
{ {
struct gdbarch_info info; struct gdbarch_info info;
gdbarch_info_init (&info);
info.bfd_arch_info = bfd_scan_arch (arches[i]); info.bfd_arch_info = bfd_scan_arch (arches[i]);
struct gdbarch *gdbarch = gdbarch_find_by_info (info); struct gdbarch *gdbarch = gdbarch_find_by_info (info);

View File

@@ -555,7 +555,6 @@ target_find_description (void)
{ {
struct gdbarch_info info; struct gdbarch_info info;
gdbarch_info_init (&info);
info.target_desc = tdesc_info->tdesc; info.target_desc = tdesc_info->tdesc;
if (!gdbarch_update_p (info)) if (!gdbarch_update_p (info))
warning (_("Architecture rejected target-supplied description")); warning (_("Architecture rejected target-supplied description"));
@@ -592,7 +591,6 @@ target_clear_description (void)
tdesc_info->tdesc = nullptr; tdesc_info->tdesc = nullptr;
gdbarch_info info; gdbarch_info info;
gdbarch_info_init (&info);
if (!gdbarch_update_p (info)) if (!gdbarch_update_p (info))
internal_error (__FILE__, __LINE__, internal_error (__FILE__, __LINE__,
_("Could not remove target-supplied description")); _("Could not remove target-supplied description"));