diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2020-04-21 05:23:51 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2020-04-21 05:24:03 -0700 |
commit | 6f6fd151cbf226bbaa66e44977f57b7c6dc33d89 (patch) | |
tree | 0ef4a78de35fde84a58c5964f7822a19a95c620c /bfd/elfxx-target.h | |
parent | 1f7f2abbc31ee9e6d4faca58bef14d8ee8cb1bd2 (diff) | |
download | gdb-6f6fd151cbf226bbaa66e44977f57b7c6dc33d89.zip gdb-6f6fd151cbf226bbaa66e44977f57b7c6dc33d89.tar.gz gdb-6f6fd151cbf226bbaa66e44977f57b7c6dc33d89.tar.bz2 |
elf: Strip zero-sized dynamic sections
ELF size_dynamic_sections is called by the ELF backend linker after all
the linker input files have been seen but before the section sizes have
been set. After the sections sizes have been set, target-specific,
global optimizations may make some dynamic sections zero-sized if they
are no longer needed.
Add ELF strip_zero_sized_dynamic_sections so that ELF backend linker can
strip zero-sized dynamic sections after the sections sizes have been set.
bfd/
PR ld/25849
* elf-bfd.h (elf_backend_data): Add
elf_backend_strip_zero_sized_dynamic_sections.
(_bfd_elf_strip_zero_sized_dynamic_sections): New prototype.
* elf64-alpha.c (elf_backend_strip_zero_sized_dynamic_sections):
New macro.
* elflink.c (_bfd_elf_strip_zero_sized_dynamic_sections): New
function.
* elfxx-target.h (elf_backend_strip_zero_sized_dynamic_sections):
New macro.
(elfNN_bed): Add elf_backend_strip_zero_sized_dynamic_sections.
ld/
PR ld/25849
* ldelfgen.c (ldelf_map_segments): Call
elf_backend_strip_zero_sized_dynamic_sections.
* testsuite/ld-alpha/tlsbinr.rd: Updated.
Diffstat (limited to 'bfd/elfxx-target.h')
-rw-r--r-- | bfd/elfxx-target.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/bfd/elfxx-target.h b/bfd/elfxx-target.h index 1ae17f4..b41fcde 100644 --- a/bfd/elfxx-target.h +++ b/bfd/elfxx-target.h @@ -485,6 +485,9 @@ #ifndef elf_backend_size_dynamic_sections #define elf_backend_size_dynamic_sections 0 #endif +#ifndef elf_backend_strip_zero_sized_dynamic_sections +#define elf_backend_strip_zero_sized_dynamic_sections 0 +#endif #ifndef elf_backend_init_index_section #define elf_backend_init_index_section _bfd_void_bfd_link #endif @@ -831,6 +834,7 @@ static struct elf_backend_data elfNN_bed = elf_backend_adjust_dynamic_symbol, elf_backend_always_size_sections, elf_backend_size_dynamic_sections, + elf_backend_strip_zero_sized_dynamic_sections, elf_backend_init_index_section, elf_backend_relocate_section, elf_backend_finish_dynamic_symbol, |