From e453e5df83ff69be83b46341e9c751d0b2111a39 Mon Sep 17 00:00:00 2001 From: Daniel Barlow Date: Sun, 17 Aug 2003 15:29:34 +0000 Subject: [PATCH] 0.8.2.37 Rename return_to_lisp_function to arrange_return_to_lisp_function, as threatened SIG_INTERRUPT_THREAD presently only exists on Linux: add #ifdef to avoid breaking other x86en Darwin complains "union has no member named `sival_int'" in handle_rt_signal. But we're only using that in thread builds anyway, so #ifdef it Bug 75 (:ELEMENT-TYPE for WITH-OUTPUT-TO-STRING) was fixed in some previous version: remove from BUGS file Shameless autopuffery, plus some amount of transpuffery, in CREDITS file. Update NEWS file tests/.cvsignore: don't tell me about threads-foreign-code.* --- BUGS | 11 +++++------ CREDITS | 40 ++++++++++++++++++++++++---------------- NEWS | 11 +++++++++-- src/runtime/interrupt.c | 24 +++++++++++------------- tests/.cvsignore | 1 + version.lisp-expr | 2 +- 6 files changed, 51 insertions(+), 38 deletions(-) create mode 100644 tests/.cvsignore diff --git a/BUGS b/BUGS index 98ea647..d964818 100644 --- a/BUGS +++ b/BUGS @@ -223,12 +223,6 @@ WORKAROUND: crashes SBCL. In general tracing anything which is used in the implementation of TRACE is likely to have the same problem. -75: - As reported by Martin Atzmueller on sbcl-devel 26 Dec 2000, - ANSI says that WITH-OUTPUT-TO-STRING should have a keyword - :ELEMENT-TYPE, but in sbcl-0.6.9 this is not defined for - WITH-OUTPUT-TO-STRING. - 78: ANSI says in one place that type declarations can be abbreviated even when the type name is not a symbol, e.g. @@ -1077,6 +1071,11 @@ WORKAROUND: Cross-compiler cannot perform constant folding of some internal functions, such as %NEGATE. +272: + All forms of GC hooks (including notifiers and finalisers) are currently + (since 0.8.0) broken for gencgc (i.e. x86) users + + DEFUNCT CATEGORIES OF BUGS IR1-#: These labels were used for bugs related to the old IR1 interpreter. diff --git a/CREDITS b/CREDITS index ebaec7f..4941a70 100644 --- a/CREDITS +++ b/CREDITS @@ -283,7 +283,7 @@ by Bill Chiles to add encapsulation, and modified more by William Lott to add FDEFN objects. The CMU CL condition system (code/error.lisp) was based on -some prototyping code written by Ken Pitman at Symbolics. +some prototyping code written by Kent Pitman at Symbolics. The CMU CL HASH-TABLE system was originally written by Skef Wholey for Spice Lisp, then rewritten by William Lott, then rewritten @@ -452,8 +452,9 @@ Aronson, and Steve Handerson. Douglas Crosher wrote code to support Gray streams, added X86 support for the debugger and relocatable code, wrote a conservative -generational GC for the X86 port, and added X86-specific extensions to -support stack groups and multiprocessing. +generational GC for the X86 port. He also added X86-specific +extensions to support stack groups and multiprocessing, but these are +not present in SBCL The CMU CL user manual credits Robert MacLachlan as editor. A chapter on the CMU CL interprocess communication extensions (not supported in @@ -506,15 +507,15 @@ Martin Atzmueller: I've lost count. See the CVS logs.) Daniel Barlow: - He made SBCL play nicely with ILISP. He figured out how to get the - CMU CL dynamic object file loading code to work under SBCL. He - ported CMU CL's support for Alpha and PPC CPUs to SBCL, and then - continued to improve the ports. He wrote code (e.g. grovel_headers.c - and stat_wrapper stuff) to handle machine-dependence and - OS-dependence automatically, reducing the amount of hand-tweaking - required to keep ports synchronized. He's also provided support - for SBCL (as well as for free Common Lisp in general) through - his CLiki website. + His contributions have included support for shared object loading + (from CMUCL), the Cheney GC for non-x86 ports (from CMUCL), Alpha + and PPC ports (from CMUCL), control stack exhaustion checking (new) + and native threads support for x86 Linux (new). He also refactored + the garbage collectors for understandability, wrote code + (e.g. grovel_headers.c and stat_wrapper stuff) to find + machine-dependent and OS-dependent constants automatically, and was + original author of the asdf, asdf-install, sb-bsd-sockets, + sb-executable, sb-grovel and sb-posix contrib packages. Robert E. Brown: He has reported various bugs and submitted several patches, @@ -547,6 +548,10 @@ Paul Dietz halfway stage, it has caught many tens of bugs in SBCL, and provided simple test cases for them. +Miles Egan + He creates binary packages of SBCL releases for Red Hat and other + (which?) platforms + Nathan Froyd: He has fixed various bugs, and also done a lot of internal cleanup, not visible at the user level but important for @@ -583,7 +588,9 @@ Pierre Mai: Eric Marsden: Some of his fixes to CMU CL since the SBCL fork have been ported - to SBCL. + to SBCL. He also maintains the cl-benchmark package, which gives + us some idea of how our performance changes compared to earlier + releases and to other implementations. Antonio Martinez-Shotton: He has contributed a number of bug fixes and bug reports to SBCL. @@ -615,8 +622,9 @@ Patrik Nordebo: ABI and assembly syntax differences between Darwin and Linux. Kevin M. Rosenberg: - He provided the ACL-style toplevel, and a number of MOP-related bug - reports. + He provided the ACL-style toplevel (sb-aclrepl contrib module), and + a number of MOP-related bug reports. He also creates the official + Debian packages of SBCL. Christophe Rhodes: He ported SBCL to SPARC, made various port-related and SPARC-related @@ -664,7 +672,7 @@ Raymond Wiker: INITIALS GLOSSARY (helpful when reading comments, CVS commit logs, etc.) MNA Martin Atzmueller -DB Daniel Barlow +DB Daniel Barlow (also "dan") DTC Douglas Crosher APD Alexey Dejneka NJF Nathan Froyd diff --git a/NEWS b/NEWS index b9817ef..73e06ed 100644 --- a/NEWS +++ b/NEWS @@ -1947,9 +1947,15 @@ changes in sbcl-0.8.3 relative to sbcl-0.8.2: * The compiler now performs limited argument count validation of constant format strings in FORMAT, and where appropriate in ERROR, CERROR and WARN. (thanks to Gerd Moellmann) - * bug fix: WITH-OUTPUT-TO-STRING (and MAKE-STRING-OUTPUT-STREAM) now + * New ASDF-INSTALL contrib can be used for automatic download and + installation of third-party Lisp code from CCLAN or other sites + via CLiki + * Threaded builds (:SB-THREAD) now support SB-THREAD:INTERRUPT-THREAD, + which forces another thread to execute a function supplied by the + caller + * bug 75 fix: WITH-OUTPUT-TO-STRING (and MAKE-STRING-OUTPUT-STREAM) now accept and act upon their :ELEMENT-TYPE keyword argument. - (reported by Edi Weitz) + (reported by Martin Atzmueller, Edi Weitz) * bug fix: FILE-POSITION now accepts position designators up to ARRAY-DIMENSION-LIMIT or the extreme of the off_t range, whichever is the greater. (thanks to Patrik Nordebo) @@ -1959,6 +1965,7 @@ changes in sbcl-0.8.3 relative to sbcl-0.8.2: printable. (reported by Eric Marsden) * bug fix in sb-posix: mmap() now works on systems with a 64-bit off_t, including Darwin and FreeBSD. (thanks to Andreas Fuchs) + * x86 bug fix in control stack exhaustion checking: now shows backtrace * bug fix in WITH-TIMEOUT: now the body can have more than one form. (thanks to Stig Sandoe) * fixed some bugs revealed by Paul Dietz' test suite: diff --git a/src/runtime/interrupt.c b/src/runtime/interrupt.c index 6907777..83ba373 100644 --- a/src/runtime/interrupt.c +++ b/src/runtime/interrupt.c @@ -68,7 +68,7 @@ struct interrupt_data * global_interrupt_data; * * In the case of most signals, when Lisp asks us to handle the * signal, the outermost handler (the one actually passed to UNIX) is - * either interrupt_handle_now(..) or interrupt_handle_later(..). + * either interrupt_handle_now(..) or maybe_now_maybe_later(..). * In that case, the Lisp-level handler is stored in interrupt_handlers[..] * and interrupt_low_level_handlers[..] is cleared. * @@ -512,7 +512,7 @@ gc_trigger_hit(int signal, siginfo_t *info, os_context_t *context) extern lispobj call_into_lisp(lispobj fun, lispobj *args, int nargs); extern void post_signal_tramp(void); -void return_to_lisp_function(os_context_t *context, lispobj function) +void arrange_return_to_lisp_function(os_context_t *context, lispobj function) { void * fun=native_pointer(function); char *code = &(((struct simple_fun *) fun)->code); @@ -526,7 +526,6 @@ void return_to_lisp_function(os_context_t *context, lispobj function) * would see, then arrange to have it called directly. post_signal_tramp * is the second half of this function */ - u32 *sp=(u32 *)*os_context_register_addr(context,reg_ESP); *(sp-14) = post_signal_tramp; /* return address for call_into_lisp */ @@ -573,20 +572,16 @@ void return_to_lisp_function(os_context_t *context, lispobj function) *os_context_register_addr(context,reg_CODE) = fun + FUN_POINTER_LOWTAG; #endif -#ifdef LISP_FEATURE_LINUX - /* Under Linux on some architectures it seems we have to restore - the FPU control word from the context, as after the signal is - delivered we have a null FPU control word. */ - os_restore_fp_control(context); -#endif } +#ifdef LISP_FEATURE_SB_THREAD boolean handle_rt_signal(int num, siginfo_t *info, void *v_context) { struct os_context_t *context = (os_context_t*)arch_os_get_context(&v_context); - return_to_lisp_function(context,info->si_value.sival_int); + arrange_return_to_lisp_function(context,info->si_value.sival_int); } +#endif boolean handle_control_stack_guard_triggered(os_context_t *context,void *addr) { @@ -599,7 +594,7 @@ boolean handle_control_stack_guard_triggered(os_context_t *context,void *addr) * temporarily so the error handler has some headroom */ protect_control_stack_guard_page(th->pid,0L); - return_to_lisp_function + arrange_return_to_lisp_function (context, SymbolFunction(CONTROL_STACK_EXHAUSTED_ERROR)); return 1; } @@ -704,8 +699,11 @@ undoably_install_low_level_interrupt_handler (int signal, sigaddset_blockable(&sa.sa_mask); sa.sa_flags = SA_SIGINFO | SA_RESTART; #ifdef LISP_FEATURE_C_STACK_IS_CONTROL_STACK - if((signal==SIG_MEMORY_FAULT) || - (signal==SIG_INTERRUPT_THREAD)) + if((signal==SIG_MEMORY_FAULT) +#ifdef SIG_INTERRUPT_THREAD + || (signal==SIG_INTERRUPT_THREAD) +#endif + ) sa.sa_flags|= SA_ONSTACK; #endif diff --git a/tests/.cvsignore b/tests/.cvsignore new file mode 100644 index 0000000..441d85c --- /dev/null +++ b/tests/.cvsignore @@ -0,0 +1 @@ +threads-foreign-code.c diff --git a/version.lisp-expr b/version.lisp-expr index ec2a4a5..3ee9825 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.2.36" +"0.8.2.37" -- 1.7.10.4