x86: Don't add GNU_PROPERTY_X86_FEATURE_2_NEEDED for -z separate-code
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 8 Oct 2018 12:14:02 +0000 (05:14 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 8 Oct 2018 12:14:13 +0000 (05:14 -0700)
With

commit 64029e93683a266c38d19789e780f3748bd6a188
Author: Alan Modra <amodra@gmail.com>
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
bfd/elfxx-x86.c
ld/ChangeLog
ld/testsuite/ld-i386/property-x86-4a.d
ld/testsuite/ld-x86-64/property-x86-4a-x32.d
ld/testsuite/ld-x86-64/property-x86-4a.d

index a4a7b4fd9df0262591a01fb100f6802acad06727..86387d8c6ffc046a2a1af2d10f3a66a32c654361 100644 (file)
@@ -1,3 +1,10 @@
+2018-10-08  H.J. Lu  <hongjiu.lu@intel.com>
+
+       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  <amodra@gmail.com>
 
        * elf-nacl.c (nacl_modify_segment_map): Cope with header PT_LOAD
index fc99b28c07c650c3685f8b826ab77b4f092c619c..05f5c6a2f95d11da9bc106d2db750b541f7d700f 100644 (file)
@@ -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)
index 6c322c30cfebc7dfcd335bd8816d249596210169..3580a2b7e5c7219208944ae6dd4075696d9df095 100644 (file)
@@ -1,3 +1,10 @@
+2018-10-08  H.J. Lu  <hongjiu.lu@intel.com>
+
+       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  <hongjiu.lu@intel.com>
 
        PR ld/23658
index 8ab0115cdd36010bac78b0ce0a7acaf99edd6bee..5e2b4689f867d64d42e6a9f1ba7fa32e39572cf6 100644 (file)
@@ -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: <None>
        x86 feature used: x86
index 9dd6e3540e6b47c4fa1f76f19fca52f6a1657545..76f74e5ded65e38fc394f9ba1ce3c9cdefe5e2ae 100644 (file)
@@ -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: <None>
        x86 feature used: x86
index 4dc87acd56f4250851c2fec38f8bdbae6c627c45..e76be796a6b93a3c5ff395a74eafb3c13c377c4d 100644 (file)
@@ -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: <None>
        x86 feature used: x86