[BFD][AARCH64]Fix MOVW_SABS_G(0,1,2) relocation overflow check.
Renlin Li
renlin.li@foss.arm.com
Thu Feb 25 10:51:00 GMT 2016
Sorry,
the correct patch attached in this email.
Regards,
Renlin
On 25/02/16 10:45, Renlin Li wrote:
> Hi all,
>
> This patch fixes the overflow check for
> R_AARCH64_MOVW_SABS_G0
> R_AARCH64_MOVW_SABS_G1
> R_AARCH64_MOVW_SABS_G2
>
> According to the aarch64 elf specification, for those relocations with
> overflow check, the following rule applies:
>
> X > 0: Set the instruction to MOVZ and its immediate value to the
> selected bits S;
> for relocation R_..._Gn, check that X< {G0: 2^16 , G1 : 2^32 , G2 :
> 2^48 } (no check for R_..._G3).
>
> X < 0: Set the instruction to MOVN and its immediate value to NOT
> (selected bits of);
> for relocation R_..._Gn , check that -{ G0 : 2^16 , G1 : 2^32 , G2 :
> 2^48 } ? X (no check for R_..._G3).
>
> This rule indicates:
> 1, signed overflow check should be used.
> 2, For the allowed range, 17 bit signed value should be used, instead
> of 16 bit.
>
> Here the bitsize field is changed from 16 to 17, this field in aarch64
> backend is used for overflow check only.
>
> the BFD already have the functions to re-encode the instruction into
> movz/movn according to the sign of the value.
> Only the overflow check needs to be fixed!
>
>
> binutils regression test checked Okay, Okay for trunk?
>
> Regards,
> Renlin Li
>
>
>
> bfd/ChangeLog:
>
> 2016-02-25 Renlin Li <renlin.li@arm.com>
>
> * elfnn-aarch64.c (elfNN_aarch64_howto_table): Fix signed overflow
> check for MOVW_SABS_G0, MOVW_SABS_G1, MOVW_SABS_G2.
>
>
> ld/ChangeLog:
>
> 2016-02-25 Renlin Li <renlin.li@arm.com>
>
> * testsuite/ld-aarch64/aarch64-elf.exp: Run new testcases.
> * testsuite/ld-aarch64/emit-relocs-270.d: Update to use new boundary.
> * testsuite/ld-aarch64/emit-relocs-271.d: Likewise.
> * testsuite/ld-aarch64/emit-relocs-272.d: Likewise.
> * testsuite/ld-aarch64/emit-relocs-270-overflow.d: New.
> * testsuite/ld-aarch64/emit-relocs-270-overflow.s: New.
> * testsuite/ld-aarch64/emit-relocs-271-overflow.d: New.
> * testsuite/ld-aarch64/emit-relocs-271-overflow.s: New.
> * testsuite/ld-aarch64/emit-relocs-272-overflow.d: New.
> * testsuite/ld-aarch64/emit-relocs-272-overflow.s: New.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: rb5243.patch
Type: text/x-patch
Size: 8977 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20160225/aaa95385/attachment.bin>
More information about the Binutils
mailing list