mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-25 19:14:52 +08:00
x86: Don't remove empty GNU_PROPERTY_X86_UINT32_OR_AND properties
For GNU_PROPERTY_X86_COMPAT_ISA_1_USED and GNU_PROPERTY_X86_UINT32_OR_AND properties, a bit in the output pr_data field is set if it is set in any relocatable input pr_data fields and this property is present in all relocatable input files. A missing property implies that its bits have unknown values. When all bits in the the output pr_data field are zero, this property should not be removed from output to indicate it has zero in all bits. bfd/ PR ld/23372 * elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Don't remove empty properties for GNU_PROPERTY_X86_COMPAT_ISA_1_USED and GNU_PROPERTY_X86_UINT32_OR_AND. (_bfd_x86_elf_link_fixup_gnu_properties): Likewise. ld/ PR ld/23372 * testsuite/ld-i386/pr23372a.d: Updated. * testsuite/ld-i386/pr23372c.d: Likewise. * testsuite/ld-x86-64/pr23372a-x32.d: Likewise. * testsuite/ld-x86-64/pr23372a.d: Likewise. * testsuite/ld-x86-64/pr23372c-x32.d: Likewise. * testsuite/ld-x86-64/pr23372c.d: Likewise.
This commit is contained in:
parent
f4238194a2
commit
fde51dd189
@ -1,3 +1,11 @@
|
||||
2018-12-04 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/23372
|
||||
* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Don't remove
|
||||
empty properties for GNU_PROPERTY_X86_COMPAT_ISA_1_USED and
|
||||
GNU_PROPERTY_X86_UINT32_OR_AND.
|
||||
(_bfd_x86_elf_link_fixup_gnu_properties): Likewise.
|
||||
|
||||
2018-12-03 Kito Cheng <kito@andestech.com>
|
||||
|
||||
* elfxx-riscv.h (RISCV_DONT_CARE_VERSION): New macro.
|
||||
|
@ -2422,9 +2422,14 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
|
||||
aprop->pr_kind = property_remove;
|
||||
updated = TRUE;
|
||||
}
|
||||
return updated;
|
||||
}
|
||||
goto or_property;
|
||||
else
|
||||
{
|
||||
number = aprop->u.number;
|
||||
aprop->u.number = number | bprop->u.number;
|
||||
updated = number != (unsigned int) aprop->u.number;
|
||||
}
|
||||
return updated;
|
||||
}
|
||||
else if (pr_type == GNU_PROPERTY_X86_COMPAT_ISA_1_NEEDED
|
||||
|| (pr_type >= GNU_PROPERTY_X86_UINT32_OR_LO
|
||||
@ -2432,7 +2437,6 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
|
||||
{
|
||||
if (aprop != NULL && bprop != NULL)
|
||||
{
|
||||
or_property:
|
||||
number = aprop->u.number;
|
||||
aprop->u.number = number | bprop->u.number;
|
||||
/* Remove the property if all bits are empty. */
|
||||
@ -2957,7 +2961,12 @@ _bfd_x86_elf_link_fixup_gnu_properties (struct bfd_link_info *info,
|
||||
|| (type >= GNU_PROPERTY_X86_UINT32_OR_AND_LO
|
||||
&& type <= GNU_PROPERTY_X86_UINT32_OR_AND_HI))
|
||||
{
|
||||
if (p->property.u.number == 0)
|
||||
if (p->property.u.number == 0
|
||||
&& (type == GNU_PROPERTY_X86_COMPAT_ISA_1_NEEDED
|
||||
|| (type >= GNU_PROPERTY_X86_UINT32_AND_LO
|
||||
&& type <= GNU_PROPERTY_X86_UINT32_AND_HI)
|
||||
|| (type >= GNU_PROPERTY_X86_UINT32_OR_LO
|
||||
&& type <= GNU_PROPERTY_X86_UINT32_OR_HI)))
|
||||
{
|
||||
/* Remove empty property. */
|
||||
*listp = p->next;
|
||||
|
10
ld/ChangeLog
10
ld/ChangeLog
@ -1,3 +1,13 @@
|
||||
2018-12-04 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/23372
|
||||
* testsuite/ld-i386/pr23372a.d: Updated.
|
||||
* testsuite/ld-i386/pr23372c.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23372a-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23372a.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23372c-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23372c.d: Likewise.
|
||||
|
||||
2018-12-01 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/23930
|
||||
|
@ -3,3 +3,8 @@
|
||||
#as: --32
|
||||
#ld: -r -m elf_i386
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 ISA used:
|
||||
|
@ -3,3 +3,8 @@
|
||||
#as: --32
|
||||
#ld: -r -m elf_i386
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 ISA used:
|
||||
|
@ -3,3 +3,8 @@
|
||||
#as: --x32
|
||||
#ld: -r -m elf32_x86_64
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 ISA used:
|
||||
|
@ -3,3 +3,8 @@
|
||||
#as: --64 -defsym __64_bit__=1
|
||||
#ld: -r -m elf_x86_64
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 ISA used:
|
||||
|
@ -3,3 +3,8 @@
|
||||
#as: --x32
|
||||
#ld: -r -m elf32_x86_64
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 ISA used:
|
||||
|
@ -3,3 +3,8 @@
|
||||
#as: --64 -defsym __64_bit__=1
|
||||
#ld: -r -m elf_x86_64
|
||||
#readelf: -n
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: x86 ISA used:
|
||||
|
Loading…
Reference in New Issue
Block a user