This patch adds support for ARM PLT entries that support a full 32-bit offset range.
authorYuri Gribov <y.gribov@samsung.com>
Thu, 27 Feb 2014 14:35:37 +0000 (14:35 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 27 Feb 2014 14:35:37 +0000 (14:35 +0000)
commit1db37fe62781b677a37acbe801c1e69d8912a124
tree48caffe8619eea72d91b80bb71ca0a6632bc5a63
parentfa96cb382c12b099675c5cc238aaa7352a3fd3d7
This patch adds support for ARM PLT entries that support a full 32-bit offset range.
Enabled via the use of a new linker command line option: --long-plt.

* bfd-in.h: Add export of bfd_elf32_arm_use_long_plt.
* bfd-in2.h: Regenerate.
* elf32-arm.c (elf32_arm_plt_entry_long): New array.
(elf32_arm_link_hash_table_create): Set plt_entry_size to 16 if
using long PLT entries.
(bfd_elf32_arm_use_long_plt): New function.
(elf32_arm_populate_plt_entry): Add support for long PLT entries.

* emultempl/armelf.em (OPTION_LONG_PLT): Define.
(PARSE_AND_LIST_LONGOPTS): Add long-plt.
(PARSE_AND_LIST_OPTIONS): Likewise.
(PARSE_AND_LIST_ARGS_CASES): Handle long-plt.
* ld.texinfo: Document --long-plt.

* ld-arm/long-plt-format.s: New test case.
* ld-arm/long-plt-format.d: Expected disassembly.
* ld-arm/arm-elf.exp: Run the new test.
bfd/ChangeLog
bfd/bfd-in.h
bfd/bfd-in2.h
bfd/elf32-arm.c
ld/ChangeLog
ld/emultempl/armelf.em
ld/ld.texinfo
ld/testsuite/ChangeLog
ld/testsuite/ld-arm/arm-elf.exp
ld/testsuite/ld-arm/long-plt-format.d [new file with mode: 0644]
ld/testsuite/ld-arm/long-plt-format.s [new file with mode: 0644]