From 32930e4edbc06bc6f10c435dbcc63131715df678 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 9 Oct 2020 05:05:57 -0700 Subject: [PATCH] x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker GCC 11 supports -march=x86-64-v[234] to enable x86 micro-architecture ISA levels: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97250 Update GNU_PROPERTY_X86_ISA_1_XXX macros: https://gitlab.com/x86-psABIs/x86-64-ABI/-/merge_requests/13 in x86 ELF binaries to indicate that micro-architecture ISA levels required to execute the binary: #define GNU_PROPERTY_X86_ISA_1_NEEDED (GNU_PROPERTY_X86_UINT32_OR_LO + 2) #define GNU_PROPERTY_X86_ISA_1_USED (GNU_PROPERTY_X86_UINT32_OR_AND_LO + 2) #define GNU_PROPERTY_X86_ISA_1_V2 (1U << 0) #define GNU_PROPERTY_X86_ISA_1_V3 (1U << 1) #define GNU_PROPERTY_X86_ISA_1_V4 (1U << 2) The previous GNU_PROPERTY_X86_ISA_1_XXX macros are deprecated and renamed to GNU_PROPERTY_X86_COMPAT_2_ISA_1_XXX. In addition to EM_X86_64, GNU_PROPERTY_X86_ISA_1_V[234] marker can be used by ld.so to detect the x86-64-v4 shared library placed in an x86-64-v2 directory by mistake on an x86-64-v2 machine to avoid crashes on x86-64-v4 instructions. Add -z x86-64-v[234] linker command line option to mark x86-64-v[234] ISA level as needed. Also add #define GNU_PROPERTY_X86_FEATURE_2_MASK (1U << 11) for mask registers. bfd/ PR gas/26703 * elf-linker-x86.h (elf_linker_x86_params): Add isa_level. * elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Merge GNU_PROPERTY_X86_ISA_1_V[234]. (_bfd_x86_elf_link_setup_gnu_properties): Generate GNU_PROPERTY_X86_ISA_1_V[234] for -z x86-64-v[234]. binutils/ PR gas/26703 * readelf.c (decode_x86_compat_2_isa): New function. (decode_x86_isa): Updated for new X86_ISA_1_XXX bits. (decode_x86_feature_1): Handle GNU_PROPERTY_X86_FEATURE_2_MASK. (print_gnu_property_note): Handle X86_COMPAT_2_ISA_1_USED, and X86_COMPAT_2_ISA_1_NEEDED. * 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/empty.d: Updated. * testsuite/binutils-all/i386/ibt.d: Likewise. * testsuite/binutils-all/i386/pr21231a.d: Likewise. * testsuite/binutils-all/i386/pr21231b.d: Likewise. * testsuite/binutils-all/i386/shstk.d: Likewise. * testsuite/binutils-all/x86-64/empty-x32.d: Likewise. * testsuite/binutils-all/x86-64/empty.d: Likewise. * testsuite/binutils-all/x86-64/ibt-x32.d: Likewise. * testsuite/binutils-all/x86-64/ibt.d: Likewise. * testsuite/binutils-all/x86-64/pr21231a.d: Likewise. * 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. * testsuite/binutils-all/x86-64/shstk-x32.d: Likewise. * testsuite/binutils-all/x86-64/shstk.d: Likewise. gas/ PR gas/26703 * config/tc-i386.c (xstate): Add xstate_mask. (md_assemble): Check i.types[j], instead of i.tm.operand_types[j], for xstate. Set xstate_mask, instead of xstate_zmm, for RegMask. (output_insn): Update for GNU_PROPERTY_X86_ISA_1_V[234]. Update xstate for mask register and VSIB. * testsuite/gas/i386/i386.exp: Run more GNU_PROPERTY tests. * testsuite/gas/i386/property-1.s: Updated to the current GNU_PROPERTY_X86_ISA_1_USED value. * testsuite/gas/i386/property-2.s: Only keep cmove. * testsuite/gas/i386/property-3.s: Changed to addsubpd. * testsuite/gas/i386/property-1.d: Updated. * testsuite/gas/i386/property-2.d: Likewise. * testsuite/gas/i386/property-3.d: Likewise. * testsuite/gas/i386/property-4.d: Likewise. * testsuite/gas/i386/property-5.d: Likewise. * testsuite/gas/i386/property-6.d: Likewise. * testsuite/gas/i386/x86-64-property-1.d: Likewise. * testsuite/gas/i386/x86-64-property-2.d: Likewise. * testsuite/gas/i386/x86-64-property-3.d: Likewise. * testsuite/gas/i386/x86-64-property-4.d: Likewise. * testsuite/gas/i386/x86-64-property-5.d: Likewise. * testsuite/gas/i386/x86-64-property-6.d: Likewise. * testsuite/gas/i386/x86-64-property-7.d: Likewise. * testsuite/gas/i386/x86-64-property-8.d: Likewise. * testsuite/gas/i386/x86-64-property-9.d: Likewise. * testsuite/gas/i386/property-11.d: New file. * testsuite/gas/i386/property-11.s: Likewise. * testsuite/gas/i386/property-12.d: Likewise. * testsuite/gas/i386/property-12.s: Likewise. * testsuite/gas/i386/property-13.d: Likewise. * testsuite/gas/i386/property-13.s: Likewise. * testsuite/gas/i386/x86-64-property-11.d: Likewise. * testsuite/gas/i386/x86-64-property-12.d: Likewise. * testsuite/gas/i386/x86-64-property-13.d: Likewise. * testsuite/gas/i386/x86-64-property-14.d: Likewise. * testsuite/gas/i386/x86-64-property-14.s: Likewise. include/ PR gas/26703 * elf/common.h (GNU_PROPERTY_X86_ISA_1_USED): Renamed to ... (GNU_PROPERTY_X86_COMPAT_2_ISA_1_USED): This. (GNU_PROPERTY_X86_ISA_1_NEEDED): Renamed to ... (GNU_PROPERTY_X86_COMPAT_2_ISA_1_NEEDED): This. (GNU_PROPERTY_X86_ISA_1_XXX): Renamed to ... (GNU_PROPERTY_X86_COMPAT_2_ISA_1_XXX): This. (GNU_PROPERTY_X86_ISA_1_NEEDED): New. (GNU_PROPERTY_X86_ISA_1_USED): Likewise. (GNU_PROPERTY_X86_ISA_1_V2): Likewise. (GNU_PROPERTY_X86_ISA_1_V3): Likewise. (GNU_PROPERTY_X86_ISA_1_V4): Likewise. (GNU_PROPERTY_X86_FEATURE_2_MASK): Likewise. ld/ PR gas/26703 * NEWS: Mention -z x86-64-v[234]. * ld.texi: Document -z x86-64-v[234]. * emulparams/elf32_x86_64.sh: Use x86-64-level.sh. * emulparams/elf_i386.sh: Likewise. * emulparams/elf_x86_64.sh: Likewise. * emulparams/x86-64-level.sh: New file. * testsuite/ld-elf/x86-feature-1a.rd: Update. * testsuite/ld-elf/x86-feature-1b.rd: Likewise. * testsuite/ld-elf/x86-feature-1c.rd: Likewise. * testsuite/ld-elf/x86-feature-1d.rd: Likewise. * testsuite/ld-elf/x86-feature-1e.rd: Likewise. * testsuite/ld-i386/pr23372c.d: Likewise. * testsuite/ld-i386/pr23486c.d: Likewise. * testsuite/ld-i386/pr23486d.d: Likewise. * testsuite/ld-i386/pr24322a.d: Likewise. * testsuite/ld-i386/pr24322b.d: Likewise. * testsuite/ld-i386/property-1a.r: Likewise. * testsuite/ld-i386/property-2a.r: Likewise. * testsuite/ld-i386/property-3.r: Likewise. * testsuite/ld-i386/property-3a.r: Likewise. * testsuite/ld-i386/property-4.r: Likewise. * testsuite/ld-i386/property-4a.r: Likewise. * testsuite/ld-i386/property-5.r: Likewise. * testsuite/ld-i386/property-5a.r: Likewise. * testsuite/ld-i386/property-7a.r: Likewise. * testsuite/ld-i386/property-x86-3.d: Likewise. * testsuite/ld-i386/property-x86-4a.d: Likewise. * testsuite/ld-i386/property-x86-5.d: Likewise. * testsuite/ld-i386/property-x86-cet1.d: Likewise. * testsuite/ld-i386/property-x86-cet2a.d: Likewise. * testsuite/ld-i386/property-x86-cet5a.d: Likewise. * testsuite/ld-i386/property-x86-cet5b.d: Likewise. * testsuite/ld-i386/property-x86-ibt1a.d: Likewise. * testsuite/ld-i386/property-x86-ibt1b.d: Likewise. * testsuite/ld-i386/property-x86-ibt2.d: Likewise. * testsuite/ld-i386/property-x86-ibt3a.d: Likewise. * testsuite/ld-i386/property-x86-ibt3b.d: Likewise. * testsuite/ld-i386/property-x86-ibt4.d: Likewise. * testsuite/ld-i386/property-x86-ibt5.d: Likewise. * testsuite/ld-i386/property-x86-shstk1a.d: Likewise. * testsuite/ld-i386/property-x86-shstk1b.d: Likewise. * testsuite/ld-i386/property-x86-shstk2.d: Likewise. * testsuite/ld-i386/property-x86-shstk3a.d: Likewise. * testsuite/ld-i386/property-x86-shstk3b.d: Likewise. * testsuite/ld-i386/property-x86-shstk4.d: Likewise. * testsuite/ld-i386/property-x86-shstk5.d: Likewise. * testsuite/ld-x86-64/pr23372c-x32.d: Likewise. * testsuite/ld-x86-64/pr23372c.d: Likewise. * testsuite/ld-x86-64/pr23486c.d: Likewise. * testsuite/ld-x86-64/pr23486d-x32.d: Likewise. * testsuite/ld-x86-64/pr23486d.d: Likewise. * testsuite/ld-x86-64/pr24322a-x32.d: Likewise. * testsuite/ld-x86-64/pr24322a.d: Likewise. * testsuite/ld-x86-64/pr24322b-x32.d: Likewise. * testsuite/ld-x86-64/pr24322b.d: Likewise. * testsuite/ld-x86-64/pr24458a-x32.d: Likewise. * testsuite/ld-x86-64/pr24458a.d: Likewise. * testsuite/ld-x86-64/pr24458b-x32.d: Likewise. * testsuite/ld-x86-64/pr24458b.d: Likewise. * testsuite/ld-x86-64/pr24458c-x32.d: Likewise. * testsuite/ld-x86-64/pr24458c.d: Likewise. * testsuite/ld-x86-64/property-1a.r: Likewise. * testsuite/ld-x86-64/property-2a.r: Likewise. * testsuite/ld-x86-64/property-3.r: Likewise. * testsuite/ld-x86-64/property-3a.r: Likewise. * testsuite/ld-x86-64/property-4.r: Likewise. * testsuite/ld-x86-64/property-4a.r: Likewise. * testsuite/ld-x86-64/property-5.r: Likewise. * testsuite/ld-x86-64/property-5a.r: Likewise. * testsuite/ld-x86-64/property-7a.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-4a-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-4a.d: Likewise. * testsuite/ld-x86-64/property-x86-5-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-5.d: Likewise. * testsuite/ld-x86-64/property-x86-cet1-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-cet1.d: Likewise. * testsuite/ld-x86-64/property-x86-cet2a-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-cet2a.d: Likewise. * testsuite/ld-x86-64/property-x86-cet5a-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-cet5a.d: Likewise. * testsuite/ld-x86-64/property-x86-cet5b-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-cet5b.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt1a-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt1a.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt1b-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt1b.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt2-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt2.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-ibt4-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt4.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt5-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt5.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk1a-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk1a.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk1b-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk1b.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk2-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk2.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-x86-64/property-x86-shstk4-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk4.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk5-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk5.d: Likewise. * testsuite/ld-i386/i386.exp: Run property-x86-6, property-x86-isa1, property-x86-isa2 and property-x86-isa3. * 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/pr23372d.s: Likewise. * testsuite/ld-x86-64/pr23372e.s: Likewise. * testsuite/ld-x86-64/pr23372f.s: Likewise. * testsuite/ld-x86-64/pr23486c.s: Likewise. * testsuite/ld-x86-64/pr23486d.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. * testsuite/ld-x86-64/property-x86-5a.s: Likewise. * testsuite/ld-x86-64/property-x86-5b.s: Likewise. * testsuite/ld-i386/property-x86-6.d: New file. * testsuite/ld-i386/property-x86-isa1.d: Likewise. * testsuite/ld-i386/property-x86-isa2.d: Likewise. * testsuite/ld-i386/property-x86-isa3.d: Likewise. * testsuite/ld-x86-64/property-x86-6-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-6.d: Likewise. * testsuite/ld-x86-64/property-x86-6.s: Likewise. * testsuite/ld-x86-64/property-x86-isa1-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-isa1.d: Likewise. * testsuite/ld-x86-64/property-x86-isa1.s: Likewise. * testsuite/ld-x86-64/property-x86-isa2-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-isa2.d: Likewise. * testsuite/ld-x86-64/property-x86-isa3-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-isa3.d: Likewise. * testsuite/ld-x86-64/simple.s: Likewise. * ld/testsuite/ld-x86-64/x86-64.exp: Run property-x86-6, property-x86-6-x32, property-x86-isa1, property-x86-isa1-x32, property-x86-isa2, property-x86-isa2-x32, property-x86-isa3-x32 and property-x86-isa3. --- bfd/ChangeLog | 9 ++ bfd/elf-linker-x86.h | 3 + bfd/elfxx-x86.c | 64 +++++++- binutils/ChangeLog | 37 +++++ binutils/readelf.c | 111 ++++++++++--- binutils/testsuite/binutils-all/i386/empty.d | 2 +- binutils/testsuite/binutils-all/i386/ibt.d | 2 +- .../testsuite/binutils-all/i386/pr21231a.d | 2 +- .../testsuite/binutils-all/i386/pr21231b.d | 6 +- .../testsuite/binutils-all/i386/pr21231b.s | 4 +- binutils/testsuite/binutils-all/i386/shstk.d | 2 +- .../testsuite/binutils-all/x86-64/empty-x32.d | 2 +- .../testsuite/binutils-all/x86-64/empty.d | 2 +- .../testsuite/binutils-all/x86-64/ibt-x32.d | 2 +- binutils/testsuite/binutils-all/x86-64/ibt.d | 2 +- .../testsuite/binutils-all/x86-64/pr21231a.d | 2 +- .../testsuite/binutils-all/x86-64/pr21231b.d | 6 +- .../testsuite/binutils-all/x86-64/pr21231b.s | 4 +- .../binutils-all/x86-64/pr23494a-x32.d | 4 +- .../testsuite/binutils-all/x86-64/pr23494a.d | 4 +- .../testsuite/binutils-all/x86-64/pr23494a.s | 6 +- .../testsuite/binutils-all/x86-64/pr23494b.s | 2 +- .../binutils-all/x86-64/pr23494c-x32.d | 2 +- .../testsuite/binutils-all/x86-64/pr23494c.d | 2 +- .../testsuite/binutils-all/x86-64/pr23494c.s | 6 +- .../binutils-all/x86-64/pr23494d-x32.d | 4 +- .../testsuite/binutils-all/x86-64/pr23494d.d | 4 +- .../binutils-all/x86-64/pr23494e-x32.d | 4 +- .../testsuite/binutils-all/x86-64/pr23494e.d | 4 +- .../testsuite/binutils-all/x86-64/shstk-x32.d | 2 +- .../testsuite/binutils-all/x86-64/shstk.d | 2 +- gas/ChangeLog | 40 +++++ gas/config/tc-i386.c | 126 ++++++++------- gas/testsuite/gas/i386/i386.exp | 7 + gas/testsuite/gas/i386/property-1.d | 2 +- gas/testsuite/gas/i386/property-1.s | 2 +- gas/testsuite/gas/i386/property-10.d | 2 +- gas/testsuite/gas/i386/property-11.d | 9 ++ gas/testsuite/gas/i386/property-11.s | 2 + gas/testsuite/gas/i386/property-12.d | 9 ++ gas/testsuite/gas/i386/property-12.s | 2 + gas/testsuite/gas/i386/property-13.d | 9 ++ gas/testsuite/gas/i386/property-13.s | 2 + gas/testsuite/gas/i386/property-2.d | 4 +- gas/testsuite/gas/i386/property-2.s | 30 ---- gas/testsuite/gas/i386/property-3.d | 4 +- gas/testsuite/gas/i386/property-3.s | 2 +- gas/testsuite/gas/i386/property-4.d | 4 +- gas/testsuite/gas/i386/property-5.d | 4 +- gas/testsuite/gas/i386/property-6.d | 4 +- gas/testsuite/gas/i386/x86-64-property-1.d | 2 +- gas/testsuite/gas/i386/x86-64-property-10.d | 2 +- gas/testsuite/gas/i386/x86-64-property-11.d | 10 ++ gas/testsuite/gas/i386/x86-64-property-12.d | 10 ++ gas/testsuite/gas/i386/x86-64-property-13.d | 10 ++ gas/testsuite/gas/i386/x86-64-property-14.d | 9 ++ gas/testsuite/gas/i386/x86-64-property-14.s | 2 + gas/testsuite/gas/i386/x86-64-property-2.d | 4 +- gas/testsuite/gas/i386/x86-64-property-3.d | 4 +- gas/testsuite/gas/i386/x86-64-property-4.d | 4 +- gas/testsuite/gas/i386/x86-64-property-5.d | 4 +- gas/testsuite/gas/i386/x86-64-property-6.d | 4 +- gas/testsuite/gas/i386/x86-64-property-7.d | 4 +- gas/testsuite/gas/i386/x86-64-property-8.d | 4 +- gas/testsuite/gas/i386/x86-64-property-9.d | 4 +- include/ChangeLog | 16 ++ include/elf/common.h | 76 +++++---- ld/ChangeLog | 152 ++++++++++++++++++ ld/NEWS | 3 + ld/emulparams/elf32_x86_64.sh | 1 + ld/emulparams/elf_i386.sh | 1 + ld/emulparams/elf_x86_64.sh | 1 + ld/emulparams/x86-64-level.sh | 18 +++ ld/ld.texi | 9 ++ ld/testsuite/ld-elf/x86-feature-1a.rd | 2 +- ld/testsuite/ld-elf/x86-feature-1b.rd | 2 +- ld/testsuite/ld-elf/x86-feature-1c.rd | 2 +- ld/testsuite/ld-elf/x86-feature-1d.rd | 2 +- ld/testsuite/ld-elf/x86-feature-1e.rd | 2 +- ld/testsuite/ld-i386/i386.exp | 4 + ld/testsuite/ld-i386/pr23372c.d | 2 +- ld/testsuite/ld-i386/pr23486c.d | 2 +- ld/testsuite/ld-i386/pr23486d.d | 2 +- ld/testsuite/ld-i386/pr24322a.d | 2 +- ld/testsuite/ld-i386/pr24322b.d | 2 +- ld/testsuite/ld-i386/property-1a.r | 2 +- ld/testsuite/ld-i386/property-2a.r | 2 +- ld/testsuite/ld-i386/property-3.r | 2 +- ld/testsuite/ld-i386/property-3a.r | 4 +- ld/testsuite/ld-i386/property-4.r | 2 +- ld/testsuite/ld-i386/property-4a.r | 4 +- ld/testsuite/ld-i386/property-5.r | 2 +- ld/testsuite/ld-i386/property-5a.r | 4 +- ld/testsuite/ld-i386/property-7a.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-4a.d | 2 +- ld/testsuite/ld-i386/property-x86-5.d | 4 +- ld/testsuite/ld-i386/property-x86-6.d | 10 ++ ld/testsuite/ld-i386/property-x86-cet1.d | 2 +- ld/testsuite/ld-i386/property-x86-cet2a.d | 4 +- ld/testsuite/ld-i386/property-x86-cet5a.d | 4 +- ld/testsuite/ld-i386/property-x86-cet5b.d | 2 +- ld/testsuite/ld-i386/property-x86-ibt1a.d | 4 +- ld/testsuite/ld-i386/property-x86-ibt1b.d | 4 +- ld/testsuite/ld-i386/property-x86-ibt2.d | 2 +- ld/testsuite/ld-i386/property-x86-ibt3a.d | 4 +- ld/testsuite/ld-i386/property-x86-ibt3b.d | 4 +- ld/testsuite/ld-i386/property-x86-ibt4.d | 2 +- ld/testsuite/ld-i386/property-x86-ibt5.d | 2 +- ld/testsuite/ld-i386/property-x86-isa1.d | 11 ++ ld/testsuite/ld-i386/property-x86-isa2.d | 9 ++ ld/testsuite/ld-i386/property-x86-isa3.d | 9 ++ ld/testsuite/ld-i386/property-x86-shstk1a.d | 4 +- ld/testsuite/ld-i386/property-x86-shstk1b.d | 4 +- ld/testsuite/ld-i386/property-x86-shstk2.d | 2 +- ld/testsuite/ld-i386/property-x86-shstk3a.d | 4 +- ld/testsuite/ld-i386/property-x86-shstk3b.d | 4 +- ld/testsuite/ld-i386/property-x86-shstk4.d | 2 +- ld/testsuite/ld-i386/property-x86-shstk5.d | 2 +- ld/testsuite/ld-x86-64/pr23372c-x32.d | 2 +- ld/testsuite/ld-x86-64/pr23372c.d | 2 +- ld/testsuite/ld-x86-64/pr23372d.s | 2 +- ld/testsuite/ld-x86-64/pr23372e.s | 2 +- ld/testsuite/ld-x86-64/pr23372f.s | 2 +- ld/testsuite/ld-x86-64/pr23486c-x32.d | 2 +- ld/testsuite/ld-x86-64/pr23486c.d | 2 +- ld/testsuite/ld-x86-64/pr23486c.s | 2 +- ld/testsuite/ld-x86-64/pr23486d-x32.d | 2 +- ld/testsuite/ld-x86-64/pr23486d.d | 2 +- ld/testsuite/ld-x86-64/pr23486d.s | 2 +- ld/testsuite/ld-x86-64/pr24322a-x32.d | 2 +- ld/testsuite/ld-x86-64/pr24322a.d | 2 +- ld/testsuite/ld-x86-64/pr24322b-x32.d | 2 +- ld/testsuite/ld-x86-64/pr24322b.d | 2 +- ld/testsuite/ld-x86-64/pr24458a-x32.d | 4 +- ld/testsuite/ld-x86-64/pr24458a.d | 4 +- ld/testsuite/ld-x86-64/pr24458b-x32.d | 4 +- ld/testsuite/ld-x86-64/pr24458b.d | 4 +- ld/testsuite/ld-x86-64/pr24458c-x32.d | 4 +- ld/testsuite/ld-x86-64/pr24458c.d | 4 +- ld/testsuite/ld-x86-64/property-1a.r | 2 +- ld/testsuite/ld-x86-64/property-2a.r | 2 +- ld/testsuite/ld-x86-64/property-3.r | 2 +- ld/testsuite/ld-x86-64/property-3a.r | 4 +- ld/testsuite/ld-x86-64/property-4.r | 2 +- ld/testsuite/ld-x86-64/property-4a.r | 4 +- ld/testsuite/ld-x86-64/property-5.r | 2 +- ld/testsuite/ld-x86-64/property-5a.r | 4 +- ld/testsuite/ld-x86-64/property-7a.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-4a-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-4a.d | 2 +- ld/testsuite/ld-x86-64/property-x86-5-x32.d | 4 +- ld/testsuite/ld-x86-64/property-x86-5.d | 4 +- ld/testsuite/ld-x86-64/property-x86-5a.s | 4 +- ld/testsuite/ld-x86-64/property-x86-5b.s | 2 +- ld/testsuite/ld-x86-64/property-x86-6-x32.d | 10 ++ ld/testsuite/ld-x86-64/property-x86-6.d | 9 ++ ld/testsuite/ld-x86-64/property-x86-6.s | 83 ++++++++++ .../ld-x86-64/property-x86-cet1-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-cet1.d | 2 +- .../ld-x86-64/property-x86-cet2a-x32.d | 4 +- ld/testsuite/ld-x86-64/property-x86-cet2a.d | 4 +- .../ld-x86-64/property-x86-cet5a-x32.d | 4 +- ld/testsuite/ld-x86-64/property-x86-cet5a.d | 4 +- .../ld-x86-64/property-x86-cet5b-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-cet5b.d | 2 +- .../ld-x86-64/property-x86-ibt1a-x32.d | 4 +- ld/testsuite/ld-x86-64/property-x86-ibt1a.d | 4 +- .../ld-x86-64/property-x86-ibt1b-x32.d | 4 +- ld/testsuite/ld-x86-64/property-x86-ibt1b.d | 4 +- .../ld-x86-64/property-x86-ibt2-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-ibt2.d | 2 +- .../ld-x86-64/property-x86-ibt3a-x32.d | 4 +- ld/testsuite/ld-x86-64/property-x86-ibt3a.d | 4 +- .../ld-x86-64/property-x86-ibt3b-x32.d | 4 +- ld/testsuite/ld-x86-64/property-x86-ibt3b.d | 4 +- .../ld-x86-64/property-x86-ibt4-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-ibt4.d | 2 +- .../ld-x86-64/property-x86-ibt5-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-ibt5.d | 2 +- .../ld-x86-64/property-x86-isa1-x32.d | 11 ++ ld/testsuite/ld-x86-64/property-x86-isa1.d | 11 ++ ld/testsuite/ld-x86-64/property-x86-isa1.s | 54 +++++++ .../ld-x86-64/property-x86-isa2-x32.d | 9 ++ ld/testsuite/ld-x86-64/property-x86-isa2.d | 9 ++ .../ld-x86-64/property-x86-isa3-x32.d | 9 ++ ld/testsuite/ld-x86-64/property-x86-isa3.d | 9 ++ .../ld-x86-64/property-x86-shstk1a-x32.d | 4 +- ld/testsuite/ld-x86-64/property-x86-shstk1a.d | 4 +- .../ld-x86-64/property-x86-shstk1b-x32.d | 4 +- ld/testsuite/ld-x86-64/property-x86-shstk1b.d | 4 +- .../ld-x86-64/property-x86-shstk2-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-shstk2.d | 2 +- .../ld-x86-64/property-x86-shstk3a-x32.d | 4 +- ld/testsuite/ld-x86-64/property-x86-shstk3a.d | 4 +- .../ld-x86-64/property-x86-shstk3b-x32.d | 4 +- ld/testsuite/ld-x86-64/property-x86-shstk3b.d | 4 +- .../ld-x86-64/property-x86-shstk4-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-shstk4.d | 2 +- .../ld-x86-64/property-x86-shstk5-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-shstk5.d | 2 +- ld/testsuite/ld-x86-64/simple.s | 4 + ld/testsuite/ld-x86-64/x86-64.exp | 8 + 211 files changed, 1149 insertions(+), 404 deletions(-) create mode 100644 gas/testsuite/gas/i386/property-11.d create mode 100644 gas/testsuite/gas/i386/property-11.s create mode 100644 gas/testsuite/gas/i386/property-12.d create mode 100644 gas/testsuite/gas/i386/property-12.s create mode 100644 gas/testsuite/gas/i386/property-13.d create mode 100644 gas/testsuite/gas/i386/property-13.s create mode 100644 gas/testsuite/gas/i386/x86-64-property-11.d create mode 100644 gas/testsuite/gas/i386/x86-64-property-12.d create mode 100644 gas/testsuite/gas/i386/x86-64-property-13.d create mode 100644 gas/testsuite/gas/i386/x86-64-property-14.d create mode 100644 gas/testsuite/gas/i386/x86-64-property-14.s create mode 100644 ld/emulparams/x86-64-level.sh create mode 100644 ld/testsuite/ld-i386/property-x86-6.d create mode 100644 ld/testsuite/ld-i386/property-x86-isa1.d create mode 100644 ld/testsuite/ld-i386/property-x86-isa2.d create mode 100644 ld/testsuite/ld-i386/property-x86-isa3.d create mode 100644 ld/testsuite/ld-x86-64/property-x86-6-x32.d create mode 100644 ld/testsuite/ld-x86-64/property-x86-6.d create mode 100644 ld/testsuite/ld-x86-64/property-x86-6.s create mode 100644 ld/testsuite/ld-x86-64/property-x86-isa1-x32.d create mode 100644 ld/testsuite/ld-x86-64/property-x86-isa1.d create mode 100644 ld/testsuite/ld-x86-64/property-x86-isa1.s create mode 100644 ld/testsuite/ld-x86-64/property-x86-isa2-x32.d create mode 100644 ld/testsuite/ld-x86-64/property-x86-isa2.d create mode 100644 ld/testsuite/ld-x86-64/property-x86-isa3-x32.d create mode 100644 ld/testsuite/ld-x86-64/property-x86-isa3.d create mode 100644 ld/testsuite/ld-x86-64/simple.s diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 468c6f64c3..9650b3d827 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,12 @@ +2020-10-09 H.J. Lu + + PR gas/26703 + * elf-linker-x86.h (elf_linker_x86_params): Add isa_level. + * elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Merge + GNU_PROPERTY_X86_ISA_1_V[234]. + (_bfd_x86_elf_link_setup_gnu_properties): Generate + GNU_PROPERTY_X86_ISA_1_V[234] for -z x86-64-v[234]. + 2020-10-06 H.J. Lu PR ld/26711 diff --git a/bfd/elf-linker-x86.h b/bfd/elf-linker-x86.h index d0cb20dde5..77e81960ab 100644 --- a/bfd/elf-linker-x86.h +++ b/bfd/elf-linker-x86.h @@ -55,6 +55,9 @@ struct elf_linker_x86_params /* TRUE if --dynamic-linker is passed at command-line. */ unsigned int has_dynamic_linker : 1; + /* X86-64 ISA level needed. */ + unsigned int isa_level; + /* Report missing IBT and SHSTK properties. */ enum elf_x86_cet_report cet_report; diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c index 143aae4b5c..4a0360fb09 100644 --- a/bfd/elfxx-x86.c +++ b/bfd/elfxx-x86.c @@ -2337,6 +2337,8 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info, { unsigned int number, features; bfd_boolean updated = FALSE; + const struct elf_backend_data *bed; + struct elf_x86_link_hash_table *htab; unsigned int pr_type = aprop != NULL ? aprop->pr_type : bprop->pr_type; if (pr_type == GNU_PROPERTY_X86_COMPAT_ISA_1_USED @@ -2366,10 +2368,32 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info, || (pr_type >= GNU_PROPERTY_X86_UINT32_OR_LO && pr_type <= GNU_PROPERTY_X86_UINT32_OR_HI)) { + features = 0; + if (pr_type == GNU_PROPERTY_X86_ISA_1_NEEDED) + { + bed = get_elf_backend_data (info->output_bfd); + htab = elf_x86_hash_table (info, bed->target_id); + switch (htab->params->isa_level) + { + case 0: + break; + case 2: + features = GNU_PROPERTY_X86_ISA_1_V2; + break; + case 3: + features = GNU_PROPERTY_X86_ISA_1_V3; + break; + case 4: + features = GNU_PROPERTY_X86_ISA_1_V4; + break; + default: + abort (); + } + } if (aprop != NULL && bprop != NULL) { number = aprop->u.number; - aprop->u.number = number | bprop->u.number; + aprop->u.number = number | bprop->u.number | features; /* Remove the property if all bits are empty. */ if (aprop->u.number == 0) { @@ -2384,6 +2408,7 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info, /* Only one of APROP and BPROP can be NULL. */ if (aprop != NULL) { + aprop->u.number |= features; if (aprop->u.number == 0) { /* Remove APROP if all bits are empty. */ @@ -2396,6 +2421,7 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info, /* Return TRUE if APROP is NULL and all bits of BPROP aren't empty to indicate that BPROP should be added to ABFD. */ + bprop->u.number |= features; updated = bprop->u.number != 0; } } @@ -2409,10 +2435,8 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info, 2. If APROP is NULL, remove x86 feature. 3. Otherwise, do nothing. */ - const struct elf_backend_data *bed - = get_elf_backend_data (info->output_bfd); - struct elf_x86_link_hash_table *htab - = elf_x86_hash_table (info, bed->target_id); + bed = get_elf_backend_data (info->output_bfd); + htab = elf_x86_hash_table (info, bed->target_id); if (!htab) abort (); if (aprop != NULL && bprop != NULL) @@ -2490,7 +2514,7 @@ _bfd_x86_elf_link_setup_gnu_properties asection *sec, *pltsec; bfd *dynobj; bfd_boolean use_ibt_plt; - unsigned int plt_alignment, features; + unsigned int plt_alignment, features, isa_level; struct elf_x86_link_hash_table *htab; bfd *pbfd; bfd *ebfd = NULL; @@ -2532,6 +2556,24 @@ _bfd_x86_elf_link_setup_gnu_properties if (!(htab->params->cet_report & (cet_report_ibt | cet_report_shstk))) htab->params->cet_report = cet_report_none; + switch (htab->params->isa_level) + { + case 0: + isa_level = 0; + break; + case 2: + isa_level = GNU_PROPERTY_X86_ISA_1_V2; + break; + case 3: + isa_level = GNU_PROPERTY_X86_ISA_1_V3; + break; + case 4: + isa_level = GNU_PROPERTY_X86_ISA_1_V4; + break; + default: + abort (); + } + if (ebfd != NULL) { prop = NULL; @@ -2546,6 +2588,16 @@ _bfd_x86_elf_link_setup_gnu_properties prop->pr_kind = property_number; } + if (isa_level) + { + /* If ISA level is set, add GNU_PROPERTY_X86_ISA_1_NEEDED. */ + prop = _bfd_elf_get_property (ebfd, + GNU_PROPERTY_X86_ISA_1_NEEDED, + 4); + prop->u.number |= isa_level; + prop->pr_kind = property_number; + } + /* Create the GNU property note section if needed. */ if (prop != NULL && pbfd == NULL) { diff --git a/binutils/ChangeLog b/binutils/ChangeLog index b751eeec5e..ed05b24acf 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,40 @@ +2020-10-09 H.J. Lu + + PR gas/26703 + * readelf.c (decode_x86_compat_2_isa): New function. + (decode_x86_isa): Updated for new X86_ISA_1_XXX bits. + (decode_x86_feature_1): Handle GNU_PROPERTY_X86_FEATURE_2_MASK. + (print_gnu_property_note): Handle X86_COMPAT_2_ISA_1_USED, + and X86_COMPAT_2_ISA_1_NEEDED. + * 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/empty.d: Updated. + * testsuite/binutils-all/i386/ibt.d: Likewise. + * testsuite/binutils-all/i386/pr21231a.d: Likewise. + * testsuite/binutils-all/i386/pr21231b.d: Likewise. + * testsuite/binutils-all/i386/shstk.d: Likewise. + * testsuite/binutils-all/x86-64/empty-x32.d: Likewise. + * testsuite/binutils-all/x86-64/empty.d: Likewise. + * testsuite/binutils-all/x86-64/ibt-x32.d: Likewise. + * testsuite/binutils-all/x86-64/ibt.d: Likewise. + * testsuite/binutils-all/x86-64/pr21231a.d: Likewise. + * 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. + * testsuite/binutils-all/x86-64/shstk-x32.d: Likewise. + * testsuite/binutils-all/x86-64/shstk.d: Likewise. + 2020-10-06 Nick Clifton * objcopy.c (copy_object): Compare input and output sections by diff --git a/binutils/readelf.c b/binutils/readelf.c index 9ba4e29a65..33ae4e527f 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -18225,7 +18225,7 @@ decode_x86_compat_isa (unsigned int bitmask) } static void -decode_x86_isa (unsigned int bitmask) +decode_x86_compat_2_isa (unsigned int bitmask) { if (!bitmask) { @@ -18240,79 +18240,79 @@ decode_x86_isa (unsigned int bitmask) bitmask &= ~ bit; switch (bit) { - case GNU_PROPERTY_X86_ISA_1_CMOV: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_CMOV: printf ("CMOV"); break; - case GNU_PROPERTY_X86_ISA_1_SSE: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE: printf ("SSE"); break; - case GNU_PROPERTY_X86_ISA_1_SSE2: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE2: printf ("SSE2"); break; - case GNU_PROPERTY_X86_ISA_1_SSE3: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE3: printf ("SSE3"); break; - case GNU_PROPERTY_X86_ISA_1_SSSE3: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSSE3: printf ("SSSE3"); break; - case GNU_PROPERTY_X86_ISA_1_SSE4_1: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE4_1: printf ("SSE4_1"); break; - case GNU_PROPERTY_X86_ISA_1_SSE4_2: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE4_2: printf ("SSE4_2"); break; - case GNU_PROPERTY_X86_ISA_1_AVX: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX: printf ("AVX"); break; - case GNU_PROPERTY_X86_ISA_1_AVX2: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX2: printf ("AVX2"); break; - case GNU_PROPERTY_X86_ISA_1_FMA: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_FMA: printf ("FMA"); break; - case GNU_PROPERTY_X86_ISA_1_AVX512F: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512F: printf ("AVX512F"); break; - case GNU_PROPERTY_X86_ISA_1_AVX512CD: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512CD: printf ("AVX512CD"); break; - case GNU_PROPERTY_X86_ISA_1_AVX512ER: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512ER: printf ("AVX512ER"); break; - case GNU_PROPERTY_X86_ISA_1_AVX512PF: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512PF: printf ("AVX512PF"); break; - case GNU_PROPERTY_X86_ISA_1_AVX512VL: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512VL: printf ("AVX512VL"); break; - case GNU_PROPERTY_X86_ISA_1_AVX512DQ: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512DQ: printf ("AVX512DQ"); break; - case GNU_PROPERTY_X86_ISA_1_AVX512BW: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512BW: printf ("AVX512BW"); break; - case GNU_PROPERTY_X86_ISA_1_AVX512_4FMAPS: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_4FMAPS: printf ("AVX512_4FMAPS"); break; - case GNU_PROPERTY_X86_ISA_1_AVX512_4VNNIW: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_4VNNIW: printf ("AVX512_4VNNIW"); break; - case GNU_PROPERTY_X86_ISA_1_AVX512_BITALG: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_BITALG: printf ("AVX512_BITALG"); break; - case GNU_PROPERTY_X86_ISA_1_AVX512_IFMA: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_IFMA: printf ("AVX512_IFMA"); break; - case GNU_PROPERTY_X86_ISA_1_AVX512_VBMI: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VBMI: printf ("AVX512_VBMI"); break; - case GNU_PROPERTY_X86_ISA_1_AVX512_VBMI2: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VBMI2: printf ("AVX512_VBMI2"); break; - case GNU_PROPERTY_X86_ISA_1_AVX512_VNNI: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VNNI: printf ("AVX512_VNNI"); break; - case GNU_PROPERTY_X86_ISA_1_AVX512_BF16: + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_BF16: printf ("AVX512_BF16"); break; default: @@ -18324,6 +18324,40 @@ decode_x86_isa (unsigned int bitmask) } } +static void +decode_x86_isa (unsigned int bitmask) +{ + if (!bitmask) + { + printf (_("x86-64-baseline")); + return; + } + + while (bitmask) + { + unsigned int bit = bitmask & (- bitmask); + + bitmask &= ~ bit; + switch (bit) + { + case GNU_PROPERTY_X86_ISA_1_V2: + printf ("x86-64-v2"); + break; + case GNU_PROPERTY_X86_ISA_1_V3: + printf ("x86-64-v3"); + break; + case GNU_PROPERTY_X86_ISA_1_V4: + printf ("x86-64-v4"); + break; + default: + printf (_(""), bit); + break; + } + if (bitmask) + printf (", "); + } +} + static void decode_x86_feature_1 (unsigned int bitmask) { @@ -18392,6 +18426,9 @@ decode_x86_feature_2 (unsigned int bitmask) case GNU_PROPERTY_X86_FEATURE_2_TMM: printf ("TMM"); break; + case GNU_PROPERTY_X86_FEATURE_2_MASK: + printf ("MASK"); + break; case GNU_PROPERTY_X86_FEATURE_2_FXSR: printf ("FXSR"); break; @@ -18570,6 +18607,28 @@ print_gnu_property_note (Filedata * filedata, Elf_Internal_Note * pnote) } goto next; + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_USED: + if (datasz != 4) + printf (_("x86 ISA used: "), + datasz); + else + { + printf ("x86 ISA used: "); + decode_x86_compat_2_isa (bitmask); + } + goto next; + + case GNU_PROPERTY_X86_COMPAT_2_ISA_1_NEEDED: + if (datasz != 4) + printf (_("x86 ISA needed: "), + datasz); + else + { + printf ("x86 ISA needed: "); + decode_x86_compat_2_isa (bitmask); + } + goto next; + default: break; } diff --git a/binutils/testsuite/binutils-all/i386/empty.d b/binutils/testsuite/binutils-all/i386/empty.d index 84837ba91a..ec54389be6 100644 --- a/binutils/testsuite/binutils-all/i386/empty.d +++ b/binutils/testsuite/binutils-all/i386/empty.d @@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline x86 feature used: x86 diff --git a/binutils/testsuite/binutils-all/i386/ibt.d b/binutils/testsuite/binutils-all/i386/ibt.d index 7698a8ec76..7723d70bf0 100644 --- a/binutils/testsuite/binutils-all/i386/ibt.d +++ b/binutils/testsuite/binutils-all/i386/ibt.d @@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline x86 feature used: x86 diff --git a/binutils/testsuite/binutils-all/i386/pr21231a.d b/binutils/testsuite/binutils-all/i386/pr21231a.d index 6c49a4981a..657784d4f0 100644 --- a/binutils/testsuite/binutils-all/i386/pr21231a.d +++ b/binutils/testsuite/binutils-all/i386/pr21231a.d @@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property GNU 0x00000008 NT_GNU_PROPERTY_TYPE_0 Properties: no copy on protected GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline x86 feature used: x86 diff --git a/binutils/testsuite/binutils-all/i386/pr21231b.d b/binutils/testsuite/binutils-all/i386/pr21231b.d index 921345d31c..77ef4e635e 100644 --- a/binutils/testsuite/binutils-all/i386/pr21231b.d +++ b/binutils/testsuite/binutils-all/i386/pr21231b.d @@ -8,8 +8,8 @@ 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: 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, AVX512_BF16, , , , , , - x86 ISA needed: CMOV, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2, FMA, AVX512F, AVX512CD, AVX512ER, AVX512PF, AVX512VL, AVX512DQ + x86 ISA used: x86-64-v2, x86-64-v3, x86-64-v4, , , , , , , , , , , , , , , , , , , , , , , , , , , , + x86 ISA needed: x86-64-v2, x86-64-v3, x86-64-v4, , , , , , , , , , , , , GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline x86 feature used: x86 diff --git a/binutils/testsuite/binutils-all/i386/pr21231b.s b/binutils/testsuite/binutils-all/i386/pr21231b.s index 1fd2575e2a..67cd08dbfb 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 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* pr_type. */ .long 4f - 3f /* pr_datasz. */ 3: .long 0x7fffffff 4: .p2align 2 /* GNU_PROPERTY_X86_ISA_1_NEEDED */ - .long 0xc0008000 /* pr_type. */ + .long 0xc0008002 /* pr_type. */ .long 4f - 3f /* pr_datasz. */ 3: .long 0xffff diff --git a/binutils/testsuite/binutils-all/i386/shstk.d b/binutils/testsuite/binutils-all/i386/shstk.d index c2b5bece60..8d2e9f2969 100644 --- a/binutils/testsuite/binutils-all/i386/shstk.d +++ b/binutils/testsuite/binutils-all/i386/shstk.d @@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline x86 feature used: x86 diff --git a/binutils/testsuite/binutils-all/x86-64/empty-x32.d b/binutils/testsuite/binutils-all/x86-64/empty-x32.d index 2e6dc429aa..820996bbd9 100644 --- a/binutils/testsuite/binutils-all/x86-64/empty-x32.d +++ b/binutils/testsuite/binutils-all/x86-64/empty-x32.d @@ -9,5 +9,5 @@ Displaying notes found in: .note.gnu.property GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline x86 feature used: x86 diff --git a/binutils/testsuite/binutils-all/x86-64/empty.d b/binutils/testsuite/binutils-all/x86-64/empty.d index f66f0fcd79..0f9d8ceca5 100644 --- a/binutils/testsuite/binutils-all/x86-64/empty.d +++ b/binutils/testsuite/binutils-all/x86-64/empty.d @@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline x86 feature used: x86 diff --git a/binutils/testsuite/binutils-all/x86-64/ibt-x32.d b/binutils/testsuite/binutils-all/x86-64/ibt-x32.d index 21a7abe9e7..490938a2cc 100644 --- a/binutils/testsuite/binutils-all/x86-64/ibt-x32.d +++ b/binutils/testsuite/binutils-all/x86-64/ibt-x32.d @@ -9,5 +9,5 @@ Displaying notes found in: .note.gnu.property GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline x86 feature used: x86 diff --git a/binutils/testsuite/binutils-all/x86-64/ibt.d b/binutils/testsuite/binutils-all/x86-64/ibt.d index 086076151f..500ab54e4d 100644 --- a/binutils/testsuite/binutils-all/x86-64/ibt.d +++ b/binutils/testsuite/binutils-all/x86-64/ibt.d @@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline x86 feature used: x86 diff --git a/binutils/testsuite/binutils-all/x86-64/pr21231a.d b/binutils/testsuite/binutils-all/x86-64/pr21231a.d index 4e2c8e3758..f643a78a6e 100644 --- a/binutils/testsuite/binutils-all/x86-64/pr21231a.d +++ b/binutils/testsuite/binutils-all/x86-64/pr21231a.d @@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property GNU 0x00000008 NT_GNU_PROPERTY_TYPE_0 Properties: no copy on protected GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline x86 feature used: x86 diff --git a/binutils/testsuite/binutils-all/x86-64/pr21231b.d b/binutils/testsuite/binutils-all/x86-64/pr21231b.d index e1ca772363..e9a185f167 100644 --- a/binutils/testsuite/binutils-all/x86-64/pr21231b.d +++ b/binutils/testsuite/binutils-all/x86-64/pr21231b.d @@ -8,8 +8,8 @@ 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: 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, AVX512_BF16, , , , , , - x86 ISA needed: CMOV, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2, FMA, AVX512F, AVX512CD, AVX512ER, AVX512PF, AVX512VL, AVX512DQ + x86 ISA used: x86-64-v2, x86-64-v3, x86-64-v4, , , , , , , , , , , , , , , , , , , , , , , , , , , , + x86 ISA needed: x86-64-v2, x86-64-v3, x86-64-v4, , , , , , , , , , , , , GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline x86 feature used: x86 diff --git a/binutils/testsuite/binutils-all/x86-64/pr21231b.s b/binutils/testsuite/binutils-all/x86-64/pr21231b.s index 8fefebdb2f..1feea55169 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 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* pr_type. */ .long 4f - 3f /* pr_datasz. */ 3: .long 0x7fffffff 4: .p2align 3 /* GNU_PROPERTY_X86_ISA_1_NEEDED */ - .long 0xc0008000 /* pr_type. */ + .long 0xc0008002 /* 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 819551725c..018809c6cf 100644 --- a/binutils/testsuite/binutils-all/x86-64/pr23494a-x32.d +++ b/binutils/testsuite/binutils-all/x86-64/pr23494a-x32.d @@ -7,6 +7,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: SSE4_1, AVX - x86 ISA used: SSE, SSE3, SSE4_1, AVX + Properties: x86 ISA needed: , x86 feature used: x86 + x86 ISA used: x86-64-v3, , , diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494a.d b/binutils/testsuite/binutils-all/x86-64/pr23494a.d index 906273331d..dab7d1859c 100644 --- a/binutils/testsuite/binutils-all/x86-64/pr23494a.d +++ b/binutils/testsuite/binutils-all/x86-64/pr23494a.d @@ -7,6 +7,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: SSE4_1, AVX - x86 ISA used: SSE, SSE3, SSE4_1, AVX + Properties: x86 ISA needed: , x86 feature used: x86 + x86 ISA used: x86-64-v3, , , diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494a.s b/binutils/testsuite/binutils-all/x86-64/pr23494a.s index 26f7139510..a36d303a13 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 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0xa @@ -48,7 +48,7 @@ .p2align 2 .endif /* GNU_PROPERTY_X86_ISA_1_NEEDED */ - .long 0xc0008000 /* pr_type. */ + .long 0xc0008002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0xa0 @@ -79,7 +79,7 @@ .p2align 2 .endif /* GNU_PROPERTY_X86_ISA_1_USED */ - .long 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* 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 75a8d5aa7d..aa3cdb5f82 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 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* 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 188705b18a..05f32635ce 100644 --- a/binutils/testsuite/binutils-all/x86-64/pr23494c-x32.d +++ b/binutils/testsuite/binutils-all/x86-64/pr23494c-x32.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 used: SSE, SSE3 + Properties: x86 ISA used: x86-64-v3, diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494c.d b/binutils/testsuite/binutils-all/x86-64/pr23494c.d index 7fff8e6641..6b0d4f348e 100644 --- a/binutils/testsuite/binutils-all/x86-64/pr23494c.d +++ b/binutils/testsuite/binutils-all/x86-64/pr23494c.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 used: SSE, SSE3 + Properties: x86 ISA used: x86-64-v3, diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494c.s b/binutils/testsuite/binutils-all/x86-64/pr23494c.s index 474182cfb0..0109bdba27 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 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0xa @@ -79,7 +79,7 @@ .p2align 2 .endif /* GNU_PROPERTY_X86_ISA_1_NEEDED */ - .long 0xc0008000 /* pr_type. */ + .long 0xc0008002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0xa0 @@ -110,7 +110,7 @@ .p2align 2 .endif /* GNU_PROPERTY_X86_ISA_1_USED */ - .long 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* 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 eaf5438e1b..385cbdbc4e 100644 --- a/binutils/testsuite/binutils-all/x86-64/pr23494d-x32.d +++ b/binutils/testsuite/binutils-all/x86-64/pr23494d-x32.d @@ -7,6 +7,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: SSE4_1, AVX - x86 ISA used: SSE, SSE3, SSE4_1, AVX + Properties: x86 ISA needed: , x86 feature used: x86 + x86 ISA used: x86-64-v3, , , diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494d.d b/binutils/testsuite/binutils-all/x86-64/pr23494d.d index ef70683dbf..45e9a39aff 100644 --- a/binutils/testsuite/binutils-all/x86-64/pr23494d.d +++ b/binutils/testsuite/binutils-all/x86-64/pr23494d.d @@ -7,6 +7,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: SSE4_1, AVX - x86 ISA used: SSE, SSE3, SSE4_1, AVX + Properties: x86 ISA needed: , x86 feature used: x86 + x86 ISA used: x86-64-v3, , , diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494e-x32.d b/binutils/testsuite/binutils-all/x86-64/pr23494e-x32.d index 62c655d99f..968262a9d7 100644 --- a/binutils/testsuite/binutils-all/x86-64/pr23494e-x32.d +++ b/binutils/testsuite/binutils-all/x86-64/pr23494e-x32.d @@ -8,6 +8,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000040 NT_GNU_PROPERTY_TYPE_0 Properties: stack size: 0xffffffff - x86 ISA needed: SSE4_1, AVX - x86 ISA used: SSE, SSE3, SSE4_1, AVX + x86 ISA needed: , x86 feature used: x86 + x86 ISA used: x86-64-v3, , , diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494e.d b/binutils/testsuite/binutils-all/x86-64/pr23494e.d index 6423bbf44d..bbd9e21d58 100644 --- a/binutils/testsuite/binutils-all/x86-64/pr23494e.d +++ b/binutils/testsuite/binutils-all/x86-64/pr23494e.d @@ -8,6 +8,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 Properties: stack size: 0xffffffff - x86 ISA needed: SSE4_1, AVX - x86 ISA used: SSE, SSE3, SSE4_1, AVX + x86 ISA needed: , x86 feature used: x86 + x86 ISA used: x86-64-v3, , , diff --git a/binutils/testsuite/binutils-all/x86-64/shstk-x32.d b/binutils/testsuite/binutils-all/x86-64/shstk-x32.d index e8918b1b3c..b798d88741 100644 --- a/binutils/testsuite/binutils-all/x86-64/shstk-x32.d +++ b/binutils/testsuite/binutils-all/x86-64/shstk-x32.d @@ -9,5 +9,5 @@ Displaying notes found in: .note.gnu.property GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline x86 feature used: x86 diff --git a/binutils/testsuite/binutils-all/x86-64/shstk.d b/binutils/testsuite/binutils-all/x86-64/shstk.d index 425883436f..7523e453ec 100644 --- a/binutils/testsuite/binutils-all/x86-64/shstk.d +++ b/binutils/testsuite/binutils-all/x86-64/shstk.d @@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline x86 feature used: x86 diff --git a/gas/ChangeLog b/gas/ChangeLog index 26cae9c15d..0eb9cd90bf 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,43 @@ +2020-10-09 H.J. Lu + + PR gas/26703 + * config/tc-i386.c (xstate): Add xstate_mask. + (md_assemble): Check i.types[j], instead of i.tm.operand_types[j], + for xstate. Set xstate_mask, instead of xstate_zmm, for RegMask. + (output_insn): Update for GNU_PROPERTY_X86_ISA_1_V[234]. Update + xstate for mask register and VSIB. + * testsuite/gas/i386/i386.exp: Run more GNU_PROPERTY tests. + * testsuite/gas/i386/property-1.s: Updated to the current + GNU_PROPERTY_X86_ISA_1_USED value. + * testsuite/gas/i386/property-2.s: Only keep cmove. + * testsuite/gas/i386/property-3.s: Changed to addsubpd. + * testsuite/gas/i386/property-1.d: Updated. + * testsuite/gas/i386/property-2.d: Likewise. + * testsuite/gas/i386/property-3.d: Likewise. + * testsuite/gas/i386/property-4.d: Likewise. + * testsuite/gas/i386/property-5.d: Likewise. + * testsuite/gas/i386/property-6.d: Likewise. + * testsuite/gas/i386/x86-64-property-1.d: Likewise. + * testsuite/gas/i386/x86-64-property-2.d: Likewise. + * testsuite/gas/i386/x86-64-property-3.d: Likewise. + * testsuite/gas/i386/x86-64-property-4.d: Likewise. + * testsuite/gas/i386/x86-64-property-5.d: Likewise. + * testsuite/gas/i386/x86-64-property-6.d: Likewise. + * testsuite/gas/i386/x86-64-property-7.d: Likewise. + * testsuite/gas/i386/x86-64-property-8.d: Likewise. + * testsuite/gas/i386/x86-64-property-9.d: Likewise. + * testsuite/gas/i386/property-11.d: New file. + * testsuite/gas/i386/property-11.s: Likewise. + * testsuite/gas/i386/property-12.d: Likewise. + * testsuite/gas/i386/property-12.s: Likewise. + * testsuite/gas/i386/property-13.d: Likewise. + * testsuite/gas/i386/property-13.s: Likewise. + * testsuite/gas/i386/x86-64-property-11.d: Likewise. + * testsuite/gas/i386/x86-64-property-12.d: Likewise. + * testsuite/gas/i386/x86-64-property-13.d: Likewise. + * testsuite/gas/i386/x86-64-property-14.d: Likewise. + * testsuite/gas/i386/x86-64-property-14.s: Likewise. + 2020-10-06 Alex Coplan PR 26699 diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index f3eaba6231..64cd78c8ee 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -374,7 +374,9 @@ struct _i386_insn /* Use ZMM state. */ xstate_zmm = 1 << 3 | xstate_ymm, /* Use TMM state. */ - xstate_tmm = 1 << 4 + xstate_tmm = 1 << 4, + /* Use MASK state. */ + xstate_mask = 1 << 5 } xstate; /* Has GOTPC or TLS relocation. */ @@ -4860,7 +4862,7 @@ md_assemble (char *line) for (j = 0; j < i.operands; j++) { i.types[j] = operand_type_and (i.types[j], i.tm.operand_types[j]); - switch (i.tm.operand_types[j].bitfield.class) + switch (i.types[j].bitfield.class) { default: break; @@ -4868,16 +4870,16 @@ md_assemble (char *line) i.xstate |= xstate_mmx; break; case RegMask: - i.xstate |= xstate_zmm; + i.xstate |= xstate_mask; break; case RegSIMD: - if (i.tm.operand_types[j].bitfield.tmmword) + if (i.types[j].bitfield.tmmword) i.xstate |= xstate_tmm; - else if (i.tm.operand_types[j].bitfield.zmmword) + else if (i.types[j].bitfield.zmmword) i.xstate |= xstate_zmm; - else if (i.tm.operand_types[j].bitfield.ymmword) + else if (i.types[j].bitfield.ymmword) i.xstate |= xstate_ymm; - else if (i.tm.operand_types[j].bitfield.xmmword) + else if (i.types[j].bitfield.xmmword) i.xstate |= xstate_xmm; break; } @@ -9167,56 +9169,51 @@ output_insn (void) #if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) if (IS_ELF && x86_used_note && now_seg != absolute_section) { - if (i.tm.cpu_flags.bitfield.cpucmov) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_CMOV; - if (i.tm.cpu_flags.bitfield.cpusse) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_SSE; - if (i.tm.cpu_flags.bitfield.cpusse2) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_SSE2; - if (i.tm.cpu_flags.bitfield.cpusse3) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_SSE3; - if (i.tm.cpu_flags.bitfield.cpussse3) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_SSSE3; - if (i.tm.cpu_flags.bitfield.cpusse4_1) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_SSE4_1; - if (i.tm.cpu_flags.bitfield.cpusse4_2) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_SSE4_2; - if (i.tm.cpu_flags.bitfield.cpuavx) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX; - if (i.tm.cpu_flags.bitfield.cpuavx2) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX2; - if (i.tm.cpu_flags.bitfield.cpufma) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_FMA; - if (i.tm.cpu_flags.bitfield.cpuavx512f) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512F; - if (i.tm.cpu_flags.bitfield.cpuavx512cd) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512CD; - if (i.tm.cpu_flags.bitfield.cpuavx512er) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512ER; - if (i.tm.cpu_flags.bitfield.cpuavx512pf) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512PF; - if (i.tm.cpu_flags.bitfield.cpuavx512vl) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512VL; - if (i.tm.cpu_flags.bitfield.cpuavx512dq) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512DQ; - if (i.tm.cpu_flags.bitfield.cpuavx512bw) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512BW; - if (i.tm.cpu_flags.bitfield.cpuavx512_4fmaps) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_4FMAPS; - if (i.tm.cpu_flags.bitfield.cpuavx512_4vnniw) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_4VNNIW; - if (i.tm.cpu_flags.bitfield.cpuavx512_bitalg) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_BITALG; - if (i.tm.cpu_flags.bitfield.cpuavx512ifma) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_IFMA; - if (i.tm.cpu_flags.bitfield.cpuavx512vbmi) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_VBMI; - if (i.tm.cpu_flags.bitfield.cpuavx512_vbmi2) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_VBMI2; - if (i.tm.cpu_flags.bitfield.cpuavx512_vnni) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_VNNI; - if (i.tm.cpu_flags.bitfield.cpuavx512_bf16) - x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_BF16; + if ((i.xstate & xstate_tmm) == xstate_tmm + || i.tm.cpu_flags.bitfield.cpuamx_tile) + x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_TMM; + + if (i.tm.cpu_flags.bitfield.cpusse3 + || i.tm.cpu_flags.bitfield.cpussse3 + || i.tm.cpu_flags.bitfield.cpusse4_1 + || i.tm.cpu_flags.bitfield.cpusse4_2 + || i.tm.cpu_flags.bitfield.cpucx16 + || i.tm.cpu_flags.bitfield.cpupopcnt + /* LAHF-SAHF insns in 64-bit mode. */ + || (flag_code == CODE_64BIT + && (i.tm.base_opcode | 1) == 0x9f)) + x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_V2; + if (i.tm.cpu_flags.bitfield.cpuavx + || i.tm.cpu_flags.bitfield.cpuavx2 + /* Any VEX encoded insns execpt for CpuAVX512F, CpuAVX512BW, + CpuAVX512DQ, LPW, TBM and AMX. */ + || (i.tm.opcode_modifier.vex + && !i.tm.cpu_flags.bitfield.cpuavx512f + && !i.tm.cpu_flags.bitfield.cpuavx512bw + && !i.tm.cpu_flags.bitfield.cpuavx512dq + && !i.tm.cpu_flags.bitfield.cpulwp + && !i.tm.cpu_flags.bitfield.cputbm + && !(x86_feature_2_used & GNU_PROPERTY_X86_FEATURE_2_TMM)) + || i.tm.cpu_flags.bitfield.cpuf16c + || i.tm.cpu_flags.bitfield.cpufma + || i.tm.cpu_flags.bitfield.cpulzcnt + || i.tm.cpu_flags.bitfield.cpumovbe + || i.tm.cpu_flags.bitfield.cpuxsave + || i.tm.cpu_flags.bitfield.cpuxsavec + || i.tm.cpu_flags.bitfield.cpuxsaveopt + || i.tm.cpu_flags.bitfield.cpuxsaves) + x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_V3; + if (i.tm.cpu_flags.bitfield.cpuavx512f + || i.tm.cpu_flags.bitfield.cpuavx512bw + || i.tm.cpu_flags.bitfield.cpuavx512dq + || i.tm.cpu_flags.bitfield.cpuavx512vl + /* Any EVEX encoded insns except for AVX512ER, AVX512PF and + VNNIW. */ + || (i.tm.opcode_modifier.evex + && !i.tm.cpu_flags.bitfield.cpuavx512er + && !i.tm.cpu_flags.bitfield.cpuavx512pf + && !i.tm.cpu_flags.bitfield.cpuavx512_4vnniw)) + x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_V4; if (i.tm.cpu_flags.bitfield.cpu8087 || i.tm.cpu_flags.bitfield.cpu287 @@ -9228,6 +9225,15 @@ output_insn (void) || i.tm.base_opcode == 0xf77 /* emms */ || i.tm.base_opcode == 0xf0e /* femms */) x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_MMX; + if (i.index_reg) + { + if (i.index_reg->reg_type.bitfield.zmmword) + i.xstate |= xstate_zmm; + else if (i.index_reg->reg_type.bitfield.ymmword) + i.xstate |= xstate_ymm; + else if (i.index_reg->reg_type.bitfield.xmmword) + i.xstate |= xstate_xmm; + } if ((i.xstate & xstate_xmm) || i.tm.cpu_flags.bitfield.cpuwidekl || i.tm.cpu_flags.bitfield.cpukl) @@ -9236,6 +9242,8 @@ output_insn (void) x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_YMM; if ((i.xstate & xstate_zmm) == xstate_zmm) x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_ZMM; + if (i.mask || (i.xstate & xstate_mask) == xstate_mask) + x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_MASK; if (i.tm.cpu_flags.bitfield.cpufxsr) x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_FXSR; if (i.tm.cpu_flags.bitfield.cpuxsave) @@ -9244,10 +9252,6 @@ output_insn (void) x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_XSAVEOPT; if (i.tm.cpu_flags.bitfield.cpuxsavec) x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_XSAVEC; - - if ((i.xstate & xstate_tmm) == xstate_tmm - || i.tm.cpu_flags.bitfield.cpuamx_tile) - x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_TMM; } #endif diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index 3a1ebda494..8645f3061c 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -645,6 +645,9 @@ if [gas_32_check] then { run_dump_test "property-5" run_dump_test "property-6" run_dump_test "property-10" + run_dump_test "property-11" + run_dump_test "property-12" + run_dump_test "property-13" if {[istarget "*-*-linux*"]} then { run_dump_test "align-branch-3" @@ -1254,6 +1257,10 @@ if [gas_64_check] then { run_dump_test "x86-64-property-8" run_dump_test "x86-64-property-9" run_dump_test "x86-64-property-10" + run_dump_test "x86-64-property-11" + run_dump_test "x86-64-property-12" + run_dump_test "x86-64-property-13" + run_dump_test "x86-64-property-14" if {[istarget "*-*-linux*"]} then { run_dump_test "x86-64-align-branch-3" diff --git a/gas/testsuite/gas/i386/property-1.d b/gas/testsuite/gas/i386/property-1.d index cb9dbf863d..d40bd5259e 100644 --- a/gas/testsuite/gas/i386/property-1.d +++ b/gas/testsuite/gas/i386/property-1.d @@ -5,4 +5,4 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline diff --git a/gas/testsuite/gas/i386/property-1.s b/gas/testsuite/gas/i386/property-1.s index 4c29380447..729784ad7a 100644 --- a/gas/testsuite/gas/i386/property-1.s +++ b/gas/testsuite/gas/i386/property-1.s @@ -17,7 +17,7 @@ .p2align 2 .endif /* GNU_PROPERTY_X86_ISA_1_USED */ - .long 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0 diff --git a/gas/testsuite/gas/i386/property-10.d b/gas/testsuite/gas/i386/property-10.d index ad87ca7a1b..69c8cbb2e0 100644 --- a/gas/testsuite/gas/i386/property-10.d +++ b/gas/testsuite/gas/i386/property-10.d @@ -5,5 +5,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline x86 feature used: x86, XMM diff --git a/gas/testsuite/gas/i386/property-11.d b/gas/testsuite/gas/i386/property-11.d new file mode 100644 index 0000000000..b3a4591b5d --- /dev/null +++ b/gas/testsuite/gas/i386/property-11.d @@ -0,0 +1,9 @@ +#name: i386 property 11 +#as: -mx86-used-note=yes --generate-missing-build-notes=no +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA used: x86-64-v3 + x86 feature used: x86, XMM diff --git a/gas/testsuite/gas/i386/property-11.s b/gas/testsuite/gas/i386/property-11.s new file mode 100644 index 0000000000..0bfc4d855b --- /dev/null +++ b/gas/testsuite/gas/i386/property-11.s @@ -0,0 +1,2 @@ + .text + vaesenclast %xmm4,%xmm6,%xmm2 diff --git a/gas/testsuite/gas/i386/property-12.d b/gas/testsuite/gas/i386/property-12.d new file mode 100644 index 0000000000..fb9fa5c19a --- /dev/null +++ b/gas/testsuite/gas/i386/property-12.d @@ -0,0 +1,9 @@ +#name: i386 property 12 +#as: -mx86-used-note=yes --generate-missing-build-notes=no +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA used: x86-64-v4 + x86 feature used: x86, XMM, MASK diff --git a/gas/testsuite/gas/i386/property-12.s b/gas/testsuite/gas/i386/property-12.s new file mode 100644 index 0000000000..f2a198b939 --- /dev/null +++ b/gas/testsuite/gas/i386/property-12.s @@ -0,0 +1,2 @@ + .text + vpdpwssd %xmm2, %xmm4, %xmm2{%k3} diff --git a/gas/testsuite/gas/i386/property-13.d b/gas/testsuite/gas/i386/property-13.d new file mode 100644 index 0000000000..91d1ce608b --- /dev/null +++ b/gas/testsuite/gas/i386/property-13.d @@ -0,0 +1,9 @@ +#name: i386 property 13 +#as: -mx86-used-note=yes --generate-missing-build-notes=no +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA used: x86-64-baseline + x86 feature used: x86, XMM, YMM, ZMM, MASK diff --git a/gas/testsuite/gas/i386/property-13.s b/gas/testsuite/gas/i386/property-13.s new file mode 100644 index 0000000000..20e8fdf980 --- /dev/null +++ b/gas/testsuite/gas/i386/property-13.s @@ -0,0 +1,2 @@ + .text + vscatterpf1dps 123(%ebp,%zmm7,8){%k1} diff --git a/gas/testsuite/gas/i386/property-2.d b/gas/testsuite/gas/i386/property-2.d index bdb469b56d..5e322caf28 100644 --- a/gas/testsuite/gas/i386/property-2.d +++ b/gas/testsuite/gas/i386/property-2.d @@ -5,5 +5,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: 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, AVX512_BF16 - x86 feature used: x86, x87, MMX, XMM, YMM, ZMM, FXSR, XSAVE, XSAVEOPT, XSAVEC + Properties: x86 ISA used: x86-64-baseline + x86 feature used: x86 diff --git a/gas/testsuite/gas/i386/property-2.s b/gas/testsuite/gas/i386/property-2.s index 15281872bc..5aaefe77e7 100644 --- a/gas/testsuite/gas/i386/property-2.s +++ b/gas/testsuite/gas/i386/property-2.s @@ -1,32 +1,2 @@ .text - fsin - movq %mm0, %mm1 - fxsave (%eax) - xsave (%eax) - xsaveopt (%eax) - xsavec (%eax) cmove %eax,%ebx - movaps %xmm0, %xmm1 - movapd %xmm0, %xmm1 - mwait - psignb %xmm0, %xmm1 - blendvpd %xmm0, %xmm1 - pcmpgtq %xmm0, %xmm1 - vmovaps %xmm0, %xmm1 - vpabsb %ymm0, %ymm1 - vfmadd231ps %ymm0, %ymm1, %ymm1 - vmovaps %zmm0, %zmm1 - vplzcntd %zmm0, %zmm1 - vrsqrt28pd %zmm0, %zmm1 - vscatterpf0dpd (%eax,%ymm1){%k1} - {evex} vpmovzxdq %xmm0, %xmm1 - vandnpd %zmm0, %zmm0, %zmm1 - vpmaxuw %zmm0, %zmm0, %zmm1 - v4fnmaddss (%ecx), %xmm4, %xmm1 - vpopcntb %zmm0, %zmm1 - vp4dpwssd (%ecx), %zmm0, %zmm1 - vpmadd52luq (%ecx), %zmm0, %zmm1 - vpermt2b (%ecx), %zmm0, %zmm1 - vpcompressb %zmm0, %zmm1 - vpdpwssds (%ecx), %zmm0, %zmm1 - vcvtne2ps2bf16 (%ecx), %zmm0, %zmm1 diff --git a/gas/testsuite/gas/i386/property-3.d b/gas/testsuite/gas/i386/property-3.d index 36d215584e..b6aba35806 100644 --- a/gas/testsuite/gas/i386/property-3.d +++ b/gas/testsuite/gas/i386/property-3.d @@ -5,5 +5,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: SSE - x86 feature used: x86, MMX, XMM + Properties: x86 ISA used: x86-64-v2 + x86 feature used: x86, XMM diff --git a/gas/testsuite/gas/i386/property-3.s b/gas/testsuite/gas/i386/property-3.s index c42bdcbcdc..4fd398bb47 100644 --- a/gas/testsuite/gas/i386/property-3.s +++ b/gas/testsuite/gas/i386/property-3.s @@ -1,2 +1,2 @@ .text - cvtpi2ps (%eax), %xmm0 + addsubpd (%eax), %xmm0 diff --git a/gas/testsuite/gas/i386/property-4.d b/gas/testsuite/gas/i386/property-4.d index 0fe6bc7db4..c23625cd67 100644 --- a/gas/testsuite/gas/i386/property-4.d +++ b/gas/testsuite/gas/i386/property-4.d @@ -5,5 +5,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: AVX - x86 feature used: x86, XMM, YMM + Properties: x86 ISA used: x86-64-v3 + x86 feature used: x86, XMM diff --git a/gas/testsuite/gas/i386/property-5.d b/gas/testsuite/gas/i386/property-5.d index 16e71d658c..ba7679d84b 100644 --- a/gas/testsuite/gas/i386/property-5.d +++ b/gas/testsuite/gas/i386/property-5.d @@ -5,5 +5,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: AVX512F - x86 feature used: x86, XMM, YMM, ZMM + Properties: x86 ISA used: x86-64-v4 + x86 feature used: x86, XMM diff --git a/gas/testsuite/gas/i386/property-6.d b/gas/testsuite/gas/i386/property-6.d index cf175c5357..d1a4ed6caa 100644 --- a/gas/testsuite/gas/i386/property-6.d +++ b/gas/testsuite/gas/i386/property-6.d @@ -5,5 +5,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: AVX512F - x86 feature used: x86, XMM, YMM, ZMM + Properties: x86 ISA used: x86-64-v4 + x86 feature used: x86, MASK diff --git a/gas/testsuite/gas/i386/x86-64-property-1.d b/gas/testsuite/gas/i386/x86-64-property-1.d index cfcb795855..931c7d2647 100644 --- a/gas/testsuite/gas/i386/x86-64-property-1.d +++ b/gas/testsuite/gas/i386/x86-64-property-1.d @@ -6,4 +6,4 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline diff --git a/gas/testsuite/gas/i386/x86-64-property-10.d b/gas/testsuite/gas/i386/x86-64-property-10.d index c401ca2faa..1e7748f308 100644 --- a/gas/testsuite/gas/i386/x86-64-property-10.d +++ b/gas/testsuite/gas/i386/x86-64-property-10.d @@ -6,5 +6,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline x86 feature used: x86, XMM diff --git a/gas/testsuite/gas/i386/x86-64-property-11.d b/gas/testsuite/gas/i386/x86-64-property-11.d new file mode 100644 index 0000000000..d2402293ac --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-property-11.d @@ -0,0 +1,10 @@ +#name: x86-64 property 11 +#source: property-11.s +#as: -mx86-used-note=yes --generate-missing-build-notes=no +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA used: x86-64-v3 + x86 feature used: x86, XMM diff --git a/gas/testsuite/gas/i386/x86-64-property-12.d b/gas/testsuite/gas/i386/x86-64-property-12.d new file mode 100644 index 0000000000..ff12b6598e --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-property-12.d @@ -0,0 +1,10 @@ +#name: x86-64 property 12 +#source: property-12.s +#as: -mx86-used-note=yes --generate-missing-build-notes=no +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA used: x86-64-v4 + x86 feature used: x86, XMM, MASK diff --git a/gas/testsuite/gas/i386/x86-64-property-13.d b/gas/testsuite/gas/i386/x86-64-property-13.d new file mode 100644 index 0000000000..5ed609a0c2 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-property-13.d @@ -0,0 +1,10 @@ +#name: x86-64 property 13 +#source: property-13.s +#as: -mx86-used-note=yes --generate-missing-build-notes=no +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA used: x86-64-baseline + x86 feature used: x86, XMM, YMM, ZMM, MASK diff --git a/gas/testsuite/gas/i386/x86-64-property-14.d b/gas/testsuite/gas/i386/x86-64-property-14.d new file mode 100644 index 0000000000..41503c310b --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-property-14.d @@ -0,0 +1,9 @@ +#name: x86-64 property 13 +#as: -mx86-used-note=yes --generate-missing-build-notes=no +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA used: x86-64-v2 + x86 feature used: x86 diff --git a/gas/testsuite/gas/i386/x86-64-property-14.s b/gas/testsuite/gas/i386/x86-64-property-14.s new file mode 100644 index 0000000000..1b81dae6e3 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-property-14.s @@ -0,0 +1,2 @@ + .text + sahf diff --git a/gas/testsuite/gas/i386/x86-64-property-2.d b/gas/testsuite/gas/i386/x86-64-property-2.d index bde7e55b30..d54dff96e1 100644 --- a/gas/testsuite/gas/i386/x86-64-property-2.d +++ b/gas/testsuite/gas/i386/x86-64-property-2.d @@ -6,5 +6,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: 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, AVX512_BF16 - x86 feature used: x86, x87, MMX, XMM, YMM, ZMM, FXSR, XSAVE, XSAVEOPT, XSAVEC + Properties: x86 ISA used: x86-64-baseline + x86 feature used: x86 diff --git a/gas/testsuite/gas/i386/x86-64-property-3.d b/gas/testsuite/gas/i386/x86-64-property-3.d index aa116e0fbc..bc1e48303a 100644 --- a/gas/testsuite/gas/i386/x86-64-property-3.d +++ b/gas/testsuite/gas/i386/x86-64-property-3.d @@ -6,5 +6,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: SSE - x86 feature used: x86, MMX, XMM + Properties: x86 ISA used: x86-64-v2 + x86 feature used: x86, XMM diff --git a/gas/testsuite/gas/i386/x86-64-property-4.d b/gas/testsuite/gas/i386/x86-64-property-4.d index 4a489509d6..fd4bee055b 100644 --- a/gas/testsuite/gas/i386/x86-64-property-4.d +++ b/gas/testsuite/gas/i386/x86-64-property-4.d @@ -6,5 +6,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: AVX - x86 feature used: x86, XMM, YMM + Properties: x86 ISA used: x86-64-v3 + x86 feature used: x86, XMM diff --git a/gas/testsuite/gas/i386/x86-64-property-5.d b/gas/testsuite/gas/i386/x86-64-property-5.d index 590d8d585f..73e24b918f 100644 --- a/gas/testsuite/gas/i386/x86-64-property-5.d +++ b/gas/testsuite/gas/i386/x86-64-property-5.d @@ -6,5 +6,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: AVX512F - x86 feature used: x86, XMM, YMM, ZMM + Properties: x86 ISA used: x86-64-v4 + x86 feature used: x86, XMM diff --git a/gas/testsuite/gas/i386/x86-64-property-6.d b/gas/testsuite/gas/i386/x86-64-property-6.d index 862d4c3536..330e6f646b 100644 --- a/gas/testsuite/gas/i386/x86-64-property-6.d +++ b/gas/testsuite/gas/i386/x86-64-property-6.d @@ -6,5 +6,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: AVX512F - x86 feature used: x86, XMM, YMM, ZMM + Properties: x86 ISA used: x86-64-v4 + x86 feature used: x86, MASK diff --git a/gas/testsuite/gas/i386/x86-64-property-7.d b/gas/testsuite/gas/i386/x86-64-property-7.d index e938cc90da..6fe6a36666 100644 --- a/gas/testsuite/gas/i386/x86-64-property-7.d +++ b/gas/testsuite/gas/i386/x86-64-property-7.d @@ -1,9 +1,9 @@ -#name: x86-64 property 4 +#name: x86-64 property 7 #as: -mx86-used-note=yes --generate-missing-build-notes=no #readelf: -n Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline x86 feature used: x86, TMM diff --git a/gas/testsuite/gas/i386/x86-64-property-8.d b/gas/testsuite/gas/i386/x86-64-property-8.d index e938cc90da..4b5908aeab 100644 --- a/gas/testsuite/gas/i386/x86-64-property-8.d +++ b/gas/testsuite/gas/i386/x86-64-property-8.d @@ -1,9 +1,9 @@ -#name: x86-64 property 4 +#name: x86-64 property 8 #as: -mx86-used-note=yes --generate-missing-build-notes=no #readelf: -n Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline x86 feature used: x86, TMM diff --git a/gas/testsuite/gas/i386/x86-64-property-9.d b/gas/testsuite/gas/i386/x86-64-property-9.d index e938cc90da..2472c6ea65 100644 --- a/gas/testsuite/gas/i386/x86-64-property-9.d +++ b/gas/testsuite/gas/i386/x86-64-property-9.d @@ -1,9 +1,9 @@ -#name: x86-64 property 4 +#name: x86-64 property 9 #as: -mx86-used-note=yes --generate-missing-build-notes=no #readelf: -n Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline x86 feature used: x86, TMM diff --git a/include/ChangeLog b/include/ChangeLog index 12fd17b7ea..8fdf30f4a9 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,19 @@ +2020-10-09 H.J. Lu + + PR gas/26703 + * elf/common.h (GNU_PROPERTY_X86_ISA_1_USED): Renamed to ... + (GNU_PROPERTY_X86_COMPAT_2_ISA_1_USED): This. + (GNU_PROPERTY_X86_ISA_1_NEEDED): Renamed to ... + (GNU_PROPERTY_X86_COMPAT_2_ISA_1_NEEDED): This. + (GNU_PROPERTY_X86_ISA_1_XXX): Renamed to ... + (GNU_PROPERTY_X86_COMPAT_2_ISA_1_XXX): This. + (GNU_PROPERTY_X86_ISA_1_NEEDED): New. + (GNU_PROPERTY_X86_ISA_1_USED): Likewise. + (GNU_PROPERTY_X86_ISA_1_V2): Likewise. + (GNU_PROPERTY_X86_ISA_1_V3): Likewise. + (GNU_PROPERTY_X86_ISA_1_V4): Likewise. + (GNU_PROPERTY_X86_FEATURE_2_MASK): Likewise. + 2020-09-23 Mark Wielaard Sync with GCC diff --git a/include/elf/common.h b/include/elf/common.h index 571e21af29..b3c30e0e2f 100644 --- a/include/elf/common.h +++ b/include/elf/common.h @@ -805,44 +805,31 @@ (GNU_PROPERTY_X86_UINT32_AND_LO + 0) #define GNU_PROPERTY_X86_ISA_1_NEEDED \ - (GNU_PROPERTY_X86_UINT32_OR_LO + 0) + (GNU_PROPERTY_X86_UINT32_OR_LO + 2) #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) + (GNU_PROPERTY_X86_UINT32_OR_AND_LO + 2) #define GNU_PROPERTY_X86_FEATURE_2_USED \ (GNU_PROPERTY_X86_UINT32_OR_AND_LO + 1) +/* Baseline: CMOV (cmov) CX8 (cmpxchg8b) FPU (fld), FXSR (fxsave), + SCE (syscall), MMX, SSE and SSE2. */ + +/* GNU_PROPERTY_X86_ISA_1_V2: Baseline, CMPXCHG16B (cmpxchg16b), + LAHF-SAHF (lahf), POPCNT (popcnt), SSE3, SSSE3, SSE4.1 and SSE4.2. */ +#define GNU_PROPERTY_X86_ISA_1_V2 (1U << 0) +/* GNU_PROPERTY_X86_ISA_1_V3: GNU_PROPERTY_X86_ISA_1_V2, AVX, AVX2, BMI1, + BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE. */ +#define GNU_PROPERTY_X86_ISA_1_V3 (1U << 1) +/* GNU_PROPERTY_X86_ISA_1_V4: GNU_PROPERTY_X86_ISA_1_V3, AVX512F, + AVX512BW, AVX512CD, AVX512DQ and AVX512VL. */ +#define GNU_PROPERTY_X86_ISA_1_V4 (1U << 2) + #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_ISA_1_AVX512_BF16 (1U << 24) - #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) @@ -854,6 +841,39 @@ #define GNU_PROPERTY_X86_FEATURE_2_XSAVEOPT (1U << 8) #define GNU_PROPERTY_X86_FEATURE_2_XSAVEC (1U << 9) #define GNU_PROPERTY_X86_FEATURE_2_TMM (1U << 10) +#define GNU_PROPERTY_X86_FEATURE_2_MASK (1U << 11) + +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_NEEDED \ + (GNU_PROPERTY_X86_UINT32_OR_LO + 0) + +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_USED \ + (GNU_PROPERTY_X86_UINT32_OR_AND_LO + 0) + +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_CMOV (1U << 0) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE (1U << 1) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE2 (1U << 2) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE3 (1U << 3) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSSE3 (1U << 4) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE4_1 (1U << 5) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE4_2 (1U << 6) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX (1U << 7) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX2 (1U << 8) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_FMA (1U << 9) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512F (1U << 10) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512CD (1U << 11) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512ER (1U << 12) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512PF (1U << 13) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512VL (1U << 14) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512DQ (1U << 15) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512BW (1U << 16) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_4FMAPS (1U << 17) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_4VNNIW (1U << 18) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_BITALG (1U << 19) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_IFMA (1U << 20) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VBMI (1U << 21) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VBMI2 (1U << 22) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VNNI (1U << 23) +#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_BF16 (1U << 24) /* AArch64 specific GNU PROPERTY. */ #define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000 diff --git a/ld/ChangeLog b/ld/ChangeLog index 738014eb9b..205f6acb87 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,155 @@ +2020-10-09 H.J. Lu + + PR gas/26703 + * NEWS: Mention -z x86-64-v[234]. + * ld.texi: Document -z x86-64-v[234]. + * emulparams/elf32_x86_64.sh: Use x86-64-level.sh. + * emulparams/elf_i386.sh: Likewise. + * emulparams/elf_x86_64.sh: Likewise. + * emulparams/x86-64-level.sh: New file. + * testsuite/ld-elf/x86-feature-1a.rd: Update. + * testsuite/ld-elf/x86-feature-1b.rd: Likewise. + * testsuite/ld-elf/x86-feature-1c.rd: Likewise. + * testsuite/ld-elf/x86-feature-1d.rd: Likewise. + * testsuite/ld-elf/x86-feature-1e.rd: Likewise. + * testsuite/ld-i386/pr23372c.d: Likewise. + * testsuite/ld-i386/pr23486c.d: Likewise. + * testsuite/ld-i386/pr23486d.d: Likewise. + * testsuite/ld-i386/pr24322a.d: Likewise. + * testsuite/ld-i386/pr24322b.d: Likewise. + * testsuite/ld-i386/property-1a.r: Likewise. + * testsuite/ld-i386/property-2a.r: Likewise. + * testsuite/ld-i386/property-3.r: Likewise. + * testsuite/ld-i386/property-3a.r: Likewise. + * testsuite/ld-i386/property-4.r: Likewise. + * testsuite/ld-i386/property-4a.r: Likewise. + * testsuite/ld-i386/property-5.r: Likewise. + * testsuite/ld-i386/property-5a.r: Likewise. + * testsuite/ld-i386/property-7a.r: Likewise. + * testsuite/ld-i386/property-x86-3.d: Likewise. + * testsuite/ld-i386/property-x86-4a.d: Likewise. + * testsuite/ld-i386/property-x86-5.d: Likewise. + * testsuite/ld-i386/property-x86-cet1.d: Likewise. + * testsuite/ld-i386/property-x86-cet2a.d: Likewise. + * testsuite/ld-i386/property-x86-cet5a.d: Likewise. + * testsuite/ld-i386/property-x86-cet5b.d: Likewise. + * testsuite/ld-i386/property-x86-ibt1a.d: Likewise. + * testsuite/ld-i386/property-x86-ibt1b.d: Likewise. + * testsuite/ld-i386/property-x86-ibt2.d: Likewise. + * testsuite/ld-i386/property-x86-ibt3a.d: Likewise. + * testsuite/ld-i386/property-x86-ibt3b.d: Likewise. + * testsuite/ld-i386/property-x86-ibt4.d: Likewise. + * testsuite/ld-i386/property-x86-ibt5.d: Likewise. + * testsuite/ld-i386/property-x86-shstk1a.d: Likewise. + * testsuite/ld-i386/property-x86-shstk1b.d: Likewise. + * testsuite/ld-i386/property-x86-shstk2.d: Likewise. + * testsuite/ld-i386/property-x86-shstk3a.d: Likewise. + * testsuite/ld-i386/property-x86-shstk3b.d: Likewise. + * testsuite/ld-i386/property-x86-shstk4.d: Likewise. + * testsuite/ld-i386/property-x86-shstk5.d: Likewise. + * testsuite/ld-x86-64/pr23372c-x32.d: Likewise. + * testsuite/ld-x86-64/pr23372c.d: Likewise. + * testsuite/ld-x86-64/pr23486c.d: Likewise. + * testsuite/ld-x86-64/pr23486d-x32.d: Likewise. + * testsuite/ld-x86-64/pr23486d.d: Likewise. + * testsuite/ld-x86-64/pr24322a-x32.d: Likewise. + * testsuite/ld-x86-64/pr24322a.d: Likewise. + * testsuite/ld-x86-64/pr24322b-x32.d: Likewise. + * testsuite/ld-x86-64/pr24322b.d: Likewise. + * testsuite/ld-x86-64/pr24458a-x32.d: Likewise. + * testsuite/ld-x86-64/pr24458a.d: Likewise. + * testsuite/ld-x86-64/pr24458b-x32.d: Likewise. + * testsuite/ld-x86-64/pr24458b.d: Likewise. + * testsuite/ld-x86-64/pr24458c-x32.d: Likewise. + * testsuite/ld-x86-64/pr24458c.d: Likewise. + * testsuite/ld-x86-64/property-1a.r: Likewise. + * testsuite/ld-x86-64/property-2a.r: Likewise. + * testsuite/ld-x86-64/property-3.r: Likewise. + * testsuite/ld-x86-64/property-3a.r: Likewise. + * testsuite/ld-x86-64/property-4.r: Likewise. + * testsuite/ld-x86-64/property-4a.r: Likewise. + * testsuite/ld-x86-64/property-5.r: Likewise. + * testsuite/ld-x86-64/property-5a.r: Likewise. + * testsuite/ld-x86-64/property-7a.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-4a-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-4a.d: Likewise. + * testsuite/ld-x86-64/property-x86-5-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-5.d: Likewise. + * testsuite/ld-x86-64/property-x86-cet1-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-cet1.d: Likewise. + * testsuite/ld-x86-64/property-x86-cet2a-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-cet2a.d: Likewise. + * testsuite/ld-x86-64/property-x86-cet5a-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-cet5a.d: Likewise. + * testsuite/ld-x86-64/property-x86-cet5b-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-cet5b.d: Likewise. + * testsuite/ld-x86-64/property-x86-ibt1a-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-ibt1a.d: Likewise. + * testsuite/ld-x86-64/property-x86-ibt1b-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-ibt1b.d: Likewise. + * testsuite/ld-x86-64/property-x86-ibt2-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-ibt2.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-ibt4-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-ibt4.d: Likewise. + * testsuite/ld-x86-64/property-x86-ibt5-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-ibt5.d: Likewise. + * testsuite/ld-x86-64/property-x86-shstk1a-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-shstk1a.d: Likewise. + * testsuite/ld-x86-64/property-x86-shstk1b-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-shstk1b.d: Likewise. + * testsuite/ld-x86-64/property-x86-shstk2-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-shstk2.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-x86-64/property-x86-shstk4-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-shstk4.d: Likewise. + * testsuite/ld-x86-64/property-x86-shstk5-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-shstk5.d: Likewise. + * testsuite/ld-i386/i386.exp: Run property-x86-6, + property-x86-isa1, property-x86-isa2 and property-x86-isa3. + * 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/pr23372d.s: Likewise. + * testsuite/ld-x86-64/pr23372e.s: Likewise. + * testsuite/ld-x86-64/pr23372f.s: Likewise. + * testsuite/ld-x86-64/pr23486c.s: Likewise. + * testsuite/ld-x86-64/pr23486d.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. + * testsuite/ld-x86-64/property-x86-5a.s: Likewise. + * testsuite/ld-x86-64/property-x86-5b.s: Likewise. + * testsuite/ld-i386/property-x86-6.d: New file. + * testsuite/ld-i386/property-x86-isa1.d: Likewise. + * testsuite/ld-i386/property-x86-isa2.d: Likewise. + * testsuite/ld-i386/property-x86-isa3.d: Likewise. + * testsuite/ld-x86-64/property-x86-6-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-6.d: Likewise. + * testsuite/ld-x86-64/property-x86-6.s: Likewise. + * testsuite/ld-x86-64/property-x86-isa1-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-isa1.d: Likewise. + * testsuite/ld-x86-64/property-x86-isa1.s: Likewise. + * testsuite/ld-x86-64/property-x86-isa2-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-isa2.d: Likewise. + * testsuite/ld-x86-64/property-x86-isa3-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-isa3.d: Likewise. + * testsuite/ld-x86-64/simple.s: Likewise. + * ld/testsuite/ld-x86-64/x86-64.exp: Run property-x86-6, + property-x86-6-x32, property-x86-isa1, property-x86-isa1-x32, + property-x86-isa2, property-x86-isa2-x32, property-x86-isa3-x32 + and property-x86-isa3. + 2020-10-06 H.J. Lu * testsuite/ld-i386/property-3.r: Updated for Fedora binary diff --git a/ld/NEWS b/ld/NEWS index e4ae43b257..2f20a5fbcd 100644 --- a/ld/NEWS +++ b/ld/NEWS @@ -1,5 +1,8 @@ -*- text -*- +* Add -z x86-64-v[234] to the x86 ELF linker to mark x86-64-v[234] ISA + level as needed. + * Add -z unique-symbol to avoid duplicated local symbol names. * The creation of PE format DLLs now defaults to using a more secure set of DLL diff --git a/ld/emulparams/elf32_x86_64.sh b/ld/emulparams/elf32_x86_64.sh index 1f672c6e42..0d7c7145a6 100644 --- a/ld/emulparams/elf32_x86_64.sh +++ b/ld/emulparams/elf32_x86_64.sh @@ -4,6 +4,7 @@ source_sh ${srcdir}/emulparams/dynamic_undefined_weak.sh source_sh ${srcdir}/emulparams/reloc_overflow.sh source_sh ${srcdir}/emulparams/call_nop.sh source_sh ${srcdir}/emulparams/cet.sh +source_sh ${srcdir}/emulparams/x86-64-level.sh source_sh ${srcdir}/emulparams/static.sh SCRIPT_NAME=elf ELFSIZE=32 diff --git a/ld/emulparams/elf_i386.sh b/ld/emulparams/elf_i386.sh index c98d5e6600..741633fa07 100644 --- a/ld/emulparams/elf_i386.sh +++ b/ld/emulparams/elf_i386.sh @@ -3,6 +3,7 @@ source_sh ${srcdir}/emulparams/extern_protected_data.sh source_sh ${srcdir}/emulparams/dynamic_undefined_weak.sh source_sh ${srcdir}/emulparams/call_nop.sh source_sh ${srcdir}/emulparams/cet.sh +source_sh ${srcdir}/emulparams/x86-64-level.sh source_sh ${srcdir}/emulparams/static.sh SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-i386" diff --git a/ld/emulparams/elf_x86_64.sh b/ld/emulparams/elf_x86_64.sh index be98082982..5996055e9f 100644 --- a/ld/emulparams/elf_x86_64.sh +++ b/ld/emulparams/elf_x86_64.sh @@ -4,6 +4,7 @@ source_sh ${srcdir}/emulparams/dynamic_undefined_weak.sh source_sh ${srcdir}/emulparams/reloc_overflow.sh source_sh ${srcdir}/emulparams/call_nop.sh source_sh ${srcdir}/emulparams/cet.sh +source_sh ${srcdir}/emulparams/x86-64-level.sh source_sh ${srcdir}/emulparams/static.sh SCRIPT_NAME=elf ELFSIZE=64 diff --git a/ld/emulparams/x86-64-level.sh b/ld/emulparams/x86-64-level.sh new file mode 100644 index 0000000000..efa75cad9f --- /dev/null +++ b/ld/emulparams/x86-64-level.sh @@ -0,0 +1,18 @@ +PARSE_AND_LIST_OPTIONS_X86_64_LEVEL=' + fprintf (file, _("\ + -z x86-64-v[234] Mark x86-64-v[234] ISA level as needed\n")); +' +PARSE_AND_LIST_ARGS_CASE_Z_X86_64_LEVEL=' + else if (strncmp (optarg, "x86-64-v", 8) == 0) + { + char *end; + unsigned int level = strtoul (optarg + 8 , &end, 10); + if (*end != '\0' || level < 2 || level > 4) + einfo (_("%F%P: invalid x86-64 ISA level: %s\n"), + optarg); + params.isa_level = level; + } +' + +PARSE_AND_LIST_OPTIONS="$PARSE_AND_LIST_OPTIONS $PARSE_AND_LIST_OPTIONS_X86_64_LEVEL" +PARSE_AND_LIST_ARGS_CASE_Z="$PARSE_AND_LIST_ARGS_CASE_Z $PARSE_AND_LIST_ARGS_CASE_Z_X86_64_LEVEL" diff --git a/ld/ld.texi b/ld/ld.texi index ee592df6c2..66bede283e 100644 --- a/ld/ld.texi +++ b/ld/ld.texi @@ -1419,6 +1419,15 @@ Do not report unresolved symbol references from regular object files, either when creating an executable, or when creating a shared library. This option is the inverse of @samp{-z defs}. +@item x86-64-v2 +@item x86-64-v3 +@itemx x86-64-v4 +Specify the x86-64 ISA level needed in .note.gnu.property section. +@option{x86-64-v2} generates @code{GNU_PROPERTY_X86_ISA_1_V2}. +@option{x86-64-v3} generates @code{GNU_PROPERTY_X86_ISA_1_V3}. +@option{x86-64-v4} generates @code{GNU_PROPERTY_X86_ISA_1_V4}. +Supported for Linux/i386 and Linux/x86_64. + @end table Other keywords are ignored for Solaris compatibility. diff --git a/ld/testsuite/ld-elf/x86-feature-1a.rd b/ld/testsuite/ld-elf/x86-feature-1a.rd index db7718a388..fda3063b78 100644 --- a/ld/testsuite/ld-elf/x86-feature-1a.rd +++ b/ld/testsuite/ld-elf/x86-feature-1a.rd @@ -2,5 +2,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-elf/x86-feature-1b.rd b/ld/testsuite/ld-elf/x86-feature-1b.rd index 81a8d8d49a..b0d6f64562 100644 --- a/ld/testsuite/ld-elf/x86-feature-1b.rd +++ b/ld/testsuite/ld-elf/x86-feature-1b.rd @@ -2,5 +2,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-elf/x86-feature-1c.rd b/ld/testsuite/ld-elf/x86-feature-1c.rd index 81a8d8d49a..b0d6f64562 100644 --- a/ld/testsuite/ld-elf/x86-feature-1c.rd +++ b/ld/testsuite/ld-elf/x86-feature-1c.rd @@ -2,5 +2,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-elf/x86-feature-1d.rd b/ld/testsuite/ld-elf/x86-feature-1d.rd index 3dea01266e..d5c3debd01 100644 --- a/ld/testsuite/ld-elf/x86-feature-1d.rd +++ b/ld/testsuite/ld-elf/x86-feature-1d.rd @@ -2,5 +2,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-elf/x86-feature-1e.rd b/ld/testsuite/ld-elf/x86-feature-1e.rd index 8ad7d43de6..eb82ef2d6c 100644 --- a/ld/testsuite/ld-elf/x86-feature-1e.rd +++ b/ld/testsuite/ld-elf/x86-feature-1e.rd @@ -2,5 +2,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT, SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp index cd7b4deebd..0b1538ed81 100644 --- a/ld/testsuite/ld-i386/i386.exp +++ b/ld/testsuite/ld-i386/i386.exp @@ -422,6 +422,7 @@ run_dump_test "property-x86-3" run_dump_test "property-x86-4a" run_dump_test "property-x86-4b" run_dump_test "property-x86-5" +run_dump_test "property-x86-6" run_dump_test "property-x86-ibt1a" run_dump_test "property-x86-ibt1b" run_dump_test "property-x86-ibt2" @@ -475,6 +476,9 @@ run_dump_test "pr26263" run_dump_test "pr26711-1" run_dump_test "pr26711-2" run_dump_test "pr26711-3" +run_dump_test "property-x86-isa1" +run_dump_test "property-x86-isa2" +run_dump_test "property-x86-isa3" if { !([istarget "i?86-*-linux*"] || [istarget "i?86-*-gnu*"] diff --git a/ld/testsuite/ld-i386/pr23372c.d b/ld/testsuite/ld-i386/pr23372c.d index 59fdc23923..fffd680f06 100644 --- a/ld/testsuite/ld-i386/pr23372c.d +++ b/ld/testsuite/ld-i386/pr23372c.d @@ -7,4 +7,4 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/pr23486c.d b/ld/testsuite/ld-i386/pr23486c.d index 30d22596ae..92765f5ddc 100644 --- a/ld/testsuite/ld-i386/pr23486c.d +++ b/ld/testsuite/ld-i386/pr23486c.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: CMOV, SSE + Properties: x86 ISA needed: x86-64-v2, x86-64-v3 diff --git a/ld/testsuite/ld-i386/pr23486d.d b/ld/testsuite/ld-i386/pr23486d.d index 025b8e0541..c673e8e0d7 100644 --- a/ld/testsuite/ld-i386/pr23486d.d +++ b/ld/testsuite/ld-i386/pr23486d.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: CMOV, SSE + Properties: x86 ISA needed: x86-64-v2, x86-64-v3 diff --git a/ld/testsuite/ld-i386/pr24322a.d b/ld/testsuite/ld-i386/pr24322a.d index a77a85c858..a273e687f9 100644 --- a/ld/testsuite/ld-i386/pr24322a.d +++ b/ld/testsuite/ld-i386/pr24322a.d @@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/pr24322b.d b/ld/testsuite/ld-i386/pr24322b.d index 62e8246c39..244d8c3df4 100644 --- a/ld/testsuite/ld-i386/pr24322b.d +++ b/ld/testsuite/ld-i386/pr24322b.d @@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/property-1a.r b/ld/testsuite/ld-i386/property-1a.r index 85615f1bd2..cbdd6477a4 100644 --- a/ld/testsuite/ld-i386/property-1a.r +++ b/ld/testsuite/ld-i386/property-1a.r @@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: no copy on protected - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline #pass diff --git a/ld/testsuite/ld-i386/property-2a.r b/ld/testsuite/ld-i386/property-2a.r index a85ef0e369..51bfde8163 100644 --- a/ld/testsuite/ld-i386/property-2a.r +++ b/ld/testsuite/ld-i386/property-2a.r @@ -3,7 +3,7 @@ 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 used: x86 feature used: x86 + x86 ISA used: x86-64-baseline #pass diff --git a/ld/testsuite/ld-i386/property-3.r b/ld/testsuite/ld-i386/property-3.r index e95d47ae8d..3578823f93 100644 --- a/ld/testsuite/ld-i386/property-3.r +++ b/ld/testsuite/ld-i386/property-3.r @@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: stack size: 0x800000 #... - x86 ISA needed: CMOV, SSE + x86 ISA needed: x86-64-v2, x86-64-v3 #pass diff --git a/ld/testsuite/ld-i386/property-3a.r b/ld/testsuite/ld-i386/property-3a.r index 2201c9860e..89cc8fa76b 100644 --- a/ld/testsuite/ld-i386/property-3a.r +++ b/ld/testsuite/ld-i386/property-3a.r @@ -3,7 +3,7 @@ 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: CMOV, SSE - x86 ISA used: SSE, SSE3 + x86 ISA needed: x86-64-v2, x86-64-v3 x86 feature used: x86 + x86 ISA used: x86-64-v3, #pass diff --git a/ld/testsuite/ld-i386/property-4.r b/ld/testsuite/ld-i386/property-4.r index a4b7bb71ad..a024b2a60a 100644 --- a/ld/testsuite/ld-i386/property-4.r +++ b/ld/testsuite/ld-i386/property-4.r @@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: stack size: 0x800000 #... - x86 ISA needed: CMOV, SSE, SSE3 + x86 ISA needed: x86-64-v2, x86-64-v3, #pass diff --git a/ld/testsuite/ld-i386/property-4a.r b/ld/testsuite/ld-i386/property-4a.r index 8448cc70ac..ff61875ce3 100644 --- a/ld/testsuite/ld-i386/property-4a.r +++ b/ld/testsuite/ld-i386/property-4a.r @@ -3,7 +3,7 @@ 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: CMOV, SSE, SSE3 - x86 ISA used: CMOV, SSE, SSE3 + x86 ISA needed: x86-64-v2, x86-64-v3, x86 feature used: x86 + x86 ISA used: x86-64-v2, x86-64-v3, #pass diff --git a/ld/testsuite/ld-i386/property-5.r b/ld/testsuite/ld-i386/property-5.r index 5ff95648c2..eb24e3ad27 100644 --- a/ld/testsuite/ld-i386/property-5.r +++ b/ld/testsuite/ld-i386/property-5.r @@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: stack size: 0x900000 #... - x86 ISA needed: CMOV, SSE, SSE3 + x86 ISA needed: x86-64-v2, x86-64-v3, #pass diff --git a/ld/testsuite/ld-i386/property-5a.r b/ld/testsuite/ld-i386/property-5a.r index 9388a07b7b..c99af9e941 100644 --- a/ld/testsuite/ld-i386/property-5a.r +++ b/ld/testsuite/ld-i386/property-5a.r @@ -3,7 +3,7 @@ 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: CMOV, SSE, SSE3 - x86 ISA used: CMOV, SSE, SSE3 + x86 ISA needed: x86-64-v2, x86-64-v3, x86 feature used: x86 + x86 ISA used: x86-64-v2, x86-64-v3, #pass diff --git a/ld/testsuite/ld-i386/property-7a.r b/ld/testsuite/ld-i386/property-7a.r index 1cce5d9474..c97fc72524 100644 --- a/ld/testsuite/ld-i386/property-7a.r +++ b/ld/testsuite/ld-i386/property-7a.r @@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: stack size: 0x800000 no copy on protected - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/property-x86-1.S b/ld/testsuite/ld-i386/property-x86-1.S index f0b8fc0ce5..cb0a2cf111 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 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0xa 5: .p2align 2 /* GNU_PROPERTY_X86_ISA_1_NEEDED */ - .long 0xc0008000 /* pr_type. */ + .long 0xc0008002 /* 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 39876811cb..01c755f59d 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 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0x3 5: .p2align 2 /* GNU_PROPERTY_X86_ISA_1_NEEDED */ - .long 0xc0008000 /* pr_type. */ + .long 0xc0008002 /* 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 8b3ddb53db..059388dfca 100644 --- a/ld/testsuite/ld-i386/property-x86-3.d +++ b/ld/testsuite/ld-i386/property-x86-3.d @@ -5,6 +5,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: SSE, SSE3, SSE4_1, AVX - x86 ISA used: CMOV, SSE, SSSE3, SSE4_1 + Properties: x86 ISA needed: x86-64-v3, , , x86 feature used: x86 + x86 ISA used: x86-64-v2, x86-64-v3, , diff --git a/ld/testsuite/ld-i386/property-x86-3.s b/ld/testsuite/ld-i386/property-x86-3.s index 7e5924f829..f137b71bc6 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 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0x3 5: .p2align 2 /* GNU_PROPERTY_X86_ISA_1_NEEDED */ - .long 0xc0008000 /* pr_type. */ + .long 0xc0008002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0xa @@ -35,14 +35,14 @@ 1: .p2align 2 /* GNU_PROPERTY_X86_ISA_1_USED */ - .long 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0x30 5: .p2align 2 /* GNU_PROPERTY_X86_ISA_1_NEEDED */ - .long 0xc0008000 /* pr_type. */ + .long 0xc0008002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0xa0 diff --git a/ld/testsuite/ld-i386/property-x86-4a.d b/ld/testsuite/ld-i386/property-x86-4a.d index e28562aa7d..3006627abe 100644 --- a/ld/testsuite/ld-i386/property-x86-4a.d +++ b/ld/testsuite/ld-i386/property-x86-4a.d @@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 Properties: no copy on protected - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/property-x86-5.d b/ld/testsuite/ld-i386/property-x86-5.d index dc9b67c708..71faa63eb2 100644 --- a/ld/testsuite/ld-i386/property-x86-5.d +++ b/ld/testsuite/ld-i386/property-x86-5.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: CMOV - x86 ISA used: + Properties: x86 ISA needed: x86-64-v2 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/property-x86-6.d b/ld/testsuite/ld-i386/property-x86-6.d new file mode 100644 index 0000000000..95c64b2913 --- /dev/null +++ b/ld/testsuite/ld-i386/property-x86-6.d @@ -0,0 +1,10 @@ +#source: ../ld-x86-64/property-x86-6.s +#as: --32 -mx86-used-note=no +#ld: -shared -m elf_i386 +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1 + x86 ISA used: SSE, SSE3, SSE4_1, AVX diff --git a/ld/testsuite/ld-i386/property-x86-cet1.d b/ld/testsuite/ld-i386/property-x86-cet1.d index f2cf7a6a72..fbce0bbaec 100644 --- a/ld/testsuite/ld-i386/property-x86-cet1.d +++ b/ld/testsuite/ld-i386/property-x86-cet1.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT, SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/property-x86-cet2a.d b/ld/testsuite/ld-i386/property-x86-cet2a.d index 93b871ea13..655762deed 100644 --- a/ld/testsuite/ld-i386/property-x86-cet2a.d +++ b/ld/testsuite/ld-i386/property-x86-cet2a.d @@ -10,6 +10,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: SSE, SSE3, SSE4_1, AVX - x86 ISA used: CMOV, SSE, SSSE3, SSE4_1 + Properties: x86 ISA needed: x86-64-v3, , , x86 feature used: x86 + x86 ISA used: x86-64-v2, x86-64-v3, , diff --git a/ld/testsuite/ld-i386/property-x86-cet5a.d b/ld/testsuite/ld-i386/property-x86-cet5a.d index 412f4dccce..bd7e2edfaa 100644 --- a/ld/testsuite/ld-i386/property-x86-cet5a.d +++ b/ld/testsuite/ld-i386/property-x86-cet5a.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: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/property-x86-cet5b.d b/ld/testsuite/ld-i386/property-x86-cet5b.d index 868b0030b8..0b47267e16 100644 --- a/ld/testsuite/ld-i386/property-x86-cet5b.d +++ b/ld/testsuite/ld-i386/property-x86-cet5b.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT, SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/property-x86-ibt1a.d b/ld/testsuite/ld-i386/property-x86-ibt1a.d index 989b99c397..1fee1ae2d3 100644 --- a/ld/testsuite/ld-i386/property-x86-ibt1a.d +++ b/ld/testsuite/ld-i386/property-x86-ibt1a.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/property-x86-ibt1b.d b/ld/testsuite/ld-i386/property-x86-ibt1b.d index 1aa80cb2ba..adb00d72ea 100644 --- a/ld/testsuite/ld-i386/property-x86-ibt1b.d +++ b/ld/testsuite/ld-i386/property-x86-ibt1b.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/property-x86-ibt2.d b/ld/testsuite/ld-i386/property-x86-ibt2.d index bd47f95d48..68aa0feebc 100644 --- a/ld/testsuite/ld-i386/property-x86-ibt2.d +++ b/ld/testsuite/ld-i386/property-x86-ibt2.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/property-x86-ibt3a.d b/ld/testsuite/ld-i386/property-x86-ibt3a.d index 7e6079c892..290bcac1c8 100644 --- a/ld/testsuite/ld-i386/property-x86-ibt3a.d +++ b/ld/testsuite/ld-i386/property-x86-ibt3a.d @@ -7,6 +7,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: SSE, SSE3, SSE4_1, AVX - x86 ISA used: CMOV, SSE, SSSE3, SSE4_1 + Properties: x86 ISA needed: x86-64-v3, , , x86 feature used: x86 + x86 ISA used: x86-64-v2, x86-64-v3, , diff --git a/ld/testsuite/ld-i386/property-x86-ibt3b.d b/ld/testsuite/ld-i386/property-x86-ibt3b.d index 861fec9619..0ac9e7ff00 100644 --- a/ld/testsuite/ld-i386/property-x86-ibt3b.d +++ b/ld/testsuite/ld-i386/property-x86-ibt3b.d @@ -7,6 +7,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: SSE, SSE3, SSE4_1, AVX - x86 ISA used: CMOV, SSE, SSSE3, SSE4_1 + Properties: x86 ISA needed: x86-64-v3, , , x86 feature used: x86 + x86 ISA used: x86-64-v2, x86-64-v3, , diff --git a/ld/testsuite/ld-i386/property-x86-ibt4.d b/ld/testsuite/ld-i386/property-x86-ibt4.d index e271cc944a..0e613e23bf 100644 --- a/ld/testsuite/ld-i386/property-x86-ibt4.d +++ b/ld/testsuite/ld-i386/property-x86-ibt4.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/property-x86-ibt5.d b/ld/testsuite/ld-i386/property-x86-ibt5.d index 2245369088..23da096b85 100644 --- a/ld/testsuite/ld-i386/property-x86-ibt5.d +++ b/ld/testsuite/ld-i386/property-x86-ibt5.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/property-x86-isa1.d b/ld/testsuite/ld-i386/property-x86-isa1.d new file mode 100644 index 0000000000..22ac02b5c4 --- /dev/null +++ b/ld/testsuite/ld-i386/property-x86-isa1.d @@ -0,0 +1,11 @@ +#source: ../ld-x86-64/property-x86-isa1.s +#source: ../ld-x86-64/simple.s +#as: --32 -mx86-used-note=no +#ld: -m elf_i386 -z x86-64-v4 +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: x86-64-v2, x86-64-v4 + diff --git a/ld/testsuite/ld-i386/property-x86-isa2.d b/ld/testsuite/ld-i386/property-x86-isa2.d new file mode 100644 index 0000000000..1dc83a77a7 --- /dev/null +++ b/ld/testsuite/ld-i386/property-x86-isa2.d @@ -0,0 +1,9 @@ +#source: ../ld-x86-64/simple.s +#as: --32 -mx86-used-note=no +#ld: -m elf_i386 -z x86-64-v4 +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: x86-64-v4 diff --git a/ld/testsuite/ld-i386/property-x86-isa3.d b/ld/testsuite/ld-i386/property-x86-isa3.d new file mode 100644 index 0000000000..60b20d2be2 --- /dev/null +++ b/ld/testsuite/ld-i386/property-x86-isa3.d @@ -0,0 +1,9 @@ +#source: ../ld-x86-64/simple.s +#as: --32 -mx86-used-note=no +#ld: -r -m elf_i386 -z x86-64-v4 +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: x86-64-v4 diff --git a/ld/testsuite/ld-i386/property-x86-shstk1a.d b/ld/testsuite/ld-i386/property-x86-shstk1a.d index 93586d4bbc..ab774dc6a5 100644 --- a/ld/testsuite/ld-i386/property-x86-shstk1a.d +++ b/ld/testsuite/ld-i386/property-x86-shstk1a.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/property-x86-shstk1b.d b/ld/testsuite/ld-i386/property-x86-shstk1b.d index 3916bacf37..97517c32fd 100644 --- a/ld/testsuite/ld-i386/property-x86-shstk1b.d +++ b/ld/testsuite/ld-i386/property-x86-shstk1b.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/property-x86-shstk2.d b/ld/testsuite/ld-i386/property-x86-shstk2.d index 3c24ee57a0..9700302228 100644 --- a/ld/testsuite/ld-i386/property-x86-shstk2.d +++ b/ld/testsuite/ld-i386/property-x86-shstk2.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/property-x86-shstk3a.d b/ld/testsuite/ld-i386/property-x86-shstk3a.d index 9d2ce559ea..1b6da4f430 100644 --- a/ld/testsuite/ld-i386/property-x86-shstk3a.d +++ b/ld/testsuite/ld-i386/property-x86-shstk3a.d @@ -7,6 +7,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: SSE, SSE3, SSE4_1, AVX - x86 ISA used: CMOV, SSE, SSSE3, SSE4_1 + Properties: x86 ISA needed: x86-64-v3, , , x86 feature used: x86 + x86 ISA used: x86-64-v2, x86-64-v3, , diff --git a/ld/testsuite/ld-i386/property-x86-shstk3b.d b/ld/testsuite/ld-i386/property-x86-shstk3b.d index 86f4395bcc..98a1562910 100644 --- a/ld/testsuite/ld-i386/property-x86-shstk3b.d +++ b/ld/testsuite/ld-i386/property-x86-shstk3b.d @@ -7,6 +7,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: SSE, SSE3, SSE4_1, AVX - x86 ISA used: CMOV, SSE, SSSE3, SSE4_1 + Properties: x86 ISA needed: x86-64-v3, , , x86 feature used: x86 + x86 ISA used: x86-64-v2, x86-64-v3, , diff --git a/ld/testsuite/ld-i386/property-x86-shstk4.d b/ld/testsuite/ld-i386/property-x86-shstk4.d index 84dda933dc..fa4c88c148 100644 --- a/ld/testsuite/ld-i386/property-x86-shstk4.d +++ b/ld/testsuite/ld-i386/property-x86-shstk4.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-i386/property-x86-shstk5.d b/ld/testsuite/ld-i386/property-x86-shstk5.d index 613daa4383..64a35398aa 100644 --- a/ld/testsuite/ld-i386/property-x86-shstk5.d +++ b/ld/testsuite/ld-i386/property-x86-shstk5.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/pr23372c-x32.d b/ld/testsuite/ld-x86-64/pr23372c-x32.d index e01a7666fc..5698ec268b 100644 --- a/ld/testsuite/ld-x86-64/pr23372c-x32.d +++ b/ld/testsuite/ld-x86-64/pr23372c-x32.d @@ -7,4 +7,4 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/pr23372c.d b/ld/testsuite/ld-x86-64/pr23372c.d index 359cc09a0b..e1281b2e1c 100644 --- a/ld/testsuite/ld-x86-64/pr23372c.d +++ b/ld/testsuite/ld-x86-64/pr23372c.d @@ -7,4 +7,4 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: + Properties: x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/pr23372d.s b/ld/testsuite/ld-x86-64/pr23372d.s index cec05cdba8..3875c94a54 100644 --- a/ld/testsuite/ld-x86-64/pr23372d.s +++ b/ld/testsuite/ld-x86-64/pr23372d.s @@ -17,7 +17,7 @@ .p2align 2 .endif /* GNU_PROPERTY_X86_ISA_1_USED */ - .long 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* pr_type. */ .long 3f - 2f /* pr_datasz. */ 2: .long 0x0 diff --git a/ld/testsuite/ld-x86-64/pr23372e.s b/ld/testsuite/ld-x86-64/pr23372e.s index cec05cdba8..3875c94a54 100644 --- a/ld/testsuite/ld-x86-64/pr23372e.s +++ b/ld/testsuite/ld-x86-64/pr23372e.s @@ -17,7 +17,7 @@ .p2align 2 .endif /* GNU_PROPERTY_X86_ISA_1_USED */ - .long 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* pr_type. */ .long 3f - 2f /* pr_datasz. */ 2: .long 0x0 diff --git a/ld/testsuite/ld-x86-64/pr23372f.s b/ld/testsuite/ld-x86-64/pr23372f.s index 57797c8561..6d79c14c13 100644 --- a/ld/testsuite/ld-x86-64/pr23372f.s +++ b/ld/testsuite/ld-x86-64/pr23372f.s @@ -17,7 +17,7 @@ .p2align 2 .endif /* GNU_PROPERTY_X86_ISA_1_NEEDED */ - .long 0xc0008000 /* pr_type. */ + .long 0xc0008002 /* pr_type. */ .long 3f - 2f /* pr_datasz. */ 2: .long 0x0 diff --git a/ld/testsuite/ld-x86-64/pr23486c-x32.d b/ld/testsuite/ld-x86-64/pr23486c-x32.d index 7a5e7325c2..11215f3d03 100644 --- a/ld/testsuite/ld-x86-64/pr23486c-x32.d +++ b/ld/testsuite/ld-x86-64/pr23486c-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: CMOV, SSE + Properties: x86 ISA needed: x86-64-v2, x86-64-v3 diff --git a/ld/testsuite/ld-x86-64/pr23486c.d b/ld/testsuite/ld-x86-64/pr23486c.d index cda1f1c461..38c54cad8a 100644 --- a/ld/testsuite/ld-x86-64/pr23486c.d +++ b/ld/testsuite/ld-x86-64/pr23486c.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: CMOV, SSE + Properties: x86 ISA needed: x86-64-v2, x86-64-v3 diff --git a/ld/testsuite/ld-x86-64/pr23486c.s b/ld/testsuite/ld-x86-64/pr23486c.s index 16bb94d959..7860eac3ae 100644 --- a/ld/testsuite/ld-x86-64/pr23486c.s +++ b/ld/testsuite/ld-x86-64/pr23486c.s @@ -17,7 +17,7 @@ .p2align 2 .endif /* GNU_PROPERTY_X86_ISA_1_USED */ - .long 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* pr_type. */ .long 3f - 2f /* pr_datasz. */ 2: .long 0xa diff --git a/ld/testsuite/ld-x86-64/pr23486d-x32.d b/ld/testsuite/ld-x86-64/pr23486d-x32.d index 41da74c6c5..74eb4c0969 100644 --- a/ld/testsuite/ld-x86-64/pr23486d-x32.d +++ b/ld/testsuite/ld-x86-64/pr23486d-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: CMOV, SSE + Properties: x86 ISA needed: x86-64-v2, x86-64-v3 diff --git a/ld/testsuite/ld-x86-64/pr23486d.d b/ld/testsuite/ld-x86-64/pr23486d.d index 0ca7c505a1..4f335238c3 100644 --- a/ld/testsuite/ld-x86-64/pr23486d.d +++ b/ld/testsuite/ld-x86-64/pr23486d.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: CMOV, SSE + Properties: x86 ISA needed: x86-64-v2, x86-64-v3 diff --git a/ld/testsuite/ld-x86-64/pr23486d.s b/ld/testsuite/ld-x86-64/pr23486d.s index 88f9c112c1..c39910596a 100644 --- a/ld/testsuite/ld-x86-64/pr23486d.s +++ b/ld/testsuite/ld-x86-64/pr23486d.s @@ -17,7 +17,7 @@ .p2align 2 .endif /* GNU_PROPERTY_X86_ISA_1_NEEDED */ - .long 0xc0008000 /* pr_type. */ + .long 0xc0008002 /* pr_type. */ .long 3f - 2f /* pr_datasz. */ 2: .long 0x3 diff --git a/ld/testsuite/ld-x86-64/pr24322a-x32.d b/ld/testsuite/ld-x86-64/pr24322a-x32.d index f18678d69b..8009f91097 100644 --- a/ld/testsuite/ld-x86-64/pr24322a-x32.d +++ b/ld/testsuite/ld-x86-64/pr24322a-x32.d @@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/pr24322a.d b/ld/testsuite/ld-x86-64/pr24322a.d index a27de4a11a..6ddb7a7163 100644 --- a/ld/testsuite/ld-x86-64/pr24322a.d +++ b/ld/testsuite/ld-x86-64/pr24322a.d @@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/pr24322b-x32.d b/ld/testsuite/ld-x86-64/pr24322b-x32.d index 4e19b8d3e4..76ebd1cfa3 100644 --- a/ld/testsuite/ld-x86-64/pr24322b-x32.d +++ b/ld/testsuite/ld-x86-64/pr24322b-x32.d @@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/pr24322b.d b/ld/testsuite/ld-x86-64/pr24322b.d index f56e211914..6ee0146443 100644 --- a/ld/testsuite/ld-x86-64/pr24322b.d +++ b/ld/testsuite/ld-x86-64/pr24322b.d @@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/pr24458a-x32.d b/ld/testsuite/ld-x86-64/pr24458a-x32.d index 9b8dc3076c..9909f1760d 100644 --- a/ld/testsuite/ld-x86-64/pr24458a-x32.d +++ b/ld/testsuite/ld-x86-64/pr24458a-x32.d @@ -6,5 +6,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/pr24458a.d b/ld/testsuite/ld-x86-64/pr24458a.d index 8319a58829..d0fbc3390f 100644 --- a/ld/testsuite/ld-x86-64/pr24458a.d +++ b/ld/testsuite/ld-x86-64/pr24458a.d @@ -6,5 +6,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/pr24458b-x32.d b/ld/testsuite/ld-x86-64/pr24458b-x32.d index 263c7979e7..9f80ed20d9 100644 --- a/ld/testsuite/ld-x86-64/pr24458b-x32.d +++ b/ld/testsuite/ld-x86-64/pr24458b-x32.d @@ -6,5 +6,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/pr24458b.d b/ld/testsuite/ld-x86-64/pr24458b.d index 3614d67589..ee1894894d 100644 --- a/ld/testsuite/ld-x86-64/pr24458b.d +++ b/ld/testsuite/ld-x86-64/pr24458b.d @@ -6,5 +6,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/pr24458c-x32.d b/ld/testsuite/ld-x86-64/pr24458c-x32.d index 767038ae8b..7107c3f989 100644 --- a/ld/testsuite/ld-x86-64/pr24458c-x32.d +++ b/ld/testsuite/ld-x86-64/pr24458c-x32.d @@ -6,5 +6,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/pr24458c.d b/ld/testsuite/ld-x86-64/pr24458c.d index bc3758fb56..690088a532 100644 --- a/ld/testsuite/ld-x86-64/pr24458c.d +++ b/ld/testsuite/ld-x86-64/pr24458c.d @@ -6,5 +6,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-1a.r b/ld/testsuite/ld-x86-64/property-1a.r index 85615f1bd2..cbdd6477a4 100644 --- a/ld/testsuite/ld-x86-64/property-1a.r +++ b/ld/testsuite/ld-x86-64/property-1a.r @@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: no copy on protected - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline #pass diff --git a/ld/testsuite/ld-x86-64/property-2a.r b/ld/testsuite/ld-x86-64/property-2a.r index a85ef0e369..51bfde8163 100644 --- a/ld/testsuite/ld-x86-64/property-2a.r +++ b/ld/testsuite/ld-x86-64/property-2a.r @@ -3,7 +3,7 @@ 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 used: x86 feature used: x86 + x86 ISA used: x86-64-baseline #pass diff --git a/ld/testsuite/ld-x86-64/property-3.r b/ld/testsuite/ld-x86-64/property-3.r index e95d47ae8d..3578823f93 100644 --- a/ld/testsuite/ld-x86-64/property-3.r +++ b/ld/testsuite/ld-x86-64/property-3.r @@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: stack size: 0x800000 #... - x86 ISA needed: CMOV, SSE + x86 ISA needed: x86-64-v2, x86-64-v3 #pass diff --git a/ld/testsuite/ld-x86-64/property-3a.r b/ld/testsuite/ld-x86-64/property-3a.r index 2201c9860e..89cc8fa76b 100644 --- a/ld/testsuite/ld-x86-64/property-3a.r +++ b/ld/testsuite/ld-x86-64/property-3a.r @@ -3,7 +3,7 @@ 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: CMOV, SSE - x86 ISA used: SSE, SSE3 + x86 ISA needed: x86-64-v2, x86-64-v3 x86 feature used: x86 + x86 ISA used: x86-64-v3, #pass diff --git a/ld/testsuite/ld-x86-64/property-4.r b/ld/testsuite/ld-x86-64/property-4.r index a4b7bb71ad..a024b2a60a 100644 --- a/ld/testsuite/ld-x86-64/property-4.r +++ b/ld/testsuite/ld-x86-64/property-4.r @@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: stack size: 0x800000 #... - x86 ISA needed: CMOV, SSE, SSE3 + x86 ISA needed: x86-64-v2, x86-64-v3, #pass diff --git a/ld/testsuite/ld-x86-64/property-4a.r b/ld/testsuite/ld-x86-64/property-4a.r index 8448cc70ac..ff61875ce3 100644 --- a/ld/testsuite/ld-x86-64/property-4a.r +++ b/ld/testsuite/ld-x86-64/property-4a.r @@ -3,7 +3,7 @@ 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: CMOV, SSE, SSE3 - x86 ISA used: CMOV, SSE, SSE3 + x86 ISA needed: x86-64-v2, x86-64-v3, x86 feature used: x86 + x86 ISA used: x86-64-v2, x86-64-v3, #pass diff --git a/ld/testsuite/ld-x86-64/property-5.r b/ld/testsuite/ld-x86-64/property-5.r index 5ff95648c2..eb24e3ad27 100644 --- a/ld/testsuite/ld-x86-64/property-5.r +++ b/ld/testsuite/ld-x86-64/property-5.r @@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: stack size: 0x900000 #... - x86 ISA needed: CMOV, SSE, SSE3 + x86 ISA needed: x86-64-v2, x86-64-v3, #pass diff --git a/ld/testsuite/ld-x86-64/property-5a.r b/ld/testsuite/ld-x86-64/property-5a.r index 9388a07b7b..c99af9e941 100644 --- a/ld/testsuite/ld-x86-64/property-5a.r +++ b/ld/testsuite/ld-x86-64/property-5a.r @@ -3,7 +3,7 @@ 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: CMOV, SSE, SSE3 - x86 ISA used: CMOV, SSE, SSE3 + x86 ISA needed: x86-64-v2, x86-64-v3, x86 feature used: x86 + x86 ISA used: x86-64-v2, x86-64-v3, #pass diff --git a/ld/testsuite/ld-x86-64/property-7a.r b/ld/testsuite/ld-x86-64/property-7a.r index 1cce5d9474..c97fc72524 100644 --- a/ld/testsuite/ld-x86-64/property-7a.r +++ b/ld/testsuite/ld-x86-64/property-7a.r @@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: stack size: 0x800000 no copy on protected - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-1.S b/ld/testsuite/ld-x86-64/property-x86-1.S index c950b9db19..b669e728a5 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 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0xa 5: .p2align ALIGN /* GNU_PROPERTY_X86_ISA_1_NEEDED */ - .long 0xc0008000 /* pr_type. */ + .long 0xc0008002 /* 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 72056be46e..b108b1704d 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 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0x3 5: .p2align ALIGN /* GNU_PROPERTY_X86_ISA_1_NEEDED */ - .long 0xc0008000 /* pr_type. */ + .long 0xc0008002 /* 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 ef70a64aff..5125a7aba1 100644 --- a/ld/testsuite/ld-x86-64/property-x86-3-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-3-x32.d @@ -6,6 +6,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1 - x86 ISA used: SSE, SSE3, SSE4_1, AVX + Properties: x86 ISA needed: x86-64-v2, x86-64-v3, , x86 feature used: x86 + x86 ISA used: x86-64-v3, , , diff --git a/ld/testsuite/ld-x86-64/property-x86-3.d b/ld/testsuite/ld-x86-64/property-x86-3.d index 1d191bead9..974230875c 100644 --- a/ld/testsuite/ld-x86-64/property-x86-3.d +++ b/ld/testsuite/ld-x86-64/property-x86-3.d @@ -5,6 +5,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1 - x86 ISA used: SSE, SSE3, SSE4_1, AVX + Properties: x86 ISA needed: x86-64-v2, x86-64-v3, , x86 feature used: x86 + x86 ISA used: x86-64-v3, , , diff --git a/ld/testsuite/ld-x86-64/property-x86-3.s b/ld/testsuite/ld-x86-64/property-x86-3.s index 8c9d6dac84..cce71da4ef 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 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0xa @@ -28,7 +28,7 @@ .p2align 2 .endif /* GNU_PROPERTY_X86_ISA_1_NEEDED */ - .long 0xc0008000 /* pr_type. */ + .long 0xc0008002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0x3 @@ -59,7 +59,7 @@ .p2align 2 .endif /* GNU_PROPERTY_X86_ISA_1_USED */ - .long 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0xa0 @@ -70,7 +70,7 @@ .p2align 2 .endif /* GNU_PROPERTY_X86_ISA_1_NEEDED */ - .long 0xc0008000 /* pr_type. */ + .long 0xc0008002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0x30 diff --git a/ld/testsuite/ld-x86-64/property-x86-4a-x32.d b/ld/testsuite/ld-x86-64/property-x86-4a-x32.d index 07c508186b..cf5046f6e0 100644 --- a/ld/testsuite/ld-x86-64/property-x86-4a-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-4a-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: no copy on protected - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-4a.d b/ld/testsuite/ld-x86-64/property-x86-4a.d index 6ae427e139..7c2bb782d8 100644 --- a/ld/testsuite/ld-x86-64/property-x86-4a.d +++ b/ld/testsuite/ld-x86-64/property-x86-4a.d @@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000028 NT_GNU_PROPERTY_TYPE_0 Properties: no copy on protected - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-5-x32.d b/ld/testsuite/ld-x86-64/property-x86-5-x32.d index 8e6b8e5a29..8f62e3be32 100644 --- a/ld/testsuite/ld-x86-64/property-x86-5-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-5-x32.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: CMOV - x86 ISA used: + Properties: x86 ISA needed: x86-64-v2 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-5.d b/ld/testsuite/ld-x86-64/property-x86-5.d index dd1da830c1..3ba1f481ca 100644 --- a/ld/testsuite/ld-x86-64/property-x86-5.d +++ b/ld/testsuite/ld-x86-64/property-x86-5.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: CMOV - x86 ISA used: + Properties: x86 ISA needed: x86-64-v2 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-5a.s b/ld/testsuite/ld-x86-64/property-x86-5a.s index 990c4683e6..755facd6cd 100644 --- a/ld/testsuite/ld-x86-64/property-x86-5a.s +++ b/ld/testsuite/ld-x86-64/property-x86-5a.s @@ -22,7 +22,7 @@ _start: .p2align 2 .endif /* GNU_PROPERTY_X86_ISA_1_NEEDED */ - .long 0xc0008000 /* pr_type. */ + .long 0xc0008002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0x1 @@ -38,7 +38,7 @@ _start: .p2align 2 .endif /* GNU_PROPERTY_X86_ISA_1_USED */ - .long 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0x0 diff --git a/ld/testsuite/ld-x86-64/property-x86-5b.s b/ld/testsuite/ld-x86-64/property-x86-5b.s index 1f90dfc9f3..7851481de7 100644 --- a/ld/testsuite/ld-x86-64/property-x86-5b.s +++ b/ld/testsuite/ld-x86-64/property-x86-5b.s @@ -17,7 +17,7 @@ .p2align 2 .endif /* GNU_PROPERTY_X86_ISA_1_USED */ - .long 0xc0010000 /* pr_type. */ + .long 0xc0010002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: .long 0x0 diff --git a/ld/testsuite/ld-x86-64/property-x86-6-x32.d b/ld/testsuite/ld-x86-64/property-x86-6-x32.d new file mode 100644 index 0000000000..57aa3c2e70 --- /dev/null +++ b/ld/testsuite/ld-x86-64/property-x86-6-x32.d @@ -0,0 +1,10 @@ +#source: property-x86-6.s +#as: --x32 -mx86-used-note=no +#ld: -shared -m elf32_x86_64 +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 + 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-6.d b/ld/testsuite/ld-x86-64/property-x86-6.d new file mode 100644 index 0000000000..8639f9fdf0 --- /dev/null +++ b/ld/testsuite/ld-x86-64/property-x86-6.d @@ -0,0 +1,9 @@ +#as: --64 -defsym __64_bit__=1 -mx86-used-note=no +#ld: -shared -m elf_x86_64 +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 + 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-6.s b/ld/testsuite/ld-x86-64/property-x86-6.s new file mode 100644 index 0000000000..9a2f8f497f --- /dev/null +++ b/ld/testsuite/ld-x86-64/property-x86-6.s @@ -0,0 +1,83 @@ + .section ".note.gnu.property", "a" +.ifdef __64_bit__ + .p2align 3 +.else + .p2align 2 +.endif + .long 1f - 0f /* name length. */ + .long 3f - 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_COMPAT_2_ISA_1_USED */ + .long 0xc0010000 /* pr_type. */ + .long 5f - 4f /* pr_datasz. */ +4: + .long 0xa +5: +.ifdef __64_bit__ + .p2align 3 +.else + .p2align 2 +.endif + /* GNU_PROPERTY_X86_COMPAT_2_ISA_1_NEEDED */ + .long 0xc0008000 /* pr_type. */ + .long 5f - 4f /* pr_datasz. */ +4: + .long 0x3 +5: +.ifdef __64_bit__ + .p2align 3 +.else + .p2align 2 +.endif +3: + + .section ".note.gnu.property", "a" +.ifdef __64_bit__ + .p2align 3 +.else + .p2align 2 +.endif + .long 1f - 0f /* name length. */ + .long 3f - 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_COMPAT_2_ISA_1_USED */ + .long 0xc0010000 /* pr_type. */ + .long 5f - 4f /* pr_datasz. */ +4: + .long 0xa0 +5: +.ifdef __64_bit__ + .p2align 3 +.else + .p2align 2 +.endif + /* GNU_PROPERTY_X86_COMPAT_2_ISA_1_NEEDED */ + .long 0xc0008000 /* pr_type. */ + .long 5f - 4f /* pr_datasz. */ +4: + .long 0x30 +5: +.ifdef __64_bit__ + .p2align 3 +.else + .p2align 2 +.endif +3: diff --git a/ld/testsuite/ld-x86-64/property-x86-cet1-x32.d b/ld/testsuite/ld-x86-64/property-x86-cet1-x32.d index 3b4391a372..25cf016ac2 100644 --- a/ld/testsuite/ld-x86-64/property-x86-cet1-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-cet1-x32.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT, SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-cet1.d b/ld/testsuite/ld-x86-64/property-x86-cet1.d index abf76c58a6..3e797299e8 100644 --- a/ld/testsuite/ld-x86-64/property-x86-cet1.d +++ b/ld/testsuite/ld-x86-64/property-x86-cet1.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT, SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-cet2a-x32.d b/ld/testsuite/ld-x86-64/property-x86-cet2a-x32.d index 55996c9f84..2f1facb52f 100644 --- a/ld/testsuite/ld-x86-64/property-x86-cet2a-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-cet2a-x32.d @@ -10,6 +10,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1 - x86 ISA used: SSE, SSE3, SSE4_1, AVX + Properties: x86 ISA needed: x86-64-v2, x86-64-v3, , x86 feature used: x86 + x86 ISA used: x86-64-v3, , , diff --git a/ld/testsuite/ld-x86-64/property-x86-cet2a.d b/ld/testsuite/ld-x86-64/property-x86-cet2a.d index 2d7ad8cebd..9e3560c259 100644 --- a/ld/testsuite/ld-x86-64/property-x86-cet2a.d +++ b/ld/testsuite/ld-x86-64/property-x86-cet2a.d @@ -10,6 +10,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1 - x86 ISA used: SSE, SSE3, SSE4_1, AVX + Properties: x86 ISA needed: x86-64-v2, x86-64-v3, , x86 feature used: x86 + x86 ISA used: x86-64-v3, , , diff --git a/ld/testsuite/ld-x86-64/property-x86-cet5a-x32.d b/ld/testsuite/ld-x86-64/property-x86-cet5a-x32.d index 6520e56e9e..928cc137a0 100644 --- a/ld/testsuite/ld-x86-64/property-x86-cet5a-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-cet5a-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: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-cet5a.d b/ld/testsuite/ld-x86-64/property-x86-cet5a.d index 6a05136c4e..e36db3734a 100644 --- a/ld/testsuite/ld-x86-64/property-x86-cet5a.d +++ b/ld/testsuite/ld-x86-64/property-x86-cet5a.d @@ -6,5 +6,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-cet5b-x32.d b/ld/testsuite/ld-x86-64/property-x86-cet5b-x32.d index da3c8543a0..890d07021c 100644 --- a/ld/testsuite/ld-x86-64/property-x86-cet5b-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-cet5b-x32.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT, SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-cet5b.d b/ld/testsuite/ld-x86-64/property-x86-cet5b.d index 1c5681d080..4f81698d94 100644 --- a/ld/testsuite/ld-x86-64/property-x86-cet5b.d +++ b/ld/testsuite/ld-x86-64/property-x86-cet5b.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT, SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt1a-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt1a-x32.d index 4ce851a28b..ba0de1b42c 100644 --- a/ld/testsuite/ld-x86-64/property-x86-ibt1a-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-ibt1a-x32.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: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt1a.d b/ld/testsuite/ld-x86-64/property-x86-ibt1a.d index 5f9836fbf0..c5caf30947 100644 --- a/ld/testsuite/ld-x86-64/property-x86-ibt1a.d +++ b/ld/testsuite/ld-x86-64/property-x86-ibt1a.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: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt1b-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt1b-x32.d index 2e6c45e9dc..a8918944bb 100644 --- a/ld/testsuite/ld-x86-64/property-x86-ibt1b-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-ibt1b-x32.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt1b.d b/ld/testsuite/ld-x86-64/property-x86-ibt1b.d index 18020c6655..5120c01881 100644 --- a/ld/testsuite/ld-x86-64/property-x86-ibt1b.d +++ b/ld/testsuite/ld-x86-64/property-x86-ibt1b.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt2-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt2-x32.d index eca79569b3..3946aec3a3 100644 --- a/ld/testsuite/ld-x86-64/property-x86-ibt2-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-ibt2-x32.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt2.d b/ld/testsuite/ld-x86-64/property-x86-ibt2.d index ddf9cc310b..2a55017ab2 100644 --- a/ld/testsuite/ld-x86-64/property-x86-ibt2.d +++ b/ld/testsuite/ld-x86-64/property-x86-ibt2.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline 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 2d9cd35d73..ea4254e728 100644 --- a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d @@ -7,6 +7,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1 - x86 ISA used: SSE, SSE3, SSE4_1, AVX + Properties: x86 ISA needed: x86-64-v2, x86-64-v3, , x86 feature used: x86 + x86 ISA used: x86-64-v3, , , diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d index fc32d7017b..f74b2d1e9c 100644 --- a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d +++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d @@ -7,6 +7,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1 - x86 ISA used: SSE, SSE3, SSE4_1, AVX + Properties: x86 ISA needed: x86-64-v2, x86-64-v3, , x86 feature used: x86 + x86 ISA used: x86-64-v3, , , 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 a17c121bb8..a2ad6f8fe7 100644 --- a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d @@ -7,6 +7,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1 - x86 ISA used: SSE, SSE3, SSE4_1, AVX + Properties: x86 ISA needed: x86-64-v2, x86-64-v3, , x86 feature used: x86 + x86 ISA used: x86-64-v3, , , diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d index 2425c31968..ab6bfb6281 100644 --- a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d +++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d @@ -7,6 +7,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1 - x86 ISA used: SSE, SSE3, SSE4_1, AVX + Properties: x86 ISA needed: x86-64-v2, x86-64-v3, , x86 feature used: x86 + x86 ISA used: x86-64-v3, , , diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt4-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt4-x32.d index f6f67dbb64..95155c51d1 100644 --- a/ld/testsuite/ld-x86-64/property-x86-ibt4-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-ibt4-x32.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt4.d b/ld/testsuite/ld-x86-64/property-x86-ibt4.d index ab0217567b..496c00cc2a 100644 --- a/ld/testsuite/ld-x86-64/property-x86-ibt4.d +++ b/ld/testsuite/ld-x86-64/property-x86-ibt4.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt5-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt5-x32.d index 5e3c6dffb1..d9bf59eb96 100644 --- a/ld/testsuite/ld-x86-64/property-x86-ibt5-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-ibt5-x32.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt5.d b/ld/testsuite/ld-x86-64/property-x86-ibt5.d index cdf8ead9ea..212c3b2b9a 100644 --- a/ld/testsuite/ld-x86-64/property-x86-ibt5.d +++ b/ld/testsuite/ld-x86-64/property-x86-ibt5.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: IBT - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-isa1-x32.d b/ld/testsuite/ld-x86-64/property-x86-isa1-x32.d new file mode 100644 index 0000000000..e50e135cb0 --- /dev/null +++ b/ld/testsuite/ld-x86-64/property-x86-isa1-x32.d @@ -0,0 +1,11 @@ +#source: property-x86-isa1.s +#source: simple.s +#as: --x32 -mx86-used-note=no +#ld: -m elf32_x86_64 -z x86-64-v4 +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: x86-64-v2, x86-64-v4 + diff --git a/ld/testsuite/ld-x86-64/property-x86-isa1.d b/ld/testsuite/ld-x86-64/property-x86-isa1.d new file mode 100644 index 0000000000..fd05ade1f8 --- /dev/null +++ b/ld/testsuite/ld-x86-64/property-x86-isa1.d @@ -0,0 +1,11 @@ +#source: property-x86-isa1.s +#source: simple.s +#as: --64 -defsym __64_bit__=1 -mx86-used-note=no +#ld: -m elf_x86_64 -z x86-64-v4 +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: x86-64-v2, x86-64-v4 + diff --git a/ld/testsuite/ld-x86-64/property-x86-isa1.s b/ld/testsuite/ld-x86-64/property-x86-isa1.s new file mode 100644 index 0000000000..938dc78cd6 --- /dev/null +++ b/ld/testsuite/ld-x86-64/property-x86-isa1.s @@ -0,0 +1,54 @@ + .section ".note.gnu.property", "a" +.ifdef __64_bit__ + .p2align 3 +.else + .p2align 2 +.endif + .long 1f - 0f /* name length */ + .long 5f - 2f /* data length */ + .long 5 /* note type */ +0: .asciz "GNU" /* vendor name */ +1: +.ifdef __64_bit__ + .p2align 3 +.else + .p2align 2 +.endif +2: .long 0xc0008002 /* pr_type. */ + .long 4f - 3f /* pr_datasz. */ +3: + .long 0x1 +4: +.ifdef __64_bit__ + .p2align 3 +.else + .p2align 2 +.endif +5: + .section ".note.gnu.property", "a" +.ifdef __64_bit__ + .p2align 3 +.else + .p2align 2 +.endif + .long 1f - 0f /* name length */ + .long 5f - 2f /* data length */ + .long 5 /* note type */ +0: .asciz "GNU" /* vendor name */ +1: +.ifdef __64_bit__ + .p2align 3 +.else + .p2align 2 +.endif +2: .long 0xc0009000 /* pr_type. */ + .long 4f - 3f /* pr_datasz. */ +3: + .long 0x30 +4: +.ifdef __64_bit__ + .p2align 3 +.else + .p2align 2 +.endif +5: diff --git a/ld/testsuite/ld-x86-64/property-x86-isa2-x32.d b/ld/testsuite/ld-x86-64/property-x86-isa2-x32.d new file mode 100644 index 0000000000..c0f160784a --- /dev/null +++ b/ld/testsuite/ld-x86-64/property-x86-isa2-x32.d @@ -0,0 +1,9 @@ +#source: simple.s +#as: --x32 -mx86-used-note=no +#ld: -m elf32_x86_64 -z x86-64-v4 +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: x86-64-v4 diff --git a/ld/testsuite/ld-x86-64/property-x86-isa2.d b/ld/testsuite/ld-x86-64/property-x86-isa2.d new file mode 100644 index 0000000000..6a1d5ef947 --- /dev/null +++ b/ld/testsuite/ld-x86-64/property-x86-isa2.d @@ -0,0 +1,9 @@ +#source: simple.s +#as: --64 -defsym __64_bit__=1 -mx86-used-note=no +#ld: -m elf_x86_64 -z x86-64-v4 +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: x86-64-v4 diff --git a/ld/testsuite/ld-x86-64/property-x86-isa3-x32.d b/ld/testsuite/ld-x86-64/property-x86-isa3-x32.d new file mode 100644 index 0000000000..864e45294b --- /dev/null +++ b/ld/testsuite/ld-x86-64/property-x86-isa3-x32.d @@ -0,0 +1,9 @@ +#source: simple.s +#as: --x32 -mx86-used-note=no +#ld: -r -m elf32_x86_64 -z x86-64-v4 +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: x86-64-v4 diff --git a/ld/testsuite/ld-x86-64/property-x86-isa3.d b/ld/testsuite/ld-x86-64/property-x86-isa3.d new file mode 100644 index 0000000000..5d2fe8a0f4 --- /dev/null +++ b/ld/testsuite/ld-x86-64/property-x86-isa3.d @@ -0,0 +1,9 @@ +#source: simple.s +#as: --64 -defsym __64_bit__=1 -mx86-used-note=no +#ld: -r -m elf_x86_64 -z x86-64-v4 +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: x86-64-v4 diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk1a-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk1a-x32.d index 4bb55e5dc1..bc9857236c 100644 --- a/ld/testsuite/ld-x86-64/property-x86-shstk1a-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-shstk1a-x32.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk1a.d b/ld/testsuite/ld-x86-64/property-x86-shstk1a.d index 7882df634c..b61d272f68 100644 --- a/ld/testsuite/ld-x86-64/property-x86-shstk1a.d +++ b/ld/testsuite/ld-x86-64/property-x86-shstk1a.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk1b-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk1b-x32.d index a815c0d872..28807f2f6e 100644 --- a/ld/testsuite/ld-x86-64/property-x86-shstk1b-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-shstk1b-x32.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk1b.d b/ld/testsuite/ld-x86-64/property-x86-shstk1b.d index 5977760a0e..d30e15c948 100644 --- a/ld/testsuite/ld-x86-64/property-x86-shstk1b.d +++ b/ld/testsuite/ld-x86-64/property-x86-shstk1b.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: - x86 feature used: x86 + Properties: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk2-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk2-x32.d index 7321b6078d..66839c3251 100644 --- a/ld/testsuite/ld-x86-64/property-x86-shstk2-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-shstk2-x32.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk2.d b/ld/testsuite/ld-x86-64/property-x86-shstk2.d index e91c100f8c..e75dc3a617 100644 --- a/ld/testsuite/ld-x86-64/property-x86-shstk2.d +++ b/ld/testsuite/ld-x86-64/property-x86-shstk2.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline 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 3447f55d4e..f73ded6333 100644 --- a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d @@ -7,6 +7,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1 - x86 ISA used: SSE, SSE3, SSE4_1, AVX + Properties: x86 ISA needed: x86-64-v2, x86-64-v3, , x86 feature used: x86 + x86 ISA used: x86-64-v3, , , diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d index 0c647c9151..a653cf241e 100644 --- a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d +++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d @@ -7,6 +7,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1 - x86 ISA used: SSE, SSE3, SSE4_1, AVX + Properties: x86 ISA needed: x86-64-v2, x86-64-v3, , x86 feature used: x86 + x86 ISA used: x86-64-v3, , , 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 02bffac94b..893bf31de8 100644 --- a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d @@ -7,6 +7,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1 - x86 ISA used: SSE, SSE3, SSE4_1, AVX + Properties: x86 ISA needed: x86-64-v2, x86-64-v3, , x86 feature used: x86 + x86 ISA used: x86-64-v3, , , diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d index 0422825a08..b7be8bc9fe 100644 --- a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d +++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d @@ -7,6 +7,6 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1 - x86 ISA used: SSE, SSE3, SSE4_1, AVX + Properties: x86 ISA needed: x86-64-v2, x86-64-v3, , x86 feature used: x86 + x86 ISA used: x86-64-v3, , , diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk4-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk4-x32.d index 101fdfc7f1..a04e304850 100644 --- a/ld/testsuite/ld-x86-64/property-x86-shstk4-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-shstk4-x32.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk4.d b/ld/testsuite/ld-x86-64/property-x86-shstk4.d index c31dc38dfa..04cce50b65 100644 --- a/ld/testsuite/ld-x86-64/property-x86-shstk4.d +++ b/ld/testsuite/ld-x86-64/property-x86-shstk4.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk5-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk5-x32.d index 3528489003..f78e6f4280 100644 --- a/ld/testsuite/ld-x86-64/property-x86-shstk5-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-shstk5-x32.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk5.d b/ld/testsuite/ld-x86-64/property-x86-shstk5.d index aac1626217..c96782cdfb 100644 --- a/ld/testsuite/ld-x86-64/property-x86-shstk5.d +++ b/ld/testsuite/ld-x86-64/property-x86-shstk5.d @@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property [ ]+Owner[ ]+Data size[ ]+Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 Properties: x86 feature: SHSTK - x86 ISA used: x86 feature used: x86 + x86 ISA used: x86-64-baseline diff --git a/ld/testsuite/ld-x86-64/simple.s b/ld/testsuite/ld-x86-64/simple.s new file mode 100644 index 0000000000..b2b025b4b0 --- /dev/null +++ b/ld/testsuite/ld-x86-64/simple.s @@ -0,0 +1,4 @@ + .text + .globl _start +_start: + ret diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp index 59cad54a79..91702076b9 100644 --- a/ld/testsuite/ld-x86-64/x86-64.exp +++ b/ld/testsuite/ld-x86-64/x86-64.exp @@ -323,6 +323,8 @@ run_dump_test "property-x86-4a-x32" run_dump_test "property-x86-4b-x32" run_dump_test "property-x86-5" run_dump_test "property-x86-5-x32" +run_dump_test "property-x86-6" +run_dump_test "property-x86-6-x32" run_dump_test "property-x86-ibt1a" run_dump_test "property-x86-ibt1b" run_dump_test "property-x86-ibt1a-x32" @@ -438,6 +440,12 @@ run_dump_test "pr26711-2" run_dump_test "pr26711-2-x32" run_dump_test "pr26711-3" run_dump_test "pr26711-3-x32" +run_dump_test "property-x86-isa1" +run_dump_test "property-x86-isa1-x32" +run_dump_test "property-x86-isa2" +run_dump_test "property-x86-isa2-x32" +run_dump_test "property-x86-isa3" +run_dump_test "property-x86-isa3-x32" if ![istarget "x86_64-*-linux*"] { return -- 2.34.1