* The C runtime system now builds with better optimization and many
fewer warnings, thanks to lots of cleanups by Martin Atzmueller.
+changes in sbcl-0.6.10 relative to sbcl-0.6.9:
+
+* A patch from Martin Atzmueller seems to have solved the SIGINT
+ problem, and as far as we know, signal-handling now works cleanly.
+ (If you find any new bugs, please report them!)
+* More compiler warnings in src/runtime/ are gone, thanks to
+ patches from Martin Atzmueller.
+
planned incompatible changes in 0.7.x:
* The debugger prompt sequence now goes "5]", "5[2]", "5[3]", etc.
as you get deeper into recursive calls to the debugger command loop,
(zerop *compiler-note-count*)))
(format *error-output* "~&")
(pprint-logical-block (*error-output* nil :per-line-prefix "; ")
- (compiler-mumble
- "compilation unit ~:[finished~;aborted~]~
- ~[~:;~:*~& caught ~D fatal ERROR condition~:P~]~
- ~[~:;~:*~& caught ~D ERROR condition~:P~]~
- ~[~:;~:*~& caught ~D WARNING condition~:P~]~
- ~[~:;~:*~& caught ~D STYLE-WARNING condition~:P~]~
- ~[~:;~:*~& printed ~D note~:P~]"
- abort-p
- *aborted-compilation-unit-count*
- *compiler-error-count*
- *compiler-warning-count*
- *compiler-style-warning-count*
- *compiler-note-count*))))
+ (compiler-mumble "compilation unit ~:[finished~;aborted~]~
+ ~[~:;~:*~& caught ~D fatal ERROR condition~:P~]~
+ ~[~:;~:*~& caught ~D ERROR condition~:P~]~
+ ~[~:;~:*~& caught ~D WARNING condition~:P~]~
+ ~[~:;~:*~& caught ~D STYLE-WARNING condition~:P~]~
+ ~[~:;~:*~& printed ~D note~:P~]"
+ abort-p
+ *aborted-compilation-unit-count*
+ *compiler-error-count*
+ *compiler-warning-count*
+ *compiler-style-warning-count*
+ *compiler-note-count*)))
+ (format *error-output* "~&"))
;;; Evaluate BODY, then return (VALUES BODY-VALUE WARNINGS-P
;;; FAILURE-P), where BODY-VALUE is the first value of the body, and
#include "arch.h"
#include "globals.h"
#include "interrupt.h"
+#include "interr.h"
#include "lispregs.h"
#include "sbcl.h"
* original FreeBSD port of SBCL, that's wrong, it's actually a
* ucontext_t. */
typedef ucontext_t os_context_t;
-/* KLUDGE: A hack inherited from CMU CL used to be conditional on
- * !defined(__linux__), and has now been made conditional on
- * CANNOT_GET_TO_SINGLE_STEP_FLAG: if the OS won't let us flip the
- * single-step flag bit in the state stored in a signal context, then
- * we need to mess around with overwriting preceding code with
- * bit-flipping code. This isn't needed in Linux or OpenBSD; I haven't
- * been able to test whether it's still needed in FreeBSD, so for
- * conservatism it's left in. -- WHN 2000-10-24 */
+/* As the sbcl-devel message from Raymond Wiker 2000-12-01, FreeBSD
+ * (unlike Linux and OpenBSD) doesn't let us tweak the CPU's single
+ * step flag bit by messing with the flags stored in a signal context,
+ * so we need to implement single stepping in a more roundabout way. */
#define CANNOT_GET_TO_SINGLE_STEP_FLAG
#elif defined __OpenBSD__
typedef struct sigcontext os_context_t;
#endif
union interrupt_handler handler;
-#ifdef __linux__
- SET_FPU_CONTROL_WORD(context->__fpregs_mem.cw);
-#endif
+ /* FIXME: The CMU CL we forked off of had this Linux-only
+ * operation here. Newer CMU CLs (e.g. 18c) have hairier
+ * Linux/i386-only logic here. SBCL seems to be more reliable
+ * without anything here. However, if we start supporting code
+ * which sets the rounding mode, then we may want to do something
+ * special to force the rounding mode back to some standard value
+ * here, so that ISRs can have a standard environment. (OTOH, if
+ * rounding modes are under user control, then perhaps we should
+ * leave this up to the user.)
+ *
+ * For now we just suppress this code completely (just like the
+ * parallel code in maybe_now_maybe_later).
+ * #ifdef __linux__
+ * SET_FPU_CONTROL_WORD(context->__fpregs_mem.cw);
+ * #endif
+ */
handler = interrupt_handlers[signal];
/* FIXME: See Debian cmucl 2.4.17, and mail from DTC on the CMU CL
* mailing list 23 Oct 1999, for changes in FPU handling at
- * interrupt time which should be ported into SBCL.
+ * interrupt time which should be ported into SBCL. Also see the
+ * analogous logic at the head of interrupt_handle_now for
+ * more related FIXME stuff.
*
- * (Is this related to the way that it seems that if we do decide
- * to handle the interrupt later, we've now screwed up the FPU
- * control word?) */
-#ifdef __linux__
- SET_FPU_CONTROL_WORD(context->__fpregs_mem.cw);
-#endif
+ * For now, we just suppress this code completely.
+ * #ifdef __linux__
+ * SET_FPU_CONTROL_WORD(context->__fpregs_mem.cw);
+ * #endif
+ */
if (SymbolValue(INTERRUPTS_ENABLED) == NIL) {
#include "arch.h"
#include "globals.h"
#include "interrupt.h"
+#include "interr.h"
#include "lispregs.h"
#include "sbcl.h"
#include <sys/socket.h>
#include <errno.h>
#include "os.h"
+#include "interr.h"
/* Except for os_zero, these routines are only called by Lisp code.
* These routines may also be replaced by os-dependent versions
;;; versions, and a string like "0.6.5.12" is used for versions which
;;; aren't released but correspond only to CVS tags or snapshots.
-"0.6.9.2"
+"0.6.9.3"