diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2018-08-24 04:41:50 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2018-08-24 04:42:15 -0700 |
commit | a9eafb08b3f3dd4cd59757f0b99b44e896d620f1 (patch) | |
tree | 0d114c314acfa1f1324028d87a25ffe697b1caeb | |
parent | aa7bca9b2e30cf128966631382731369f7b753d8 (diff) | |
download | gdb-a9eafb08b3f3dd4cd59757f0b99b44e896d620f1.zip gdb-a9eafb08b3f3dd4cd59757f0b99b44e896d620f1.tar.gz gdb-a9eafb08b3f3dd4cd59757f0b99b44e896d620f1.tar.bz2 |
x86: Update GNU_PROPERTY_X86_XXX macros
This patch updates GNU_PROPERTY_X86_XXX macros:
1. GNU_PROPERTY_X86_UINT32_AND_XXX: 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
2. GNU_PROPERTY_X86_UINT32_OR_XXX: 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
3. GNU_PROPERTY_X86_UINT32_OR_AND_XXX: 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
4. GNU_PROPERTY_X86_FEATURE_2_NEEDED, GNU_PROPERTY_X86_FEATURE_2_USED
and GNU_PROPERTY_X86_FEATURE_2_XXX bits.
GNU_PROPERTY_X86_FEATURE_1_AND is unchanged. GNU_PROPERTY_X86_ISA_1_USED
and GNU_PROPERTY_X86_ISA_1_NEEDED are updated to better support targeted
processors since GNU_PROPERTY_X86_ISA_1_?86 aren't isn't very useful.
A new set of GNU_PROPERTY_X86_ISA_1_XXX bits are defined. The previous
GNU_PROPERTY_X86_ISA_1_XXX macros are deprecated and renamed to
GNU_PROPERTY_X86_COMPAT_ISA_1_XXX.
bfd/
* 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.
binutils/
* 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.
include/
* 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).
ld/
* 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.
76 files changed, 896 insertions, 199 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 44690b8..c9e7e2a 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 0d91e4d..d44ec5a 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 76af83b..3e26571 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 df94652..8d4054f 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 29a8f44..55d878f 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 3d54745..793e282 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 9d7761c..f433685 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 afba4de..add9227 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 67e3aab..ad8f9b1 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 06c1938..32e296f 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 77185bd..26f7139 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 239477b..75a8d5a 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 c4a9414..761c137 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 545777a..e98b2ae 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 a478e7a..474182c 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 264c9d9..b0af2d9 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 3237eca..1731c03 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 825f45d..4adfb4a 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 ffb8988..d9b0538 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 4b933b1..aec4b63 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 55c5505..961d022 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 c2d47fd..942843c 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 78dad02..d1aa350 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 9849d62..eeeac06 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 9849d62..eeeac06 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 0000000..987ae4c --- /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 3470dce..6a871cc 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 0000000..e44aee9 --- /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 0000000..a557319 --- /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 0000000..48cceb1 --- /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 d03203c..e9f7162 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 da295eb..876d057 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 e414159..adef5e8 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 953ca87..f0b8fc0 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 f11e1fe..3987681 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 19c6699..1cbd37a 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 a6fd830..7e5924f 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 0aedea1..b87bc27 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 bd69ac6..f09ae52 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 76d2a39..44f3e57 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 e770ecf..db136cd 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 639fc26..75ce47e 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 639fc26..75ce47e 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 0000000..863f4b7 --- /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 0000000..23bdaa7 --- /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 b4eaf69..2efb9bd 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 0000000..80c783d --- /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 0000000..3552698 --- /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 0000000..cec05cd --- /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 0000000..cec05cd --- /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 0000000..57797c8 --- /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 a07d0c7..b04960c 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 c5167ee..500da3a 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 0000000..acbabe1 --- /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 0000000..c7e91da --- /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 0000000..16bb94d --- /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 0000000..fa72d4b --- /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 0000000..1f0ed23 --- /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 0000000..88f9c11 --- /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 d03203c..e9f7162 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 da295eb..876d057 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 e414159..adef5e8 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 33f2ccd..c950b9d 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 132e521..72056be 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 cd8a2b5..d70224a 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 6686b14..2cd5c8f 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 239cf62..8c9d6da 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 4cec728..f87ecff 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 a8df49a..9026913 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 c112626..45f6037 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 f10dffd..259e333 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 0147a3c..85fcb6b 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 1f8c2dc..0eb42e7 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 7ca2539..23a8be6 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 f66a40e..152eea5 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 ae21e55..41f40e7 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 |