From 373a9e0161060208425807e5af5de6b234eaad56 Mon Sep 17 00:00:00 2001 From: Christophe Rhodes Date: Mon, 24 Apr 2006 13:51:16 +0000 Subject: [PATCH] 0.9.11.47: Bandage over the signal trampoline for sparc/linux. (Builds and builds itself once more -- first time since 0.9.5.50 or so) --- src/runtime/interrupt.c | 10 ++++++++-- version.lisp-expr | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/runtime/interrupt.c b/src/runtime/interrupt.c index 2344a26..d8afd25 100644 --- a/src/runtime/interrupt.c +++ b/src/runtime/interrupt.c @@ -1183,15 +1183,21 @@ undoably_install_low_level_interrupt_handler (int signal, sa.sa_sigaction = handler; else if (sigismember(&deferrable_sigset,signal)) sa.sa_sigaction = low_level_maybe_now_maybe_later; + /* The use of a trampoline appears to break the + arch_os_get_context() workaround for SPARC/Linux. For now, + don't use the trampoline (and so be vulnerable to the problems + that SA_NODEFER is meant to solve. */ +#if !(defined(LISP_FEATURE_SPARC) && defined(LISP_FEATURE_LINUX)) else if (!sigaction_nodefer_works && !sigismember(&blockable_sigset, signal)) sa.sa_sigaction = low_level_unblock_me_trampoline; +#endif else sa.sa_sigaction = handler; sigcopyset(&sa.sa_mask, &blockable_sigset); - sa.sa_flags = SA_SIGINFO | SA_RESTART | - (sigaction_nodefer_works ? SA_NODEFER : 0); + sa.sa_flags = SA_SIGINFO | SA_RESTART + | (sigaction_nodefer_works ? SA_NODEFER : 0); #ifdef LISP_FEATURE_C_STACK_IS_CONTROL_STACK if((signal==SIG_MEMORY_FAULT) #ifdef SIG_MEMORY_FAULT2 diff --git a/version.lisp-expr b/version.lisp-expr index af20b0d..2e20497 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.9.11.46" +"0.9.11.47" -- 1.7.10.4