| commit 93fda28693f0d9060b0aa71eeacaacfe9f16896e |
| Author: H.J. Lu <hjl.tools@gmail.com> |
| Date: Thu Dec 3 15:02:44 2020 -0800 |
| |
| x86: Adjust tst-cpu-features-supports.c for GCC 11 |
| |
| Check HAS_CPU_FEATURE instead of CPU_FEATURE_USABLE for FSGSBASE, IBT, |
| LM, SHSTK and XSAVES since FSGSBASE requires kernel support, IBT/SHSTK/LM |
| require OS support and XSAVES is supervisor-mode only. |
| |
| diff --git a/sysdeps/x86/tst-cpu-features-supports.c b/sysdeps/x86/tst-cpu-features-supports.c |
| index bf881b531f4bc2ed..287cf01fbdfaeda1 100644 |
| |
| |
| @@ -40,6 +40,11 @@ check_supports (int supports, int usable, const char *supports_name, |
| #define CHECK_SUPPORTS(str, name) \ |
| check_supports (__builtin_cpu_supports (#str), \ |
| CPU_FEATURE_USABLE (name), \ |
| + #str, "CPU_FEATURE_USABLE (" #name ")"); |
| + |
| +#define CHECK_CPU_SUPPORTS(str, name) \ |
| + check_supports (__builtin_cpu_supports (#str), \ |
| + HAS_CPU_FEATURE (name), \ |
| #str, "HAS_CPU_FEATURE (" #name ")"); |
| |
| static int |
| @@ -118,7 +123,7 @@ do_test (int argc, char **argv) |
| fails += CHECK_SUPPORTS (fma4, FMA4); |
| #endif |
| #if __GNUC_PREREQ (11, 0) |
| - fails += CHECK_SUPPORTS (fsgsbase, FSGSBASE); |
| + fails += CHECK_CPU_SUPPORTS (fsgsbase, FSGSBASE); |
| fails += CHECK_SUPPORTS (fxsave, FXSR); |
| #endif |
| #if __GNUC_PREREQ (8, 0) |
| @@ -126,9 +131,9 @@ do_test (int argc, char **argv) |
| #endif |
| #if __GNUC_PREREQ (11, 0) |
| fails += CHECK_SUPPORTS (hle, HLE); |
| - fails += CHECK_SUPPORTS (ibt, IBT); |
| + fails += CHECK_CPU_SUPPORTS (ibt, IBT); |
| fails += CHECK_SUPPORTS (lahf_lm, LAHF64_SAHF64); |
| - fails += CHECK_SUPPORTS (lm, LM); |
| + fails += CHECK_CPU_SUPPORTS (lm, LM); |
| fails += CHECK_SUPPORTS (lwp, LWP); |
| fails += CHECK_SUPPORTS (lzcnt, LZCNT); |
| #endif |
| @@ -150,7 +155,7 @@ do_test (int argc, char **argv) |
| fails += CHECK_SUPPORTS (rtm, RTM); |
| fails += CHECK_SUPPORTS (serialize, SERIALIZE); |
| fails += CHECK_SUPPORTS (sha, SHA); |
| - fails += CHECK_SUPPORTS (shstk, SHSTK); |
| + fails += CHECK_CPU_SUPPORTS (shstk, SHSTK); |
| #endif |
| fails += CHECK_SUPPORTS (sse, SSE); |
| fails += CHECK_SUPPORTS (sse2, SSE2); |
| @@ -180,7 +185,7 @@ do_test (int argc, char **argv) |
| fails += CHECK_SUPPORTS (xsave, XSAVE); |
| fails += CHECK_SUPPORTS (xsavec, XSAVEC); |
| fails += CHECK_SUPPORTS (xsaveopt, XSAVEOPT); |
| - fails += CHECK_SUPPORTS (xsaves, XSAVES); |
| + fails += CHECK_CPU_SUPPORTS (xsaves, XSAVES); |
| #endif |
| |
| printf ("%d differences between __builtin_cpu_supports and glibc code.\n", |