x86: Don't add GNU_PROPERTY_X86_FEATURE_2_NEEDED for -z separate-code

With

commit 64029e9368
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.
This commit is contained in:
H.J. Lu 2018-10-08 05:14:02 -07:00
parent f3e660db14
commit 80f3ac5d61
6 changed files with 17 additions and 51 deletions

View 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

View 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)

View 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

View 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

View 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

View 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