diff options
Diffstat (limited to 'binutils/readelf.c')
-rw-r--r-- | binutils/readelf.c | 111 |
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; } |