aboutsummaryrefslogtreecommitdiff
path: root/gdb/top.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/top.c')
-rw-r--r--gdb/top.c115
1 files changed, 66 insertions, 49 deletions
diff --git a/gdb/top.c b/gdb/top.c
index 9447484..80e02b0 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -3200,14 +3200,22 @@ dont_repeat_command (ignored, from_tty)
/* Functions to manipulate the endianness of the target. */
#ifdef TARGET_BYTE_ORDER_SELECTABLE
+/* compat - Catch old targets that expect a selectable byte-order to
+ default to BIG_ENDIAN */
#ifndef TARGET_BYTE_ORDER_DEFAULT
#define TARGET_BYTE_ORDER_DEFAULT BIG_ENDIAN
#endif
+#endif
+#ifndef TARGET_BYTE_ORDER_DEFAULT
+/* compat - Catch old non byte-order selectable targets that do not
+ define TARGET_BYTE_ORDER_DEFAULT and instead expect
+ TARGET_BYTE_ORDER to be used as the default. For targets that
+ defined neither TARGET_BYTE_ORDER nor TARGET_BYTE_ORDER_DEFAULT the
+ below will get a strange compiler warning. */
+#define TARGET_BYTE_ORDER_DEFAULT TARGET_BYTE_ORDER
+#endif
int target_byte_order = TARGET_BYTE_ORDER_DEFAULT;
int target_byte_order_auto = 1;
-#else
-static int target_byte_order_auto = 0;
-#endif
/* Called if the user enters ``set endian'' without an argument. */
static void
@@ -3225,13 +3233,16 @@ set_endian_big (args, from_tty)
char *args;
int from_tty;
{
-#ifdef TARGET_BYTE_ORDER_SELECTABLE
- target_byte_order = BIG_ENDIAN;
- target_byte_order_auto = 0;
-#else
- printf_unfiltered ("Byte order is not selectable.");
- show_endian (args, from_tty);
-#endif
+ if (TARGET_BYTE_ORDER_SELECTABLE_P)
+ {
+ target_byte_order = BIG_ENDIAN;
+ target_byte_order_auto = 0;
+ }
+ else
+ {
+ printf_unfiltered ("Byte order is not selectable.");
+ show_endian (args, from_tty);
+ }
}
/* Called by ``set endian little''. */
@@ -3240,13 +3251,16 @@ set_endian_little (args, from_tty)
char *args;
int from_tty;
{
-#ifdef TARGET_BYTE_ORDER_SELECTABLE
- target_byte_order = LITTLE_ENDIAN;
- target_byte_order_auto = 0;
-#else
- printf_unfiltered ("Byte order is not selectable.");
- show_endian (args, from_tty);
-#endif
+ if (TARGET_BYTE_ORDER_SELECTABLE_P)
+ {
+ target_byte_order = LITTLE_ENDIAN;
+ target_byte_order_auto = 0;
+ }
+ else
+ {
+ printf_unfiltered ("Byte order is not selectable.");
+ show_endian (args, from_tty);
+ }
}
/* Called by ``set endian auto''. */
@@ -3255,12 +3269,15 @@ set_endian_auto (args, from_tty)
char *args;
int from_tty;
{
-#ifdef TARGET_BYTE_ORDER_SELECTABLE
- target_byte_order_auto = 1;
-#else
- printf_unfiltered ("Byte order is not selectable.");
- show_endian (args, from_tty);
-#endif
+ if (TARGET_BYTE_ORDER_SELECTABLE_P)
+ {
+ target_byte_order_auto = 1;
+ }
+ else
+ {
+ printf_unfiltered ("Byte order is not selectable.");
+ show_endian (args, from_tty);
+ }
}
/* Called by ``show endian''. */
@@ -3269,11 +3286,11 @@ show_endian (args, from_tty)
char *args;
int from_tty;
{
- const char *msg =
- (target_byte_order_auto
+ char *msg =
+ (TARGET_BYTE_ORDER_AUTO
? "The target endianness is set automatically (currently %s endian)\n"
: "The target is assumed to be %s endian\n");
- printf_unfiltered ((char *) msg, TARGET_BYTE_ORDER == BIG_ENDIAN ? "big" : "little");
+ printf_unfiltered (msg, (TARGET_BYTE_ORDER == BIG_ENDIAN ? "big" : "little"));
}
/* Set the endianness from a BFD. */
@@ -3281,30 +3298,30 @@ void
set_endian_from_file (abfd)
bfd *abfd;
{
-#ifdef TARGET_BYTE_ORDER_SELECTABLE
- int want;
-
- if (bfd_big_endian (abfd))
- want = BIG_ENDIAN;
+ if (TARGET_BYTE_ORDER_SELECTABLE_P)
+ {
+ int want;
+
+ if (bfd_big_endian (abfd))
+ want = BIG_ENDIAN;
+ else
+ want = LITTLE_ENDIAN;
+ if (TARGET_BYTE_ORDER_AUTO)
+ target_byte_order = want;
+ else if (TARGET_BYTE_ORDER != want)
+ warning ("%s endian file does not match %s endian target.",
+ want == BIG_ENDIAN ? "big" : "little",
+ TARGET_BYTE_ORDER == BIG_ENDIAN ? "big" : "little");
+ }
else
- want = LITTLE_ENDIAN;
- if (target_byte_order_auto)
- target_byte_order = want;
- else if (target_byte_order != want)
- warning ("%s endian file does not match %s endian target.",
- want == BIG_ENDIAN ? "big" : "little",
- TARGET_BYTE_ORDER == BIG_ENDIAN ? "big" : "little");
-
-#else /* ! defined (TARGET_BYTE_ORDER_SELECTABLE) */
-
- if (bfd_big_endian (abfd)
- ? TARGET_BYTE_ORDER != BIG_ENDIAN
- : TARGET_BYTE_ORDER == BIG_ENDIAN)
- warning ("%s endian file does not match %s endian target.",
- bfd_big_endian (abfd) ? "big" : "little",
- TARGET_BYTE_ORDER == BIG_ENDIAN ? "big" : "little");
-
-#endif /* ! defined (TARGET_BYTE_ORDER_SELECTABLE) */
+ {
+ if (bfd_big_endian (abfd)
+ ? TARGET_BYTE_ORDER != BIG_ENDIAN
+ : TARGET_BYTE_ORDER == BIG_ENDIAN)
+ warning ("%s endian file does not match %s endian target.",
+ bfd_big_endian (abfd) ? "big" : "little",
+ TARGET_BYTE_ORDER == BIG_ENDIAN ? "big" : "little");
+ }
}
/* Functions to manipulate the architecture of the target */