RFC: Should AArch64 *_NC relocs complain on overflow ?

Nick Clifton nickc@redhat.com
Mon Feb 8 16:54:00 GMT 2016


Hi Jiong,

> +		  /* 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))
> 
>    Some GOT relocation types will cause the same error.

Do you have a testcase that can demonstrate this ?

>    Therefore, I think relocation against unaligned value can origin from
>    various reasons.

True - that is why I used "Possibly" at the start of the warning message.  
Ie the message is only a suggestion, not a guarantee.

>  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.


Cheers
  Nick





More information about the Binutils mailing list