[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
sigsegv: Port to CHERI
|
From: |
Bruno Haible |
|
Subject: |
sigsegv: Port to CHERI |
|
Date: |
Fri, 10 Nov 2023 01:19:41 +0100 |
The patch below fixes the following test failures:
FAIL: test-c-stack.sh
FAIL: test-c-stack2.sh
FAIL: test-sigsegv-catch-segv1
FAIL: test-sigsegv-catch-segv2
FAIL: test-sigsegv-catch-stackoverflow1
FAIL: test-sigsegv-catch-stackoverflow2
2023-11-09 Bruno Haible <bruno@clisp.org>
sigsegv: Port to CHERI.
* lib/sigsegv.c: Treat __aarch64__ like __arm64__.
(SIGSEGV_FOR_ALL_SIGNALS): Treat SIGPROT like SIGSEGV and SIGBUS.
diff --git a/lib/sigsegv.c b/lib/sigsegv.c
index 8263d9b7bd..5f9bc08bb9 100644
--- a/lib/sigsegv.c
+++ b/lib/sigsegv.c
@@ -430,7 +430,7 @@ int libsigsegv_version = LIBSIGSEGV_VERSION;
#if defined __FreeBSD_kernel__ || defined __FreeBSD__ || defined __DragonFly__
/* GNU/kFreeBSD, FreeBSD */
-# if defined __arm__ || defined __armhf__ || defined __arm64__
+# if defined __arm__ || defined __armhf__ || (defined __arm64__ || defined
__aarch64__)
# define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, siginfo_t *sip, void *ucp
# define SIGSEGV_FAULT_ADDRESS sip->si_addr
@@ -825,8 +825,20 @@ int libsigsegv_version = LIBSIGSEGV_VERSION;
|| defined __FreeBSD_kernel__ || defined __FreeBSD__ || defined
__DragonFly__ \
|| defined __NetBSD__ || defined __OpenBSD__ \
|| (defined __APPLE__ && defined __MACH__)
-# define SIGSEGV_FOR_ALL_SIGNALS(var,body) \
- { int var; var = SIGSEGV; { body } var = SIGBUS; { body } }
+# if defined __CHERI__
+# define SIGSEGV_FOR_ALL_SIGNALS(var,body) \
+ { int var; \
+ var = SIGSEGV; { body } \
+ var = SIGBUS; { body } \
+ var = SIGPROT; { body } \
+ }
+# else
+# define SIGSEGV_FOR_ALL_SIGNALS(var,body) \
+ { int var; \
+ var = SIGSEGV; { body } \
+ var = SIGBUS; { body } \
+ }
+# endif
#else
# define SIGSEGV_FOR_ALL_SIGNALS(var,body) \
{ int var; var = SIGSEGV; { body } }
- sigsegv: Port to CHERI,
Bruno Haible <=