summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2023-03-28 13:52:36 -0700
committerH.J. Lu <hjl.tools@gmail.com>2025-08-19 15:39:23 -0700
commit2c763f814e581895539e7762461aef62cc9465fd (patch)
treeb6ffebe81439e3f57db4245447642a290b661275
parent1192cdd722824e0ebfb133b51e539a663e56b6d0 (diff)
x86/cet: Check CPU_FEATURE_ACTIVE in permissive mode
Verify that CPU_FEATURE_ACTIVE works properly in permissive mode. (cherry picked from commit 4d8a01d2b0963f7c7714ff53c313430599f0722f)
-rw-r--r--sysdeps/x86/Makefile1
-rw-r--r--sysdeps/x86/tst-cet-legacy-4.c5
2 files changed, 6 insertions, 0 deletions
diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile
index 1bf6ff9e11..6911a07a87 100644
--- a/sysdeps/x86/Makefile
+++ b/sysdeps/x86/Makefile
@@ -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
diff --git a/sysdeps/x86/tst-cet-legacy-4.c b/sysdeps/x86/tst-cet-legacy-4.c
index d75fb0e61c..c098120253 100644
--- a/sysdeps/x86/tst-cet-legacy-4.c
+++ b/sysdeps/x86/tst-cet-legacy-4.c
@@ -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 ());