S390: Place "s390:31-bit" after default arch in 64-bit arch list
authorAndreas Arnez <arnez@linux.vnet.ibm.com>
Wed, 4 Mar 2015 09:40:39 +0000 (10:40 +0100)
committerAndreas Krebbel <krebbel@linux.vnet.ibm.com>
Wed, 4 Mar 2015 09:40:39 +0000 (10:40 +0100)
On 64-bit platforms GDB did not include "s390:31-bit" in its list of
architecture names.  This patch fixes that.

To determine the list of architecture names for S390,
gdbarch_printable_names() walks through the linked list of BFD arches
starting with the default S390 arch, which is "s390:64-bit" on 64-bit
platforms.  But since "s390:64-bit" was at the end of that list, the
31-bit architecture was not reached.  The patch swaps the elements of
that list on 64-bit platforms.

bfd/ChangeLog:

* cpu-s390.c (N): New macro.
(bfd_s390_31_arch): New.  Define only if default target word size
is 64 bits.  Otherwise define...
(bfd_390_64_arch): ...this.  Make static.
(bfd_s390_arch): Define according to the default target word size.
Let the 'next' field point to the alternate arch.

bfd/ChangeLog
bfd/cpu-s390.c

index ee6adb831ad8421f3130aea1455d57928516e401..d115513456a5f8de8a95d13a4290feb6f862e444 100644 (file)
@@ -1,3 +1,12 @@
+2015-03-04  Andreas Arnez  <arnez@linux.vnet.ibm.com>
+
+       * cpu-s390.c (N): New macro.
+       (bfd_s390_31_arch): New.  Define only if default target word size
+       is 64 bits.  Otherwise define...
+       (bfd_390_64_arch): ...this.  Make static.
+       (bfd_s390_arch): Define according to the default target word size.
+       Let the 'next' field point to the alternate arch.
+
 2015-03-04  Richard Sandiford  <richard.sandiford@arm.com>
 
        PR gas/17843
index 5fd3271bb4cda2d56bac0ef120b0c9822eecc509..dbdec4a289197683c6fe62b72b4ca67027885967 100644 (file)
 #include "bfd.h"
 #include "libbfd.h"
 
-const bfd_arch_info_type bfd_s390_64_arch =
-{
-    64,        /* bits in a word */
-    64,        /* bits in an address */
-    8, /* bits in a byte */
-    bfd_arch_s390,
-    bfd_mach_s390_64,
-    "s390",
-    "s390:64-bit",
-    3, /* section alignment power */
-#if BFD_DEFAULT_TARGET_SIZE == 64
-    TRUE, /* the default */
-#else
-    FALSE, /* the default */
-#endif
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    NULL
-};
+#define N(bits, number, print, is_default, next)       \
+  {                                                    \
+    bits,             /* bits in a word */             \
+    bits,             /* bits in an address */         \
+    8,                /* bits in a byte */             \
+    bfd_arch_s390,                                     \
+    number,                                            \
+    "s390",                                            \
+    print,                                             \
+    3,                /* section alignment power */    \
+    is_default,                                                \
+    bfd_default_compatible,                            \
+    bfd_default_scan,                                  \
+    bfd_arch_default_fill,                             \
+    next                                               \
+  }
 
-const bfd_arch_info_type bfd_s390_arch =
-{
-    32,        /* bits in a word */
-    32,        /* bits in an address */
-    8, /* bits in a byte */
-    bfd_arch_s390,
-    bfd_mach_s390_31,
-    "s390",
-    "s390:31-bit",
-    3, /* section alignment power */
 #if BFD_DEFAULT_TARGET_SIZE == 64
-    FALSE, /* the default */
+static const bfd_arch_info_type bfd_s390_31_arch =
+  N (32, bfd_mach_s390_31, "s390:31-bit", FALSE, NULL);
+const bfd_arch_info_type bfd_s390_arch =
+  N (64, bfd_mach_s390_64, "s390:64-bit", TRUE, &bfd_s390_31_arch);
 #else
-    TRUE, /* the default */
+static const bfd_arch_info_type bfd_s390_64_arch =
+  N (64, bfd_mach_s390_64, "s390:64-bit", FALSE, NULL);
+const bfd_arch_info_type bfd_s390_arch =
+  N (32, bfd_mach_s390_31, "s390:31-bit", TRUE, &bfd_s390_64_arch);
 #endif
-    bfd_default_compatible,
-    bfd_default_scan,
-    bfd_arch_default_fill,
-    &bfd_s390_64_arch
-};