[binutils-gdb] x86: Don't add GNU_PROPERTY_X86_FEATURE_2_NEEDED for -z separate-code

H.J.Lu hjl@sourceware.org
Mon Oct 8 12:14:00 GMT 2018


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=80f3ac5d61a5d01d7cf951de0e24ecdc71c545cb

commit 80f3ac5d61a5d01d7cf951de0e24ecdc71c545cb
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Oct 8 05:14:02 2018 -0700

    x86: Don't add GNU_PROPERTY_X86_FEATURE_2_NEEDED for -z separate-code
    
    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.

Diff:
---
 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 a4a7b4f..86387d8 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
index fc99b28..05f5c6a 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 6c322c3..3580a2b 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,12 @@
 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
 	* ldlang.c (lang_insert_orphan): Properly group and place orphan
 	note sections.  Properly handle orphan note section before all
diff --git a/ld/testsuite/ld-i386/property-x86-4a.d b/ld/testsuite/ld-i386/property-x86-4a.d
index 8ab0115..5e2b468 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: <None>
 	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 9dd6e35..76f74e5 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: <None>
 	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 4dc87ac..e76be79 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: <None>
 	x86 feature used: x86



More information about the Binutils-cvs mailing list