This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: status of gold for ARM
- From: Roland McGrath <mcgrathr at google dot com>
- To: Doug Kwan (éæå) <dougkwan at google dot com>
- Cc: Cary Coutant <ccoutant at gmail dot com>, "binutils at sourceware dot org" <binutils at sourceware dot org>
- Date: Wed, 8 Jul 2015 11:18:03 -0700
- Subject: Re: status of gold for ARM
- Authentication-results: sourceware.org; auth=none
- References: <CAB=4xhormp=tpt1+y983a_PEuqs2ig=8tk2=QYbO8KmiqwE6Mw at mail dot gmail dot com> <CAJimCsE_bx35fvi4bQwRNzsiYmw+Rb=48LzQrEuavKyRP96f-g at mail dot gmail dot com> <CAH9SEo4OjrZqQ7NYaje2RCM7VXKgh6gdg_g1rMPpFGNH47kVkg at mail dot gmail dot com>
The trunk is now good but on binutils-2_25-branch (eddde7f) I am now getting:
FAIL: arm_unaligned_reloc.sh
Make sure you do clean builds to compare. The actual problem comes from
objdump treating gold/testsuite/arm_unaligned_reloc_r differently for the
two branches. In fact, objdump is behaving the same (odd) way in both
branches, but its output differs (for no good reason) between the files
generated in the two branches. The real difference is in the assembler,
which in 2.25 produces .data.0 and .data.1 sections with just their
explicit sizes (4, 13), while in the trunk it produces .data.0 and .data.1
sections that are padded out to their sh_addralign sizes (both 4096).
For the unpadded sections (arm_unaligned_reloc_r from 2.25), objdump -Dr
produces:
Disassembly of section .data.0:
00000000 <x>:
0: 00000001 andeq r0, r0, r1
...
Disassembly of section .data.1:
00000000 <padding>:
...
00000001 <abs32>:
* 1: 00000000 andeq r0, r0, r0
1: R_ARM_ABS32 .data.0
00000005 <rel32>:
* 5: 00000000 andeq r0, r0, r0
5: R_ARM_REL32 .data.0
00000009 <abs16>:
** ...
9: R_ARM_ABS16 .data.0
whereas for the padded sections (arm_unaligned_reloc_r from trunk), the
same objdump -Dr produces:
Disassembly of section .data.0:
00000000 <x>:
0: 00000001 andeq r0, r0, r1
Disassembly of section .data.1:
00000000 <padding>:
...
00000001 <abs32>:
* 1: 00000000 andeq r0, r0, r0
1: R_ARM_ABS32 .data.0
00000005 <rel32>:
* 5: 00000000 andeq r0, r0, r0
5: R_ARM_REL32 .data.0
00000009 <abs16>:
** 9: 00000000 andeq r0, r0, r0
9: R_ARM_ABS16 .data.0
The differences are the indentation on the lines marked with *, and the
choice of disassembling a zero word vs "..." on the line marked with **.
I don't know why objdump does that, or if it's intended to.
I don't know if that difference in the assembler was an intended change on
the trunk or not.
Regardless, none it actually has anything to do with what's being tested in
gold. As things stand, arm_unaligned_reloc.sh is also inconsistent between
disassembly lines and reloc lines as to whether it matches the indentation
precisely or loosely. So its regexps could just be changed to be looser
about its matching and then these details of gas and objdump behavior would
not affect the gold test suite one way or the other.
Thanks,
Roland