diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2018-08-17 03:54:05 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2018-08-17 03:54:16 -0700 |
commit | bfb1e8c15a6b7d02cd0b9a124d01722a07ebf09a (patch) | |
tree | ca561553a9b38085c41dd850e2678b209c860c90 /bfd/elf-properties.c | |
parent | 2ecae92e2372102ac0fa774fce4c4c0d6f8c85f5 (diff) | |
download | fsf-binutils-gdb-bfb1e8c15a6b7d02cd0b9a124d01722a07ebf09a.zip fsf-binutils-gdb-bfb1e8c15a6b7d02cd0b9a124d01722a07ebf09a.tar.gz fsf-binutils-gdb-bfb1e8c15a6b7d02cd0b9a124d01722a07ebf09a.tar.bz2 |
x86: Remove empty X86_FEATURE_1_AND property
There is no need to generate .note.gnu.property section with empty
X86_FEATURE_1_AND property. This patch adds fixup_gnu_properties
to ELF linker backend so that x86 backend can remove it.
bfd/
PR ld/23515
* elf-bfd.h (elf_backend_data): Add fixup_gnu_properties.
* elf-properties.c (_bfd_elf_link_setup_gnu_properties): Call
backend fixup_gnu_properties if it isn't NULL. Discard
.note.gnu.property section if all properties have been removed.
* elfxx-target.h (elf_backend_fixup_gnu_properties): New.
(elfNN_bed): Initialize fixup_gnu_properties.
* elfxx-x86.c (_bfd_x86_elf_link_fixup_gnu_properties): New
function.
* elfxx-x86.h (_bfd_x86_elf_link_fixup_gnu_properties): New
prototype.
(elf_backend_fixup_gnu_properties): New.
ld/
PR ld/23515
* testsuite/ld-i386/ibt-plt-2a.d: Updated.
* testsuite/ld-i386/ibt-plt-2b.d: Likewise.
* testsuite/ld-x86-64/ibt-plt-2a-x32.d: Likewise.
* testsuite/ld-x86-64/ibt-plt-2a.d: Likewise.
* testsuite/ld-x86-64/ibt-plt-2b-x32.d: Likewise.
* testsuite/ld-x86-64/ibt-plt-2b.d: Likewise.
Diffstat (limited to 'bfd/elf-properties.c')
-rw-r--r-- | bfd/elf-properties.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/bfd/elf-properties.c b/bfd/elf-properties.c index f58bdc0..0d98ef1 100644 --- a/bfd/elf-properties.c +++ b/bfd/elf-properties.c @@ -520,6 +520,18 @@ _bfd_elf_link_setup_gnu_properties (struct bfd_link_info *info) return NULL; } + /* Fix up GNU properties. */ + if (bed->fixup_gnu_properties) + bed->fixup_gnu_properties (info, &elf_properties (first_pbfd)); + + if (elf_properties (first_pbfd) == NULL) + { + /* Discard .note.gnu.property section if all properties have + been removed. */ + sec->output_section = bfd_abs_section_ptr; + return NULL; + } + /* Compute the section size. */ list = elf_properties (first_pbfd); size = elf_get_gnu_property_section_size (list, align_size); |