This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: RFC: Should AArch64 *_NC relocs complain on overflow ?
- From: Jiong Wang <jiong dot wang at foss dot arm dot com>
- To: Nick Clifton <nickc at redhat dot com>
- Cc: Marcus Shawcroft <Marcus dot Shawcroft at arm dot com>, Richard Earnshaw <Richard dot Earnshaw at arm dot com>, "binutils\ at sourceware dot org" <binutils at sourceware dot org>
- Date: Mon, 08 Feb 2016 19:18:37 +0000
- Subject: Re: RFC: Should AArch64 *_NC relocs complain on overflow ?
- Authentication-results: sourceware.org; auth=none
- References: <87a8nb7bk8 dot fsf at redhat dot com> <ADC64823-9296-45C9-BCED-FFDC03CA29BB at arm dot com> <56B88C97 dot 6090308 at redhat dot com> <n99mvrb5ote dot fsf at foss dot arm dot com> <56B8C826 dot 9010304 at redhat dot com>
Nick Clifton writes:
>> IMHO, the safest way is, in
>> "_bfd_aarch64_elf_put_addend", we return something like
>> "bfd_reloc_unaligned" which is an general warning,
>
> That means make changes to the generic parts of the BFD library, which I would
> prefer to avoid unless really necessary. But if
>
>> something like
>> "relocation against unaligned value warning."
>
> But that will not help ordinary programmers who will not understand why
> there is an alignment mismatch. Given that the overflown relocation error
> has turned up more than once in real production code, and confused the
> programmers who then report bugs against the linker, I think that it is
> in our interests to be as helpful as possible.
>
> How about this rewording instead:
>
> One possible cause of this error is that the symbol is being
> referenced in the indicated code as if it had a larger
> alignment than was declared where it was defined.
I don't have objection on this.
As looks to me linking errors are always debug nightmare for user
compared with compile errors, therefore improving the warning accuracy
make sense.
+ if (addend & ((1 << howto->rightshift) - 1)
+ /* FIXME: Are we testing all of the appropriate reloc
+ types here ? */
+ && (real_r_type == BFD_RELOC_AARCH64_LDST16_LO12
+ || real_r_type == BFD_RELOC_AARCH64_LDST32_LO12
+ || real_r_type == BFD_RELOC_AARCH64_LDST64_LO12
+ || real_r_type == BFD_RELOC_AARCH64_LDST128_LO12))
+ {
I'd suggest add "LD_PREL_LO19" to the check list, then we will give this
particular unalignment warning for all normal data access load/sotre
relocation types which are particularly useful to external users.
Thanks
--
Jiong