0.9.11.47:
authorChristophe Rhodes <csr21@cam.ac.uk>
Mon, 24 Apr 2006 13:51:16 +0000 (13:51 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Mon, 24 Apr 2006 13:51:16 +0000 (13:51 +0000)
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
version.lisp-expr

index 2344a26..d8afd25 100644 (file)
@@ -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
index af20b0d..2e20497 100644 (file)
@@ -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"