0.8.0.1:
authorChristophe Rhodes <csr21@cam.ac.uk>
Sun, 25 May 2003 22:26:13 +0000 (22:26 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Sun, 25 May 2003 22:26:13 +0000 (22:26 +0000)
Fix build on FreeBSD
... don't #include <proc.h>, which defines a struct thread; (thanks
to Henrik Motakef)
... do sigaltstack() if #+c-stack-is-control-stack (which is, in
practice, all the time).

(this /may/ break building on OpenBSD, which uses the same OS-dependent
routines; it is possible that OpenBSD needs something from <proc.h>;
if so, we need to find some compromise)

src/runtime/bsd-os.c
version.lisp-expr

index 3e3cfb6..64aba2c 100644 (file)
@@ -34,7 +34,6 @@
 #include <sys/types.h>
 #include <signal.h>
 /* #include <sys/sysinfo.h> */
-#include <sys/proc.h>
 #include "validate.h"
 vm_size_t os_vm_page_size;
 
@@ -263,6 +262,16 @@ struct thread *arch_os_get_current_thread() {
     return all_threads;
 }
 int arch_os_thread_init(struct thread *thread) {
+  stack_t sigstack;
+#ifdef LISP_FEATURE_C_STACK_IS_CONTROL_STACK
+    /* Signal handlers are run on the control stack, so if it is exhausted
+     * we had better use an alternate stack for whatever signal tells us
+     * we've exhausted it */
+    sigstack.ss_sp=((void *) thread)+dynamic_values_bytes;
+    sigstack.ss_flags=0;
+    sigstack.ss_size = 32*SIGSTKSZ;
+    sigaltstack(&sigstack,0);
+#endif
     return 1;                  /* success */
 }
 int arch_os_thread_cleanup(struct thread *thread) {
index 2e4dc1d..4d50ca0 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.8.0"
+"0.8.0.1"