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.
This commit is contained in:
H.J. Lu 2020-10-09 05:05:57 -07:00
parent 3d87245cc1
commit 32930e4edb
211 changed files with 1149 additions and 404 deletions

View file

@ -1,3 +1,12 @@
2020-10-09 H.J. Lu <hongjiu.lu@intel.com>
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 <hongjiu.lu@intel.com> 2020-10-06 H.J. Lu <hongjiu.lu@intel.com>
PR ld/26711 PR ld/26711

View file

@ -55,6 +55,9 @@ struct elf_linker_x86_params
/* TRUE if --dynamic-linker is passed at command-line. */ /* TRUE if --dynamic-linker is passed at command-line. */
unsigned int has_dynamic_linker : 1; unsigned int has_dynamic_linker : 1;
/* X86-64 ISA level needed. */
unsigned int isa_level;
/* Report missing IBT and SHSTK properties. */ /* Report missing IBT and SHSTK properties. */
enum elf_x86_cet_report cet_report; enum elf_x86_cet_report cet_report;

View file

@ -2337,6 +2337,8 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
{ {
unsigned int number, features; unsigned int number, features;
bfd_boolean updated = FALSE; 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; unsigned int pr_type = aprop != NULL ? aprop->pr_type : bprop->pr_type;
if (pr_type == GNU_PROPERTY_X86_COMPAT_ISA_1_USED 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_LO
&& pr_type <= GNU_PROPERTY_X86_UINT32_OR_HI)) && 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) if (aprop != NULL && bprop != NULL)
{ {
number = aprop->u.number; 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. */ /* Remove the property if all bits are empty. */
if (aprop->u.number == 0) 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. */ /* Only one of APROP and BPROP can be NULL. */
if (aprop != NULL) if (aprop != NULL)
{ {
aprop->u.number |= features;
if (aprop->u.number == 0) if (aprop->u.number == 0)
{ {
/* Remove APROP if all bits are empty. */ /* 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 /* Return TRUE if APROP is NULL and all bits of BPROP
aren't empty to indicate that BPROP should be added aren't empty to indicate that BPROP should be added
to ABFD. */ to ABFD. */
bprop->u.number |= features;
updated = bprop->u.number != 0; 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. 2. If APROP is NULL, remove x86 feature.
3. Otherwise, do nothing. 3. Otherwise, do nothing.
*/ */
const struct elf_backend_data *bed bed = get_elf_backend_data (info->output_bfd);
= get_elf_backend_data (info->output_bfd); htab = elf_x86_hash_table (info, bed->target_id);
struct elf_x86_link_hash_table *htab
= elf_x86_hash_table (info, bed->target_id);
if (!htab) if (!htab)
abort (); abort ();
if (aprop != NULL && bprop != NULL) if (aprop != NULL && bprop != NULL)
@ -2490,7 +2514,7 @@ _bfd_x86_elf_link_setup_gnu_properties
asection *sec, *pltsec; asection *sec, *pltsec;
bfd *dynobj; bfd *dynobj;
bfd_boolean use_ibt_plt; bfd_boolean use_ibt_plt;
unsigned int plt_alignment, features; unsigned int plt_alignment, features, isa_level;
struct elf_x86_link_hash_table *htab; struct elf_x86_link_hash_table *htab;
bfd *pbfd; bfd *pbfd;
bfd *ebfd = NULL; 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))) if (!(htab->params->cet_report & (cet_report_ibt | cet_report_shstk)))
htab->params->cet_report = cet_report_none; 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) if (ebfd != NULL)
{ {
prop = NULL; prop = NULL;
@ -2546,6 +2588,16 @@ _bfd_x86_elf_link_setup_gnu_properties
prop->pr_kind = property_number; 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. */ /* Create the GNU property note section if needed. */
if (prop != NULL && pbfd == NULL) if (prop != NULL && pbfd == NULL)
{ {

View file

@ -1,3 +1,40 @@
2020-10-09 H.J. Lu <hongjiu.lu@intel.com>
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 <nickc@redhat.com> 2020-10-06 Nick Clifton <nickc@redhat.com>
* objcopy.c (copy_object): Compare input and output sections by * objcopy.c (copy_object): Compare input and output sections by

View file

@ -18225,7 +18225,7 @@ decode_x86_compat_isa (unsigned int bitmask)
} }
static void static void
decode_x86_isa (unsigned int bitmask) decode_x86_compat_2_isa (unsigned int bitmask)
{ {
if (!bitmask) if (!bitmask)
{ {
@ -18240,79 +18240,79 @@ decode_x86_isa (unsigned int bitmask)
bitmask &= ~ bit; bitmask &= ~ bit;
switch (bit) switch (bit)
{ {
case GNU_PROPERTY_X86_ISA_1_CMOV: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_CMOV:
printf ("CMOV"); printf ("CMOV");
break; break;
case GNU_PROPERTY_X86_ISA_1_SSE: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE:
printf ("SSE"); printf ("SSE");
break; break;
case GNU_PROPERTY_X86_ISA_1_SSE2: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE2:
printf ("SSE2"); printf ("SSE2");
break; break;
case GNU_PROPERTY_X86_ISA_1_SSE3: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE3:
printf ("SSE3"); printf ("SSE3");
break; break;
case GNU_PROPERTY_X86_ISA_1_SSSE3: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSSE3:
printf ("SSSE3"); printf ("SSSE3");
break; break;
case GNU_PROPERTY_X86_ISA_1_SSE4_1: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE4_1:
printf ("SSE4_1"); printf ("SSE4_1");
break; break;
case GNU_PROPERTY_X86_ISA_1_SSE4_2: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE4_2:
printf ("SSE4_2"); printf ("SSE4_2");
break; break;
case GNU_PROPERTY_X86_ISA_1_AVX: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX:
printf ("AVX"); printf ("AVX");
break; break;
case GNU_PROPERTY_X86_ISA_1_AVX2: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX2:
printf ("AVX2"); printf ("AVX2");
break; break;
case GNU_PROPERTY_X86_ISA_1_FMA: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_FMA:
printf ("FMA"); printf ("FMA");
break; break;
case GNU_PROPERTY_X86_ISA_1_AVX512F: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512F:
printf ("AVX512F"); printf ("AVX512F");
break; break;
case GNU_PROPERTY_X86_ISA_1_AVX512CD: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512CD:
printf ("AVX512CD"); printf ("AVX512CD");
break; break;
case GNU_PROPERTY_X86_ISA_1_AVX512ER: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512ER:
printf ("AVX512ER"); printf ("AVX512ER");
break; break;
case GNU_PROPERTY_X86_ISA_1_AVX512PF: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512PF:
printf ("AVX512PF"); printf ("AVX512PF");
break; break;
case GNU_PROPERTY_X86_ISA_1_AVX512VL: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512VL:
printf ("AVX512VL"); printf ("AVX512VL");
break; break;
case GNU_PROPERTY_X86_ISA_1_AVX512DQ: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512DQ:
printf ("AVX512DQ"); printf ("AVX512DQ");
break; break;
case GNU_PROPERTY_X86_ISA_1_AVX512BW: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512BW:
printf ("AVX512BW"); printf ("AVX512BW");
break; break;
case GNU_PROPERTY_X86_ISA_1_AVX512_4FMAPS: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_4FMAPS:
printf ("AVX512_4FMAPS"); printf ("AVX512_4FMAPS");
break; break;
case GNU_PROPERTY_X86_ISA_1_AVX512_4VNNIW: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_4VNNIW:
printf ("AVX512_4VNNIW"); printf ("AVX512_4VNNIW");
break; break;
case GNU_PROPERTY_X86_ISA_1_AVX512_BITALG: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_BITALG:
printf ("AVX512_BITALG"); printf ("AVX512_BITALG");
break; break;
case GNU_PROPERTY_X86_ISA_1_AVX512_IFMA: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_IFMA:
printf ("AVX512_IFMA"); printf ("AVX512_IFMA");
break; break;
case GNU_PROPERTY_X86_ISA_1_AVX512_VBMI: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VBMI:
printf ("AVX512_VBMI"); printf ("AVX512_VBMI");
break; break;
case GNU_PROPERTY_X86_ISA_1_AVX512_VBMI2: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VBMI2:
printf ("AVX512_VBMI2"); printf ("AVX512_VBMI2");
break; break;
case GNU_PROPERTY_X86_ISA_1_AVX512_VNNI: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VNNI:
printf ("AVX512_VNNI"); printf ("AVX512_VNNI");
break; break;
case GNU_PROPERTY_X86_ISA_1_AVX512_BF16: case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_BF16:
printf ("AVX512_BF16"); printf ("AVX512_BF16");
break; break;
default: 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 (_("<unknown: %x>"), bit);
break;
}
if (bitmask)
printf (", ");
}
}
static void static void
decode_x86_feature_1 (unsigned int bitmask) 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: case GNU_PROPERTY_X86_FEATURE_2_TMM:
printf ("TMM"); printf ("TMM");
break; break;
case GNU_PROPERTY_X86_FEATURE_2_MASK:
printf ("MASK");
break;
case GNU_PROPERTY_X86_FEATURE_2_FXSR: case GNU_PROPERTY_X86_FEATURE_2_FXSR:
printf ("FXSR"); printf ("FXSR");
break; break;
@ -18570,6 +18607,28 @@ print_gnu_property_note (Filedata * filedata, Elf_Internal_Note * pnote)
} }
goto next; goto next;
case GNU_PROPERTY_X86_COMPAT_2_ISA_1_USED:
if (datasz != 4)
printf (_("x86 ISA used: <corrupt length: %#x> "),
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: <corrupt length: %#x> "),
datasz);
else
{
printf ("x86 ISA needed: ");
decode_x86_compat_2_isa (bitmask);
}
goto next;
default: default:
break; break;
} }

View file

@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
Properties: x86 feature: <None> Properties: x86 feature: <None>
GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86 x86 feature used: x86

View file

@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
Properties: x86 feature: IBT Properties: x86 feature: IBT
GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86 x86 feature used: x86

View file

@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
GNU 0x00000008 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000008 NT_GNU_PROPERTY_TYPE_0
Properties: no copy on protected Properties: no copy on protected
GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86 x86 feature used: x86

View file

@ -8,8 +8,8 @@ Displaying notes found in: .note.gnu.property
GNU 0x0000002c NT_GNU_PROPERTY_TYPE_0 GNU 0x0000002c NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0x800000 Properties: stack size: 0x800000
no copy on protected 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, <unknown: 2000000>, <unknown: 4000000>, <unknown: 8000000>, <unknown: 10000000>, <unknown: 20000000>, <unknown: 40000000> x86 ISA used: x86-64-v2, x86-64-v3, x86-64-v4, <unknown: 8>, <unknown: 10>, <unknown: 20>, <unknown: 40>, <unknown: 80>, <unknown: 100>, <unknown: 200>, <unknown: 400>, <unknown: 800>, <unknown: 1000>, <unknown: 2000>, <unknown: 4000>, <unknown: 8000>, <unknown: 10000>, <unknown: 20000>, <unknown: 40000>, <unknown: 80000>, <unknown: 100000>, <unknown: 200000>, <unknown: 400000>, <unknown: 800000>, <unknown: 1000000>, <unknown: 2000000>, <unknown: 4000000>, <unknown: 8000000>, <unknown: 10000000>, <unknown: 20000000>, <unknown: 40000000>
x86 ISA needed: CMOV, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2, FMA, AVX512F, AVX512CD, AVX512ER, AVX512PF, AVX512VL, AVX512DQ x86 ISA needed: x86-64-v2, x86-64-v3, x86-64-v4, <unknown: 8>, <unknown: 10>, <unknown: 20>, <unknown: 40>, <unknown: 80>, <unknown: 100>, <unknown: 200>, <unknown: 400>, <unknown: 800>, <unknown: 1000>, <unknown: 2000>, <unknown: 4000>, <unknown: 8000>
GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86 x86 feature used: x86

View file

@ -19,14 +19,14 @@
.long 0 /* pr_datasz. */ .long 0 /* pr_datasz. */
.p2align 2 .p2align 2
/* GNU_PROPERTY_X86_ISA_1_USED */ /* GNU_PROPERTY_X86_ISA_1_USED */
.long 0xc0010000 /* pr_type. */ .long 0xc0010002 /* pr_type. */
.long 4f - 3f /* pr_datasz. */ .long 4f - 3f /* pr_datasz. */
3: 3:
.long 0x7fffffff .long 0x7fffffff
4: 4:
.p2align 2 .p2align 2
/* GNU_PROPERTY_X86_ISA_1_NEEDED */ /* GNU_PROPERTY_X86_ISA_1_NEEDED */
.long 0xc0008000 /* pr_type. */ .long 0xc0008002 /* pr_type. */
.long 4f - 3f /* pr_datasz. */ .long 4f - 3f /* pr_datasz. */
3: 3:
.long 0xffff .long 0xffff

View file

@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
Properties: x86 feature: SHSTK Properties: x86 feature: SHSTK
GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86 x86 feature used: x86

View file

@ -9,5 +9,5 @@ Displaying notes found in: .note.gnu.property
GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
Properties: x86 feature: <None> Properties: x86 feature: <None>
GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86 x86 feature used: x86

View file

@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
Properties: x86 feature: <None> Properties: x86 feature: <None>
GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86 x86 feature used: x86

View file

@ -9,5 +9,5 @@ Displaying notes found in: .note.gnu.property
GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
Properties: x86 feature: IBT Properties: x86 feature: IBT
GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86 x86 feature used: x86

View file

@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
Properties: x86 feature: IBT Properties: x86 feature: IBT
GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86 x86 feature used: x86

View file

@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
GNU 0x00000008 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000008 NT_GNU_PROPERTY_TYPE_0
Properties: no copy on protected Properties: no copy on protected
GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86 x86 feature used: x86

View file

@ -8,8 +8,8 @@ Displaying notes found in: .note.gnu.property
GNU 0x00000038 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000038 NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0x800000 Properties: stack size: 0x800000
no copy on protected 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, <unknown: 2000000>, <unknown: 4000000>, <unknown: 8000000>, <unknown: 10000000>, <unknown: 20000000>, <unknown: 40000000> x86 ISA used: x86-64-v2, x86-64-v3, x86-64-v4, <unknown: 8>, <unknown: 10>, <unknown: 20>, <unknown: 40>, <unknown: 80>, <unknown: 100>, <unknown: 200>, <unknown: 400>, <unknown: 800>, <unknown: 1000>, <unknown: 2000>, <unknown: 4000>, <unknown: 8000>, <unknown: 10000>, <unknown: 20000>, <unknown: 40000>, <unknown: 80000>, <unknown: 100000>, <unknown: 200000>, <unknown: 400000>, <unknown: 800000>, <unknown: 1000000>, <unknown: 2000000>, <unknown: 4000000>, <unknown: 8000000>, <unknown: 10000000>, <unknown: 20000000>, <unknown: 40000000>
x86 ISA needed: CMOV, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2, FMA, AVX512F, AVX512CD, AVX512ER, AVX512PF, AVX512VL, AVX512DQ x86 ISA needed: x86-64-v2, x86-64-v3, x86-64-v4, <unknown: 8>, <unknown: 10>, <unknown: 20>, <unknown: 40>, <unknown: 80>, <unknown: 100>, <unknown: 200>, <unknown: 400>, <unknown: 800>, <unknown: 1000>, <unknown: 2000>, <unknown: 4000>, <unknown: 8000>
GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86 x86 feature used: x86

View file

@ -19,14 +19,14 @@
.long 0 /* pr_datasz. */ .long 0 /* pr_datasz. */
.p2align 3 .p2align 3
/* GNU_PROPERTY_X86_ISA_1_USED */ /* GNU_PROPERTY_X86_ISA_1_USED */
.long 0xc0010000 /* pr_type. */ .long 0xc0010002 /* pr_type. */
.long 4f - 3f /* pr_datasz. */ .long 4f - 3f /* pr_datasz. */
3: 3:
.long 0x7fffffff .long 0x7fffffff
4: 4:
.p2align 3 .p2align 3
/* GNU_PROPERTY_X86_ISA_1_NEEDED */ /* GNU_PROPERTY_X86_ISA_1_NEEDED */
.long 0xc0008000 /* pr_type. */ .long 0xc0008002 /* pr_type. */
.long 4f - 3f /* pr_datasz. */ .long 4f - 3f /* pr_datasz. */
3: 3:
.long 0xffff .long 0xffff

View file

@ -7,6 +7,6 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA needed: SSE4_1, AVX Properties: x86 ISA needed: <unknown: 20>, <unknown: 80>
x86 ISA used: SSE, SSE3, SSE4_1, AVX
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>

View file

@ -7,6 +7,6 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA needed: SSE4_1, AVX Properties: x86 ISA needed: <unknown: 20>, <unknown: 80>
x86 ISA used: SSE, SSE3, SSE4_1, AVX
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>

View file

@ -17,7 +17,7 @@
.p2align 2 .p2align 2
.endif .endif
/* GNU_PROPERTY_X86_ISA_1_USED */ /* GNU_PROPERTY_X86_ISA_1_USED */
.long 0xc0010000 /* pr_type. */ .long 0xc0010002 /* pr_type. */
.long 5f - 4f /* pr_datasz. */ .long 5f - 4f /* pr_datasz. */
4: 4:
.long 0xa .long 0xa
@ -48,7 +48,7 @@
.p2align 2 .p2align 2
.endif .endif
/* GNU_PROPERTY_X86_ISA_1_NEEDED */ /* GNU_PROPERTY_X86_ISA_1_NEEDED */
.long 0xc0008000 /* pr_type. */ .long 0xc0008002 /* pr_type. */
.long 5f - 4f /* pr_datasz. */ .long 5f - 4f /* pr_datasz. */
4: 4:
.long 0xa0 .long 0xa0
@ -79,7 +79,7 @@
.p2align 2 .p2align 2
.endif .endif
/* GNU_PROPERTY_X86_ISA_1_USED */ /* GNU_PROPERTY_X86_ISA_1_USED */
.long 0xc0010000 /* pr_type. */ .long 0xc0010002 /* pr_type. */
.long 5f - 4f /* pr_datasz. */ .long 5f - 4f /* pr_datasz. */
4: 4:
.long 0xa0 .long 0xa0

View file

@ -17,7 +17,7 @@
.p2align 2 .p2align 2
.endif .endif
/* GNU_PROPERTY_X86_ISA_1_USED */ /* GNU_PROPERTY_X86_ISA_1_USED */
.long 0xc0010000 /* pr_type. */ .long 0xc0010002 /* pr_type. */
.long 5f - 4f /* pr_datasz. */ .long 5f - 4f /* pr_datasz. */
4: 4:
.long 0xa .long 0xa

View file

@ -7,4 +7,4 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: SSE, SSE3 Properties: x86 ISA used: x86-64-v3, <unknown: 8>

View file

@ -7,4 +7,4 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: SSE, SSE3 Properties: x86 ISA used: x86-64-v3, <unknown: 8>

View file

@ -48,7 +48,7 @@
.p2align 2 .p2align 2
.endif .endif
/* GNU_PROPERTY_X86_ISA_1_USED */ /* GNU_PROPERTY_X86_ISA_1_USED */
.long 0xc0010000 /* pr_type. */ .long 0xc0010002 /* pr_type. */
.long 5f - 4f /* pr_datasz. */ .long 5f - 4f /* pr_datasz. */
4: 4:
.long 0xa .long 0xa
@ -79,7 +79,7 @@
.p2align 2 .p2align 2
.endif .endif
/* GNU_PROPERTY_X86_ISA_1_NEEDED */ /* GNU_PROPERTY_X86_ISA_1_NEEDED */
.long 0xc0008000 /* pr_type. */ .long 0xc0008002 /* pr_type. */
.long 5f - 4f /* pr_datasz. */ .long 5f - 4f /* pr_datasz. */
4: 4:
.long 0xa0 .long 0xa0
@ -110,7 +110,7 @@
.p2align 2 .p2align 2
.endif .endif
/* GNU_PROPERTY_X86_ISA_1_USED */ /* GNU_PROPERTY_X86_ISA_1_USED */
.long 0xc0010000 /* pr_type. */ .long 0xc0010002 /* pr_type. */
.long 5f - 4f /* pr_datasz. */ .long 5f - 4f /* pr_datasz. */
4: 4:
.long 0xa0 .long 0xa0

View file

@ -7,6 +7,6 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA needed: SSE4_1, AVX Properties: x86 ISA needed: <unknown: 20>, <unknown: 80>
x86 ISA used: SSE, SSE3, SSE4_1, AVX
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>

View file

@ -7,6 +7,6 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA needed: SSE4_1, AVX Properties: x86 ISA needed: <unknown: 20>, <unknown: 80>
x86 ISA used: SSE, SSE3, SSE4_1, AVX
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>

View file

@ -8,6 +8,6 @@ Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x00000040 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000040 NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0xffffffff Properties: stack size: 0xffffffff
x86 ISA needed: SSE4_1, AVX x86 ISA needed: <unknown: 20>, <unknown: 80>
x86 ISA used: SSE, SSE3, SSE4_1, AVX
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>

View file

@ -8,6 +8,6 @@ Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0xffffffff Properties: stack size: 0xffffffff
x86 ISA needed: SSE4_1, AVX x86 ISA needed: <unknown: 20>, <unknown: 80>
x86 ISA used: SSE, SSE3, SSE4_1, AVX
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>

View file

@ -9,5 +9,5 @@ Displaying notes found in: .note.gnu.property
GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
Properties: x86 feature: SHSTK Properties: x86 feature: SHSTK
GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86 x86 feature used: x86

View file

@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
Properties: x86 feature: SHSTK Properties: x86 feature: SHSTK
GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86 x86 feature used: x86

View file

@ -1,3 +1,43 @@
2020-10-09 H.J. Lu <hongjiu.lu@intel.com>
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 <alex.coplan@arm.com> 2020-10-06 Alex Coplan <alex.coplan@arm.com>
PR 26699 PR 26699

View file

@ -374,7 +374,9 @@ struct _i386_insn
/* Use ZMM state. */ /* Use ZMM state. */
xstate_zmm = 1 << 3 | xstate_ymm, xstate_zmm = 1 << 3 | xstate_ymm,
/* Use TMM state. */ /* Use TMM state. */
xstate_tmm = 1 << 4 xstate_tmm = 1 << 4,
/* Use MASK state. */
xstate_mask = 1 << 5
} xstate; } xstate;
/* Has GOTPC or TLS relocation. */ /* Has GOTPC or TLS relocation. */
@ -4860,7 +4862,7 @@ md_assemble (char *line)
for (j = 0; j < i.operands; j++) for (j = 0; j < i.operands; j++)
{ {
i.types[j] = operand_type_and (i.types[j], i.tm.operand_types[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: default:
break; break;
@ -4868,16 +4870,16 @@ md_assemble (char *line)
i.xstate |= xstate_mmx; i.xstate |= xstate_mmx;
break; break;
case RegMask: case RegMask:
i.xstate |= xstate_zmm; i.xstate |= xstate_mask;
break; break;
case RegSIMD: case RegSIMD:
if (i.tm.operand_types[j].bitfield.tmmword) if (i.types[j].bitfield.tmmword)
i.xstate |= xstate_tmm; i.xstate |= xstate_tmm;
else if (i.tm.operand_types[j].bitfield.zmmword) else if (i.types[j].bitfield.zmmword)
i.xstate |= xstate_zmm; i.xstate |= xstate_zmm;
else if (i.tm.operand_types[j].bitfield.ymmword) else if (i.types[j].bitfield.ymmword)
i.xstate |= xstate_ymm; i.xstate |= xstate_ymm;
else if (i.tm.operand_types[j].bitfield.xmmword) else if (i.types[j].bitfield.xmmword)
i.xstate |= xstate_xmm; i.xstate |= xstate_xmm;
break; break;
} }
@ -9167,56 +9169,51 @@ output_insn (void)
#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) #if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
if (IS_ELF && x86_used_note && now_seg != absolute_section) if (IS_ELF && x86_used_note && now_seg != absolute_section)
{ {
if (i.tm.cpu_flags.bitfield.cpucmov) if ((i.xstate & xstate_tmm) == xstate_tmm
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_CMOV; || i.tm.cpu_flags.bitfield.cpuamx_tile)
if (i.tm.cpu_flags.bitfield.cpusse) x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_TMM;
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_SSE;
if (i.tm.cpu_flags.bitfield.cpusse2) if (i.tm.cpu_flags.bitfield.cpusse3
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_SSE2; || i.tm.cpu_flags.bitfield.cpussse3
if (i.tm.cpu_flags.bitfield.cpusse3) || i.tm.cpu_flags.bitfield.cpusse4_1
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_SSE3; || i.tm.cpu_flags.bitfield.cpusse4_2
if (i.tm.cpu_flags.bitfield.cpussse3) || i.tm.cpu_flags.bitfield.cpucx16
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_SSSE3; || i.tm.cpu_flags.bitfield.cpupopcnt
if (i.tm.cpu_flags.bitfield.cpusse4_1) /* LAHF-SAHF insns in 64-bit mode. */
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_SSE4_1; || (flag_code == CODE_64BIT
if (i.tm.cpu_flags.bitfield.cpusse4_2) && (i.tm.base_opcode | 1) == 0x9f))
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_SSE4_2; x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_V2;
if (i.tm.cpu_flags.bitfield.cpuavx) if (i.tm.cpu_flags.bitfield.cpuavx
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX; || i.tm.cpu_flags.bitfield.cpuavx2
if (i.tm.cpu_flags.bitfield.cpuavx2) /* Any VEX encoded insns execpt for CpuAVX512F, CpuAVX512BW,
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX2; CpuAVX512DQ, LPW, TBM and AMX. */
if (i.tm.cpu_flags.bitfield.cpufma) || (i.tm.opcode_modifier.vex
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_FMA; && !i.tm.cpu_flags.bitfield.cpuavx512f
if (i.tm.cpu_flags.bitfield.cpuavx512f) && !i.tm.cpu_flags.bitfield.cpuavx512bw
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512F; && !i.tm.cpu_flags.bitfield.cpuavx512dq
if (i.tm.cpu_flags.bitfield.cpuavx512cd) && !i.tm.cpu_flags.bitfield.cpulwp
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512CD; && !i.tm.cpu_flags.bitfield.cputbm
if (i.tm.cpu_flags.bitfield.cpuavx512er) && !(x86_feature_2_used & GNU_PROPERTY_X86_FEATURE_2_TMM))
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512ER; || i.tm.cpu_flags.bitfield.cpuf16c
if (i.tm.cpu_flags.bitfield.cpuavx512pf) || i.tm.cpu_flags.bitfield.cpufma
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512PF; || i.tm.cpu_flags.bitfield.cpulzcnt
if (i.tm.cpu_flags.bitfield.cpuavx512vl) || i.tm.cpu_flags.bitfield.cpumovbe
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512VL; || i.tm.cpu_flags.bitfield.cpuxsave
if (i.tm.cpu_flags.bitfield.cpuavx512dq) || i.tm.cpu_flags.bitfield.cpuxsavec
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512DQ; || i.tm.cpu_flags.bitfield.cpuxsaveopt
if (i.tm.cpu_flags.bitfield.cpuavx512bw) || i.tm.cpu_flags.bitfield.cpuxsaves)
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512BW; x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_V3;
if (i.tm.cpu_flags.bitfield.cpuavx512_4fmaps) if (i.tm.cpu_flags.bitfield.cpuavx512f
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_4FMAPS; || i.tm.cpu_flags.bitfield.cpuavx512bw
if (i.tm.cpu_flags.bitfield.cpuavx512_4vnniw) || i.tm.cpu_flags.bitfield.cpuavx512dq
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_4VNNIW; || i.tm.cpu_flags.bitfield.cpuavx512vl
if (i.tm.cpu_flags.bitfield.cpuavx512_bitalg) /* Any EVEX encoded insns except for AVX512ER, AVX512PF and
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_BITALG; VNNIW. */
if (i.tm.cpu_flags.bitfield.cpuavx512ifma) || (i.tm.opcode_modifier.evex
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_IFMA; && !i.tm.cpu_flags.bitfield.cpuavx512er
if (i.tm.cpu_flags.bitfield.cpuavx512vbmi) && !i.tm.cpu_flags.bitfield.cpuavx512pf
x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_VBMI; && !i.tm.cpu_flags.bitfield.cpuavx512_4vnniw))
if (i.tm.cpu_flags.bitfield.cpuavx512_vbmi2) x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_V4;
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.tm.cpu_flags.bitfield.cpu8087 if (i.tm.cpu_flags.bitfield.cpu8087
|| i.tm.cpu_flags.bitfield.cpu287 || i.tm.cpu_flags.bitfield.cpu287
@ -9228,6 +9225,15 @@ output_insn (void)
|| i.tm.base_opcode == 0xf77 /* emms */ || i.tm.base_opcode == 0xf77 /* emms */
|| i.tm.base_opcode == 0xf0e /* femms */) || i.tm.base_opcode == 0xf0e /* femms */)
x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_MMX; 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) if ((i.xstate & xstate_xmm)
|| i.tm.cpu_flags.bitfield.cpuwidekl || i.tm.cpu_flags.bitfield.cpuwidekl
|| i.tm.cpu_flags.bitfield.cpukl) || i.tm.cpu_flags.bitfield.cpukl)
@ -9236,6 +9242,8 @@ output_insn (void)
x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_YMM; x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_YMM;
if ((i.xstate & xstate_zmm) == xstate_zmm) if ((i.xstate & xstate_zmm) == xstate_zmm)
x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_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) if (i.tm.cpu_flags.bitfield.cpufxsr)
x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_FXSR; x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_FXSR;
if (i.tm.cpu_flags.bitfield.cpuxsave) if (i.tm.cpu_flags.bitfield.cpuxsave)
@ -9244,10 +9252,6 @@ output_insn (void)
x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_XSAVEOPT; x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_XSAVEOPT;
if (i.tm.cpu_flags.bitfield.cpuxsavec) if (i.tm.cpu_flags.bitfield.cpuxsavec)
x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_XSAVEC; 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 #endif

View file

@ -645,6 +645,9 @@ if [gas_32_check] then {
run_dump_test "property-5" run_dump_test "property-5"
run_dump_test "property-6" run_dump_test "property-6"
run_dump_test "property-10" run_dump_test "property-10"
run_dump_test "property-11"
run_dump_test "property-12"
run_dump_test "property-13"
if {[istarget "*-*-linux*"]} then { if {[istarget "*-*-linux*"]} then {
run_dump_test "align-branch-3" 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-8"
run_dump_test "x86-64-property-9" run_dump_test "x86-64-property-9"
run_dump_test "x86-64-property-10" 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 { if {[istarget "*-*-linux*"]} then {
run_dump_test "x86-64-align-branch-3" run_dump_test "x86-64-align-branch-3"

View file

@ -5,4 +5,4 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline

View file

@ -17,7 +17,7 @@
.p2align 2 .p2align 2
.endif .endif
/* GNU_PROPERTY_X86_ISA_1_USED */ /* GNU_PROPERTY_X86_ISA_1_USED */
.long 0xc0010000 /* pr_type. */ .long 0xc0010002 /* pr_type. */
.long 5f - 4f /* pr_datasz. */ .long 5f - 4f /* pr_datasz. */
4: 4:
.long 0 .long 0

View file

@ -5,5 +5,5 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86, XMM x86 feature used: x86, XMM

View file

@ -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

View file

@ -0,0 +1,2 @@
.text
vaesenclast %xmm4,%xmm6,%xmm2

View file

@ -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

View file

@ -0,0 +1,2 @@
.text
vpdpwssd %xmm2, %xmm4, %xmm2{%k3}

View file

@ -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

View file

@ -0,0 +1,2 @@
.text
vscatterpf1dps 123(%ebp,%zmm7,8){%k1}

View file

@ -5,5 +5,5 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 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 Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86, x87, MMX, XMM, YMM, ZMM, FXSR, XSAVE, XSAVEOPT, XSAVEC x86 feature used: x86

View file

@ -1,32 +1,2 @@
.text .text
fsin
movq %mm0, %mm1
fxsave (%eax)
xsave (%eax)
xsaveopt (%eax)
xsavec (%eax)
cmove %eax,%ebx 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

View file

@ -5,5 +5,5 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: SSE Properties: x86 ISA used: x86-64-v2
x86 feature used: x86, MMX, XMM x86 feature used: x86, XMM

View file

@ -1,2 +1,2 @@
.text .text
cvtpi2ps (%eax), %xmm0 addsubpd (%eax), %xmm0

View file

@ -5,5 +5,5 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: AVX Properties: x86 ISA used: x86-64-v3
x86 feature used: x86, XMM, YMM x86 feature used: x86, XMM

View file

@ -5,5 +5,5 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: AVX512F Properties: x86 ISA used: x86-64-v4
x86 feature used: x86, XMM, YMM, ZMM x86 feature used: x86, XMM

View file

@ -5,5 +5,5 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: AVX512F Properties: x86 ISA used: x86-64-v4
x86 feature used: x86, XMM, YMM, ZMM x86 feature used: x86, MASK

View file

@ -6,4 +6,4 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline

View file

@ -6,5 +6,5 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86, XMM x86 feature used: x86, XMM

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,2 @@
.text
sahf

View file

@ -6,5 +6,5 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 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 Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86, x87, MMX, XMM, YMM, ZMM, FXSR, XSAVE, XSAVEOPT, XSAVEC x86 feature used: x86

View file

@ -6,5 +6,5 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: SSE Properties: x86 ISA used: x86-64-v2
x86 feature used: x86, MMX, XMM x86 feature used: x86, XMM

View file

@ -6,5 +6,5 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: AVX Properties: x86 ISA used: x86-64-v3
x86 feature used: x86, XMM, YMM x86 feature used: x86, XMM

View file

@ -6,5 +6,5 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: AVX512F Properties: x86 ISA used: x86-64-v4
x86 feature used: x86, XMM, YMM, ZMM x86 feature used: x86, XMM

View file

@ -6,5 +6,5 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: AVX512F Properties: x86 ISA used: x86-64-v4
x86 feature used: x86, XMM, YMM, ZMM x86 feature used: x86, MASK

View file

@ -1,9 +1,9 @@
#name: x86-64 property 4 #name: x86-64 property 7
#as: -mx86-used-note=yes --generate-missing-build-notes=no #as: -mx86-used-note=yes --generate-missing-build-notes=no
#readelf: -n #readelf: -n
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86, TMM x86 feature used: x86, TMM

View file

@ -1,9 +1,9 @@
#name: x86-64 property 4 #name: x86-64 property 8
#as: -mx86-used-note=yes --generate-missing-build-notes=no #as: -mx86-used-note=yes --generate-missing-build-notes=no
#readelf: -n #readelf: -n
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86, TMM x86 feature used: x86, TMM

View file

@ -1,9 +1,9 @@
#name: x86-64 property 4 #name: x86-64 property 9
#as: -mx86-used-note=yes --generate-missing-build-notes=no #as: -mx86-used-note=yes --generate-missing-build-notes=no
#readelf: -n #readelf: -n
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline
x86 feature used: x86, TMM x86 feature used: x86, TMM

View file

@ -1,3 +1,19 @@
2020-10-09 H.J. Lu <hongjiu.lu@intel.com>
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 <mark@klomp.org> 2020-09-23 Mark Wielaard <mark@klomp.org>
Sync with GCC Sync with GCC

View file

@ -805,44 +805,31 @@
(GNU_PROPERTY_X86_UINT32_AND_LO + 0) (GNU_PROPERTY_X86_UINT32_AND_LO + 0)
#define GNU_PROPERTY_X86_ISA_1_NEEDED \ #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 \ #define GNU_PROPERTY_X86_FEATURE_2_NEEDED \
(GNU_PROPERTY_X86_UINT32_OR_LO + 1) (GNU_PROPERTY_X86_UINT32_OR_LO + 1)
#define GNU_PROPERTY_X86_ISA_1_USED \ #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 \ #define GNU_PROPERTY_X86_FEATURE_2_USED \
(GNU_PROPERTY_X86_UINT32_OR_AND_LO + 1) (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_IBT (1U << 0)
#define GNU_PROPERTY_X86_FEATURE_1_SHSTK (1U << 1) #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_X86 (1U << 0)
#define GNU_PROPERTY_X86_FEATURE_2_X87 (1U << 1) #define GNU_PROPERTY_X86_FEATURE_2_X87 (1U << 1)
#define GNU_PROPERTY_X86_FEATURE_2_MMX (1U << 2) #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_XSAVEOPT (1U << 8)
#define GNU_PROPERTY_X86_FEATURE_2_XSAVEC (1U << 9) #define GNU_PROPERTY_X86_FEATURE_2_XSAVEC (1U << 9)
#define GNU_PROPERTY_X86_FEATURE_2_TMM (1U << 10) #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. */ /* AArch64 specific GNU PROPERTY. */
#define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000 #define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000

View file

@ -1,3 +1,155 @@
2020-10-09 H.J. Lu <hongjiu.lu@intel.com>
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 <hongjiu.lu@intel.com> 2020-10-06 H.J. Lu <hongjiu.lu@intel.com>
* testsuite/ld-i386/property-3.r: Updated for Fedora binary * testsuite/ld-i386/property-3.r: Updated for Fedora binary

View file

@ -1,5 +1,8 @@
-*- text -*- -*- 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. * 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 * The creation of PE format DLLs now defaults to using a more secure set of DLL

View file

@ -4,6 +4,7 @@ source_sh ${srcdir}/emulparams/dynamic_undefined_weak.sh
source_sh ${srcdir}/emulparams/reloc_overflow.sh source_sh ${srcdir}/emulparams/reloc_overflow.sh
source_sh ${srcdir}/emulparams/call_nop.sh source_sh ${srcdir}/emulparams/call_nop.sh
source_sh ${srcdir}/emulparams/cet.sh source_sh ${srcdir}/emulparams/cet.sh
source_sh ${srcdir}/emulparams/x86-64-level.sh
source_sh ${srcdir}/emulparams/static.sh source_sh ${srcdir}/emulparams/static.sh
SCRIPT_NAME=elf SCRIPT_NAME=elf
ELFSIZE=32 ELFSIZE=32

View file

@ -3,6 +3,7 @@ source_sh ${srcdir}/emulparams/extern_protected_data.sh
source_sh ${srcdir}/emulparams/dynamic_undefined_weak.sh source_sh ${srcdir}/emulparams/dynamic_undefined_weak.sh
source_sh ${srcdir}/emulparams/call_nop.sh source_sh ${srcdir}/emulparams/call_nop.sh
source_sh ${srcdir}/emulparams/cet.sh source_sh ${srcdir}/emulparams/cet.sh
source_sh ${srcdir}/emulparams/x86-64-level.sh
source_sh ${srcdir}/emulparams/static.sh source_sh ${srcdir}/emulparams/static.sh
SCRIPT_NAME=elf SCRIPT_NAME=elf
OUTPUT_FORMAT="elf32-i386" OUTPUT_FORMAT="elf32-i386"

View file

@ -4,6 +4,7 @@ source_sh ${srcdir}/emulparams/dynamic_undefined_weak.sh
source_sh ${srcdir}/emulparams/reloc_overflow.sh source_sh ${srcdir}/emulparams/reloc_overflow.sh
source_sh ${srcdir}/emulparams/call_nop.sh source_sh ${srcdir}/emulparams/call_nop.sh
source_sh ${srcdir}/emulparams/cet.sh source_sh ${srcdir}/emulparams/cet.sh
source_sh ${srcdir}/emulparams/x86-64-level.sh
source_sh ${srcdir}/emulparams/static.sh source_sh ${srcdir}/emulparams/static.sh
SCRIPT_NAME=elf SCRIPT_NAME=elf
ELFSIZE=64 ELFSIZE=64

View file

@ -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"

View file

@ -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. either when creating an executable, or when creating a shared library.
This option is the inverse of @samp{-z defs}. 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 @end table
Other keywords are ignored for Solaris compatibility. Other keywords are ignored for Solaris compatibility.

View file

@ -2,5 +2,5 @@ Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 feature: SHSTK Properties: x86 feature: SHSTK
x86 ISA used: <None>
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-baseline

View file

@ -2,5 +2,5 @@ Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 feature: IBT Properties: x86 feature: IBT
x86 ISA used: <None>
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-baseline

View file

@ -2,5 +2,5 @@ Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 feature: IBT Properties: x86 feature: IBT
x86 ISA used: <None>
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-baseline

View file

@ -2,5 +2,5 @@ Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 feature: <None> Properties: x86 feature: <None>
x86 ISA used: <None>
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-baseline

View file

@ -2,5 +2,5 @@ Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 feature: IBT, SHSTK Properties: x86 feature: IBT, SHSTK
x86 ISA used: <None>
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-baseline

View file

@ -422,6 +422,7 @@ run_dump_test "property-x86-3"
run_dump_test "property-x86-4a" run_dump_test "property-x86-4a"
run_dump_test "property-x86-4b" run_dump_test "property-x86-4b"
run_dump_test "property-x86-5" run_dump_test "property-x86-5"
run_dump_test "property-x86-6"
run_dump_test "property-x86-ibt1a" run_dump_test "property-x86-ibt1a"
run_dump_test "property-x86-ibt1b" run_dump_test "property-x86-ibt1b"
run_dump_test "property-x86-ibt2" run_dump_test "property-x86-ibt2"
@ -475,6 +476,9 @@ run_dump_test "pr26263"
run_dump_test "pr26711-1" run_dump_test "pr26711-1"
run_dump_test "pr26711-2" run_dump_test "pr26711-2"
run_dump_test "pr26711-3" 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*"] if { !([istarget "i?86-*-linux*"]
|| [istarget "i?86-*-gnu*"] || [istarget "i?86-*-gnu*"]

View file

@ -7,4 +7,4 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA used: <None> Properties: x86 ISA used: x86-64-baseline

View file

@ -7,4 +7,4 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA needed: CMOV, SSE Properties: x86 ISA needed: x86-64-v2, x86-64-v3

View file

@ -7,4 +7,4 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA needed: CMOV, SSE Properties: x86 ISA needed: x86-64-v2, x86-64-v3

View file

@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0
Properties: x86 feature: SHSTK Properties: x86 feature: SHSTK
x86 ISA used: <None>
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-baseline

View file

@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0
Properties: x86 feature: SHSTK Properties: x86 feature: SHSTK
x86 ISA used: <None>
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-baseline

View file

@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: no copy on protected Properties: no copy on protected
x86 ISA used: <None>
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-baseline
#pass #pass

View file

@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0x800000 Properties: stack size: 0x800000
x86 ISA used: <None>
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-baseline
#pass #pass

View file

@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0x800000 Properties: stack size: 0x800000
#... #...
x86 ISA needed: CMOV, SSE x86 ISA needed: x86-64-v2, x86-64-v3
#pass #pass

View file

@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0x800000 Properties: stack size: 0x800000
x86 ISA needed: CMOV, SSE x86 ISA needed: x86-64-v2, x86-64-v3
x86 ISA used: SSE, SSE3
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-v3, <unknown: 8>
#pass #pass

View file

@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0x800000 Properties: stack size: 0x800000
#... #...
x86 ISA needed: CMOV, SSE, SSE3 x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 8>
#pass #pass

View file

@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0x800000 Properties: stack size: 0x800000
x86 ISA needed: CMOV, SSE, SSE3 x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 8>
x86 ISA used: CMOV, SSE, SSE3
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-v2, x86-64-v3, <unknown: 8>
#pass #pass

View file

@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0x900000 Properties: stack size: 0x900000
#... #...
x86 ISA needed: CMOV, SSE, SSE3 x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 8>
#pass #pass

View file

@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0x900000 Properties: stack size: 0x900000
x86 ISA needed: CMOV, SSE, SSE3 x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 8>
x86 ISA used: CMOV, SSE, SSE3
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-v2, x86-64-v3, <unknown: 8>
#pass #pass

View file

@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: stack size: 0x800000 Properties: stack size: 0x800000
no copy on protected no copy on protected
x86 ISA used: <None>
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-baseline

View file

@ -16,14 +16,14 @@
5: 5:
.p2align 2 .p2align 2
/* GNU_PROPERTY_X86_ISA_1_USED */ /* GNU_PROPERTY_X86_ISA_1_USED */
.long 0xc0010000 /* pr_type. */ .long 0xc0010002 /* pr_type. */
.long 5f - 4f /* pr_datasz. */ .long 5f - 4f /* pr_datasz. */
4: 4:
.long 0xa .long 0xa
5: 5:
.p2align 2 .p2align 2
/* GNU_PROPERTY_X86_ISA_1_NEEDED */ /* GNU_PROPERTY_X86_ISA_1_NEEDED */
.long 0xc0008000 /* pr_type. */ .long 0xc0008002 /* pr_type. */
.long 5f - 4f /* pr_datasz. */ .long 5f - 4f /* pr_datasz. */
4: 4:
.long 0x3 .long 0x3

View file

@ -9,14 +9,14 @@
1: 1:
.p2align 2 .p2align 2
/* GNU_PROPERTY_X86_ISA_1_USED */ /* GNU_PROPERTY_X86_ISA_1_USED */
.long 0xc0010000 /* pr_type. */ .long 0xc0010002 /* pr_type. */
.long 5f - 4f /* pr_datasz. */ .long 5f - 4f /* pr_datasz. */
4: 4:
.long 0x3 .long 0x3
5: 5:
.p2align 2 .p2align 2
/* GNU_PROPERTY_X86_ISA_1_NEEDED */ /* GNU_PROPERTY_X86_ISA_1_NEEDED */
.long 0xc0008000 /* pr_type. */ .long 0xc0008002 /* pr_type. */
.long 5f - 4f /* pr_datasz. */ .long 5f - 4f /* pr_datasz. */
4: 4:
.long 0xa .long 0xa

View file

@ -5,6 +5,6 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000024 NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA needed: SSE, SSE3, SSE4_1, AVX Properties: x86 ISA needed: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
x86 ISA used: CMOV, SSE, SSSE3, SSE4_1
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>

View file

@ -9,14 +9,14 @@
1: 1:
.p2align 2 .p2align 2
/* GNU_PROPERTY_X86_ISA_1_USED */ /* GNU_PROPERTY_X86_ISA_1_USED */
.long 0xc0010000 /* pr_type. */ .long 0xc0010002 /* pr_type. */
.long 5f - 4f /* pr_datasz. */ .long 5f - 4f /* pr_datasz. */
4: 4:
.long 0x3 .long 0x3
5: 5:
.p2align 2 .p2align 2
/* GNU_PROPERTY_X86_ISA_1_NEEDED */ /* GNU_PROPERTY_X86_ISA_1_NEEDED */
.long 0xc0008000 /* pr_type. */ .long 0xc0008002 /* pr_type. */
.long 5f - 4f /* pr_datasz. */ .long 5f - 4f /* pr_datasz. */
4: 4:
.long 0xa .long 0xa
@ -35,14 +35,14 @@
1: 1:
.p2align 2 .p2align 2
/* GNU_PROPERTY_X86_ISA_1_USED */ /* GNU_PROPERTY_X86_ISA_1_USED */
.long 0xc0010000 /* pr_type. */ .long 0xc0010002 /* pr_type. */
.long 5f - 4f /* pr_datasz. */ .long 5f - 4f /* pr_datasz. */
4: 4:
.long 0x30 .long 0x30
5: 5:
.p2align 2 .p2align 2
/* GNU_PROPERTY_X86_ISA_1_NEEDED */ /* GNU_PROPERTY_X86_ISA_1_NEEDED */
.long 0xc0008000 /* pr_type. */ .long 0xc0008002 /* pr_type. */
.long 5f - 4f /* pr_datasz. */ .long 5f - 4f /* pr_datasz. */
4: 4:
.long 0xa0 .long 0xa0

View file

@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
Properties: no copy on protected Properties: no copy on protected
x86 ISA used: <None>
x86 feature used: x86 x86 feature used: x86
x86 ISA used: x86-64-baseline

View file

@ -7,5 +7,5 @@
Displaying notes found in: .note.gnu.property Displaying notes found in: .note.gnu.property
[ ]+Owner[ ]+Data size[ ]+Description [ ]+Owner[ ]+Data size[ ]+Description
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
Properties: x86 ISA needed: CMOV Properties: x86 ISA needed: x86-64-v2
x86 ISA used: <None> x86 ISA used: x86-64-baseline

Some files were not shown because too many files have changed in this diff Show more