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:
parent
f3e660db14
commit
80f3ac5d61
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user