From 1f763fa8eca17771d2c091094855fcb8b84d66da Mon Sep 17 00:00:00 2001 From: Daniel Barlow Date: Mon, 18 Oct 2004 13:07:41 +0000 Subject: [PATCH] 0.8.15.17 Merge NetBSD stack exhaustion patch from Richard Kreuter: after a signal handler returns, NetBSD restores esp from the mcontext's uesp slot, not the esp slot (sbcl-devel 2004-10-15) --- src/runtime/interrupt.c | 4 ++++ src/runtime/x86-bsd-os.c | 2 ++ src/runtime/x86-lispregs.h | 3 ++- version.lisp-expr | 2 +- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/runtime/interrupt.c b/src/runtime/interrupt.c index 6bd4351..1dcc462 100644 --- a/src/runtime/interrupt.c +++ b/src/runtime/interrupt.c @@ -679,7 +679,11 @@ void arrange_return_to_lisp_function(os_context_t *context, lispobj function) *os_context_pc_addr(context) = call_into_lisp; *os_context_register_addr(context,reg_ECX) = 0; *os_context_register_addr(context,reg_EBP) = sp-2; +#ifdef __NetBSD__ + *os_context_register_addr(context,reg_UESP) = sp-14; +#else *os_context_register_addr(context,reg_ESP) = sp-14; +#endif #else /* this much of the calling convention is common to all non-x86 ports */ diff --git a/src/runtime/x86-bsd-os.c b/src/runtime/x86-bsd-os.c index 3c0e2f6..8baf11d 100644 --- a/src/runtime/x86-bsd-os.c +++ b/src/runtime/x86-bsd-os.c @@ -69,6 +69,8 @@ os_context_register_addr(os_context_t *context, int offset) return CONTEXT_ADDR_FROM_STEM(ESI); case 14: return CONTEXT_ADDR_FROM_STEM(EDI); + case 16: + return CONTEXT_ADDR_FROM_STEM(UESP); default: return 0; } diff --git a/src/runtime/x86-lispregs.h b/src/runtime/x86-lispregs.h index 57cf416..9c1d462 100644 --- a/src/runtime/x86-lispregs.h +++ b/src/runtime/x86-lispregs.h @@ -34,8 +34,9 @@ #define reg_EBP REG(10) #define reg_ESI REG(12) #define reg_EDI REG(14) +#define reg_UESP REG(16) -#define REGNAMES "EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI" +#define REGNAMES "EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI", "UESP" /* classification of registers * diff --git a/version.lisp-expr b/version.lisp-expr index 5f744cc..bd77c7c 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.15.16" +"0.8.15.17" -- 1.7.10.4