From 80f3ac5d61a5d01d7cf951de0e24ecdc71c545cb Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 8 Oct 2018 05:14:02 -0700 Subject: [PATCH] x86: Don't add GNU_PROPERTY_X86_FEATURE_2_NEEDED for -z separate-code With commit 64029e93683a266c38d19789e780f3748bd6a188 Author: Alan Modra Date: Fri Oct 5 11:40:54 2018 +0930 Separate header PT_LOAD for -z separate-code there is no need to add a GNU_PROPERTY_X86_ISA_1_USED note to force program header in in non-code PT_LOAD segment when -z separate-code is used. bfd/ PR ld/23428 * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Don't add GNU_PROPERTY_X86_FEATURE_2_NEEDED to force program header in non-code PT_LOAD segment. ld/ PR ld/23428 * testsuite/ld-i386/property-x86-4a.d: Updated. * testsuite/ld-x86-64/property-x86-4a-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-4a.d: Likewise. --- bfd/ChangeLog | 7 +++ bfd/elfxx-x86.c | 45 -------------------- ld/ChangeLog | 7 +++ ld/testsuite/ld-i386/property-x86-4a.d | 3 +- ld/testsuite/ld-x86-64/property-x86-4a-x32.d | 3 +- ld/testsuite/ld-x86-64/property-x86-4a.d | 3 +- 6 files changed, 17 insertions(+), 51 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index a4a7b4fd9df..86387d8c6ff 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2018-10-08 H.J. Lu + + PR ld/23428 + * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Don't + add GNU_PROPERTY_X86_FEATURE_2_NEEDED to force program header + in non-code PT_LOAD segment. + 2018-10-08 Alan Modra * elf-nacl.c (nacl_modify_segment_map): Cope with header PT_LOAD diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c index fc99b28c07c..05f5c6a2f95 100644 --- a/bfd/elfxx-x86.c +++ b/bfd/elfxx-x86.c @@ -2542,7 +2542,6 @@ _bfd_x86_elf_link_setup_gnu_properties const struct elf_backend_data *bed; unsigned int class_align = ABI_64_P (info->output_bfd) ? 3 : 2; unsigned int got_align; - bfd_boolean has_text = FALSE; features = 0; if (info->ibt) @@ -2557,14 +2556,6 @@ _bfd_x86_elf_link_setup_gnu_properties if (bfd_get_flavour (pbfd) == bfd_target_elf_flavour && bfd_count_sections (pbfd) != 0) { - if (!has_text) - { - /* Check if there is no non-empty text section. */ - sec = bfd_get_section_by_name (pbfd, ".text"); - if (sec != NULL && sec->size != 0) - has_text = TRUE; - } - ebfd = pbfd; if (elf_properties (pbfd) != NULL) @@ -2590,42 +2581,6 @@ _bfd_x86_elf_link_setup_gnu_properties prop->u.number |= features; prop->pr_kind = property_number; } - else if (has_text - && elf_tdata (info->output_bfd)->o->build_id.sec == NULL - && !htab->elf.dynamic_sections_created - && !info->traditional_format - && (info->output_bfd->flags & D_PAGED) != 0 - && info->separate_code) - { - /* If the separate code program header is needed, make sure - that the first read-only PT_LOAD segment has no code by - adding a GNU_PROPERTY_X86_FEATURE_2_NEEDED note. */ - elf_property_list *list; - bfd_boolean need_property = TRUE; - - for (list = elf_properties (ebfd); list; list = list->next) - { - unsigned int pr_type = list->property.pr_type; - if (pr_type == GNU_PROPERTY_STACK_SIZE - || pr_type == GNU_PROPERTY_NO_COPY_ON_PROTECTED - || pr_type == GNU_PROPERTY_X86_COMPAT_ISA_1_NEEDED - || (pr_type >= GNU_PROPERTY_X86_UINT32_OR_LO - && pr_type <= GNU_PROPERTY_X86_UINT32_OR_HI)) - { - /* These properties won't be removed during merging. */ - need_property = FALSE; - break; - } - } - - if (need_property) - { - prop = _bfd_elf_get_property - (ebfd, GNU_PROPERTY_X86_FEATURE_2_NEEDED, 4); - prop->u.number = GNU_PROPERTY_X86_FEATURE_2_X86; - prop->pr_kind = property_number; - } - } /* Create the GNU property note section if needed. */ if (prop != NULL && pbfd == NULL) diff --git a/ld/ChangeLog b/ld/ChangeLog index 6c322c30cfe..3580a2b7e5c 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,10 @@ +2018-10-08 H.J. Lu + + PR ld/23428 + * testsuite/ld-i386/property-x86-4a.d: Updated. + * testsuite/ld-x86-64/property-x86-4a-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-4a.d: Likewise. + 2018-10-08 H.J. Lu PR ld/23658 diff --git a/ld/testsuite/ld-i386/property-x86-4a.d b/ld/testsuite/ld-i386/property-x86-4a.d index 8ab0115cdd3..5e2b4689f86 100644 --- a/ld/testsuite/ld-i386/property-x86-4a.d +++ b/ld/testsuite/ld-i386/property-x86-4a.d @@ -6,8 +6,7 @@ Displaying notes found in: .note.gnu.property Owner Data size Description - GNU 0x0000002c NT_GNU_PROPERTY_TYPE_0 + GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 Properties: no copy on protected - x86 feature needed: x86 x86 ISA used: x86 feature used: x86 diff --git a/ld/testsuite/ld-x86-64/property-x86-4a-x32.d b/ld/testsuite/ld-x86-64/property-x86-4a-x32.d index 9dd6e3540e6..76f74e5ded6 100644 --- a/ld/testsuite/ld-x86-64/property-x86-4a-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-4a-x32.d @@ -6,8 +6,7 @@ Displaying notes found in: .note.gnu.property Owner Data size Description - GNU 0x0000002c NT_GNU_PROPERTY_TYPE_0 + GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 Properties: no copy on protected - x86 feature needed: x86 x86 ISA used: x86 feature used: x86 diff --git a/ld/testsuite/ld-x86-64/property-x86-4a.d b/ld/testsuite/ld-x86-64/property-x86-4a.d index 4dc87acd56f..e76be796a6b 100644 --- a/ld/testsuite/ld-x86-64/property-x86-4a.d +++ b/ld/testsuite/ld-x86-64/property-x86-4a.d @@ -6,8 +6,7 @@ Displaying notes found in: .note.gnu.property Owner Data size Description - GNU 0x00000038 NT_GNU_PROPERTY_TYPE_0 + GNU 0x00000028 NT_GNU_PROPERTY_TYPE_0 Properties: no copy on protected - x86 feature needed: x86 x86 ISA used: x86 feature used: x86 -- 2.30.2