aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKirill Ponomarev <krion@FreeBSD.org>2023-05-30 10:42:50 +0000
committerKirill Ponomarev <krion@FreeBSD.org>2023-05-30 10:42:50 +0000
commit73f4bcea212048376185a1a6e2a37a1cad6d46da (patch)
tree8999348936f20a5a86d0491ec170e828103bd6a0
parent98b39a93abb7a30809a3d9b42ae0f880fe921dad (diff)
downloadports-73f4bcea212048376185a1a6e2a37a1cad6d46da.tar.gz
ports-73f4bcea212048376185a1a6e2a37a1cad6d46da.zip
lang/sbcl: Fix build with clang 16
PR: 271711 Reported by: dim
-rw-r--r--lang/sbcl/files/patch-src_runtime_bsd-os.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/lang/sbcl/files/patch-src_runtime_bsd-os.c b/lang/sbcl/files/patch-src_runtime_bsd-os.c
new file mode 100644
index 000000000000..a602974be9e2
--- /dev/null
+++ b/lang/sbcl/files/patch-src_runtime_bsd-os.c
@@ -0,0 +1,42 @@
+commit c76381656baeee9bdeddd899cb595c2b45294597
+Author: Dimitry Andric <dim@FreeBSD.org>
+Date: 2023-05-29 19:50:57 +0200
+
+ lang/sbcl: fix build with clang 16
+
+ Clang 16 has a new error about incompatible function types, which shows
+ up when building lang/sbcl:
+
+ bsd-os.c:285:50: error: incompatible function pointer types passing '__siginfohandler_t *' (aka 'void (*)(int, struct __siginfo *, void *)') to parameter of type 'interrupt_handler_t' (aka 'void (*)(int, struct __siginfo *, struct __ucontext *)') [-Wincompatible-function-pointer-types]
+ (__siginfohandler_t *)
+ ^~~~~~~~~~~~~~~~~~~~~~
+ ./interrupt.h:123:64: note: passing argument to parameter 'handler' here
+ extern void ll_install_handler(int signal, interrupt_handler_t handler);
+ ^
+
+ Indeed the __siginfohandler_t type is incompatible, but that is caused
+ by the cast itself, which does not seem to be good for anything. Remove
+ it, so the mismatch is gone.
+
+diff --git a/lang/sbcl/files/patch-src_runtime_bsd-os.c b/lang/sbcl/files/patch-src_runtime_bsd-os.c
+new file mode 100644
+index 000000000000..3faf2f345709
+--- /dev/null
++++ b/lang/sbcl/files/patch-src_runtime_bsd-os.c
+@@ -0,0 +1,15 @@
++--- src/runtime/bsd-os.c.orig 2023-04-30 08:33:10 UTC
+++++ src/runtime/bsd-os.c
++@@ -280,11 +280,7 @@ os_install_interrupt_handlers(void)
++ os_install_interrupt_handlers(void)
++ {
++ if (INSTALL_SIG_MEMORY_FAULT_HANDLER) {
++- ll_install_handler(SIG_MEMORY_FAULT,
++-#if defined(LISP_FEATURE_FREEBSD) && !defined(__GLIBC__)
++- (__siginfohandler_t *)
++-#endif
++- memory_fault_handler);
+++ ll_install_handler(SIG_MEMORY_FAULT, memory_fault_handler);
++
++ #ifdef LISP_FEATURE_DARWIN
++ /* Unmapped pages get this and not SIGBUS. */
+