aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog19
-rw-r--r--gdb/arch-utils.c28
-rw-r--r--gdb/arch-utils.h14
-rw-r--r--gdb/gdbarch.h28
-rwxr-xr-xgdb/gdbarch.sh28
-rw-r--r--gdb/remote-sim.c27
6 files changed, 69 insertions, 75 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 512e6fa..5097bec 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,24 @@
2003-11-13 Andrew Cagney <cagney@redhat.com>
+ * arch-utils.h (selected_architecture_name): Declare.
+ (selected_byte_order): Declare.
+ * arch-utils.c (selected_byte_order): New function.
+ (selected_architecture_name): New function.
+ (target_architecture_auto): Make static.
+ (set_architecture_string): Make static.
+ (target_byte_order): Make static.
+ (target_byte_order_auto): Make static.
+ * gdbarch.sh (TARGET_BYTE_ORDER, TARGET_ARCHITECTURE): Delete
+ non-multi-arch definition.
+ (TARGET_ARCHITECTURE_AUTO, TARGET_BYTE_ORDER_AUTO): Delete.
+ (target_byte_order, target_architecture): Delete declaration.
+ (target_byte_order_auto, target_architecture_auto): Ditto.
+ * gdbarch.h: Re-generate.
+ * remote-sim.c (gdbsim_open): Use "selected_architecture_name" and
+ "selected_byte_order".
+
+2003-11-13 Andrew Cagney <cagney@redhat.com>
+
* ppc-linux-tdep.c (ppc_linux_return_value): Fix parameter order.
2003-11-13 Jim Blandy <jimb@redhat.com>
diff --git a/gdb/arch-utils.c b/gdb/arch-utils.c
index 8d5720c..4234cb6 100644
--- a/gdb/arch-utils.c
+++ b/gdb/arch-utils.c
@@ -380,8 +380,17 @@ default_stabs_argument_has_addr (struct gdbarch *gdbarch, struct type *type)
The choice of initial value is entirely arbitrary. During startup,
the function initialize_current_architecture() updates this value
based on default byte-order information extracted from BFD. */
-int target_byte_order = BFD_ENDIAN_BIG;
-int target_byte_order_auto = 1;
+static int target_byte_order = BFD_ENDIAN_BIG;
+static int target_byte_order_auto = 1;
+
+enum bfd_endian
+selected_byte_order (void)
+{
+ if (target_byte_order_auto)
+ return BFD_ENDIAN_UNKNOWN;
+ else
+ return target_byte_order;
+}
static const char endian_big[] = "big";
static const char endian_little[] = "little";
@@ -400,7 +409,7 @@ static const char *set_endian_string;
static void
show_endian (char *args, int from_tty)
{
- if (TARGET_BYTE_ORDER_AUTO)
+ if (target_byte_order_auto)
printf_unfiltered ("The target endianness is set automatically (currently %s endian)\n",
(TARGET_BYTE_ORDER == BFD_ENDIAN_BIG ? "big" : "little"));
else
@@ -443,9 +452,18 @@ set_endian (char *ignore_args, int from_tty, struct cmd_list_element *c)
enum set_arch { set_arch_auto, set_arch_manual };
-int target_architecture_auto = 1;
+static int target_architecture_auto = 1;
+
+static const char *set_architecture_string;
-const char *set_architecture_string;
+const char *
+selected_architecture_name (void)
+{
+ if (target_architecture_auto)
+ return NULL;
+ else
+ return set_architecture_string;
+}
/* Called if the user enters ``show architecture'' without an
argument. */
diff --git a/gdb/arch-utils.h b/gdb/arch-utils.h
index fbc7aa2..32fbc4d 100644
--- a/gdb/arch-utils.h
+++ b/gdb/arch-utils.h
@@ -149,9 +149,21 @@ extern int default_stabs_argument_has_addr (struct gdbarch *gdbarch,
extern int legacy_register_sim_regno (int regnum);
+/* Return the selected byte order, or BFD_ENDIAN_UNKNOWN if no byte
+ order was explicitly selected. */
+extern enum bfd_endian selected_byte_order (void);
+
+/* Return the selected architecture's name, or NULL if no architecture
+ was explicitly selected. */
+extern const char *selected_architecture_name (void);
+
/* Initialize a ``struct info''. Can't use memset(0) since some
- default values are not zero. */
+ 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);
+extern void gdbarch_info_fill (struct gdbarch *gdbarch,
+ struct gdbarch_info *info);
/* Similar to init, but this time fill in the blanks. Information is
obtained from the specified architecture, global "set ..." options,
diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h
index 3affac5..6901259 100644
--- a/gdb/gdbarch.h
+++ b/gdb/gdbarch.h
@@ -2609,6 +2609,7 @@ extern void set_gdbarch_data (struct gdbarch *gdbarch,
extern void *gdbarch_data (struct gdbarch *gdbarch, struct gdbarch_data *);
+
/* Register per-architecture memory region.
Provide a memory-region swap mechanism. Per-architecture memory
@@ -2627,33 +2628,6 @@ extern void register_gdbarch_swap (void *data, unsigned long size, gdbarch_swap_
-/* The target-system-dependent byte order is dynamic */
-
-extern int target_byte_order;
-#ifndef TARGET_BYTE_ORDER
-#define TARGET_BYTE_ORDER (target_byte_order + 0)
-#endif
-
-extern int target_byte_order_auto;
-#ifndef TARGET_BYTE_ORDER_AUTO
-#define TARGET_BYTE_ORDER_AUTO (target_byte_order_auto + 0)
-#endif
-
-
-
-/* The target-system-dependent BFD architecture is dynamic */
-
-extern int target_architecture_auto;
-#ifndef TARGET_ARCHITECTURE_AUTO
-#define TARGET_ARCHITECTURE_AUTO (target_architecture_auto + 0)
-#endif
-
-extern const struct bfd_arch_info *target_architecture;
-#ifndef TARGET_ARCHITECTURE
-#define TARGET_ARCHITECTURE (target_architecture + 0)
-#endif
-
-
/* Set the dynamic target-system-dependent parameters (architecture,
byte-order, ...) using information found in the BFD */
diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh
index 95db711..29a2efa 100755
--- a/gdb/gdbarch.sh
+++ b/gdb/gdbarch.sh
@@ -1215,6 +1215,7 @@ extern void set_gdbarch_data (struct gdbarch *gdbarch,
extern void *gdbarch_data (struct gdbarch *gdbarch, struct gdbarch_data *);
+
/* Register per-architecture memory region.
Provide a memory-region swap mechanism. Per-architecture memory
@@ -1233,33 +1234,6 @@ extern void register_gdbarch_swap (void *data, unsigned long size, gdbarch_swap_
-/* The target-system-dependent byte order is dynamic */
-
-extern int target_byte_order;
-#ifndef TARGET_BYTE_ORDER
-#define TARGET_BYTE_ORDER (target_byte_order + 0)
-#endif
-
-extern int target_byte_order_auto;
-#ifndef TARGET_BYTE_ORDER_AUTO
-#define TARGET_BYTE_ORDER_AUTO (target_byte_order_auto + 0)
-#endif
-
-
-
-/* The target-system-dependent BFD architecture is dynamic */
-
-extern int target_architecture_auto;
-#ifndef TARGET_ARCHITECTURE_AUTO
-#define TARGET_ARCHITECTURE_AUTO (target_architecture_auto + 0)
-#endif
-
-extern const struct bfd_arch_info *target_architecture;
-#ifndef TARGET_ARCHITECTURE
-#define TARGET_ARCHITECTURE (target_architecture + 0)
-#endif
-
-
/* Set the dynamic target-system-dependent parameters (architecture,
byte-order, ...) using information found in the BFD */
diff --git a/gdb/remote-sim.c b/gdb/remote-sim.c
index 538f8a4..b1dc94e 100644
--- a/gdb/remote-sim.c
+++ b/gdb/remote-sim.c
@@ -42,6 +42,7 @@
#include "regcache.h"
#include "gdb_assert.h"
#include "sim-regno.h"
+#include "arch-utils.h"
/* Prototypes */
@@ -504,27 +505,23 @@ gdbsim_open (char *args, int from_tty)
strcpy (arg_buf, "gdbsim"); /* 7 */
/* Specify the byte order for the target when it is both selectable
and explicitly specified by the user (not auto detected). */
- if (!TARGET_BYTE_ORDER_AUTO)
+ switch (selected_byte_order ())
{
- switch (TARGET_BYTE_ORDER)
- {
- case BFD_ENDIAN_BIG:
- strcat (arg_buf, " -E big");
- break;
- case BFD_ENDIAN_LITTLE:
- strcat (arg_buf, " -E little");
- break;
- default:
- internal_error (__FILE__, __LINE__,
- "Value of TARGET_BYTE_ORDER unknown");
- }
+ case BFD_ENDIAN_BIG:
+ strcat (arg_buf, " -E big");
+ break;
+ case BFD_ENDIAN_LITTLE:
+ strcat (arg_buf, " -E little");
+ break;
+ case BFD_ENDIAN_UNKNOWN:
+ break;
}
/* Specify the architecture of the target when it has been
explicitly specified */
- if (!TARGET_ARCHITECTURE_AUTO)
+ if (selected_architecture_name () != NULL)
{
strcat (arg_buf, " --architecture=");
- strcat (arg_buf, TARGET_ARCHITECTURE->printable_name);
+ strcat (arg_buf, selected_architecture_name ());
}
/* finally, any explicit args */
if (args)