[LD][AARCH64]Add group relocations to create PC-relative offset.
authorRenlin Li <renlin.li@arm.com>
Thu, 18 Jan 2018 12:17:55 +0000 (12:17 +0000)
committerRenlin Li <renlin.li@arm.com>
Wed, 24 Jan 2018 16:20:05 +0000 (16:20 +0000)
commit1daf502a16e052b55a28bd52b4fde185ccc3b27b
tree2c8c92caab8fac1ff5f3f486a915994ed2a7b336
parent322474019df79a1305e83ff7620a72f31a5c7b55
[LD][AARCH64]Add group relocations to create PC-relative offset.

This is a patch to add linker support for group relocations to create a
16, 32, 48, or 64 bit PC-relative offset inline.

The following relocations are added along with the test cases:
BFD_RELOC_AARCH64_MOVW_PREL_G0, BFD_RELOC_AARCH64_MOVW_PREL_G0_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G1, BFD_RELOC_AARCH64_MOVW_PREL_G1_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G2, BFD_RELOC_AARCH64_MOVW_PREL_G2_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G3.

bfd/

2018-01-24  Renlin Li  <renlin.li@arm.com>

* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Add support for
BFD_RELOC_AARCH64_MOVW_PREL_G0, BFD_RELOC_AARCH64_MOVW_PREL_G0_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G1, BFD_RELOC_AARCH64_MOVW_PREL_G1_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G2, BFD_RELOC_AARCH64_MOVW_PREL_G2_NC,
BFD_RELOC_AARCH64_MOVW_PREL_G3.
* elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Likewise.
(_bfd_aarch64_elf_resolve_relocation): Likewise.

ld/

2018-01-24  Renlin Li  <renlin.li@arm.com>

* testsuite/ld-aarch64/aarch64-elf.exp: Run new testes.
* testsuite/ld-aarch64/emit-relocs-287.s: Fix test case.
* testsuite/ld-aarch64/emit-relocs-287.d: Fix expected output.
* testsuite/ld-aarch64/emit-relocs-287-overflow.s: New.
* testsuite/ld-aarch64/emit-relocs-287-overflow.d: New.
* testsuite/ld-aarch64/emit-relocs-288.d: New.
* testsuite/ld-aarch64/emit-relocs-288.s: New.
* testsuite/ld-aarch64/emit-relocs-289.d: New.
* testsuite/ld-aarch64/emit-relocs-289.s: New.
* testsuite/ld-aarch64/emit-relocs-289-overflow.s: New.
* testsuite/ld-aarch64/emit-relocs-289-overflow.d: New.
* testsuite/ld-aarch64/emit-relocs-290.d: New.
* testsuite/ld-aarch64/emit-relocs-290.s: New.
* testsuite/ld-aarch64/emit-relocs-291.d: New.
* testsuite/ld-aarch64/emit-relocs-291.s: New.
* testsuite/ld-aarch64/emit-relocs-291-overflow.s: New.
* testsuite/ld-aarch64/emit-relocs-291-overflow.d: New.
* testsuite/ld-aarch64/emit-relocs-292.d: New.
* testsuite/ld-aarch64/emit-relocs-292.s: New.
* testsuite/ld-aarch64/emit-relocs-293.d: New.
* testsuite/ld-aarch64/emit-relocs-293.s: New.
25 files changed:
bfd/ChangeLog
bfd/elfnn-aarch64.c
bfd/elfxx-aarch64.c
ld/ChangeLog
ld/testsuite/ld-aarch64/aarch64-elf.exp
ld/testsuite/ld-aarch64/emit-relocs-287-overflow.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/emit-relocs-287-overflow.s [new file with mode: 0644]
ld/testsuite/ld-aarch64/emit-relocs-287.d
ld/testsuite/ld-aarch64/emit-relocs-287.s
ld/testsuite/ld-aarch64/emit-relocs-288.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/emit-relocs-288.s [new file with mode: 0644]
ld/testsuite/ld-aarch64/emit-relocs-289-overflow.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/emit-relocs-289-overflow.s [new file with mode: 0644]
ld/testsuite/ld-aarch64/emit-relocs-289.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/emit-relocs-289.s [new file with mode: 0644]
ld/testsuite/ld-aarch64/emit-relocs-290.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/emit-relocs-290.s [new file with mode: 0644]
ld/testsuite/ld-aarch64/emit-relocs-291-overflow.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/emit-relocs-291-overflow.s [new file with mode: 0644]
ld/testsuite/ld-aarch64/emit-relocs-291.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/emit-relocs-291.s [new file with mode: 0644]
ld/testsuite/ld-aarch64/emit-relocs-292.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/emit-relocs-292.s [new file with mode: 0644]
ld/testsuite/ld-aarch64/emit-relocs-293.d [new file with mode: 0644]
ld/testsuite/ld-aarch64/emit-relocs-293.s [new file with mode: 0644]