x86/cet: Check CPU_FEATURE_ACTIVE in permissive mode
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 28 Mar 2023 20:52:36 +0000 (13:52 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 19 Dec 2023 14:58:05 +0000 (06:58 -0800)
Verify that CPU_FEATURE_ACTIVE works properly in permissive mode.

sysdeps/x86/Makefile
sysdeps/x86/tst-cet-legacy-4.c

index 1bf6ff9..6911a07 100644 (file)
@@ -219,6 +219,7 @@ CFLAGS-tst-cet-legacy-mod-1.c += -fcf-protection=none
 CFLAGS-tst-cet-legacy-mod-2.c += -fcf-protection=none
 CFLAGS-tst-cet-legacy-3.c += -fcf-protection=none
 CFLAGS-tst-cet-legacy-4.c += -fcf-protection=branch
+CPPFLAGS-tst-cet-legacy-4a.c += -DCET_IS_PERMISSIVE=1
 CFLAGS-tst-cet-legacy-4a.c += -fcf-protection
 CFLAGS-tst-cet-legacy-4b.c += -fcf-protection
 CFLAGS-tst-cet-legacy-mod-4.c += -fcf-protection=none
index d75fb0e..c098120 100644 (file)
@@ -21,6 +21,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <sys/platform/x86.h>
 
 #include <support/check.h>
 
@@ -40,6 +41,10 @@ do_test (void)
       return 0;
     }
 
+#ifdef CET_IS_PERMISSIVE
+  TEST_VERIFY (!CPU_FEATURE_ACTIVE (IBT) && !CPU_FEATURE_ACTIVE (SHSTK));
+#endif
+
   fp = dlsym (h, "test");
   if (fp == NULL)
     FAIL_EXIT1 ("cannot get symbol 'test': %s\n", dlerror ());