From a01045b552695ae546b19ca6fa9bc554ad9c7998 Mon Sep 17 00:00:00 2001 From: Christophe Rhodes Date: Mon, 19 Dec 2005 10:49:33 +0000 Subject: [PATCH] 0.9.7.33: Merge patch (Daisuke Homma sbcl-devel 2005-12-19) for stack exhaustion on x86/SunOS. --- NEWS | 8 +++++--- src/runtime/x86-sunos-os.c | 3 ++- version.lisp-expr | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/NEWS b/NEWS index 45c747a..8f25905 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,8 @@ changes in sbcl-0.9.8 relative to sbcl-0.9.7: the change in the 0.9.7 release). (SETF CLASS-NAME) is specified by ANSI as a generic function, and for consistency (SETF GENERIC-FUNCTION-NAME) is treated likewise. + * fixed bug #233.b: make constraint propagation notice when a variable + value is changed after it is referenced but before it is used * fixed bug #296: no more arbitrary behaviour from filenames with odd characters as --load arguments. (reported by Adam Warner) * fixed bug #390: :CHARACTER-SET pathname components now work as @@ -18,12 +20,12 @@ changes in sbcl-0.9.8 relative to sbcl-0.9.7: * bug fix: the SB-SIMPLE-STREAMS contrib passes external-format arguments to the internal stream functions. (thanks to David Lichteblau) + * bug fix: stack exhaustion is now handled on the x86/SunOS + platform. (thanks to Daisuke Homma) + * bug fix: more accurate ROOM results on GENCGC platforms * optimization: improved type inference for arithmetic-for index variables in LOOP * optimization: faster floating-point SQRT on x86-64 - * bug fix: more accurate ROOM results on GENCGC platforms - * fixed bug #233.b: make constraint propagation notice when a variable - value is changed after it is referenced but before it is used * fixed some bugs revealed by Paul Dietz' test suite: ** DOCUMENTATION returns NIL instead of "" for method combinations that don't have a docstring diff --git a/src/runtime/x86-sunos-os.c b/src/runtime/x86-sunos-os.c index 834f964..fd11cf5 100644 --- a/src/runtime/x86-sunos-os.c +++ b/src/runtime/x86-sunos-os.c @@ -43,12 +43,13 @@ int arch_os_thread_cleanup(struct thread *thread) { os_context_register_t * os_context_register_addr(os_context_t *context, int offset) { + /* Solaris x86 holds %esp value in UESP */ switch(offset) { case reg_EAX: return &context->uc_mcontext.gregs[11]; case reg_ECX: return &context->uc_mcontext.gregs[10]; case reg_EDX: return &context->uc_mcontext.gregs[9]; case reg_EBX: return &context->uc_mcontext.gregs[8]; - case reg_ESP: return &context->uc_mcontext.gregs[7]; + case reg_ESP: return &context->uc_mcontext.gregs[17]; /* REG_UESP */ case reg_EBP: return &context->uc_mcontext.gregs[6]; case reg_ESI: return &context->uc_mcontext.gregs[5]; case reg_EDI: return &context->uc_mcontext.gregs[4]; diff --git a/version.lisp-expr b/version.lisp-expr index 33c3e56..8e15fc7 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.7.32" +"0.9.7.33" -- 1.7.10.4