+2001-12-19 Andrew Cagney <ac131313@redhat.com>
+
+ * arch-utils.h (gdbarch_info_init): Declare.
+ * arch-utils.c: Include "arch-utils.h".
+ (gdbarch_info_init): Define.
+ (set_endian, set_architecture, set_gdbarch_from_file)
+ (initialize_current_architecture): Use gdbarch_info_init.
+ * rs6000-nat.c (set_host_arch): Ditto.
+ * cris-tdep.c (cris_version_update, cris_mode_update)
+ (cris_abi_update): Ditto.
+
2001-12-19 Jim Blandy <jimb@redhat.com>
* c-lang.c (c_emit_char): Print ASCII 11 as '\v', to match
#include "defs.h"
#if GDB_MULTI_ARCH
+#include "arch-utils.h"
#include "gdbcmd.h"
#include "inferior.h" /* enum CALL_DUMMY_LOCATION et.al. */
#else
if (GDB_MULTI_ARCH)
{
struct gdbarch_info info;
- memset (&info, 0, sizeof info);
+ gdbarch_info_init (&info);
info.byte_order = BFD_ENDIAN_LITTLE;
if (! gdbarch_update_p (info))
{
if (GDB_MULTI_ARCH)
{
struct gdbarch_info info;
- memset (&info, 0, sizeof info);
+ gdbarch_info_init (&info);
info.byte_order = BIG_ENDIAN;
if (! gdbarch_update_p (info))
{
else if (GDB_MULTI_ARCH)
{
struct gdbarch_info info;
- memset (&info, 0, sizeof info);
+ gdbarch_info_init (&info);
info.bfd_arch_info = bfd_scan_arch (set_architecture_string);
if (info.bfd_arch_info == NULL)
internal_error (__FILE__, __LINE__,
if (GDB_MULTI_ARCH)
{
struct gdbarch_info info;
- memset (&info, 0, sizeof info);
+ gdbarch_info_init (&info);
info.abfd = abfd;
if (! gdbarch_update_p (info))
error ("Architecture of file not recognized.\n");
/* determine a default architecture and byte order. */
struct gdbarch_info info;
- memset (&info, 0, sizeof (info));
+ gdbarch_info_init (&info);
/* Find a default architecture. */
if (info.bfd_arch_info == NULL
}
+/* Initialize a gdbarch info to values that will be automatically
+ overridden. Note: Originally, this ``struct info'' was initialized
+ using memset(0). Unfortunatly, 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));
+}
+
/* */
extern initialize_file_ftype _initialize_gdbarch_utils;
extern int generic_register_virtual_size (int regnum);
+/* Initialize a ``struct info''. Can't use memset(0) since some
+ default values are not zero. */
+extern void gdbarch_info_init (struct gdbarch_info *info);
+
#endif
usr_cmd_cris_version_valid = 1;
/* Update the current architecture, if needed. */
- memset (&info, 0, sizeof info);
+ gdbarch_info_init (&info);
if (!gdbarch_update_p (info))
internal_error (__FILE__, __LINE__, "cris_gdbarch_update: failed to update architecture.");
}
usr_cmd_cris_mode_valid = 1;
/* Update the current architecture, if needed. */
- memset (&info, 0, sizeof info);
+ gdbarch_info_init (&info);
if (!gdbarch_update_p (info))
internal_error (__FILE__, __LINE__, "cris_gdbarch_update: failed to update architecture.");
}
usr_cmd_cris_abi_valid = 1;
/* Update the current architecture, if needed. */
- memset (&info, 0, sizeof info);
+ gdbarch_info_init (&info);
if (!gdbarch_update_p (info))
internal_error (__FILE__, __LINE__, "cris_gdbarch_update: failed to update architecture.");
}
}
bfd_default_set_arch_mach (&abfd, arch, mach);
- memset (&info, 0, sizeof info);
+ gdbarch_info_init (&info);
info.bfd_arch_info = bfd_get_arch_info (&abfd);
if (!gdbarch_update_p (info))