This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH] bfd: aarch64: fix word and arrdess size declaration in ilp32 mode
- From: Yury Norov <ynorov at caviumnetworks dot com>
- To: Andreas Schwab <schwab at suse dot de>, <binutils at sourceware dot org>
- Cc: Yury Norov <ynorov at caviumnetworks dot com>, Jiong Wang <jiong dot wang at foss dot arm dot com>, Steve Ellcey <Steve dot Ellcey at cavium dot com>, Andrew Pinski <Andrew dot Pinski at cavium dot com>
- Date: Fri, 9 Dec 2016 21:47:58 +0530
- Subject: [PATCH] bfd: aarch64: fix word and arrdess size declaration in ilp32 mode
- Authentication-results: sourceware.org; auth=none
- Authentication-results: spf=none (sender IP is ) smtp.mailfrom=Yuri dot Norov at caviumnetworks dot com;
- Spamdiagnosticmetadata: NSPM
- Spamdiagnosticoutput: 1:99
ILP32 has 32-bit word and address, but currently they declared as 64-bit in
bfd_aarch64_arch_ilp32, which breaks further logic of bfd. This patch fixes it.
Glibc testsuite build with patched binutils shows that next tests stop to fail:
iconvdata/mtrace-tst-loading
iconvdata/tst-loading
iconvdata/tst-tables
localedata/mtrace-tst-leaks
localedata/tst-leaks
posix/tst-getaddrinfo4
posix/tst-getaddrinfo5
posix/tst-regex2
I discovered this issue at the same time with Andreas Schwab, so if patch is OK
to pull, it would be fair to add also his name as an author in changelog.
2016-12-09: Yury Norov <ynorov@caviumnetworks.com>
Andreas Schwab <schwab@suse.de>
* bfd/cpu-aarch64.c: Fix word and address size declaration in ilp32 mode
in bfd_arch_info_type bfd_aarch64_arch_ilp32 structure.
Signed-off-by: Yury Norov <ynorov@caviumnetworks.com>
---
bfd/cpu-aarch64.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/bfd/cpu-aarch64.c b/bfd/cpu-aarch64.c
index 596d241..1adc670 100644
--- a/bfd/cpu-aarch64.c
+++ b/bfd/cpu-aarch64.c
@@ -100,16 +100,16 @@ scan (const struct bfd_arch_info *info, const char *string)
return FALSE;
}
-#define N(NUMBER, PRINT, DEFAULT, NEXT) \
- { 64, 64, 8, bfd_arch_aarch64, NUMBER, \
+#define N(NUMBER, PRINT, WORDSIZE, DEFAULT, NEXT) \
+ { WORDSIZE, WORDSIZE, 8, bfd_arch_aarch64, NUMBER, \
"aarch64", PRINT, 4, DEFAULT, compatible, scan, \
bfd_arch_default_fill, NEXT }
static const bfd_arch_info_type bfd_aarch64_arch_ilp32 =
- N (bfd_mach_aarch64_ilp32, "aarch64:ilp32", FALSE, NULL);
+ N (bfd_mach_aarch64_ilp32, "aarch64:ilp32", 32, FALSE, NULL);
const bfd_arch_info_type bfd_aarch64_arch =
- N (0, "aarch64", TRUE, &bfd_aarch64_arch_ilp32);
+ N (0, "aarch64", 64, TRUE, &bfd_aarch64_arch_ilp32);
bfd_boolean
bfd_is_aarch64_special_symbol_name (const char *name, int type)
--
2.7.4