This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]