about summary refs log tree commit diff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2020-12-03 15:02:44 -0800
committerH.J. Lu <hjl.tools@gmail.com>2020-12-04 05:12:55 -0800
commit93fda28693f0d9060b0aa71eeacaacfe9f16896e (patch)
tree9e381f314af82d813566b5fe034bafe6a9d55447
parent2976082a385a7fb3d0294c6acf745b4f93e834ee (diff)
downloadglibc-93fda28693f0d9060b0aa71eeacaacfe9f16896e.tar.gz
glibc-93fda28693f0d9060b0aa71eeacaacfe9f16896e.tar.xz
glibc-93fda28693f0d9060b0aa71eeacaacfe9f16896e.zip
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.
-rw-r--r--sysdeps/x86/tst-cpu-features-supports.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/sysdeps/x86/tst-cpu-features-supports.c b/sysdeps/x86/tst-cpu-features-supports.c
index bf881b531f..287cf01fbd 100644
--- a/sysdeps/x86/tst-cpu-features-supports.c
+++ b/sysdeps/x86/tst-cpu-features-supports.c
@@ -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",