mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-25 04:49:54 +08:00
x86: Properly add X86_ISA_1_NEEDED property
Existing properties may be removed during property merging. We avoid adding X86_ISA_1_NEEDED property only if existing properties won't be removed. bfd/ PR ld/23428 * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Don't add X86_ISA_1_NEEDED property only if existing properties won't be removed. ld/ PR ld/23428 * testsuite/ld-elf/dummy.s: New file. * testsuite/ld-elf/linux-x86.S: Add X86_FEATURE_1_AND property. * testsuite/ld-elf/linux-x86.exp: Add dummy.s to pr23428.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2018-08-11 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR ld/23428
|
||||||
|
* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Don't
|
||||||
|
add X86_ISA_1_NEEDED property only if existing properties won't
|
||||||
|
be removed.
|
||||||
|
|
||||||
2018-08-11 Alan Modra <amodra@gmail.com>
|
2018-08-11 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* reloc.c (bfd_get_reloc_size): Sort switch.
|
* reloc.c (bfd_get_reloc_size): Sort switch.
|
||||||
|
@ -2588,7 +2588,6 @@ _bfd_x86_elf_link_setup_gnu_properties
|
|||||||
prop->pr_kind = property_number;
|
prop->pr_kind = property_number;
|
||||||
}
|
}
|
||||||
else if (has_text
|
else if (has_text
|
||||||
&& elf_properties (ebfd) == NULL
|
|
||||||
&& elf_tdata (info->output_bfd)->o->build_id.sec == NULL
|
&& elf_tdata (info->output_bfd)->o->build_id.sec == NULL
|
||||||
&& !htab->elf.dynamic_sections_created
|
&& !htab->elf.dynamic_sections_created
|
||||||
&& !info->traditional_format
|
&& !info->traditional_format
|
||||||
@ -2598,11 +2597,28 @@ _bfd_x86_elf_link_setup_gnu_properties
|
|||||||
/* If the separate code program header is needed, make sure
|
/* If the separate code program header is needed, make sure
|
||||||
that the first read-only PT_LOAD segment has no code by
|
that the first read-only PT_LOAD segment has no code by
|
||||||
adding a GNU_PROPERTY_X86_ISA_1_NEEDED note. */
|
adding a GNU_PROPERTY_X86_ISA_1_NEEDED note. */
|
||||||
prop = _bfd_elf_get_property (ebfd,
|
elf_property_list *list;
|
||||||
GNU_PROPERTY_X86_ISA_1_NEEDED,
|
bfd_boolean need_property = TRUE;
|
||||||
4);
|
|
||||||
prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
|
for (list = elf_properties (ebfd); list; list = list->next)
|
||||||
prop->pr_kind = property_number;
|
switch (list->property.pr_type)
|
||||||
|
{
|
||||||
|
case GNU_PROPERTY_STACK_SIZE:
|
||||||
|
case GNU_PROPERTY_NO_COPY_ON_PROTECTED:
|
||||||
|
case GNU_PROPERTY_X86_ISA_1_NEEDED:
|
||||||
|
/* These properties won't be removed during merging. */
|
||||||
|
need_property = FALSE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (need_property)
|
||||||
|
{
|
||||||
|
prop = _bfd_elf_get_property (ebfd,
|
||||||
|
GNU_PROPERTY_X86_ISA_1_NEEDED,
|
||||||
|
4);
|
||||||
|
prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
|
||||||
|
prop->pr_kind = property_number;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create the GNU property note section if needed. */
|
/* Create the GNU property note section if needed. */
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2018-08-11 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR ld/23428
|
||||||
|
* testsuite/ld-elf/dummy.s: New file.
|
||||||
|
* testsuite/ld-elf/linux-x86.S: Add X86_FEATURE_1_AND property.
|
||||||
|
* testsuite/ld-elf/linux-x86.exp: Add dummy.s to pr23428.
|
||||||
|
|
||||||
2018-08-08 H.J. Lu <hongjiu.lu@intel.com>
|
2018-08-08 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
PR ld/23486
|
PR ld/23486
|
||||||
|
1
ld/testsuite/ld-elf/dummy.s
Normal file
1
ld/testsuite/ld-elf/dummy.s
Normal file
@ -0,0 +1 @@
|
|||||||
|
# Dummy
|
@ -61,3 +61,31 @@ syscall:
|
|||||||
ret /* Return to caller. */
|
ret /* Return to caller. */
|
||||||
.size syscall, .-syscall
|
.size syscall, .-syscall
|
||||||
.section .note.GNU-stack,"",@progbits
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
|
||||||
|
.section ".note.gnu.property", "a"
|
||||||
|
#ifdef __LP64__
|
||||||
|
.p2align 3
|
||||||
|
#else
|
||||||
|
.p2align 2
|
||||||
|
#endif
|
||||||
|
.long 1f - 0f /* name length */
|
||||||
|
.long 5f - 2f /* data length */
|
||||||
|
.long 5 /* note type */
|
||||||
|
0: .asciz "GNU" /* vendor name */
|
||||||
|
1:
|
||||||
|
#ifdef __LP64__
|
||||||
|
.p2align 3
|
||||||
|
#else
|
||||||
|
.p2align 2
|
||||||
|
#endif
|
||||||
|
2: .long 0xc0000002 /* pr_type. */
|
||||||
|
.long 4f - 3f /* pr_datasz. */
|
||||||
|
3:
|
||||||
|
.long 0x2
|
||||||
|
4:
|
||||||
|
#ifdef __LP64__
|
||||||
|
.p2align 3
|
||||||
|
#else
|
||||||
|
.p2align 2
|
||||||
|
#endif
|
||||||
|
5:
|
||||||
|
@ -37,7 +37,7 @@ run_ld_link_exec_tests [list \
|
|||||||
"Run PR ld/23428 test" \
|
"Run PR ld/23428 test" \
|
||||||
"--no-dynamic-linker -z separate-code" \
|
"--no-dynamic-linker -z separate-code" \
|
||||||
"" \
|
"" \
|
||||||
{ linux-x86.S pr23428.c } \
|
{ linux-x86.S pr23428.c dummy.s } \
|
||||||
"pr23428" \
|
"pr23428" \
|
||||||
"pass.out" \
|
"pass.out" \
|
||||||
"$NOPIE_CFLAGS -fno-asynchronous-unwind-tables" \
|
"$NOPIE_CFLAGS -fno-asynchronous-unwind-tables" \
|
||||||
|
Reference in New Issue
Block a user