summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog16
-rw-r--r--bfd/elfxx-x86.c136
-rw-r--r--binutils/ChangeLog30
-rw-r--r--binutils/readelf.c275
-rw-r--r--binutils/testsuite/binutils-all/i386/pr21231b.d4
-rw-r--r--binutils/testsuite/binutils-all/i386/pr21231b.s4
-rw-r--r--binutils/testsuite/binutils-all/x86-64/pr21231b.d4
-rw-r--r--binutils/testsuite/binutils-all/x86-64/pr21231b.s4
-rw-r--r--binutils/testsuite/binutils-all/x86-64/pr23494a-x32.d4
-rw-r--r--binutils/testsuite/binutils-all/x86-64/pr23494a.d4
-rw-r--r--binutils/testsuite/binutils-all/x86-64/pr23494a.s6
-rw-r--r--binutils/testsuite/binutils-all/x86-64/pr23494b.s2
-rw-r--r--binutils/testsuite/binutils-all/x86-64/pr23494c-x32.d2
-rw-r--r--binutils/testsuite/binutils-all/x86-64/pr23494c.d2
-rw-r--r--binutils/testsuite/binutils-all/x86-64/pr23494c.s6
-rw-r--r--binutils/testsuite/binutils-all/x86-64/pr23494d-x32.d4
-rw-r--r--binutils/testsuite/binutils-all/x86-64/pr23494d.d4
-rw-r--r--binutils/testsuite/binutils-all/x86-64/pr23494e-x32.d4
-rw-r--r--binutils/testsuite/binutils-all/x86-64/pr23494e.d4
-rw-r--r--include/ChangeLog59
-rw-r--r--include/elf/common.h112
-rw-r--r--ld/ChangeLog61
-rw-r--r--ld/testsuite/ld-i386/i386.exp4
-rw-r--r--ld/testsuite/ld-i386/pr23372a.s2
-rw-r--r--ld/testsuite/ld-i386/pr23372b.s2
-rw-r--r--ld/testsuite/ld-i386/pr23372c.d5
-rw-r--r--ld/testsuite/ld-i386/pr23372c.s2
-rw-r--r--ld/testsuite/ld-i386/pr23372d.d5
-rw-r--r--ld/testsuite/ld-i386/pr23486c.d10
-rw-r--r--ld/testsuite/ld-i386/pr23486d.d10
-rw-r--r--ld/testsuite/ld-i386/property-3.r2
-rw-r--r--ld/testsuite/ld-i386/property-4.r2
-rw-r--r--ld/testsuite/ld-i386/property-5.r2
-rw-r--r--ld/testsuite/ld-i386/property-x86-1.S4
-rw-r--r--ld/testsuite/ld-i386/property-x86-2.S4
-rw-r--r--ld/testsuite/ld-i386/property-x86-3.d4
-rw-r--r--ld/testsuite/ld-i386/property-x86-3.s8
-rw-r--r--ld/testsuite/ld-i386/property-x86-ibt3a.d2
-rw-r--r--ld/testsuite/ld-i386/property-x86-ibt3b.d2
-rw-r--r--ld/testsuite/ld-i386/property-x86-shstk3a.d2
-rw-r--r--ld/testsuite/ld-i386/property-x86-shstk3b.d2
-rw-r--r--ld/testsuite/ld-x86-64/pr23372a.s2
-rw-r--r--ld/testsuite/ld-x86-64/pr23372b.s2
-rw-r--r--ld/testsuite/ld-x86-64/pr23372c-x32.d5
-rw-r--r--ld/testsuite/ld-x86-64/pr23372c.d5
-rw-r--r--ld/testsuite/ld-x86-64/pr23372c.s2
-rw-r--r--ld/testsuite/ld-x86-64/pr23372d-x32.d5
-rw-r--r--ld/testsuite/ld-x86-64/pr23372d.d5
-rw-r--r--ld/testsuite/ld-x86-64/pr23372d.s30
-rw-r--r--ld/testsuite/ld-x86-64/pr23372e.s30
-rw-r--r--ld/testsuite/ld-x86-64/pr23372f.s30
-rw-r--r--ld/testsuite/ld-x86-64/pr23486a.s2
-rw-r--r--ld/testsuite/ld-x86-64/pr23486b.s2
-rw-r--r--ld/testsuite/ld-x86-64/pr23486c-x32.d10
-rw-r--r--ld/testsuite/ld-x86-64/pr23486c.d10
-rw-r--r--ld/testsuite/ld-x86-64/pr23486c.s30
-rw-r--r--ld/testsuite/ld-x86-64/pr23486d-x32.d10
-rw-r--r--ld/testsuite/ld-x86-64/pr23486d.d10
-rw-r--r--ld/testsuite/ld-x86-64/pr23486d.s30
-rw-r--r--ld/testsuite/ld-x86-64/property-3.r2
-rw-r--r--ld/testsuite/ld-x86-64/property-4.r2
-rw-r--r--ld/testsuite/ld-x86-64/property-5.r2
-rw-r--r--ld/testsuite/ld-x86-64/property-x86-1.S4
-rw-r--r--ld/testsuite/ld-x86-64/property-x86-2.S4
-rw-r--r--ld/testsuite/ld-x86-64/property-x86-3-x32.d4
-rw-r--r--ld/testsuite/ld-x86-64/property-x86-3.d4
-rw-r--r--ld/testsuite/ld-x86-64/property-x86-3.s8
-rw-r--r--ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d2
-rw-r--r--ld/testsuite/ld-x86-64/property-x86-ibt3a.d2
-rw-r--r--ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d2
-rw-r--r--ld/testsuite/ld-x86-64/property-x86-ibt3b.d2
-rw-r--r--ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d2
-rw-r--r--ld/testsuite/ld-x86-64/property-x86-shstk3a.d2
-rw-r--r--ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d2
-rw-r--r--ld/testsuite/ld-x86-64/property-x86-shstk3b.d2
-rw-r--r--ld/testsuite/ld-x86-64/x86-64.exp8
76 files changed, 896 insertions, 199 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 44690b831f1..c9e7e2a8509 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,21 @@
2018-08-24 H.J. Lu <hongjiu.lu@intel.com>
+ * elfxx-x86.c (_bfd_x86_elf_parse_gnu_properties): Handle
+ X86_COMPAT_ISA_1_USED, X86_COMPAT_ISA_1_NEEDED,
+ X86_UINT32_AND_LO, X86_UINT32_AND_HI, X86_UINT32_OR_LO,
+ X86_UINT32_OR_HI, X86_UINT32_OR_AND_LO and X86_UINT32_OR_AND_HI
+ instead of X86_ISA_1_USED, X86_ISA_1_NEEDED and X86_FEATURE_1_AND.
+ (_bfd_x86_elf_merge_gnu_properties): Likewise.
+ (_bfd_x86_elf_link_setup_gnu_properties): Add X86_FEATURE_2_NEEDED
+ instead of X86_ISA_1_NEEDED.
+ (_bfd_x86_elf_link_fixup_gnu_properties): Handle
+ X86_COMPAT_ISA_1_USED, X86_COMPAT_ISA_1_NEEDED, X86_UINT32_AND_LO,
+ X86_UINT32_AND_HI, X86_UINT32_OR_LO, X86_UINT32_OR_HI,
+ X86_UINT32_OR_AND_LO and X86_UINT32_OR_AND_HI instead of
+ X86_ISA_1_USED, X86_ISA_1_NEEDED and X86_FEATURE_1_AND.
+
+2018-08-24 H.J. Lu <hongjiu.lu@intel.com>
+
* elfxx-x86.c (_bfd_x86_elf_parse_gnu_properties): Mask out the
GNU_PROPERTY_X86_UINT32_VALID bit.
(_bfd_x86_elf_link_fixup_gnu_properties): Set the
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
index 0d91e4dfc95..d44ec5ad94a 100644
--- a/bfd/elfxx-x86.c
+++ b/bfd/elfxx-x86.c
@@ -2361,20 +2361,20 @@ _bfd_x86_elf_parse_gnu_properties (bfd *abfd, unsigned int type,
{
elf_property *prop;
- switch (type)
+ if (type == GNU_PROPERTY_X86_COMPAT_ISA_1_USED
+ || 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)
+ || (type >= GNU_PROPERTY_X86_UINT32_OR_AND_LO
+ && type <= GNU_PROPERTY_X86_UINT32_OR_AND_HI))
{
- case GNU_PROPERTY_X86_ISA_1_USED:
- case GNU_PROPERTY_X86_ISA_1_NEEDED:
- case GNU_PROPERTY_X86_FEATURE_1_AND:
if (datasz != 4)
{
_bfd_error_handler
- ((type == GNU_PROPERTY_X86_ISA_1_USED
- ? _("error: %pB: <corrupt x86 ISA used size: 0x%x>")
- : (type == GNU_PROPERTY_X86_ISA_1_NEEDED
- ? _("error: %pB: <corrupt x86 ISA needed size: 0x%x>")
- : _("error: %pB: <corrupt x86 feature size: 0x%x>"))),
- abfd, datasz);
+ (_("error: %pB: <corrupt x86 property (0x%x) size: 0x%x>"),
+ abfd, type, datasz);
return property_corrupt;
}
prop = _bfd_elf_get_property (abfd, type, datasz);
@@ -2383,13 +2383,10 @@ _bfd_x86_elf_parse_gnu_properties (bfd *abfd, unsigned int type,
prop->u.number |= (bfd_h_get_32 (abfd, ptr)
& ~GNU_PROPERTY_X86_UINT32_VALID);
prop->pr_kind = property_number;
- break;
-
- default:
- return property_ignored;
+ return property_number;
}
- return property_number;
+ return property_ignored;
}
/* Merge x86 GNU property BPROP with APROP. If APROP isn't NULL,
@@ -2406,9 +2403,10 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
bfd_boolean updated = FALSE;
unsigned int pr_type = aprop != NULL ? aprop->pr_type : bprop->pr_type;
- switch (pr_type)
+ if (pr_type == GNU_PROPERTY_X86_COMPAT_ISA_1_USED
+ || (pr_type >= GNU_PROPERTY_X86_UINT32_OR_AND_LO
+ && pr_type <= GNU_PROPERTY_X86_UINT32_OR_AND_HI))
{
- case GNU_PROPERTY_X86_ISA_1_USED:
if (aprop == NULL || bprop == NULL)
{
/* Only one of APROP and BPROP can be NULL. */
@@ -2419,11 +2417,14 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
aprop->pr_kind = property_remove;
updated = TRUE;
}
- break;
+ return updated;
}
goto or_property;
-
- case GNU_PROPERTY_X86_ISA_1_NEEDED:
+ }
+ else if (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))
+ {
if (aprop != NULL && bprop != NULL)
{
or_property:
@@ -2458,9 +2459,11 @@ or_property:
updated = bprop->u.number != 0;
}
}
- break;
-
- case GNU_PROPERTY_X86_FEATURE_1_AND:
+ return updated;
+ }
+ else if (pr_type >= GNU_PROPERTY_X86_UINT32_AND_LO
+ && pr_type <= GNU_PROPERTY_X86_UINT32_AND_HI)
+ {
/* Only one of APROP and BPROP can be NULL:
1. APROP & BPROP when both APROP and BPROP aren't NULL.
2. If APROP is NULL, remove x86 feature.
@@ -2511,9 +2514,10 @@ or_property:
updated = TRUE;
}
}
- break;
-
- default:
+ return updated;
+ }
+ else
+ {
/* Never should happen. */
abort ();
}
@@ -2598,27 +2602,30 @@ _bfd_x86_elf_link_setup_gnu_properties
{
/* 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_ISA_1_NEEDED note. */
+ 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)
- 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;
- }
+ {
+ 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_ISA_1_NEEDED,
- 4);
- prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
+ 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;
}
}
@@ -2971,26 +2978,35 @@ _bfd_x86_elf_link_fixup_gnu_properties (struct bfd_link_info *info,
elf_property_list *p;
for (p = *listp; p; p = p->next)
- switch (p->property.pr_type)
- {
- case GNU_PROPERTY_X86_ISA_1_USED:
- case GNU_PROPERTY_X86_ISA_1_NEEDED:
- case GNU_PROPERTY_X86_FEATURE_1_AND:
- if (p->property.u.number == 0)
- {
- /* Remove empty property. */
- *listp = p->next;
- continue;
- }
+ {
+ unsigned int type = p->property.pr_type;
+ if (type == GNU_PROPERTY_X86_COMPAT_ISA_1_USED
+ || 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)
+ || (type >= GNU_PROPERTY_X86_UINT32_OR_AND_LO
+ && type <= GNU_PROPERTY_X86_UINT32_OR_AND_HI))
+ {
+ if (p->property.u.number == 0)
+ {
+ /* Remove empty property. */
+ *listp = p->next;
+ continue;
+ }
- /* Mark x86-specific properties with X86_UINT32_VALID for
- non-relocatable output. */
- if (!(bfd_link_relocatable (info)))
- p->property.u.number |= GNU_PROPERTY_X86_UINT32_VALID;
+ /* Mark x86-specific properties with X86_UINT32_VALID for
+ non-relocatable output. */
+ if (!bfd_link_relocatable (info))
+ p->property.u.number |= GNU_PROPERTY_X86_UINT32_VALID;
- listp = &p->next;
- break;
- default:
- break;
- }
+ listp = &p->next;
+ }
+ else if (type > GNU_PROPERTY_HIPROC)
+ {
+ /* The property list is sorted in order of type. */
+ break;
+ }
+ }
}
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 76af83b6ec5..3e26571ea3e 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,5 +1,35 @@
2018-08-24 H.J. Lu <hongjiu.lu@intel.com>
+ * readelf.c (decode_x86_compat_isa): New function.
+ (decode_x86_feature_2): Likewise.
+ (decode_x86_isa): Updated for new X86_ISA_1_XXX bits.
+ (decode_x86_feature): Renamed to ...
+ (decode_x86_feature_1): This. Remove the type argument.
+ (print_gnu_property_note): Handle X86_COMPAT_ISA_1_USED,
+ X86_COMPAT_ISA_1_NEEDED, X86_UINT32_AND_LO, X86_UINT32_AND_HI,
+ X86_UINT32_OR_LO, X86_UINT32_OR_HI, X86_UINT32_OR_AND_LO and
+ X86_UINT32_OR_AND_HI instead of X86_ISA_1_USED, X86_ISA_1_NEEDED
+ and X86_FEATURE_1_AND.
+ * testsuite/binutils-all/i386/pr21231b.s: Updated to the current
+ GNU_PROPERTY_X86_ISA_1_USED and GNU_PROPERTY_X86_ISA_1_NEEDED
+ values.
+ * testsuite/binutils-all/x86-64/pr21231b.s: Likewise.
+ * testsuite/binutils-all/x86-64/pr23494a.s: Likewise.
+ * testsuite/binutils-all/x86-64/pr23494b.s: Likewise.
+ * testsuite/binutils-all/x86-64/pr23494c.s: Likewise.
+ * testsuite/binutils-all/i386/pr21231b.d: Updated.
+ * testsuite/binutils-all/x86-64/pr21231b.d: Likewise.
+ * testsuite/binutils-all/x86-64/pr23494a-x32.d: Likewise.
+ * testsuite/binutils-all/x86-64/pr23494a.d: Likewise.
+ * testsuite/binutils-all/x86-64/pr23494c-x32.d: Likewise.
+ * testsuite/binutils-all/x86-64/pr23494c.d: Likewise.
+ * testsuite/binutils-all/x86-64/pr23494d-x32.d: Likewise.
+ * testsuite/binutils-all/x86-64/pr23494d.d: Likewise.
+ * testsuite/binutils-all/x86-64/pr23494e-x32.d: Likewise.
+ * testsuite/binutils-all/x86-64/pr23494e.d: Likewise.
+
+2018-08-24 H.J. Lu <hongjiu.lu@intel.com>
+
* readelf.c (print_gnu_property_note): Check the
GNU_PROPERTY_X86_UINT32_VALID bit for invalid GNU property note.
diff --git a/binutils/readelf.c b/binutils/readelf.c
index df946528cad..8d4054fbd26 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -16947,6 +16947,77 @@ get_gnu_elf_note_type (unsigned e_type)
}
static void
+decode_x86_compat_isa (unsigned int bitmask)
+{
+ while (bitmask)
+ {
+ unsigned int bit = bitmask & (- bitmask);
+
+ bitmask &= ~ bit;
+ switch (bit)
+ {
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_486:
+ printf ("i486");
+ break;
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_586:
+ printf ("586");
+ break;
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_686:
+ printf ("686");
+ break;
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_SSE:
+ printf ("SSE");
+ break;
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_SSE2:
+ printf ("SSE2");
+ break;
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_SSE3:
+ printf ("SSE3");
+ break;
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_SSSE3:
+ printf ("SSSE3");
+ break;
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_SSE4_1:
+ printf ("SSE4_1");
+ break;
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_SSE4_2:
+ printf ("SSE4_2");
+ break;
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_AVX:
+ printf ("AVX");
+ break;
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_AVX2:
+ printf ("AVX2");
+ break;
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512F:
+ printf ("AVX512F");
+ break;
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512CD:
+ printf ("AVX512CD");
+ break;
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512ER:
+ printf ("AVX512ER");
+ break;
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512PF:
+ printf ("AVX512PF");
+ break;
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512VL:
+ printf ("AVX512VL");
+ break;
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512DQ:
+ printf ("AVX512DQ");
+ break;
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512BW:
+ printf ("AVX512BW");
+ break;
+ default: printf (_("<unknown: %x>"), bit); break;
+ }
+ if (bitmask)
+ printf (", ");
+ }
+}
+
+static void
decode_x86_isa (unsigned int bitmask)
{
while (bitmask)
@@ -16956,24 +17027,78 @@ decode_x86_isa (unsigned int bitmask)
bitmask &= ~ bit;
switch (bit)
{
- case GNU_PROPERTY_X86_ISA_1_486: printf ("i486"); break;
- case GNU_PROPERTY_X86_ISA_1_586: printf ("586"); break;
- case GNU_PROPERTY_X86_ISA_1_686: printf ("686"); break;
- case GNU_PROPERTY_X86_ISA_1_SSE: printf ("SSE"); break;
- case GNU_PROPERTY_X86_ISA_1_SSE2: printf ("SSE2"); break;
- case GNU_PROPERTY_X86_ISA_1_SSE3: printf ("SSE3"); break;
- case GNU_PROPERTY_X86_ISA_1_SSSE3: printf ("SSSE3"); break;
- case GNU_PROPERTY_X86_ISA_1_SSE4_1: printf ("SSE4_1"); break;
- case GNU_PROPERTY_X86_ISA_1_SSE4_2: printf ("SSE4_2"); break;
- case GNU_PROPERTY_X86_ISA_1_AVX: printf ("AVX"); break;
- case GNU_PROPERTY_X86_ISA_1_AVX2: printf ("AVX2"); break;
- case GNU_PROPERTY_X86_ISA_1_AVX512F: printf ("AVX512F"); break;
- case GNU_PROPERTY_X86_ISA_1_AVX512CD: printf ("AVX512CD"); break;
- case GNU_PROPERTY_X86_ISA_1_AVX512ER: printf ("AVX512ER"); break;
- case GNU_PROPERTY_X86_ISA_1_AVX512PF: printf ("AVX512PF"); break;
- case GNU_PROPERTY_X86_ISA_1_AVX512VL: printf ("AVX512VL"); break;
- case GNU_PROPERTY_X86_ISA_1_AVX512DQ: printf ("AVX512DQ"); break;
- case GNU_PROPERTY_X86_ISA_1_AVX512BW: printf ("AVX512BW"); break;
+ case GNU_PROPERTY_X86_ISA_1_CMOV:
+ printf ("CMOV");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_SSE:
+ printf ("SSE");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_SSE2:
+ printf ("SSE2");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_SSE3:
+ printf ("SSE3");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_SSSE3:
+ printf ("SSSE3");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_SSE4_1:
+ printf ("SSE4_1");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_SSE4_2:
+ printf ("SSE4_2");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_AVX:
+ printf ("AVX");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_AVX2:
+ printf ("AVX2");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_FMA:
+ printf ("FMA");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_AVX512F:
+ printf ("AVX512F");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_AVX512CD:
+ printf ("AVX512CD");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_AVX512ER:
+ printf ("AVX512ER");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_AVX512PF:
+ printf ("AVX512PF");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_AVX512VL:
+ printf ("AVX512VL");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_AVX512DQ:
+ printf ("AVX512DQ");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_AVX512BW:
+ printf ("AVX512BW");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_AVX512_4FMAPS:
+ printf ("AVX512_4FMAPS");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_AVX512_4VNNIW:
+ printf ("AVX512_4VNNIW");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_AVX512_BITALG:
+ printf ("AVX512_BITALG");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_AVX512_IFMA:
+ printf ("AVX512_IFMA");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_AVX512_VBMI:
+ printf ("AVX512_VBMI");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_AVX512_VBMI2:
+ printf ("AVX512_VBMI2");
+ break;
+ case GNU_PROPERTY_X86_ISA_1_AVX512_VNNI:
+ printf ("AVX512_VNNI");
+ break;
default: printf (_("<unknown: %x>"), bit); break;
}
if (bitmask)
@@ -16982,7 +17107,7 @@ decode_x86_isa (unsigned int bitmask)
}
static void
-decode_x86_feature (unsigned int type, unsigned int bitmask)
+decode_x86_feature_1 (unsigned int bitmask)
{
while (bitmask)
{
@@ -16992,26 +17117,10 @@ decode_x86_feature (unsigned int type, unsigned int bitmask)
switch (bit)
{
case GNU_PROPERTY_X86_FEATURE_1_IBT:
- switch (type)
- {
- case GNU_PROPERTY_X86_FEATURE_1_AND:
- printf ("IBT");
- break;
- default:
- /* This should never happen. */
- abort ();
- }
+ printf ("IBT");
break;
case GNU_PROPERTY_X86_FEATURE_1_SHSTK:
- switch (type)
- {
- case GNU_PROPERTY_X86_FEATURE_1_AND:
- printf ("SHSTK");
- break;
- default:
- /* This should never happen. */
- abort ();
- }
+ printf ("SHSTK");
break;
default:
printf (_("<unknown: %x>"), bit);
@@ -17023,6 +17132,53 @@ decode_x86_feature (unsigned int type, unsigned int bitmask)
}
static void
+decode_x86_feature_2 (unsigned int bitmask)
+{
+ while (bitmask)
+ {
+ unsigned int bit = bitmask & (- bitmask);
+
+ bitmask &= ~ bit;
+ switch (bit)
+ {
+ case GNU_PROPERTY_X86_FEATURE_2_X86:
+ printf ("x86");
+ break;
+ case GNU_PROPERTY_X86_FEATURE_2_X87:
+ printf ("x87");
+ break;
+ case GNU_PROPERTY_X86_FEATURE_2_MMX:
+ printf ("MMX");
+ break;
+ case GNU_PROPERTY_X86_FEATURE_2_XMM:
+ printf ("XMM");
+ break;
+ case GNU_PROPERTY_X86_FEATURE_2_YMM:
+ printf ("YMM");
+ break;
+ case GNU_PROPERTY_X86_FEATURE_2_ZMM:
+ printf ("ZMM");
+ break;
+ case GNU_PROPERTY_X86_FEATURE_2_FXSR:
+ printf ("FXSR");
+ break;
+ case GNU_PROPERTY_X86_FEATURE_2_XSAVE:
+ printf ("XSAVE");
+ break;
+ case GNU_PROPERTY_X86_FEATURE_2_XSAVEOPT:
+ printf ("XSAVEOPT");
+ break;
+ case GNU_PROPERTY_X86_FEATURE_2_XSAVEC:
+ printf ("XSAVEC");
+ break;
+ default: printf (_("<unknown: %x>"), bit); break;
+ }
+ if (bitmask)
+ printf (", ");
+ }
+}
+
+static void
print_gnu_property_note (Filedata * filedata, Elf_Internal_Note * pnote)
{
unsigned char * ptr = (unsigned char *) pnote->descdata;
@@ -17115,7 +17271,50 @@ print_gnu_property_note (Filedata * filedata, Elf_Internal_Note * pnote)
else
{
printf ("x86 feature: ");
- decode_x86_feature (type, bitmask);
+ decode_x86_feature_1 (bitmask);
+ }
+ goto next;
+
+ case GNU_PROPERTY_X86_FEATURE_2_USED:
+ if (datasz != 4)
+ printf (_("x86 feature used: <corrupt length: %#x> "),
+ datasz);
+ else
+ {
+ printf ("x86 feature used: ");
+ decode_x86_feature_2 (bitmask);
+ }
+ goto next;
+
+ case GNU_PROPERTY_X86_FEATURE_2_NEEDED:
+ if (datasz != 4)
+ printf (_("x86 feature needed: <corrupt length: %#x> "), datasz);
+ else
+ {
+ printf ("x86 feature needed: ");
+ decode_x86_feature_2 (bitmask);
+ }
+ goto next;
+
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_USED:
+ if (datasz != 4)
+ printf (_("x86 ISA used: <corrupt length: %#x> "),
+ datasz);
+ else
+ {
+ printf ("x86 ISA used: ");
+ decode_x86_compat_isa (bitmask);
+ }
+ goto next;
+
+ case GNU_PROPERTY_X86_COMPAT_ISA_1_NEEDED:
+ if (datasz != 4)
+ printf (_("x86 ISA needed: <corrupt length: %#x> "),
+ datasz);
+ else
+ {
+ printf ("x86 ISA needed: ");
+ decode_x86_compat_isa (bitmask);
}
goto next;
diff --git a/binutils/testsuite/binutils-all/i386/pr21231b.d b/binutils/testsuite/binutils-all/i386/pr21231b.d
index 29a8f445708..55d878fdb9c 100644
--- a/binutils/testsuite/binutils-all/i386/pr21231b.d
+++ b/binutils/testsuite/binutils-all/i386/pr21231b.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
GNU 0x0000002c NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0x800000
no copy on protected
- x86 ISA used: i486, 586, 686, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2, AVX512F, AVX512CD, AVX512ER, AVX512PF, AVX512VL, AVX512DQ, AVX512BW, <unknown: 40000>, <unknown: 80000>, <unknown: 100000>, <unknown: 200000>, <unknown: 400000>, <unknown: 800000>, <unknown: 1000000>, <unknown: 2000000>, <unknown: 4000000>, <unknown: 8000000>, <unknown: 10000000>, <unknown: 20000000>, <unknown: 40000000>, <unknown: 80000000>
- x86 ISA needed: i486, 586, 686, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2, AVX512F, AVX512CD, AVX512ER, AVX512PF, AVX512VL
+ x86 ISA used: CMOV, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2, FMA, AVX512F, AVX512CD, AVX512ER, AVX512PF, AVX512VL, AVX512DQ, AVX512BW, AVX512_4FMAPS, AVX512_4VNNIW, AVX512_BITALG, AVX512_IFMA, AVX512_VBMI, AVX512_VBMI2, AVX512_VNNI, <unknown: 1000000>, <unknown: 2000000>, <unknown: 4000000>, <unknown: 8000000>, <unknown: 10000000>, <unknown: 20000000>, <unknown: 40000000>, <unknown: 80000000>
+ x86 ISA needed: CMOV, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2, FMA, AVX512F, AVX512CD, AVX512ER, AVX512PF, AVX512VL, AVX512DQ
diff --git a/binutils/testsuite/binutils-all/i386/pr21231b.s b/binutils/testsuite/binutils-all/i386/pr21231b.s
index 3d5474518ee..793e2824713 100644
--- a/binutils/testsuite/binutils-all/i386/pr21231b.s
+++ b/binutils/testsuite/binutils-all/i386/pr21231b.s
@@ -19,14 +19,14 @@
.long 0 /* pr_datasz. */
.p2align 2
/* GNU_PROPERTY_X86_ISA_1_USED */
- .long 0xc0000000 /* pr_type. */
+ .long 0xc0010000 /* pr_type. */
.long 4f - 3f /* pr_datasz. */
3:
.long -1
4:
.p2align 2
/* GNU_PROPERTY_X86_ISA_1_NEEDED */
- .long 0xc0000001 /* pr_type. */
+ .long 0xc0008000 /* pr_type. */
.long 4f - 3f /* pr_datasz. */
3:
.long 0xffff
diff --git a/binutils/testsuite/binutils-all/x86-64/pr21231b.d b/binutils/testsuite/binutils-all/x86-64/pr21231b.d
index 9d7761c3fea..f433685e691 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr21231b.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr21231b.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
GNU 0x00000038 NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0x800000
no copy on protected
- x86 ISA used: i486, 586, 686, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2, AVX512F, AVX512CD, AVX512ER, AVX512PF, AVX512VL, AVX512DQ, AVX512BW, <unknown: 40000>, <unknown: 80000>, <unknown: 100000>, <unknown: 200000>, <unknown: 400000>, <unknown: 800000>, <unknown: 1000000>, <unknown: 2000000>, <unknown: 4000000>, <unknown: 8000000>, <unknown: 10000000>, <unknown: 20000000>, <unknown: 40000000>, <unknown: 80000000>
- x86 ISA needed: i486, 586, 686, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2, AVX512F, AVX512CD, AVX512ER, AVX512PF, AVX512VL
+ x86 ISA used: CMOV, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2, FMA, AVX512F, AVX512CD, AVX512ER, AVX512PF, AVX512VL, AVX512DQ, AVX512BW, AVX512_4FMAPS, AVX512_4VNNIW, AVX512_BITALG, AVX512_IFMA, AVX512_VBMI, AVX512_VBMI2, AVX512_VNNI, <unknown: 1000000>, <unknown: 2000000>, <unknown: 4000000>, <unknown: 8000000>, <unknown: 10000000>, <unknown: 20000000>, <unknown: 40000000>, <unknown: 80000000>
+ x86 ISA needed: CMOV, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2, FMA, AVX512F, AVX512CD, AVX512ER, AVX512PF, AVX512VL, AVX512DQ
diff --git a/binutils/testsuite/binutils-all/x86-64/pr21231b.s b/binutils/testsuite/binutils-all/x86-64/pr21231b.s
index afba4debf3a..add9227977f 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr21231b.s
+++ b/binutils/testsuite/binutils-all/x86-64/pr21231b.s
@@ -19,14 +19,14 @@
.long 0 /* pr_datasz. */
.p2align 3
/* GNU_PROPERTY_X86_ISA_1_USED */
- .long 0xc0000000 /* pr_type. */
+ .long 0xc0010000 /* pr_type. */
.long 4f - 3f /* pr_datasz. */
3:
.long -1
4:
.p2align 3
/* GNU_PROPERTY_X86_ISA_1_NEEDED */
- .long 0xc0000001 /* pr_type. */
+ .long 0xc0008000 /* pr_type. */
.long 4f - 3f /* pr_datasz. */
3:
.long 0xffff
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494a-x32.d b/binutils/testsuite/binutils-all/x86-64/pr23494a-x32.d
index 67e3aab89e2..ad8f9b16c3f 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494a-x32.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494a-x32.d
@@ -8,5 +8,5 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
- x86 ISA needed: SSE3, SSE4_1
+ Properties: x86 ISA needed: SSE4_1, AVX
+ x86 ISA used: SSE, SSE3, SSE4_1, AVX
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494a.d b/binutils/testsuite/binutils-all/x86-64/pr23494a.d
index 06c193867e3..32e296ff136 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494a.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494a.d
@@ -8,5 +8,5 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
- x86 ISA needed: SSE3, SSE4_1
+ Properties: x86 ISA needed: SSE4_1, AVX
+ x86 ISA used: SSE, SSE3, SSE4_1, AVX
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494a.s b/binutils/testsuite/binutils-all/x86-64/pr23494a.s
index 77185bdc1a7..26f7139510a 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494a.s
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494a.s
@@ -17,7 +17,7 @@
.p2align 2
.endif
/* GNU_PROPERTY_X86_ISA_1_USED */
- .long 0xc0000000 /* pr_type. */
+ .long 0xc0010000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0xa
@@ -48,7 +48,7 @@
.p2align 2
.endif
/* GNU_PROPERTY_X86_ISA_1_NEEDED */
- .long 0xc0000001 /* pr_type. */
+ .long 0xc0008000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0xa0
@@ -79,7 +79,7 @@
.p2align 2
.endif
/* GNU_PROPERTY_X86_ISA_1_USED */
- .long 0xc0000000 /* pr_type. */
+ .long 0xc0010000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0xa0
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494b.s b/binutils/testsuite/binutils-all/x86-64/pr23494b.s
index 239477b082b..75a8d5aa7df 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494b.s
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494b.s
@@ -17,7 +17,7 @@
.p2align 2
.endif
/* GNU_PROPERTY_X86_ISA_1_USED */
- .long 0xc0000000 /* pr_type. */
+ .long 0xc0010000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0xa
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494c-x32.d b/binutils/testsuite/binutils-all/x86-64/pr23494c-x32.d
index c4a9414b411..761c1371e37 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494c-x32.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494c-x32.d
@@ -8,4 +8,4 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA used: 586, SSE
+ Properties: x86 ISA used: SSE, SSE3
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494c.d b/binutils/testsuite/binutils-all/x86-64/pr23494c.d
index 545777a2aaf..e98b2ae2012 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494c.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494c.d
@@ -8,4 +8,4 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA used: 586, SSE
+ Properties: x86 ISA used: SSE, SSE3
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494c.s b/binutils/testsuite/binutils-all/x86-64/pr23494c.s
index a478e7a885b..474182cfb01 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494c.s
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494c.s
@@ -48,7 +48,7 @@
.p2align 2
.endif
/* GNU_PROPERTY_X86_ISA_1_USED */
- .long 0xc0000000 /* pr_type. */
+ .long 0xc0010000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0xa
@@ -79,7 +79,7 @@
.p2align 2
.endif
/* GNU_PROPERTY_X86_ISA_1_NEEDED */
- .long 0xc0000001 /* pr_type. */
+ .long 0xc0008000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0xa0
@@ -110,7 +110,7 @@
.p2align 2
.endif
/* GNU_PROPERTY_X86_ISA_1_USED */
- .long 0xc0000000 /* pr_type. */
+ .long 0xc0010000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0xa0
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494d-x32.d b/binutils/testsuite/binutils-all/x86-64/pr23494d-x32.d
index 264c9d93cd0..b0af2d99085 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494d-x32.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494d-x32.d
@@ -8,5 +8,5 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
- x86 ISA needed: SSE3, SSE4_1
+ Properties: x86 ISA needed: SSE4_1, AVX
+ x86 ISA used: SSE, SSE3, SSE4_1, AVX
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494d.d b/binutils/testsuite/binutils-all/x86-64/pr23494d.d
index 3237eca54e5..1731c03a929 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494d.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494d.d
@@ -8,5 +8,5 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
- x86 ISA needed: SSE3, SSE4_1
+ Properties: x86 ISA needed: SSE4_1, AVX
+ x86 ISA used: SSE, SSE3, SSE4_1, AVX
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494e-x32.d b/binutils/testsuite/binutils-all/x86-64/pr23494e-x32.d
index 825f45d679b..4adfb4aa3bc 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494e-x32.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494e-x32.d
@@ -9,5 +9,5 @@ Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0xffffffff
- x86 ISA used: 586, SSE, SSE3, SSE4_1
- x86 ISA needed: SSE3, SSE4_1
+ x86 ISA needed: SSE4_1, AVX
+ x86 ISA used: SSE, SSE3, SSE4_1, AVX
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494e.d b/binutils/testsuite/binutils-all/x86-64/pr23494e.d
index ffb89886f78..d9b05388bb9 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494e.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494e.d
@@ -9,5 +9,5 @@ Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0xffffffff
- x86 ISA used: 586, SSE, SSE3, SSE4_1
- x86 ISA needed: SSE3, SSE4_1
+ x86 ISA needed: SSE4_1, AVX
+ x86 ISA used: SSE, SSE3, SSE4_1, AVX
diff --git a/include/ChangeLog b/include/ChangeLog
index 4b933b157e7..aec4b63589c 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,5 +1,64 @@
2018-08-24 H.J. Lu <hongjiu.lu@intel.com>
+ * elf/common.h (GNU_PROPERTY_X86_ISA_1_USED): Renamed to ...
+ (GNU_PROPERTY_X86_COMPAT_ISA_1_USED): This.
+ (GNU_PROPERTY_X86_ISA_1_NEEDED): Renamed to ...
+ (GNU_PROPERTY_X86_COMPAT_ISA_1_NEEDED): This.
+ (GNU_PROPERTY_X86_ISA_1_XXX): Renamed to ...
+ (GNU_PROPERTY_X86_COMPAT_ISA_1_XXX): This.
+ (GNU_PROPERTY_X86_UINT32_AND_LO): New.
+ (GNU_PROPERTY_X86_UINT32_AND_HI): Likewise.
+ (GNU_PROPERTY_X86_UINT32_OR_LO): Likewise.
+ (GNU_PROPERTY_X86_UINT32_OR_HI): Likewise.
+ (GNU_PROPERTY_X86_UINT32_OR_AND_LO): Likewise.
+ (GNU_PROPERTY_X86_UINT32_OR_AND_HI): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_CMOV): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_SSE): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_SSE2): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_SSE3): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_SSSE3): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_SSE4_1): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_SSE4_2): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_AVX): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_AVX2): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_FMA): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_AVX512F): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_AVX512CD): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_AVX512ER): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_AVX512PF): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_AVX512VL): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_AVX512DQ): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_AVX512BW): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_AVX512_4FMAPS): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_AVX512_4VNNIW): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_AVX512_BITALG): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_AVX512_IFMA): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_AVX512_VBMI): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_AVX512_VBMI2): Likewise.
+ (GNU_PROPERTY_X86_ISA_1_AVX512_VNNI): Likewise.
+ (GNU_PROPERTY_X86_FEATURE_2_X86): Likewise.
+ (GNU_PROPERTY_X86_FEATURE_2_X87): Likewise.
+ (GNU_PROPERTY_X86_FEATURE_2_MMX): Likewise.
+ (GNU_PROPERTY_X86_FEATURE_2_XMM): Likewise.
+ (GNU_PROPERTY_X86_FEATURE_2_YMM): Likewise.
+ (GNU_PROPERTY_X86_FEATURE_2_ZMM): Likewise.
+ (GNU_PROPERTY_X86_FEATURE_2_FXSR): Likewise.
+ (GNU_PROPERTY_X86_FEATURE_2_XSAVE): Likewise.
+ (GNU_PROPERTY_X86_FEATURE_2_XSAVEOPT): Likewise.
+ (GNU_PROPERTY_X86_FEATURE_2_XSAVEC): Likewise.
+ (GNU_PROPERTY_X86_FEATURE_1_AND): Updated to
+ (GNU_PROPERTY_X86_UINT32_AND_LO + 0).
+ (GNU_PROPERTY_X86_ISA_1_NEEDED): Defined to
+ (GNU_PROPERTY_X86_UINT32_OR_LO + 0).
+ (GNU_PROPERTY_X86_FEATURE_2_NEEDED): New. Defined to
+ (GNU_PROPERTY_X86_UINT32_OR_LO + 1).
+ (GNU_PROPERTY_X86_ISA_1_USED): Defined to
+ (GNU_PROPERTY_X86_UINT32_OR_AND_LO + 0).
+ (GNU_PROPERTY_X86_FEATURE_2_USED): New. Defined to
+ (GNU_PROPERTY_X86_UINT32_OR_AND_LO + 1).
+
+2018-08-24 H.J. Lu <hongjiu.lu@intel.com>
+
* elf/common.h (GNU_PROPERTY_X86_UINT32_VALID): New.
2018-08-21 John Darrington <john@darrington.wattle.id.au>
diff --git a/include/elf/common.h b/include/elf/common.h
index 55c5505bac9..961d022a1b8 100644
--- a/include/elf/common.h
+++ b/include/elf/common.h
@@ -748,34 +748,98 @@
/* Application-specific semantics, hi */
#define GNU_PROPERTY_HIUSER 0xffffffff
-#define GNU_PROPERTY_X86_ISA_1_USED 0xc0000000
-#define GNU_PROPERTY_X86_ISA_1_NEEDED 0xc0000001
-#define GNU_PROPERTY_X86_FEATURE_1_AND 0xc0000002
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_USED 0xc0000000
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_NEEDED 0xc0000001
+
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_486 (1U << 0)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_586 (1U << 1)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_686 (1U << 2)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_SSE (1U << 3)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_SSE2 (1U << 4)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_SSE3 (1U << 5)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_SSSE3 (1U << 6)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_SSE4_1 (1U << 7)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_SSE4_2 (1U << 8)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_AVX (1U << 9)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_AVX2 (1U << 10)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512F (1U << 11)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512CD (1U << 12)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512ER (1U << 13)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512PF (1U << 14)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512VL (1U << 15)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512DQ (1U << 16)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512BW (1U << 17)
+
+/* A 4-byte unsigned integer property: A bit is set if it is set in all
+ relocatable inputs. */
+#define GNU_PROPERTY_X86_UINT32_AND_LO 0xc0000002
+#define GNU_PROPERTY_X86_UINT32_AND_HI 0xc0007fff
+
+/* A 4-byte unsigned integer property: A bit is set if it is set in any
+ relocatable inputs. */
+#define GNU_PROPERTY_X86_UINT32_OR_LO 0xc0008000
+#define GNU_PROPERTY_X86_UINT32_OR_HI 0xc000ffff
+
+/* A 4-byte unsigned integer property: A bit is set if it is set in any
+ relocatable inputs and the property is present in all relocatable
+ inputs. */
+#define GNU_PROPERTY_X86_UINT32_OR_AND_LO 0xc0010000
+#define GNU_PROPERTY_X86_UINT32_OR_AND_HI 0xc0017fff
+
+#define GNU_PROPERTY_X86_FEATURE_1_AND \
+ (GNU_PROPERTY_X86_UINT32_AND_LO + 0)
+
+#define GNU_PROPERTY_X86_ISA_1_NEEDED \
+ (GNU_PROPERTY_X86_UINT32_OR_LO + 0)
+#define GNU_PROPERTY_X86_FEATURE_2_NEEDED \
+ (GNU_PROPERTY_X86_UINT32_OR_LO + 1)
+
+#define GNU_PROPERTY_X86_ISA_1_USED \
+ (GNU_PROPERTY_X86_UINT32_OR_AND_LO + 0)
+#define GNU_PROPERTY_X86_FEATURE_2_USED \
+ (GNU_PROPERTY_X86_UINT32_OR_AND_LO + 1)
/* Set by linker to indicate that the property is valid. */
#define GNU_PROPERTY_X86_UINT32_VALID (1U << 31)
-#define GNU_PROPERTY_X86_ISA_1_486 (1U << 0)
-#define GNU_PROPERTY_X86_ISA_1_586 (1U << 1)
-#define GNU_PROPERTY_X86_ISA_1_686 (1U << 2)
-#define GNU_PROPERTY_X86_ISA_1_SSE (1U << 3)
-#define GNU_PROPERTY_X86_ISA_1_SSE2 (1U << 4)
-#define GNU_PROPERTY_X86_ISA_1_SSE3 (1U << 5)
-#define GNU_PROPERTY_X86_ISA_1_SSSE3 (1U << 6)
-#define GNU_PROPERTY_X86_ISA_1_SSE4_1 (1U << 7)
-#define GNU_PROPERTY_X86_ISA_1_SSE4_2 (1U << 8)
-#define GNU_PROPERTY_X86_ISA_1_AVX (1U << 9)
-#define GNU_PROPERTY_X86_ISA_1_AVX2 (1U << 10)
-#define GNU_PROPERTY_X86_ISA_1_AVX512F (1U << 11)
-#define GNU_PROPERTY_X86_ISA_1_AVX512CD (1U << 12)
-#define GNU_PROPERTY_X86_ISA_1_AVX512ER (1U << 13)
-#define GNU_PROPERTY_X86_ISA_1_AVX512PF (1U << 14)
-#define GNU_PROPERTY_X86_ISA_1_AVX512VL (1U << 15)
-#define GNU_PROPERTY_X86_ISA_1_AVX512DQ (1U << 16)
-#define GNU_PROPERTY_X86_ISA_1_AVX512BW (1U << 17)
-
-#define GNU_PROPERTY_X86_FEATURE_1_IBT (1U << 0)
-#define GNU_PROPERTY_X86_FEATURE_1_SHSTK (1U << 1)
+#define GNU_PROPERTY_X86_FEATURE_1_IBT (1U << 0)
+#define GNU_PROPERTY_X86_FEATURE_1_SHSTK (1U << 1)
+
+#define GNU_PROPERTY_X86_ISA_1_CMOV (1U << 0)
+#define GNU_PROPERTY_X86_ISA_1_SSE (1U << 1)
+#define GNU_PROPERTY_X86_ISA_1_SSE2 (1U << 2)
+#define GNU_PROPERTY_X86_ISA_1_SSE3 (1U << 3)
+#define GNU_PROPERTY_X86_ISA_1_SSSE3 (1U << 4)
+#define GNU_PROPERTY_X86_ISA_1_SSE4_1 (1U << 5)
+#define GNU_PROPERTY_X86_ISA_1_SSE4_2 (1U << 6)
+#define GNU_PROPERTY_X86_ISA_1_AVX (1U << 7)
+#define GNU_PROPERTY_X86_ISA_1_AVX2 (1U << 8)
+#define GNU_PROPERTY_X86_ISA_1_FMA (1U << 9)
+#define GNU_PROPERTY_X86_ISA_1_AVX512F (1U << 10)
+#define GNU_PROPERTY_X86_ISA_1_AVX512CD (1U << 11)
+#define GNU_PROPERTY_X86_ISA_1_AVX512ER (1U << 12)
+#define GNU_PROPERTY_X86_ISA_1_AVX512PF (1U << 13)
+#define GNU_PROPERTY_X86_ISA_1_AVX512VL (1U << 14)
+#define GNU_PROPERTY_X86_ISA_1_AVX512DQ (1U << 15)
+#define GNU_PROPERTY_X86_ISA_1_AVX512BW (1U << 16)
+#define GNU_PROPERTY_X86_ISA_1_AVX512_4FMAPS (1U << 17)
+#define GNU_PROPERTY_X86_ISA_1_AVX512_4VNNIW (1U << 18)
+#define GNU_PROPERTY_X86_ISA_1_AVX512_BITALG (1U << 19)
+#define GNU_PROPERTY_X86_ISA_1_AVX512_IFMA (1U << 20)
+#define GNU_PROPERTY_X86_ISA_1_AVX512_VBMI (1U << 21)
+#define GNU_PROPERTY_X86_ISA_1_AVX512_VBMI2 (1U << 22)
+#define GNU_PROPERTY_X86_ISA_1_AVX512_VNNI (1U << 23)
+
+#define GNU_PROPERTY_X86_FEATURE_2_X86 (1U << 0)
+#define GNU_PROPERTY_X86_FEATURE_2_X87 (1U << 1)
+#define GNU_PROPERTY_X86_FEATURE_2_MMX (1U << 2)
+#define GNU_PROPERTY_X86_FEATURE_2_XMM (1U << 3)
+#define GNU_PROPERTY_X86_FEATURE_2_YMM (1U << 4)
+#define GNU_PROPERTY_X86_FEATURE_2_ZMM (1U << 5)
+#define GNU_PROPERTY_X86_FEATURE_2_FXSR (1U << 6)
+#define GNU_PROPERTY_X86_FEATURE_2_XSAVE (1U << 7)
+#define GNU_PROPERTY_X86_FEATURE_2_XSAVEOPT (1U << 8)
+#define GNU_PROPERTY_X86_FEATURE_2_XSAVEC (1U << 9)
/* Values used in GNU .note.ABI-tag notes (NT_GNU_ABI_TAG). */
#define GNU_ABI_TAG_LINUX 0
diff --git a/ld/ChangeLog b/ld/ChangeLog
index c2d47fdceaa..942843c7f15 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,64 @@
+2018-08-24 H.J. Lu <hongjiu.lu@intel.com>
+
+ * testsuite/ld-i386/i386.exp: Run pr23372c, pr23372d, pr23486c
+ and pr23486d.
+ * testsuite/ld-i386/pr23372a.s: Update comments.
+ * testsuite/ld-i386/pr23372b.s: Likewise.
+ * testsuite/ld-i386/pr23372c.s: Likewise.
+ * testsuite/ld-x86-64/pr23372a.s: Likewise.
+ * testsuite/ld-x86-64/pr23372b.s: Likewise.
+ * testsuite/ld-x86-64/pr23372c.s: Likewise.
+ * testsuite/ld-x86-64/pr23486a.s: Likewise.
+ * testsuite/ld-x86-64/pr23486b.s: Likewise.
+ * testsuite/ld-i386/pr23372c.d: New file.
+ * testsuite/ld-i386/pr23372d.d: Likewise.
+ * testsuite/ld-i386/pr23486c.d: Likewise.
+ * testsuite/ld-i386/pr23486d.d: Likewise.
+ * testsuite/ld-x86-64/pr23372c-x32.d: Likewise.
+ * testsuite/ld-x86-64/pr23372c.d: Likewise.
+ * testsuite/ld-x86-64/pr23372d-x32.d: Likewise.
+ * testsuite/ld-x86-64/pr23372d.d: Likewise.
+ * testsuite/ld-x86-64/pr23372d.s: Likewise.
+ * testsuite/ld-x86-64/pr23372e.s: Likewise.
+ * testsuite/ld-x86-64/pr23372f.s: Likewise.
+ * testsuite/ld-x86-64/pr23486c-x32.d: Likewise.
+ * testsuite/ld-x86-64/pr23486c.d: Likewise.
+ * testsuite/ld-x86-64/pr23486c.s: Likewise.
+ * testsuite/ld-x86-64/pr23486d-x32.d: Likewise.
+ * testsuite/ld-x86-64/pr23486d.d: Likewise.
+ * testsuite/ld-x86-64/pr23486d.s: Likewise.
+ * testsuite/ld-i386/property-3.r: Updated.
+ * testsuite/ld-i386/property-4.r: Likewise.
+ * testsuite/ld-i386/property-5.r: Likewise.
+ * testsuite/ld-i386/property-x86-3.d: Likewise.
+ * testsuite/ld-i386/property-x86-ibt3a.d: Likewise.
+ * testsuite/ld-i386/property-x86-shstk3a.d: Likewise.
+ * testsuite/ld-i386/property-x86-shstk3b.d: Likewise.
+ * testsuite/ld-x86-64/property-3.r: Likewise.
+ * testsuite/ld-x86-64/property-4.r: Likewise.
+ * testsuite/ld-x86-64/property-5.r: Likewise.
+ * testsuite/ld-x86-64/property-x86-3-x32.d: Likewise.
+ * testsuite/ld-x86-64/property-x86-3.d: Likewise.
+ * testsuite/ld-x86-64/property-x86-ibt3a-x32.d: Likewise.
+ * testsuite/ld-x86-64/property-x86-ibt3a.d: Likewise.
+ * testsuite/ld-x86-64/property-x86-ibt3b-x32.d: Likewise.
+ * testsuite/ld-x86-64/property-x86-ibt3b.d: Likewise.
+ * testsuite/ld-x86-64/property-x86-shstk3a-x32.d: Likewise.
+ * testsuite/ld-x86-64/property-x86-shstk3a.d: Likewise.
+ * testsuite/ld-x86-64/property-x86-shstk3b-x32.d: Likewise.
+ * testsuite/ld-x86-64/property-x86-shstk3b.d: Likewise.
+ * testsuite/ld-i386/property-x86-1.S: Updated to the current
+ GNU_PROPERTY_X86_ISA_1_USED and GNU_PROPERTY_X86_ISA_1_NEEDED
+ values.
+ * testsuite/ld-i386/property-x86-2.S: Likewise.
+ * testsuite/ld-i386/property-x86-3.s: Likewise.
+ * testsuite/ld-x86-64/property-x86-1.S: Likewise.
+ * testsuite/ld-x86-64/property-x86-2.S: Likewise.
+ * testsuite/ld-x86-64/property-x86-3.s: Likewise.
+ * ld/testsuite/ld-x86-64/x86-64.exp: Run pr23372c, pr23372c-x32,
+ pr23372d, pr23372d-x32, pr23486c, pr23486c-x32, pr23486d and
+ pr23486d-x32.
+
2018-08-24 Alan Modra <amodra@gmail.com>
* emultempl/elf32.em (before_allocation): Don't restore
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
index 78dad025793..d1aa350f7ec 100644
--- a/ld/testsuite/ld-i386/i386.exp
+++ b/ld/testsuite/ld-i386/i386.exp
@@ -462,8 +462,12 @@ run_dump_test "pr23189"
run_dump_test "pr23194"
run_dump_test "pr23372a"
run_dump_test "pr23372b"
+run_dump_test "pr23372c"
+run_dump_test "pr23372d"
run_dump_test "pr23486a"
run_dump_test "pr23486b"
+run_dump_test "pr23486c"
+run_dump_test "pr23486d"
if { !([istarget "i?86-*-linux*"]
|| [istarget "i?86-*-gnu*"]
diff --git a/ld/testsuite/ld-i386/pr23372a.s b/ld/testsuite/ld-i386/pr23372a.s
index 9849d620a1d..eeeac0674e3 100644
--- a/ld/testsuite/ld-i386/pr23372a.s
+++ b/ld/testsuite/ld-i386/pr23372a.s
@@ -8,7 +8,7 @@
.asciz "GNU" /* vendor name. */
1:
.p2align 2
- /* GNU_PROPERTY_X86_ISA_1_USED */
+ /* GNU_PROPERTY_X86_COMPAT_ISA_1_USED */
.long 0xc0000000 /* pr_type. */
.long 3f - 2f /* pr_datasz. */
2:
diff --git a/ld/testsuite/ld-i386/pr23372b.s b/ld/testsuite/ld-i386/pr23372b.s
index 9849d620a1d..eeeac0674e3 100644
--- a/ld/testsuite/ld-i386/pr23372b.s
+++ b/ld/testsuite/ld-i386/pr23372b.s
@@ -8,7 +8,7 @@
.asciz "GNU" /* vendor name. */
1:
.p2align 2
- /* GNU_PROPERTY_X86_ISA_1_USED */
+ /* GNU_PROPERTY_X86_COMPAT_ISA_1_USED */
.long 0xc0000000 /* pr_type. */
.long 3f - 2f /* pr_datasz. */
2:
diff --git a/ld/testsuite/ld-i386/pr23372c.d b/ld/testsuite/ld-i386/pr23372c.d
new file mode 100644
index 00000000000..987ae4cfe54
--- /dev/null
+++ b/ld/testsuite/ld-i386/pr23372c.d
@@ -0,0 +1,5 @@
+#source: ../ld-x86-64/pr23372d.s
+#source: ../ld-x86-64/pr23372e.s
+#as: --32
+#ld: -r -m elf_i386
+#readelf: -n
diff --git a/ld/testsuite/ld-i386/pr23372c.s b/ld/testsuite/ld-i386/pr23372c.s
index 3470dce6490..6a871cc5f55 100644
--- a/ld/testsuite/ld-i386/pr23372c.s
+++ b/ld/testsuite/ld-i386/pr23372c.s
@@ -8,7 +8,7 @@
.asciz "GNU" /* vendor name. */
1:
.p2align 2
- /* GNU_PROPERTY_X86_ISA_1_NEEDED */
+ /* GNU_PROPERTY_X86_COMPAT_ISA_1_NEEDED */
.long 0xc0000001 /* pr_type. */
.long 3f - 2f /* pr_datasz. */
2:
diff --git a/ld/testsuite/ld-i386/pr23372d.d b/ld/testsuite/ld-i386/pr23372d.d
new file mode 100644
index 00000000000..e44aee9d5cc
--- /dev/null
+++ b/ld/testsuite/ld-i386/pr23372d.d
@@ -0,0 +1,5 @@
+#source: ../ld-x86-64/pr23372d.s
+#source: ../ld-x86-64/pr23372f.s
+#as: --32
+#ld: -r -m elf_i386
+#readelf: -n
diff --git a/ld/testsuite/ld-i386/pr23486c.d b/ld/testsuite/ld-i386/pr23486c.d
new file mode 100644
index 00000000000..a557319638e
--- /dev/null
+++ b/ld/testsuite/ld-i386/pr23486c.d
@@ -0,0 +1,10 @@
+#source: ../ld-x86-64/pr23486c.s
+#source: ../ld-x86-64/pr23486d.s
+#as: --32
+#ld: -r -m elf_i386
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+ Owner Data size Description
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
+ Properties: x86 ISA needed: CMOV, SSE
diff --git a/ld/testsuite/ld-i386/pr23486d.d b/ld/testsuite/ld-i386/pr23486d.d
new file mode 100644
index 00000000000..48cceb186fe
--- /dev/null
+++ b/ld/testsuite/ld-i386/pr23486d.d
@@ -0,0 +1,10 @@
+#source: ../ld-x86-64/pr23486d.s
+#source: ../ld-x86-64/pr23486c.s
+#as: --32
+#ld: -r -m elf_i386
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+ Owner Data size Description
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
+ Properties: x86 ISA needed: CMOV, SSE
diff --git a/ld/testsuite/ld-i386/property-3.r b/ld/testsuite/ld-i386/property-3.r
index d03203c1e5b..e9f71623572 100644
--- a/ld/testsuite/ld-i386/property-3.r
+++ b/ld/testsuite/ld-i386/property-3.r
@@ -3,5 +3,5 @@ Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0x800000
- x86 ISA needed: i486, 586
+ x86 ISA needed: CMOV, SSE
#pass
diff --git a/ld/testsuite/ld-i386/property-4.r b/ld/testsuite/ld-i386/property-4.r
index da295eb6c73..876d05708fb 100644
--- a/ld/testsuite/ld-i386/property-4.r
+++ b/ld/testsuite/ld-i386/property-4.r
@@ -3,5 +3,5 @@ Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0x800000
- x86 ISA needed: i486, 586, SSE
+ x86 ISA needed: CMOV, SSE, SSE3
#pass
diff --git a/ld/testsuite/ld-i386/property-5.r b/ld/testsuite/ld-i386/property-5.r
index e4141594b3b..adef5e8db21 100644
--- a/ld/testsuite/ld-i386/property-5.r
+++ b/ld/testsuite/ld-i386/property-5.r
@@ -3,5 +3,5 @@ Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0x900000
- x86 ISA needed: i486, 586, SSE
+ x86 ISA needed: CMOV, SSE, SSE3
#pass
diff --git a/ld/testsuite/ld-i386/property-x86-1.S b/ld/testsuite/ld-i386/property-x86-1.S
index 953ca87930b..f0b8fc0ce5e 100644
--- a/ld/testsuite/ld-i386/property-x86-1.S
+++ b/ld/testsuite/ld-i386/property-x86-1.S
@@ -16,14 +16,14 @@
5:
.p2align 2
/* GNU_PROPERTY_X86_ISA_1_USED */
- .long 0xc0000000 /* pr_type. */
+ .long 0xc0010000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0xa
5:
.p2align 2
/* GNU_PROPERTY_X86_ISA_1_NEEDED */
- .long 0xc0000001 /* pr_type. */
+ .long 0xc0008000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0x3
diff --git a/ld/testsuite/ld-i386/property-x86-2.S b/ld/testsuite/ld-i386/property-x86-2.S
index f11e1fe241c..39876811cbe 100644
--- a/ld/testsuite/ld-i386/property-x86-2.S
+++ b/ld/testsuite/ld-i386/property-x86-2.S
@@ -9,14 +9,14 @@
1:
.p2align 2
/* GNU_PROPERTY_X86_ISA_1_USED */
- .long 0xc0000000 /* pr_type. */
+ .long 0xc0010000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0x3
5:
.p2align 2
/* GNU_PROPERTY_X86_ISA_1_NEEDED */
- .long 0xc0000001 /* pr_type. */
+ .long 0xc0008000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0xa
diff --git a/ld/testsuite/ld-i386/property-x86-3.d b/ld/testsuite/ld-i386/property-x86-3.d
index 19c66997164..1cbd37a6fff 100644
--- a/ld/testsuite/ld-i386/property-x86-3.d
+++ b/ld/testsuite/ld-i386/property-x86-3.d
@@ -5,5 +5,5 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA used: i486, 586, SSE2, SSE3
- x86 ISA needed: 586, SSE, SSE3, SSE4_1
+ Properties: x86 ISA needed: SSE, SSE3, SSE4_1, AVX
+ x86 ISA used: CMOV, SSE, SSSE3, SSE4_1
diff --git a/ld/testsuite/ld-i386/property-x86-3.s b/ld/testsuite/ld-i386/property-x86-3.s
index a6fd8309776..7e5924f829b 100644
--- a/ld/testsuite/ld-i386/property-x86-3.s
+++ b/ld/testsuite/ld-i386/property-x86-3.s
@@ -9,14 +9,14 @@
1:
.p2align 2
/* GNU_PROPERTY_X86_ISA_1_USED */
- .long 0xc0000000 /* pr_type. */
+ .long 0xc0010000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0x3
5:
.p2align 2
/* GNU_PROPERTY_X86_ISA_1_NEEDED */
- .long 0xc0000001 /* pr_type. */
+ .long 0xc0008000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0xa
@@ -35,14 +35,14 @@
1:
.p2align 2
/* GNU_PROPERTY_X86_ISA_1_USED */
- .long 0xc0000000 /* pr_type. */
+ .long 0xc0010000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0x30
5:
.p2align 2
/* GNU_PROPERTY_X86_ISA_1_NEEDED */
- .long 0xc0000001 /* pr_type. */
+ .long 0xc0008000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0xa0
diff --git a/ld/testsuite/ld-i386/property-x86-ibt3a.d b/ld/testsuite/ld-i386/property-x86-ibt3a.d
index 0aedea16145..b87bc27006b 100644
--- a/ld/testsuite/ld-i386/property-x86-ibt3a.d
+++ b/ld/testsuite/ld-i386/property-x86-ibt3a.d
@@ -7,4 +7,4 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
+ Properties: x86 ISA needed: SSE, SSE3, SSE4_1, AVX
diff --git a/ld/testsuite/ld-i386/property-x86-ibt3b.d b/ld/testsuite/ld-i386/property-x86-ibt3b.d
index bd69ac64783..f09ae520ab8 100644
--- a/ld/testsuite/ld-i386/property-x86-ibt3b.d
+++ b/ld/testsuite/ld-i386/property-x86-ibt3b.d
@@ -7,4 +7,4 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
+ Properties: x86 ISA needed: SSE, SSE3, SSE4_1, AVX
diff --git a/ld/testsuite/ld-i386/property-x86-shstk3a.d b/ld/testsuite/ld-i386/property-x86-shstk3a.d
index 76d2a39f2cf..44f3e574168 100644
--- a/ld/testsuite/ld-i386/property-x86-shstk3a.d
+++ b/ld/testsuite/ld-i386/property-x86-shstk3a.d
@@ -7,4 +7,4 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
+ Properties: x86 ISA needed: SSE, SSE3, SSE4_1, AVX
diff --git a/ld/testsuite/ld-i386/property-x86-shstk3b.d b/ld/testsuite/ld-i386/property-x86-shstk3b.d
index e770ecffa51..db136cdc9aa 100644
--- a/ld/testsuite/ld-i386/property-x86-shstk3b.d
+++ b/ld/testsuite/ld-i386/property-x86-shstk3b.d
@@ -7,4 +7,4 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
+ Properties: x86 ISA needed: SSE, SSE3, SSE4_1, AVX
diff --git a/ld/testsuite/ld-x86-64/pr23372a.s b/ld/testsuite/ld-x86-64/pr23372a.s
index 639fc26de4c..75ce47e0da8 100644
--- a/ld/testsuite/ld-x86-64/pr23372a.s
+++ b/ld/testsuite/ld-x86-64/pr23372a.s
@@ -16,7 +16,7 @@
.else
.p2align 2
.endif
- /* GNU_PROPERTY_X86_ISA_1_USED */
+ /* GNU_PROPERTY_X86_COMPAT_ISA_1_USED */
.long 0xc0000000 /* pr_type. */
.long 3f - 2f /* pr_datasz. */
2:
diff --git a/ld/testsuite/ld-x86-64/pr23372b.s b/ld/testsuite/ld-x86-64/pr23372b.s
index 639fc26de4c..75ce47e0da8 100644
--- a/ld/testsuite/ld-x86-64/pr23372b.s
+++ b/ld/testsuite/ld-x86-64/pr23372b.s
@@ -16,7 +16,7 @@
.else
.p2align 2
.endif
- /* GNU_PROPERTY_X86_ISA_1_USED */
+ /* GNU_PROPERTY_X86_COMPAT_ISA_1_USED */
.long 0xc0000000 /* pr_type. */
.long 3f - 2f /* pr_datasz. */
2:
diff --git a/ld/testsuite/ld-x86-64/pr23372c-x32.d b/ld/testsuite/ld-x86-64/pr23372c-x32.d
new file mode 100644
index 00000000000..863f4b7e442
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr23372c-x32.d
@@ -0,0 +1,5 @@
+#source: pr23372d.s
+#source: pr23372e.s
+#as: --x32
+#ld: -r -m elf32_x86_64
+#readelf: -n
diff --git a/ld/testsuite/ld-x86-64/pr23372c.d b/ld/testsuite/ld-x86-64/pr23372c.d
new file mode 100644
index 00000000000..23bdaa786a7
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr23372c.d
@@ -0,0 +1,5 @@
+#source: pr23372d.s
+#source: pr23372e.s
+#as: --64 -defsym __64_bit__=1
+#ld: -r -m elf_x86_64
+#readelf: -n
diff --git a/ld/testsuite/ld-x86-64/pr23372c.s b/ld/testsuite/ld-x86-64/pr23372c.s
index b4eaf697779..2efb9bded42 100644
--- a/ld/testsuite/ld-x86-64/pr23372c.s
+++ b/ld/testsuite/ld-x86-64/pr23372c.s
@@ -16,7 +16,7 @@
.else
.p2align 2
.endif
- /* GNU_PROPERTY_X86_ISA_1_NEEDED */
+ /* GNU_PROPERTY_X86_COMPAT_ISA_1_NEEDED */
.long 0xc0000001 /* pr_type. */
.long 3f - 2f /* pr_datasz. */
2:
diff --git a/ld/testsuite/ld-x86-64/pr23372d-x32.d b/ld/testsuite/ld-x86-64/pr23372d-x32.d
new file mode 100644
index 00000000000..80c783dff7a
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr23372d-x32.d
@@ -0,0 +1,5 @@
+#source: pr23372d.s
+#source: pr23372f.s
+#as: --x32
+#ld: -r -m elf32_x86_64
+#readelf: -n
diff --git a/ld/testsuite/ld-x86-64/pr23372d.d b/ld/testsuite/ld-x86-64/pr23372d.d
new file mode 100644
index 00000000000..355269827b7
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr23372d.d
@@ -0,0 +1,5 @@
+#source: pr23372d.s
+#source: pr23372f.s
+#as: --64 -defsym __64_bit__=1
+#ld: -r -m elf_x86_64
+#readelf: -n
diff --git a/ld/testsuite/ld-x86-64/pr23372d.s b/ld/testsuite/ld-x86-64/pr23372d.s
new file mode 100644
index 00000000000..cec05cdba8c
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr23372d.s
@@ -0,0 +1,30 @@
+ .section ".note.gnu.property", "a"
+.ifdef __64_bit__
+ .p2align 3
+.else
+ .p2align 2
+.endif
+ .long 1f - 0f /* name length. */
+ .long 4f - 1f /* data length. */
+ /* NT_GNU_PROPERTY_TYPE_0 */
+ .long 5 /* note type. */
+0:
+ .asciz "GNU" /* vendor name. */
+1:
+.ifdef __64_bit__
+ .p2align 3
+.else
+ .p2align 2
+.endif
+ /* GNU_PROPERTY_X86_ISA_1_USED */
+ .long 0xc0010000 /* pr_type. */
+ .long 3f - 2f /* pr_datasz. */
+2:
+ .long 0x0
+3:
+.ifdef __64_bit__
+ .p2align 3
+.else
+ .p2align 2
+.endif
+4:
diff --git a/ld/testsuite/ld-x86-64/pr23372e.s b/ld/testsuite/ld-x86-64/pr23372e.s
new file mode 100644
index 00000000000..cec05cdba8c
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr23372e.s
@@ -0,0 +1,30 @@
+ .section ".note.gnu.property", "a"
+.ifdef __64_bit__
+ .p2align 3
+.else
+ .p2align 2
+.endif
+ .long 1f - 0f /* name length. */
+ .long 4f - 1f /* data length. */
+ /* NT_GNU_PROPERTY_TYPE_0 */
+ .long 5 /* note type. */
+0:
+ .asciz "GNU" /* vendor name. */
+1:
+.ifdef __64_bit__
+ .p2align 3
+.else
+ .p2align 2
+.endif
+ /* GNU_PROPERTY_X86_ISA_1_USED */
+ .long 0xc0010000 /* pr_type. */
+ .long 3f - 2f /* pr_datasz. */
+2:
+ .long 0x0
+3:
+.ifdef __64_bit__
+ .p2align 3
+.else
+ .p2align 2
+.endif
+4:
diff --git a/ld/testsuite/ld-x86-64/pr23372f.s b/ld/testsuite/ld-x86-64/pr23372f.s
new file mode 100644
index 00000000000..57797c8561c
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr23372f.s
@@ -0,0 +1,30 @@
+ .section ".note.gnu.property", "a"
+.ifdef __64_bit__
+ .p2align 3
+.else
+ .p2align 2
+.endif
+ .long 1f - 0f /* name length. */
+ .long 4f - 1f /* data length. */
+ /* NT_GNU_PROPERTY_TYPE_0 */
+ .long 5 /* note type. */
+0:
+ .asciz "GNU" /* vendor name. */
+1:
+.ifdef __64_bit__
+ .p2align 3
+.else
+ .p2align 2
+.endif
+ /* GNU_PROPERTY_X86_ISA_1_NEEDED */
+ .long 0xc0008000 /* pr_type. */
+ .long 3f - 2f /* pr_datasz. */
+2:
+ .long 0x0
+3:
+.ifdef __64_bit__
+ .p2align 3
+.else
+ .p2align 2
+.endif
+4:
diff --git a/ld/testsuite/ld-x86-64/pr23486a.s b/ld/testsuite/ld-x86-64/pr23486a.s
index a07d0c7ced4..b04960ca28b 100644
--- a/ld/testsuite/ld-x86-64/pr23486a.s
+++ b/ld/testsuite/ld-x86-64/pr23486a.s
@@ -16,7 +16,7 @@
.else
.p2align 2
.endif
- /* GNU_PROPERTY_X86_ISA_1_USED */
+ /* GNU_PROPERTY_X86_COMPAT_ISA_1_USED */
.long 0xc0000000 /* pr_type. */
.long 3f - 2f /* pr_datasz. */
2:
diff --git a/ld/testsuite/ld-x86-64/pr23486b.s b/ld/testsuite/ld-x86-64/pr23486b.s
index c5167eeb651..500da3a4aea 100644
--- a/ld/testsuite/ld-x86-64/pr23486b.s
+++ b/ld/testsuite/ld-x86-64/pr23486b.s
@@ -16,7 +16,7 @@
.else
.p2align 2
.endif
- /* GNU_PROPERTY_X86_ISA_1_NEEDED */
+ /* GNU_PROPERTY_X86_COMPAT_ISA_1_NEEDED */
.long 0xc0000001 /* pr_type. */
.long 3f - 2f /* pr_datasz. */
2:
diff --git a/ld/testsuite/ld-x86-64/pr23486c-x32.d b/ld/testsuite/ld-x86-64/pr23486c-x32.d
new file mode 100644
index 00000000000..acbabe148d0
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr23486c-x32.d
@@ -0,0 +1,10 @@
+#source: pr23486c.s
+#source: pr23486d.s
+#as: --x32
+#ld: -r -m elf32_x86_64
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+ Owner Data size Description
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
+ Properties: x86 ISA needed: CMOV, SSE
diff --git a/ld/testsuite/ld-x86-64/pr23486c.d b/ld/testsuite/ld-x86-64/pr23486c.d
new file mode 100644
index 00000000000..c7e91da3018
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr23486c.d
@@ -0,0 +1,10 @@
+#source: pr23486c.s
+#source: pr23486d.s
+#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 0x00000010 NT_GNU_PROPERTY_TYPE_0
+ Properties: x86 ISA needed: CMOV, SSE
diff --git a/ld/testsuite/ld-x86-64/pr23486c.s b/ld/testsuite/ld-x86-64/pr23486c.s
new file mode 100644
index 00000000000..16bb94d9597
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr23486c.s
@@ -0,0 +1,30 @@
+ .section ".note.gnu.property", "a"
+.ifdef __64_bit__
+ .p2align 3
+.else
+ .p2align 2
+.endif
+ .long 1f - 0f /* name length. */
+ .long 4f - 1f /* data length. */
+ /* NT_GNU_PROPERTY_TYPE_0 */
+ .long 5 /* note type. */
+0:
+ .asciz "GNU" /* vendor name. */
+1:
+.ifdef __64_bit__
+ .p2align 3
+.else
+ .p2align 2
+.endif
+ /* GNU_PROPERTY_X86_ISA_1_USED */
+ .long 0xc0010000 /* pr_type. */
+ .long 3f - 2f /* pr_datasz. */
+2:
+ .long 0xa
+3:
+.ifdef __64_bit__
+ .p2align 3
+.else
+ .p2align 2
+.endif
+4:
diff --git a/ld/testsuite/ld-x86-64/pr23486d-x32.d b/ld/testsuite/ld-x86-64/pr23486d-x32.d
new file mode 100644
index 00000000000..fa72d4bcf29
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr23486d-x32.d
@@ -0,0 +1,10 @@
+#source: pr23486d.s
+#source: pr23486c.s
+#as: --x32
+#ld: -r -m elf32_x86_64
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+ Owner Data size Description
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
+ Properties: x86 ISA needed: CMOV, SSE
diff --git a/ld/testsuite/ld-x86-64/pr23486d.d b/ld/testsuite/ld-x86-64/pr23486d.d
new file mode 100644
index 00000000000..1f0ed231a5b
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr23486d.d
@@ -0,0 +1,10 @@
+#source: pr23486d.s
+#source: pr23486c.s
+#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 0x00000010 NT_GNU_PROPERTY_TYPE_0
+ Properties: x86 ISA needed: CMOV, SSE
diff --git a/ld/testsuite/ld-x86-64/pr23486d.s b/ld/testsuite/ld-x86-64/pr23486d.s
new file mode 100644
index 00000000000..88f9c112c1a
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr23486d.s
@@ -0,0 +1,30 @@
+ .section ".note.gnu.property", "a"
+.ifdef __64_bit__
+ .p2align 3
+.else
+ .p2align 2
+.endif
+ .long 1f - 0f /* name length. */
+ .long 4f - 1f /* data length. */
+ /* NT_GNU_PROPERTY_TYPE_0 */
+ .long 5 /* note type. */
+0:
+ .asciz "GNU" /* vendor name. */
+1:
+.ifdef __64_bit__
+ .p2align 3
+.else
+ .p2align 2
+.endif
+ /* GNU_PROPERTY_X86_ISA_1_NEEDED */
+ .long 0xc0008000 /* pr_type. */
+ .long 3f - 2f /* pr_datasz. */
+2:
+ .long 0x3
+3:
+.ifdef __64_bit__
+ .p2align 3
+.else
+ .p2align 2
+.endif
+4:
diff --git a/ld/testsuite/ld-x86-64/property-3.r b/ld/testsuite/ld-x86-64/property-3.r
index d03203c1e5b..e9f71623572 100644
--- a/ld/testsuite/ld-x86-64/property-3.r
+++ b/ld/testsuite/ld-x86-64/property-3.r
@@ -3,5 +3,5 @@ Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0x800000
- x86 ISA needed: i486, 586
+ x86 ISA needed: CMOV, SSE
#pass
diff --git a/ld/testsuite/ld-x86-64/property-4.r b/ld/testsuite/ld-x86-64/property-4.r
index da295eb6c73..876d05708fb 100644
--- a/ld/testsuite/ld-x86-64/property-4.r
+++ b/ld/testsuite/ld-x86-64/property-4.r
@@ -3,5 +3,5 @@ Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0x800000
- x86 ISA needed: i486, 586, SSE
+ x86 ISA needed: CMOV, SSE, SSE3
#pass
diff --git a/ld/testsuite/ld-x86-64/property-5.r b/ld/testsuite/ld-x86-64/property-5.r
index e4141594b3b..adef5e8db21 100644
--- a/ld/testsuite/ld-x86-64/property-5.r
+++ b/ld/testsuite/ld-x86-64/property-5.r
@@ -3,5 +3,5 @@ Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0x900000
- x86 ISA needed: i486, 586, SSE
+ x86 ISA needed: CMOV, SSE, SSE3
#pass
diff --git a/ld/testsuite/ld-x86-64/property-x86-1.S b/ld/testsuite/ld-x86-64/property-x86-1.S
index 33f2ccdade4..c950b9db193 100644
--- a/ld/testsuite/ld-x86-64/property-x86-1.S
+++ b/ld/testsuite/ld-x86-64/property-x86-1.S
@@ -21,14 +21,14 @@
5:
.p2align ALIGN
/* GNU_PROPERTY_X86_ISA_1_USED */
- .long 0xc0000000 /* pr_type. */
+ .long 0xc0010000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0xa
5:
.p2align ALIGN
/* GNU_PROPERTY_X86_ISA_1_NEEDED */
- .long 0xc0000001 /* pr_type. */
+ .long 0xc0008000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0x3
diff --git a/ld/testsuite/ld-x86-64/property-x86-2.S b/ld/testsuite/ld-x86-64/property-x86-2.S
index 132e5218f5d..72056be46eb 100644
--- a/ld/testsuite/ld-x86-64/property-x86-2.S
+++ b/ld/testsuite/ld-x86-64/property-x86-2.S
@@ -14,14 +14,14 @@
1:
.p2align ALIGN
/* GNU_PROPERTY_X86_ISA_1_USED */
- .long 0xc0000000 /* pr_type. */
+ .long 0xc0010000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0x3
5:
.p2align ALIGN
/* GNU_PROPERTY_X86_ISA_1_NEEDED */
- .long 0xc0000001 /* pr_type. */
+ .long 0xc0008000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0xa
diff --git a/ld/testsuite/ld-x86-64/property-x86-3-x32.d b/ld/testsuite/ld-x86-64/property-x86-3-x32.d
index cd8a2b5c36c..d70224a1f39 100644
--- a/ld/testsuite/ld-x86-64/property-x86-3-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-3-x32.d
@@ -6,5 +6,5 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
- x86 ISA needed: i486, 586, SSE2, SSE3
+ Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
+ x86 ISA used: SSE, SSE3, SSE4_1, AVX
diff --git a/ld/testsuite/ld-x86-64/property-x86-3.d b/ld/testsuite/ld-x86-64/property-x86-3.d
index 6686b14dd0a..2cd5c8fcef8 100644
--- a/ld/testsuite/ld-x86-64/property-x86-3.d
+++ b/ld/testsuite/ld-x86-64/property-x86-3.d
@@ -5,5 +5,5 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
- x86 ISA needed: i486, 586, SSE2, SSE3
+ Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
+ x86 ISA used: SSE, SSE3, SSE4_1, AVX
diff --git a/ld/testsuite/ld-x86-64/property-x86-3.s b/ld/testsuite/ld-x86-64/property-x86-3.s
index 239cf622ff5..8c9d6dac847 100644
--- a/ld/testsuite/ld-x86-64/property-x86-3.s
+++ b/ld/testsuite/ld-x86-64/property-x86-3.s
@@ -17,7 +17,7 @@
.p2align 2
.endif
/* GNU_PROPERTY_X86_ISA_1_USED */
- .long 0xc0000000 /* pr_type. */
+ .long 0xc0010000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0xa
@@ -28,7 +28,7 @@
.p2align 2
.endif
/* GNU_PROPERTY_X86_ISA_1_NEEDED */
- .long 0xc0000001 /* pr_type. */
+ .long 0xc0008000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0x3
@@ -59,7 +59,7 @@
.p2align 2
.endif
/* GNU_PROPERTY_X86_ISA_1_USED */
- .long 0xc0000000 /* pr_type. */
+ .long 0xc0010000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0xa0
@@ -70,7 +70,7 @@
.p2align 2
.endif
/* GNU_PROPERTY_X86_ISA_1_NEEDED */
- .long 0xc0000001 /* pr_type. */
+ .long 0xc0008000 /* pr_type. */
.long 5f - 4f /* pr_datasz. */
4:
.long 0x30
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
index 4cec728dc74..f87ecff6af0 100644
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
@@ -7,4 +7,4 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA needed: i486, 586, SSE2, SSE3
+ Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
index a8df49a351b..902691395c0 100644
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
@@ -7,4 +7,4 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA needed: i486, 586, SSE2, SSE3
+ Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
index c1126267112..45f6037ad77 100644
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
@@ -7,4 +7,4 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA needed: i486, 586, SSE2, SSE3
+ Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
index f10dffdc2c3..259e333bcd0 100644
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
@@ -7,4 +7,4 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA needed: i486, 586, SSE2, SSE3
+ Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
index 0147a3c7b63..85fcb6b3537 100644
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
@@ -7,4 +7,4 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA needed: i486, 586, SSE2, SSE3
+ Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
index 1f8c2dc9290..0eb42e7ab2e 100644
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
@@ -7,4 +7,4 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA needed: i486, 586, SSE2, SSE3
+ Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
index 7ca2539ca50..23a8be6a232 100644
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
@@ -7,4 +7,4 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA needed: i486, 586, SSE2, SSE3
+ Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
index f66a40e4490..152eea5353c 100644
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
@@ -7,4 +7,4 @@
Displaying notes found in: .note.gnu.property
Owner Data size Description
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
- Properties: x86 ISA needed: i486, 586, SSE2, SSE3
+ Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
index ae21e554adf..41f40e7581d 100644
--- a/ld/testsuite/ld-x86-64/x86-64.exp
+++ b/ld/testsuite/ld-x86-64/x86-64.exp
@@ -403,10 +403,18 @@ run_dump_test "pr23372a"
run_dump_test "pr23372a-x32"
run_dump_test "pr23372b"
run_dump_test "pr23372b-x32"
+run_dump_test "pr23372c"
+run_dump_test "pr23372c-x32"
+run_dump_test "pr23372d"
+run_dump_test "pr23372d-x32"
run_dump_test "pr23486a"
run_dump_test "pr23486a-x32"
run_dump_test "pr23486b"
run_dump_test "pr23486b-x32"
+run_dump_test "pr23486c"
+run_dump_test "pr23486c-x32"
+run_dump_test "pr23486d"
+run_dump_test "pr23486d-x32"
if { ![istarget "x86_64-*-linux*"] && ![istarget "x86_64-*-nacl*"]} {
return