aboutsummaryrefslogtreecommitdiff
path: root/binutils/readelf.c
diff options
context:
space:
mode:
Diffstat (limited to 'binutils/readelf.c')
-rw-r--r--binutils/readelf.c111
1 files changed, 85 insertions, 26 deletions
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 9ba4e29..33ae4e5 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -18225,7 +18225,7 @@ decode_x86_compat_isa (unsigned int bitmask)
}
static void
-decode_x86_isa (unsigned int bitmask)
+decode_x86_compat_2_isa (unsigned int bitmask)
{
if (!bitmask)
{
@@ -18240,79 +18240,79 @@ decode_x86_isa (unsigned int bitmask)
bitmask &= ~ bit;
switch (bit)
{
- case GNU_PROPERTY_X86_ISA_1_CMOV:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_CMOV:
printf ("CMOV");
break;
- case GNU_PROPERTY_X86_ISA_1_SSE:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE:
printf ("SSE");
break;
- case GNU_PROPERTY_X86_ISA_1_SSE2:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE2:
printf ("SSE2");
break;
- case GNU_PROPERTY_X86_ISA_1_SSE3:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE3:
printf ("SSE3");
break;
- case GNU_PROPERTY_X86_ISA_1_SSSE3:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSSE3:
printf ("SSSE3");
break;
- case GNU_PROPERTY_X86_ISA_1_SSE4_1:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE4_1:
printf ("SSE4_1");
break;
- case GNU_PROPERTY_X86_ISA_1_SSE4_2:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE4_2:
printf ("SSE4_2");
break;
- case GNU_PROPERTY_X86_ISA_1_AVX:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX:
printf ("AVX");
break;
- case GNU_PROPERTY_X86_ISA_1_AVX2:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX2:
printf ("AVX2");
break;
- case GNU_PROPERTY_X86_ISA_1_FMA:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_FMA:
printf ("FMA");
break;
- case GNU_PROPERTY_X86_ISA_1_AVX512F:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512F:
printf ("AVX512F");
break;
- case GNU_PROPERTY_X86_ISA_1_AVX512CD:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512CD:
printf ("AVX512CD");
break;
- case GNU_PROPERTY_X86_ISA_1_AVX512ER:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512ER:
printf ("AVX512ER");
break;
- case GNU_PROPERTY_X86_ISA_1_AVX512PF:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512PF:
printf ("AVX512PF");
break;
- case GNU_PROPERTY_X86_ISA_1_AVX512VL:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512VL:
printf ("AVX512VL");
break;
- case GNU_PROPERTY_X86_ISA_1_AVX512DQ:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512DQ:
printf ("AVX512DQ");
break;
- case GNU_PROPERTY_X86_ISA_1_AVX512BW:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512BW:
printf ("AVX512BW");
break;
- case GNU_PROPERTY_X86_ISA_1_AVX512_4FMAPS:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_4FMAPS:
printf ("AVX512_4FMAPS");
break;
- case GNU_PROPERTY_X86_ISA_1_AVX512_4VNNIW:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_4VNNIW:
printf ("AVX512_4VNNIW");
break;
- case GNU_PROPERTY_X86_ISA_1_AVX512_BITALG:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_BITALG:
printf ("AVX512_BITALG");
break;
- case GNU_PROPERTY_X86_ISA_1_AVX512_IFMA:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_IFMA:
printf ("AVX512_IFMA");
break;
- case GNU_PROPERTY_X86_ISA_1_AVX512_VBMI:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VBMI:
printf ("AVX512_VBMI");
break;
- case GNU_PROPERTY_X86_ISA_1_AVX512_VBMI2:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VBMI2:
printf ("AVX512_VBMI2");
break;
- case GNU_PROPERTY_X86_ISA_1_AVX512_VNNI:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VNNI:
printf ("AVX512_VNNI");
break;
- case GNU_PROPERTY_X86_ISA_1_AVX512_BF16:
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_BF16:
printf ("AVX512_BF16");
break;
default:
@@ -18325,6 +18325,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
decode_x86_feature_1 (unsigned int bitmask)
{
if (!bitmask)
@@ -18392,6 +18426,9 @@ decode_x86_feature_2 (unsigned int bitmask)
case GNU_PROPERTY_X86_FEATURE_2_TMM:
printf ("TMM");
break;
+ case GNU_PROPERTY_X86_FEATURE_2_MASK:
+ printf ("MASK");
+ break;
case GNU_PROPERTY_X86_FEATURE_2_FXSR:
printf ("FXSR");
break;
@@ -18570,6 +18607,28 @@ print_gnu_property_note (Filedata * filedata, Elf_Internal_Note * pnote)
}
goto next;
+ case GNU_PROPERTY_X86_COMPAT_2_ISA_1_USED:
+ if (datasz != 4)
+ printf (_("x86 ISA used: <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:
break;
}