0.9.16.38:
[sbcl.git] / tests / debug.impure.lisp
index fa1e64d..ea5d8b7 100644 (file)
 ;;;; more information.
 
 (cl:in-package :cl-user)
+
+;;; The debugger doesn't have any native knowledge of the interpreter
+(when (eq sb-ext:*evaluator-mode* :interpret)
+  (sb-ext:quit :unix-status 104))
+
 \f
 ;;;; Check that we get debug arglists right.
 
     ;; happen to be the two case that I had my nose rubbed in when
     ;; debugging a GC problem caused by applying %SIMPLE-FUN-ARGLIST to
     ;; a closure. -- WHN 2001-06-05)
-    (t :unknown)))
+    (t
+     #+sb-eval
+     (if (typep fun 'sb-eval::interpreted-function)
+         (sb-eval::interpreted-function-lambda-list fun)
+         :unknown)
+     #-sb-eval
+     :unknown)))
 
 (defun zoop (zeep &key beep)
   blurp)
 
   ;; bug 353: This test fails at least most of the time for x86/linux
   ;; ca. 0.8.20.16. -- WHN
-  (with-test (:name (:undefined-function :bug-356)
-              :fails-on '(or (and :x86 :linux) :alpha))
+  (with-test (:name (:undefined-function :bug-353)
+              ;; This used to have fewer :fails-on features pre-0.9.16.38,
+              ;; but it turns out that the bug was just being masked by
+              ;; the presence of the IR1 stepper instrumentation (and
+              ;; is thus again failing now that the instrumentation is
+              ;; no more).
+              :fails-on '(or :x86 :x86-64 :alpha))
     (assert (verify-backtrace
              (lambda () (test #'not-optimized))
              (list *undefined-function-frame*
                                     (list '(flet test) #'not-optimized))))))
 
 (with-test (:name (:throw :no-such-tag)
-            :fails-on '(or (and :x86 :linux) :alpha :mips))
+            :fails-on '(or
+                        (and :x86 (or :linux :freebsd sunos))
+                        :alpha
+                        :mips))
   (progn
     (defun throw-test ()
       (throw 'no-such-tag t))
 
 ;;; FIXME: This test really should be broken into smaller pieces
 (with-test (:name (:backtrace :misc)
-            :fails-on '(and :x86 :linux))
+            :fails-on '(and :x86 (or :linux :sunos)))
   (macrolet ((with-details (bool &body body)
                `(let ((sb-debug:*show-entry-point-details* ,bool))
                  ,@body)))
 (defun trace-this ()
   'ok)
 
+(defun trace-fact (n)
+  (if (zerop n)
+      1
+      (* n (trace-fact (1- n)))))
+
 (let ((out (with-output-to-string (*trace-output*)
              (trace trace-this)
              (assert (eq 'ok (trace-this)))
 ;;; This is not a WITH-TEST :FAILS-ON PPC DARWIN since there are
 ;;; suspicions that the breakpoint trace might corrupt the whole image
 ;;; on that platform.
-#-(and ppc darwin)
-(let ((out (with-output-to-string (*trace-output*)
-             (trace trace-this :encapsulate nil)
-             (assert (eq 'ok (trace-this)))
-             (untrace))))
-  (assert (search "TRACE-THIS" out))
-  (assert (search "returned OK" out)))
+#-(and (or ppc x86) darwin)
+(with-test (:name (trace :encapsulate nil)
+            :fails-on '(or :ppc :sparc :mips))
+  (let ((out (with-output-to-string (*trace-output*)
+               (trace trace-this :encapsulate nil)
+               (assert (eq 'ok (trace-this)))
+               (untrace))))
+    (assert (search "TRACE-THIS" out))
+    (assert (search "returned OK" out))))
+
+#-(and (or ppc x86) darwin)
+(with-test (:name (trace-recursive :encapsulate nil)
+            :fails-on '(or :ppc :sparc :mips))
+  (let ((out (with-output-to-string (*trace-output*)
+               (trace trace-fact :encapsulate nil)
+               (assert (= 120 (trace-fact 5)))
+               (untrace))))
+    (assert (search "TRACE-FACT" out))
+    (assert (search "returned 1" out))
+    (assert (search "returned 120" out))))
 
 ;;;; test infinite error protection