aboutsummaryrefslogtreecommitdiff
path: root/bfd/elfxx-target.h
diff options
context:
space:
mode:
authorYury Usishchev <y.usishchev@samsung.com>2015-12-22 15:50:13 +0000
committerNick Clifton <nickc@redhat.com>2015-12-22 15:50:13 +0000
commit491d01d3da18fb61fa6c7c61c091b4cb8c5773f7 (patch)
tree4f325fdc33925c18aa4db39125a2f91ef8d39e7c /bfd/elfxx-target.h
parent4abd5ed2221c826bcb843794286777452de5c50b (diff)
downloadgdb-491d01d3da18fb61fa6c7c61c091b4cb8c5773f7.zip
gdb-491d01d3da18fb61fa6c7c61c091b4cb8c5773f7.tar.gz
gdb-491d01d3da18fb61fa6c7c61c091b4cb8c5773f7.tar.bz2
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.
Diffstat (limited to 'bfd/elfxx-target.h')
-rw-r--r--bfd/elfxx-target.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/bfd/elfxx-target.h b/bfd/elfxx-target.h
index 0acecaf..c5bd7de 100644
--- a/bfd/elfxx-target.h
+++ b/bfd/elfxx-target.h
@@ -538,6 +538,9 @@
#ifndef elf_backend_count_relocs
#define elf_backend_count_relocs NULL
#endif
+#ifndef elf_backend_count_additional_relocs
+#define elf_backend_count_additional_relocs NULL
+#endif
#ifndef elf_backend_sort_relocs_p
#define elf_backend_sort_relocs_p NULL
#endif
@@ -755,6 +758,7 @@ static struct elf_backend_data elfNN_bed =
elf_backend_ignore_undef_symbol,
elf_backend_emit_relocs,
elf_backend_count_relocs,
+ elf_backend_count_additional_relocs,
elf_backend_sort_relocs_p,
elf_backend_grok_prstatus,
elf_backend_grok_psinfo,