This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] x86: Update GNU_PROPERTY_X86_XXX macros


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=a9eafb08b3f3dd4cd59757f0b99b44e896d620f1

commit a9eafb08b3f3dd4cd59757f0b99b44e896d620f1
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri Aug 24 04:41:50 2018 -0700

    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.

Diff:
---
 bfd/ChangeLog                                      |  16 ++
 bfd/elfxx-x86.c                                    | 136 +++++-----
 binutils/ChangeLog                                 |  30 +++
 binutils/readelf.c                                 | 275 ++++++++++++++++++---
 binutils/testsuite/binutils-all/i386/pr21231b.d    |   4 +-
 binutils/testsuite/binutils-all/i386/pr21231b.s    |   4 +-
 binutils/testsuite/binutils-all/x86-64/pr21231b.d  |   4 +-
 binutils/testsuite/binutils-all/x86-64/pr21231b.s  |   4 +-
 .../testsuite/binutils-all/x86-64/pr23494a-x32.d   |   4 +-
 binutils/testsuite/binutils-all/x86-64/pr23494a.d  |   4 +-
 binutils/testsuite/binutils-all/x86-64/pr23494a.s  |   6 +-
 binutils/testsuite/binutils-all/x86-64/pr23494b.s  |   2 +-
 .../testsuite/binutils-all/x86-64/pr23494c-x32.d   |   2 +-
 binutils/testsuite/binutils-all/x86-64/pr23494c.d  |   2 +-
 binutils/testsuite/binutils-all/x86-64/pr23494c.s  |   6 +-
 .../testsuite/binutils-all/x86-64/pr23494d-x32.d   |   4 +-
 binutils/testsuite/binutils-all/x86-64/pr23494d.d  |   4 +-
 .../testsuite/binutils-all/x86-64/pr23494e-x32.d   |   4 +-
 binutils/testsuite/binutils-all/x86-64/pr23494e.d  |   4 +-
 include/ChangeLog                                  |  59 +++++
 include/elf/common.h                               | 112 +++++++--
 ld/ChangeLog                                       |  61 +++++
 ld/testsuite/ld-i386/i386.exp                      |   4 +
 ld/testsuite/ld-i386/pr23372a.s                    |   2 +-
 ld/testsuite/ld-i386/pr23372b.s                    |   2 +-
 ld/testsuite/ld-i386/pr23372c.d                    |   5 +
 ld/testsuite/ld-i386/pr23372c.s                    |   2 +-
 ld/testsuite/ld-i386/pr23372d.d                    |   5 +
 ld/testsuite/ld-i386/pr23486c.d                    |  10 +
 ld/testsuite/ld-i386/pr23486d.d                    |  10 +
 ld/testsuite/ld-i386/property-3.r                  |   2 +-
 ld/testsuite/ld-i386/property-4.r                  |   2 +-
 ld/testsuite/ld-i386/property-5.r                  |   2 +-
 ld/testsuite/ld-i386/property-x86-1.S              |   4 +-
 ld/testsuite/ld-i386/property-x86-2.S              |   4 +-
 ld/testsuite/ld-i386/property-x86-3.d              |   4 +-
 ld/testsuite/ld-i386/property-x86-3.s              |   8 +-
 ld/testsuite/ld-i386/property-x86-ibt3a.d          |   2 +-
 ld/testsuite/ld-i386/property-x86-ibt3b.d          |   2 +-
 ld/testsuite/ld-i386/property-x86-shstk3a.d        |   2 +-
 ld/testsuite/ld-i386/property-x86-shstk3b.d        |   2 +-
 ld/testsuite/ld-x86-64/pr23372a.s                  |   2 +-
 ld/testsuite/ld-x86-64/pr23372b.s                  |   2 +-
 ld/testsuite/ld-x86-64/pr23372c-x32.d              |   5 +
 ld/testsuite/ld-x86-64/pr23372c.d                  |   5 +
 ld/testsuite/ld-x86-64/pr23372c.s                  |   2 +-
 ld/testsuite/ld-x86-64/pr23372d-x32.d              |   5 +
 ld/testsuite/ld-x86-64/pr23372d.d                  |   5 +
 ld/testsuite/ld-x86-64/pr23372d.s                  |  30 +++
 ld/testsuite/ld-x86-64/pr23372e.s                  |  30 +++
 ld/testsuite/ld-x86-64/pr23372f.s                  |  30 +++
 ld/testsuite/ld-x86-64/pr23486a.s                  |   2 +-
 ld/testsuite/ld-x86-64/pr23486b.s                  |   2 +-
 ld/testsuite/ld-x86-64/pr23486c-x32.d              |  10 +
 ld/testsuite/ld-x86-64/pr23486c.d                  |  10 +
 ld/testsuite/ld-x86-64/pr23486c.s                  |  30 +++
 ld/testsuite/ld-x86-64/pr23486d-x32.d              |  10 +
 ld/testsuite/ld-x86-64/pr23486d.d                  |  10 +
 ld/testsuite/ld-x86-64/pr23486d.s                  |  30 +++
 ld/testsuite/ld-x86-64/property-3.r                |   2 +-
 ld/testsuite/ld-x86-64/property-4.r                |   2 +-
 ld/testsuite/ld-x86-64/property-5.r                |   2 +-
 ld/testsuite/ld-x86-64/property-x86-1.S            |   4 +-
 ld/testsuite/ld-x86-64/property-x86-2.S            |   4 +-
 ld/testsuite/ld-x86-64/property-x86-3-x32.d        |   4 +-
 ld/testsuite/ld-x86-64/property-x86-3.d            |   4 +-
 ld/testsuite/ld-x86-64/property-x86-3.s            |   8 +-
 ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d    |   2 +-
 ld/testsuite/ld-x86-64/property-x86-ibt3a.d        |   2 +-
 ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d    |   2 +-
 ld/testsuite/ld-x86-64/property-x86-ibt3b.d        |   2 +-
 ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d  |   2 +-
 ld/testsuite/ld-x86-64/property-x86-shstk3a.d      |   2 +-
 ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d  |   2 +-
 ld/testsuite/ld-x86-64/property-x86-shstk3b.d      |   2 +-
 ld/testsuite/ld-x86-64/x86-64.exp                  |   8 +
 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]