From 419dc267a99feaaeeffa1c06198a0402f9474bf5 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Fri, 10 Nov 2023 02:30:28 +0100 Subject: [PATCH] sigsegv: Improve port to CHERI. * lib/sigsegv.c (SIGSEGV_FAULT_STACKPOINTER): Define also on CheriBSD. --- ChangeLog | 3 +++ lib/sigsegv.c | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 018f80d973..5c92da54ec 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2023-11-09 Bruno Haible + sigsegv: Improve port to CHERI. + * lib/sigsegv.c (SIGSEGV_FAULT_STACKPOINTER): Define also on CheriBSD. + 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 5f9bc08bb9..c683c03ac0 100644 --- a/lib/sigsegv.c +++ b/lib/sigsegv.c @@ -436,11 +436,15 @@ int libsigsegv_version = LIBSIGSEGV_VERSION; # define SIGSEGV_FAULT_ADDRESS sip->si_addr # define SIGSEGV_FAULT_CONTEXT ((ucontext_t *) ucp) -# if defined __arm64__ /* 64-bit */ +# if defined __arm64__ || defined __aarch64__ /* 64-bit */ /* See sys/arm64/include/ucontext.h. */ -# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.mc_gpregs.gp_sp +# if defined __CHERI__ +# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.mc_capregs.cap_sp +# else +# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.mc_gpregs.gp_sp +# endif # elif defined __arm__ || defined __armhf__ /* 32-bit */ -- 2.39.5