diff options
author | Andreas Arnez <arnez@linux.vnet.ibm.com> | 2015-03-04 10:40:39 +0100 |
---|---|---|
committer | Andreas Krebbel <krebbel@linux.vnet.ibm.com> | 2015-03-04 10:40:39 +0100 |
commit | df88b70224175011abf2cd599d5eec6fb81a90b7 (patch) | |
tree | 4cb54e04aeb0905216f785486d2cbf1a5343662e /bfd/cpu-s390.c | |
parent | 511aee7c3906063902415391f288460a2c116f26 (diff) | |
download | gdb-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.c | 61 |
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 -}; |