From 343ef95fda9da33830d5ab6aabe5368c898f0918 Mon Sep 17 00:00:00 2001 From: Brian Mastenbrook Date: Sun, 17 Apr 2005 19:41:25 +0000 Subject: [PATCH] 0.8.21.49: Fixes for OS X 10.4 "Tiger" * 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 | 4 +++- contrib/sb-bsd-sockets/tests.lisp | 2 +- src/runtime/Config.ppc-darwin | 4 ++-- src/runtime/bsd-os.c | 2 +- src/runtime/bsd-os.h | 4 ++++ src/runtime/interrupt.c | 4 ++-- src/runtime/ppc-arch.c | 10 ++++++---- src/runtime/ppc-darwin-os.h | 2 +- version.lisp-expr | 2 +- 9 files changed, 21 insertions(+), 13 deletions(-) diff --git a/NEWS b/NEWS index 3a0acf1..1ddc538 100644 --- 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 diff --git a/contrib/sb-bsd-sockets/tests.lisp b/contrib/sb-bsd-sockets/tests.lisp index ba41bc5..77b1e57 100644 --- a/contrib/sb-bsd-sockets/tests.lisp +++ b/contrib/sb-bsd-sockets/tests.lisp @@ -181,7 +181,7 @@ (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) diff --git a/src/runtime/Config.ppc-darwin b/src/runtime/Config.ppc-darwin index 4f47632..88b8624 100644 --- a/src/runtime/Config.ppc-darwin +++ b/src/runtime/Config.ppc-darwin @@ -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 diff --git a/src/runtime/bsd-os.c b/src/runtime/bsd-os.c index 26b07f9..eb07274 100644 --- a/src/runtime/bsd-os.c +++ b/src/runtime/bsd-os.c @@ -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 diff --git a/src/runtime/bsd-os.h b/src/runtime/bsd-os.h index 85d6568..5dfff24 100644 --- a/src/runtime/bsd-os.h +++ b/src/runtime/bsd-os.h @@ -17,6 +17,10 @@ #include #include +#ifdef LISP_FEATURE_DARWIN +#include +#endif + typedef caddr_t os_vm_address_t; #if defined __NetBSD__ typedef vsize_t os_vm_size_t; diff --git a/src/runtime/interrupt.c b/src/runtime/interrupt.c index 2377308..a1ba5d8 100644 --- a/src/runtime/interrupt.c +++ b/src/runtime/interrupt.c @@ -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 } diff --git a/src/runtime/ppc-arch.c b/src/runtime/ppc-arch.c index 7aa24ef..fb5958e 100644 --- a/src/runtime/ppc-arch.c +++ b/src/runtime/ppc-arch.c @@ -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 } diff --git a/src/runtime/ppc-darwin-os.h b/src/runtime/ppc-darwin-os.h index a40699b..1ff3732 100644 --- a/src/runtime/ppc-darwin-os.h +++ b/src/runtime/ppc-darwin-os.h @@ -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 */ diff --git a/version.lisp-expr b/version.lisp-expr index d9ecf0e..fabfdae 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.8.21.48" +"0.8.21.49" -- 1.7.10.4