@@ -6295,6 +6295,18 @@ abi_long do_arch_prctl(CPUX86State *env, int code, abi_ulong addr)
# define PR_SME_VL_INHERIT (1 << 17)
#endif
+#ifndef PR_GET_SHADOW_STACK_STATUS
+# define PR_GET_SHADOW_STACK_STATUS 71
+#endif
+#ifndef PR_SET_SHADOW_STACK_STATUS
+# define PR_SET_SHADOW_STACK_STATUS 72
+# define PR_SHADOW_STACK_ENABLE (1UL << 0)
+# define PR_SHADOW_STACK_WRITE (1UL << 1)
+# define PR_SHADOW_STACK_PUSH (1UL << 2)
+#endif
+#ifndef PR_LOCK_SHADOW_STACK_STATUS
+# define PR_LOCK_SHADOW_STACK_STATUS 73
+#endif
#ifndef PR_GET_INDIR_BR_LP_STATUS
# define PR_GET_INDIR_BR_LP_STATUS 74
#endif
@@ -6488,6 +6500,9 @@ static abi_long do_prctl(CPUArchState *env, abi_long option, abi_long arg2,
case PR_SET_TSC:
/* Disable to prevent the target disabling stuff we need. */
return -TARGET_EINVAL;
+ case PR_GET_SHADOW_STACK_STATUS:
+ case PR_SET_SHADOW_STACK_STATUS:
+ case PR_LOCK_SHADOW_STACK_STATUS:
case PR_GET_INDIR_BR_LP_STATUS:
case PR_SET_INDIR_BR_LP_STATUS:
case PR_LOCK_INDIR_BR_LP_STATUS:
Each application enables shadow stack for itself via prctl. Using prctl codes as proposed in riscv cfi patches on kernel mailing list [1] [1] - https://lore.kernel.org/all/20240403234054.2020347-1-debug@rivosinc.com/ Signed-off-by: Deepak Gupta <debug@rivosinc.com> Co-developed-by: Jim Shu <jim.shu@sifive.com> Co-developed-by: Andy Chiu <andy.chiu@sifive.com> Co-developed-by: Jesse Huang <jesse.huang@sifive.com> --- linux-user/syscall.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)