1.0.26.7: use a signal for SIG_STOP_FOR_GC > SIGSEGV on Linux
[sbcl.git] / src / code / toplevel.lisp
index 16243a2..f938244 100644 (file)
@@ -20,6 +20,7 @@
 (progn
   (defvar sb!vm::*current-catch-block*)
   (defvar sb!vm::*current-unwind-protect-block*)
+  #!+hpux (defvar sb!vm::*c-lra*)
   (defvar *free-interrupt-context-index*))
 \f
 ;;; specials initialized by !COLD-INIT
@@ -619,7 +620,6 @@ that provides the REPL for the system. Assumes that *STANDARD-INPUT* and
                (with-simple-restart
                    (abort "~@<Exit debugger, returning to top level.~@:>")
                  (catch 'toplevel-catcher
-                   #!-win32 (sb!unix::reset-signal-mask)
                    ;; In the event of a control-stack-exhausted-error, we
                    ;; should have unwound enough stack by the time we get
                    ;; here that this is now possible.
@@ -637,6 +637,11 @@ that provides the REPL for the system. Assumes that *STANDARD-INPUT* and
 ;;; handle the Unix-style EOF-is-end-of-process convention.
 (defun repl-read-form-fun (in out)
   (declare (type stream in out) (ignore out))
+  ;; KLUDGE: *READ-SUPPRESS* makes the REPL useless, and cannot be
+  ;; recovered from -- flip it here.
+  (when *read-suppress*
+    (warn "Setting *READ-SUPPRESS* to NIL to restore toplevel usability.")
+    (setf *read-suppress* nil))
   (let* ((eof-marker (cons nil nil))
          (form (read in nil eof-marker)))
     (if (eq form eof-marker)