summaryrefslogtreecommitdiff
path: root/user/erlang/safe-signal-handling.patch
diff options
context:
space:
mode:
Diffstat (limited to 'user/erlang/safe-signal-handling.patch')
-rw-r--r--user/erlang/safe-signal-handling.patch22
1 files changed, 22 insertions, 0 deletions
diff --git a/user/erlang/safe-signal-handling.patch b/user/erlang/safe-signal-handling.patch
new file mode 100644
index 000000000..0996069ba
--- /dev/null
+++ b/user/erlang/safe-signal-handling.patch
@@ -0,0 +1,22 @@
+--- otp-OTP-21.2.6.orig/erts/emulator/hipe/hipe_x86_signal.c
++++ otp-OTP-21.2.6/erts/emulator/hipe/hipe_x86_signal.c
+@@ -159,16 +159,10 @@
+
+ #if !(defined(__GLIBC__) || defined(__DARWIN__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__sun__))
+ /*
+- * Unknown libc -- assume musl. Note: musl deliberately does not provide a musl-specific
+- * feature test macro, so we cannot check for it.
+- *
+- * sigaction is a weak alias for __sigaction, which is a wrapper for __libc_sigaction.
+- * There are libc-internal calls to __libc_sigaction which install handlers, so we must
+- * override __libc_sigaction rather than __sigaction.
++ * Unknown libc -- assume musl. Also assume signal delivery on musl is safe.
+ */
+-#define NEXT_SIGACTION "__libc_sigaction"
+-#define LIBC_SIGACTION __libc_sigaction
+-#define OVERRIDE_SIGACTION
++#undef NEXT_SIGACTION
++#undef OVERRIDE_SIGACTION
+ #ifndef _NSIG
+ #define _NSIG NSIG
+ #endif