ARM: Fix exidx coverage for relocatable builds.
authorYury Usishchev <y.usishchev@samsung.com>
Tue, 22 Dec 2015 15:50:13 +0000 (15:50 +0000)
committerNick Clifton <nickc@redhat.com>
Tue, 22 Dec 2015 15:50:13 +0000 (15:50 +0000)
commit491d01d3da18fb61fa6c7c61c091b4cb8c5773f7
tree4f325fdc33925c18aa4db39125a2f91ef8d39e7c
parent4abd5ed2221c826bcb843794286777452de5c50b
ARM: Fix exidx coverage for relocatable builds.

bfd  * elf-bfd.h: Add callback to count additional relocations.
     * elf32-arm.c (_arm_elf_section_data): Add new counter.
     (insert_cantunwind_after): Increment relocations counter.
     (elf32_arm_fix_exidx_coverage): Remove exidx entries and add
     terminating CANTUNWIND entry only in final builds.
     (elf32_arm_add_relocation): New function.
     (elf32_arm_write_section): Add relocations in relocatable builds.
     (elf32_arm_count_additional_relocs): New function.
     (elf_backend_count_additional_relocs): New define.
     * bfd/elflink.c (bfd_elf_final_link): Use callback and adjust size of
     .rel section.
     * bfd/elfxx-target.h (elf_backend_count_additional_relocs): New define.

ld   * emultempl/armelf.em (gld${EMULATION_NAME}_after_allocation): Call
     elf32_arm_fix_exidx_coverage for relocatable builds.

ld/testsuite
     * ld-arm/arm-elf.exp: New test.
     * ld-arm/unwind-rel.d: New file.
     * ld-arm/unwind-rel1.s: New file.
     * ld-arm/unwind-rel2.s: New file.
     * ld-arm/unwind-rel3.s: New file.
13 files changed:
bfd/ChangeLog
bfd/elf-bfd.h
bfd/elf32-arm.c
bfd/elflink.c
bfd/elfxx-target.h
ld/ChangeLog
ld/emultempl/armelf.em
ld/testsuite/ChangeLog
ld/testsuite/ld-arm/arm-elf.exp
ld/testsuite/ld-arm/unwind-rel.d [new file with mode: 0644]
ld/testsuite/ld-arm/unwind-rel1.s [new file with mode: 0644]
ld/testsuite/ld-arm/unwind-rel2.s [new file with mode: 0644]
ld/testsuite/ld-arm/unwind-rel3.s [new file with mode: 0644]