]> Savannah Git Hosting - gnulib.git/commitdiff
sigsegv: Port to CHERI.
authorBruno Haible <bruno@clisp.org>
Fri, 10 Nov 2023 00:16:55 +0000 (01:16 +0100)
committerBruno Haible <bruno@clisp.org>
Fri, 10 Nov 2023 00:16:55 +0000 (01:16 +0100)
* lib/sigsegv.c: Treat __aarch64__ like __arm64__.
(SIGSEGV_FOR_ALL_SIGNALS): Treat SIGPROT like SIGSEGV and SIGBUS.

ChangeLog
lib/sigsegv.c

index b8fd98a2b1c11a594cfd0ccec4fded00461e173b..018f80d973647139d260d255c5fb618a1cd25cde 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+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.
+
 2023-11-09  Paul Eggert  <eggert@cs.ucla.edu>
 
        stdio: port better to older macOS
index 8263d9b7bdfe4c1e3655b4f2e1ad96dc7c0eeabb..5f9bc08bb9020207972b1f2185dfd423fdaf8dd7 100644 (file)
@@ -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 } }