This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[patch/rfc] Replace global *AUTO* with functions
- From: Andrew Cagney <ac131313 at redhat dot com>
- To: gdb-patches at sources dot redhat dot com
- Date: Tue, 11 Nov 2003 18:59:01 -0500
- Subject: [patch/rfc] Replace global *AUTO* with functions
Hello,
This eliminates the global macros/variables:
-#define TARGET_BYTE_ORDER_AUTO (target_byte_order_auto + 0)
-#define TARGET_ARCHITECTURE_AUTO (target_architecture_auto + 0)
along with the non-multiarch global variables:
-extern int target_byte_order;
-extern const struct bfd_arch_info *target_architecture;
(don't be fooled by the patch, TARGET_ARCHITECTURE and TARGET_BYTE_ORDER
still get defined elsewhere).
I've replaced the auto macros with corresponding functions. Only SIM
uses them, so that's updated.
I'll commit in a day or so,
Andrew
2003-11-11 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".
Index: arch-utils.c
===================================================================
RCS file: /cvs/src/src/gdb/arch-utils.c,v
retrieving revision 1.106
diff -u -r1.106 arch-utils.c
--- arch-utils.c 10 Nov 2003 16:17:12 -0000 1.106
+++ arch-utils.c 11 Nov 2003 23:49:26 -0000
@@ -380,8 +380,17 @@
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 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 @@
enum set_arch { set_arch_auto, set_arch_manual };
-int target_architecture_auto = 1;
+static int target_architecture_auto = 1;
-const char *set_architecture_string;
+static 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. */
Index: arch-utils.h
===================================================================
RCS file: /cvs/src/src/gdb/arch-utils.h,v
retrieving revision 1.62
diff -u -r1.62 arch-utils.h
--- arch-utils.h 10 Nov 2003 16:17:12 -0000 1.62
+++ arch-utils.h 11 Nov 2003 23:49:26 -0000
@@ -149,9 +149,21 @@
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,
Index: gdbarch.h
===================================================================
RCS file: /cvs/src/src/gdb/gdbarch.h,v
retrieving revision 1.227
diff -u -r1.227 gdbarch.h
--- gdbarch.h 10 Nov 2003 22:47:28 -0000 1.227
+++ gdbarch.h 11 Nov 2003 23:49:26 -0000
@@ -2609,6 +2609,7 @@
extern void *gdbarch_data (struct gdbarch *gdbarch, struct gdbarch_data *);
+
/* Register per-architecture memory region.
Provide a memory-region swap mechanism. Per-architecture memory
@@ -2625,33 +2626,6 @@
extern void register_gdbarch_swap (void *data, unsigned long size, gdbarch_swap_ftype *init);
#define REGISTER_GDBARCH_SWAP(VAR) register_gdbarch_swap (&(VAR), sizeof ((VAR)), NULL)
-
-
-/* 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,
Index: gdbarch.sh
===================================================================
RCS file: /cvs/src/src/gdb/gdbarch.sh,v
retrieving revision 1.286
diff -u -r1.286 gdbarch.sh
--- gdbarch.sh 10 Nov 2003 22:47:28 -0000 1.286
+++ gdbarch.sh 11 Nov 2003 23:49:27 -0000
@@ -1215,6 +1215,7 @@
extern void *gdbarch_data (struct gdbarch *gdbarch, struct gdbarch_data *);
+
/* Register per-architecture memory region.
Provide a memory-region swap mechanism. Per-architecture memory
@@ -1231,33 +1232,6 @@
extern void register_gdbarch_swap (void *data, unsigned long size, gdbarch_swap_ftype *init);
#define REGISTER_GDBARCH_SWAP(VAR) register_gdbarch_swap (&(VAR), sizeof ((VAR)), NULL)
-
-
-/* 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,
Index: remote-sim.c
===================================================================
RCS file: /cvs/src/src/gdb/remote-sim.c,v
retrieving revision 1.32
diff -u -r1.32 remote-sim.c
--- remote-sim.c 2 Oct 2003 20:28:30 -0000 1.32
+++ remote-sim.c 11 Nov 2003 23:49:27 -0000
@@ -42,6 +42,7 @@
#include "regcache.h"
#include "gdb_assert.h"
#include "sim-regno.h"
+#include "arch-utils.h"
/* Prototypes */
@@ -504,27 +505,23 @@
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)