aboutsummaryrefslogtreecommitdiff
path: root/bfd/cpu-s390.c
diff options
context:
space:
mode:
authorAndreas Arnez <arnez@linux.vnet.ibm.com>2015-03-04 10:40:39 +0100
committerAndreas Krebbel <krebbel@linux.vnet.ibm.com>2015-03-04 10:40:39 +0100
commitdf88b70224175011abf2cd599d5eec6fb81a90b7 (patch)
tree4cb54e04aeb0905216f785486d2cbf1a5343662e /bfd/cpu-s390.c
parent511aee7c3906063902415391f288460a2c116f26 (diff)
downloadgdb-df88b70224175011abf2cd599d5eec6fb81a90b7.zip
gdb-df88b70224175011abf2cd599d5eec6fb81a90b7.tar.gz
gdb-df88b70224175011abf2cd599d5eec6fb81a90b7.tar.bz2
S390: Place "s390:31-bit" after default arch in 64-bit arch list
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.
Diffstat (limited to 'bfd/cpu-s390.c')
-rw-r--r--bfd/cpu-s390.c61
1 files 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
-};