[AArch64][4/4] Define TC_ADDRESS_BYTES for GAS
Yury Norov
ynorov@caviumnetworks.com
Tue Dec 6 14:27:00 GMT 2016
More information about the Binutils mailing list
Tue Dec 6 14:27:00 GMT 2016
- Previous message (by thread): [AArch64][4/4] Define TC_ADDRESS_BYTES for GAS
- Next message (by thread): [AArch64][4/4] Define TC_ADDRESS_BYTES for GAS
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Tue, Dec 06, 2016 at 11:09:41AM +0000, Jiong Wang wrote: > On 06/12/16 10:50, Andreas Schwab wrote: > >On Dez 05 2016, Jiong Wang <jiong.wang@foss.arm.com> wrote: > > > >>The default address_per_bytes is define in cpu-aarch64.c, current it's 8 for > >>both LP64 and ILP32, whether we should change it to 4 as well as word_per_bytes > >>looks to me is another issue we need to investigate. > >This works for me and fixes quite a few failures: > > Hi Andreas, > Thanks very much for verifying this. > > Yury, does Andreas's cpu-aarch64.c change works well with Cavium's ILP32 > environment, mind a full testing on it? > > Thanks. > > > > > * cpu-aarch64.c (N): Add argument ADDRSIZE. > > (bfd_aarch64_arch_ilp32): Set it to 32. > > (bfd_aarch64_arch): Set it to 64. > >--- > > 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 596d24190b..af2da8455d 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, ADDRSIZE, DEFAULT, NEXT) \ > >+ { 64, ADDRSIZE, 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) This is my version of the change. The same idea, but I also set bits_per_word to 32: diff --git a/bfd/cpu-aarch64.c b/bfd/cpu-aarch64.c index 596d241..cc98e2e 100644 --- a/bfd/cpu-aarch64.c +++ b/bfd/cpu-aarch64.c @@ -105,8 +105,13 @@ scan (const struct bfd_arch_info *info, const char *string) "aarch64", PRINT, 4, DEFAULT, compatible, scan, \ bfd_arch_default_fill, NEXT } +#define N32(NUMBER, PRINT, DEFAULT, NEXT) \ + { 32, 32, 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); + N32 (bfd_mach_aarch64_ilp32, "aarch64:ilp32", FALSE, NULL); const bfd_arch_info_type bfd_aarch64_arch = N (0, "aarch64", TRUE, &bfd_aarch64_arch_ilp32); --- And this is before/after test results: After Before > FAIL: c++-types-check FAIL: elf/tst-tls-manydynamic < > FAIL: iconvdata/mtrace-tst-loading > FAIL: iconvdata/tst-loading > FAIL: iconvdata/tst-tables > FAIL: localedata/mtrace-tst-leaks > FAIL: localedata/tst-leaks > FAIL: posix/tst-getaddrinfo4 > FAIL: posix/tst-getaddrinfo5 > FAIL: posix/tst-regex2 Pretty good to me. I'm not experienced in ld logic, but tests show that changing both wordsize and addrsize is right idea. If no objections here, I'll send the patch to binutils maillist. Steve, could you try this patch with real hardware and report here? Yury
- Previous message (by thread): [AArch64][4/4] Define TC_ADDRESS_BYTES for GAS
- Next message (by thread): [AArch64][4/4] Define TC_ADDRESS_BYTES for GAS
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list