1.0.9.21: Make less eager use of eval-when unless cross-compiling.
[sbcl.git] / tests / debug.impure.lisp
index f01b9b3..5d52ddc 100644 (file)
 
                         ;; Make sure the backtrace isn't stunted in
                         ;; any way.  (Depends on running in the main
-                        ;; thread.)
-                        (let ((end (last backtrace 2)))
+                        ;; thread.) FIXME: On Windows we get two
+                        ;; extra foreign frames below regular frames.
+                        (let ((end (last backtrace #-win32 2 #+win32 4)))
                           (unless (equal (caar end)
-                                         (if *show-entry-point-details*
-                                             '(sb-c::tl-xep sb-impl::toplevel-init)
-                                             'sb-impl::toplevel-init))
+                                         'sb-impl::toplevel-init)
                             (print (list :backtrace-stunted (caar end)))
                             (setf result nil)))
                         (return-from outer-handler)))))
          (funcall fun)))
 
   (with-test (:name (:undefined-function :bug-346)
-              :fails-on '(or :alpha))   ; bug 346
+              :fails-on '(or :alpha :ppc :sparc :mips
+                          (and :x86-64 (or :freebsd :darwin))))
     (assert (verify-backtrace
              (lambda () (test #'optimized))
              (list *undefined-function-frame*
 
   ;; 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 :mips))
     (assert (verify-backtrace
              (lambda () (test #'not-optimized))
              (list *undefined-function-frame*
                    (list '(flet not-optimized))
                    (list '(flet test) #'not-optimized))))))
 
-;;; Division by zero was a common error on PPC.  It depended on the
+;;; Division by zero was a common error on PPC. It depended on the
 ;;; return function either being before INTEGER-/-INTEGER in memory,
-;;; or more than MOST-POSITIVE-FIXNUM bytes ahead.  It also depends on
-;;; INTEGER-/-INTEGER calling SIGNED-TRUNCATE.  I believe Raymond Toy
+;;; or more than MOST-POSITIVE-FIXNUM bytes ahead. It also depends on
+;;; INTEGER-/-INTEGER calling SIGNED-TRUNCATE. I believe Raymond Toy
 ;;; says that the Sparc backend (at least for CMUCL) inlines this, so
 ;;; if SBCL does the same this test is probably not good for the
 ;;; Sparc.
          (declare (optimize (speed 1) (debug 2))) ; no tail call elimination
          (funcall fun)))
   (with-test (:name (:divide-by-zero :bug-346)
-              :fails-on '(or :alpha))   ; bug 346
+              :fails-on '(or :alpha (and :x86-64 :darwin)))   ; bug 346
     (assert (verify-backtrace (lambda () (test #'optimized))
                               (list '(/ 42 &rest)
                                     (list '(flet test) #'optimized)))))
   (with-test (:name (:divide-by-zero :bug-356)
-              :fails-on '(or :alpha))   ; bug 356
+              :fails-on '(or :alpha (and :x86-64 :darwin)))   ; bug 356
     (assert (verify-backtrace (lambda () (test #'not-optimized))
                               (list '(/ 42 &rest)
                                     '((flet not-optimized))
 
 (with-test (:name (:throw :no-such-tag)
             :fails-on '(or
-                        (and :x86 (or :linux :freebsd sunos))
+                        (and :x86 :sunos)
+                        (and :x86-64 :darwin)
+                        (and :sparc :linux)
                         :alpha
                         :mips))
   (progn
 
 ;;; FIXME: This test really should be broken into smaller pieces
 (with-test (:name (:backtrace :misc)
-            :fails-on '(and :x86 (or :linux :sunos)))
+            :fails-on '(or (and :x86 (or :sunos))
+                           (and :x86-64 :darwin)))
   (macrolet ((with-details (bool &body body)
                `(let ((sb-debug:*show-entry-point-details* ,bool))
                  ,@body)))
 ;;; 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 (or ppc x86) darwin)
+#-(and (or ppc x86 x86-64) darwin)
 (with-test (:name (trace :encapsulate nil)
             :fails-on '(or :ppc :sparc :mips))
   (let ((out (with-output-to-string (*trace-output*)
     (assert (search "TRACE-THIS" out))
     (assert (search "returned OK" out))))
 
-#-(and (or ppc x86) darwin)
+#-(and (or ppc x86 x86-64) darwin)
 (with-test (:name (trace-recursive :encapsulate nil)
             :fails-on '(or :ppc :sparc :mips))
   (let ((out (with-output-to-string (*trace-output*)
   (loop while (sb-thread:thread-alive-p thread)))
 
 (disable-debugger)
+
+(write-line "/debug.impure.lisp done")