This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [AArch64][4/4] Define TC_ADDRESS_BYTES for GAS
- From: Yury Norov <ynorov at caviumnetworks dot com>
- To: Jiong Wang <jiong dot wang at foss dot arm dot com>
- Cc: Andreas Schwab <schwab at suse dot de>, Binutils <binutils at sourceware dot org>, Steve Ellcey <Steve dot Ellcey at cavium dot com>
- Date: Tue, 6 Dec 2016 19:56:58 +0530
- Subject: Re: [AArch64][4/4] Define TC_ADDRESS_BYTES for GAS
- Authentication-results: sourceware.org; auth=none
- Authentication-results: spf=none (sender IP is ) smtp.mailfrom=Yuri dot Norov at caviumnetworks dot com;
- References: <2217462f-42bd-83e0-6141-acd62e8becb8@foss.arm.com> <4a2dc012-d289-319a-3557-14266fe3510b@foss.arm.com> <2eaf8fdb-6e7d-1f9b-8ef3-fe0c1d5577c9@foss.arm.com> <06d11737-ef5a-05e7-24d1-8541bfc94e09@foss.arm.com> <mvmh96hjpqm.fsf@hawking.suse.de> <f99784e6-d576-a530-556d-663a5497ab43@foss.arm.com>
- Spamdiagnosticmetadata: NSPM
- Spamdiagnosticoutput: 1:99
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