From: Andreas Arnez Date: Wed, 4 Mar 2015 09:40:39 +0000 (+0100) Subject: S390: Place "s390:31-bit" after default arch in 64-bit arch list X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=df88b70224175011abf2cd599d5eec6fb81a90b7;p=binutils-gdb.git 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. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ee6adb831ad..d115513456a 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,12 @@ +2015-03-04 Andreas Arnez + + * 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 PR gas/17843 diff --git a/bfd/cpu-s390.c b/bfd/cpu-s390.c index 5fd3271bb4c..dbdec4a2891 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 -};