This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
S390: Place "s390:31-bit" after default arch in 64-bit arch list
- From: Andreas Arnez <arnez at linux dot vnet dot ibm dot com>
- To: Binutils Development <binutils at sourceware dot org>
- Cc: Andreas Krebbel <krebbel at linux dot vnet dot ibm dot com>
- Date: Tue, 03 Mar 2015 12:27:49 +0100
- Subject: S390: Place "s390:31-bit" after default arch in 64-bit arch list
- Authentication-results: sourceware.org; auth=none
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/cpu-s390.c | 61 +++++++++++++++++++++++-----------------------------------
1 file changed, 24 insertions(+), 37 deletions(-)
diff --git a/bfd/cpu-s390.c b/bfd/cpu-s390.c
index 5fd3271..dbdec4a 100644
--- a/bfd/cpu-s390.c
+++ b/bfd/cpu-s390.c
@@ -23,44 +23,31 @@
#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
-};
--
2.1.4