0.8.21.49: Fixes for OS X 10.4 "Tiger"
authorBrian Mastenbrook <bmastenb@cs.indiana.edu>
Sun, 17 Apr 2005 19:41:25 +0000 (19:41 +0000)
committerBrian Mastenbrook <bmastenb@cs.indiana.edu>
Sun, 17 Apr 2005 19:41:25 +0000 (19:41 +0000)
  * Binaries built on OS X 10.4 will not run on OS X 10.2.8 "Jaguar"
  * Add a . at the end of a gethostbyname test in sb-bsd-sockets to both work around a resolver bug on Tiger and robustify the test
  * Thanks to Gary Byers for the alternate sigreturn bug fix
  * Bump the upcoming version number in NEWS to 0.9.0 (woohoo!)

NEWS
contrib/sb-bsd-sockets/tests.lisp
src/runtime/Config.ppc-darwin
src/runtime/bsd-os.c
src/runtime/bsd-os.h
src/runtime/interrupt.c
src/runtime/ppc-arch.c
src/runtime/ppc-darwin-os.h
version.lisp-expr

diff --git a/NEWS b/NEWS
index 3a0acf1..1ddc538 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
-changes in sbcl-0.8.22 relative to sbcl-0.8.21:
+changes in sbcl-0.9.0 relative to sbcl-0.8.21:
   * incompatible change: the --noprogrammer option, deprecated since
     version 0.7.5, has been removed.  Please use the equivalent
     --disable-debugger option instead.
@@ -58,6 +58,8 @@ changes in sbcl-0.8.22 relative to sbcl-0.8.21:
     to Wendall Marvel)
   * on x86 compiler supports stack allocation of results of simple
     calls of MAKE-ARRAY, bound to variables, declared DYNAMIC-EXTENT.
+  * support for building and running on Mac OS X 10.4 "Tiger" has been added
+    ** Binaries built on Tiger will not run on 10.2 "Jaguar" currently
   * fixed some bugs related to Unicode integration:
     ** the restarts for recovering from input and output encoding
        errors only appear when there is in fact such an error to
index ba41bc5..77b1e57 100644 (file)
 
 (deftest get-host-by-name-wrong
   (handler-case
-   (get-host-by-name "foo.tninkpad.telent.net")
+   (get-host-by-name "foo.tninkpad.telent.net.")
    (NAME-SERVICE-ERROR () t)
    (:no-error nil))
   t)
index 4f47632..88b8624 100644 (file)
@@ -1,5 +1,5 @@
 # -*- makefile -*-
-CFLAGS = -Dppc -g -Wall -O2 -no-cpp-precomp
+CFLAGS = -Dppc -g -Wall -O2 -no-cpp-precomp -fdollars-in-identifiers
 OS_SRC = bsd-os.c os-common.c ppc-darwin-os.c ppc-darwin-dlshim.c ppc-darwin-langinfo.c
 OS_LIBS = -lSystem -lc -lm
 OS_OBJS = ppc-darwin-rospace.o
@@ -16,7 +16,7 @@ CPP = cpp -no-cpp-precomp
 # place a zero-fill-on-demand segment in the same place and size as
 # read-only-space, which is the only thing capable of keeping malloc
 # out of this range.
-OS_LINK_FLAGS = -dynamic `cat ppc-darwin-link-flags`
+OS_LINK_FLAGS = -dynamic `cat ppc-darwin-link-flags` -twolevel_namespace -bind_at_load
 
 GC_SRC= cheneygc.c
 
index 26b07f9..eb07274 100644 (file)
@@ -220,7 +220,7 @@ sigsegv_handler(int signal, siginfo_t *info, void* void_context)
        if(!handle_guard_page_triggered(context,addr))
            interrupt_handle_now(signal, info, context);
     /* Work around G5 bug; fix courtesy gbyers */
-    sigreturn(void_context);
+    DARWIN_FIX_CONTEXT(context);
 }
 
 void
index 85d6568..5dfff24 100644 (file)
 #include <sys/mman.h>
 #include <sys/signal.h>
 
+#ifdef LISP_FEATURE_DARWIN
+#include <mach/mach_types.h>
+#endif
+
 typedef caddr_t os_vm_address_t;
 #if defined __NetBSD__
 typedef vsize_t os_vm_size_t;
index 2377308..a1ba5d8 100644 (file)
@@ -517,7 +517,7 @@ maybe_now_maybe_later(int signal, siginfo_t *info, void *void_context)
     interrupt_handle_now(signal, info, context);
 #ifdef LISP_FEATURE_DARWIN
     /* Work around G5 bug */
-    sigreturn(void_context);
+    DARWIN_FIX_CONTEXT(context);
 #endif
 }
 
@@ -563,7 +563,7 @@ interrupt_handle_now_handler(int signal, siginfo_t *info, void *void_context)
     os_context_t *context = arch_os_get_context(&void_context);
     interrupt_handle_now(signal, info, context);
 #ifdef LISP_FEATURE_DARWIN
-    sigreturn(void_context);
+    DARWIN_FIX_CONTEXT(context);
 #endif
 }
 
index 7aa24ef..fb5958e 100644 (file)
@@ -59,7 +59,9 @@ arch_get_bad_addr(int sig, siginfo_t *code, os_context_t *context)
 void 
 arch_skip_instruction(os_context_t *context)
 {
-    ((char*)*os_context_pc_addr(context)) +=4; 
+    char** pcptr;
+    pcptr = (char**) os_context_pc_addr(context);
+    *pcptr += 4;
 }
 
 unsigned char *
@@ -186,14 +188,14 @@ sigtrap_handler(int signal, siginfo_t *siginfo, os_context_t *context)
            break;
        }
 #ifdef LISP_FEATURE_DARWIN
-       sigreturn(context);
+       DARWIN_FIX_CONTEXT(context);
 #endif
        return;
     }
     if (((code >> 26) == 3) && (((code >> 21) & 31) == 24)) {
        interrupt_internal_error(signal, code, context, 0);
 #ifdef LISP_FEATURE_DARWIN
-       sigreturn(context);
+       DARWIN_FIX_CONTEXT(context);
 #endif
        return;
     }
@@ -201,7 +203,7 @@ sigtrap_handler(int signal, siginfo_t *siginfo, os_context_t *context)
     interrupt_handle_now(signal, code, context);
 #ifdef LISP_FEATURE_DARWIN
     /* Work around G5 bug */
-    sigreturn(context);
+    DARWIN_FIX_CONTEXT(context);
 #endif
 }
 
index a40699b..1ff3732 100644 (file)
@@ -5,5 +5,5 @@ static inline os_context_t *arch_os_get_context(void **void_context) {
     return (os_context_t *) *void_context;
 }
 
-
+#define DARWIN_FIX_CONTEXT(c) (c->uc_mcontext->ss.xer)^=0x80;
 #endif /* _PPC_DARWIN_OS_H */
index d9ecf0e..fabfdae 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.21.48"
+"0.8.21.49"