[PR22764][LD][AARCH64]Allow R_AARCH64_ABS16 and R_AARCH64_ABS32 against absolution...
authorRenlin Li <renlin.li@arm.com>
Sat, 3 Feb 2018 13:18:17 +0000 (13:18 +0000)
committerRenlin Li <renlin.li@arm.com>
Mon, 5 Feb 2018 18:18:45 +0000 (18:18 +0000)
commit279b2f94168ee91e02ccd070d27c983fc001fe12
treec8499a527ddaf07f478c7957080860ad6bedc990
parentf3b91ed8f96a4d41eef1c64a7e77c406ec763612
[PR22764][LD][AARCH64]Allow R_AARCH64_ABS16 and R_AARCH64_ABS32 against absolution symbol or undefine symbol in shared object.

The assumption that R_AARCH64_ABS16 and R_AARCH64_ABS32 relocation in LP64 abi
will be used to generate an address does not hold for absolute symbol.
In this case, it is a value fixed at static linking time.

The condition to check the relocations is relax to allow absolute symbol and
undefined symbol case.

bfd/

2018-02-05  Renlin Li  <renlin.li@arm.com>

PR ld/22764
* elfnn-aarch64.c (elfNN_aarch64_check_relocs): Relax the
R_AARCH64_ABS32 and R_AARCH64_ABS16 for absolute symbol. Apply the
check for writeable section as well.

ld/

2018-02-05  Renlin Li  <renlin.li@arm.com>

PR ld/22764
* testsuite/ld-aarch64/emit-relocs-258.s: Define symbol as an address.
* testsuite/ld-aarch64/emit-relocs-259.s: Likewise.
* testsuite/ld-aarch64/aarch64-elf.exp: Run new test.
* testsuite/ld-aarch64/pr22764.s: New.
* testsuite/ld-aarch64/pr22764.d: New.
bfd/ChangeLog
bfd/elfnn-aarch64.c
ld/ChangeLog
ld/testsuite/ld-aarch64/aarch64-elf.exp
ld/testsuite/ld-aarch64/emit-relocs-258.s
ld/testsuite/ld-aarch64/emit-relocs-259.s
ld/testsuite/ld-aarch64/pr22764.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/pr22764.s [new file with mode: 0644]