diff --git a/Makefile b/Makefile
index 5f638131bc84bb0981829c6ed199d085d90906c9..7a0bd33ff710418be27710583afb878beadf946f 100644
--- a/Makefile
+++ b/Makefile
@@ -10,12 +10,13 @@ sourceDirectory := $(shell pwd)
 ifdef ASDF_TEST_LISPS
 lisps ?= ${ASDF_TEST_LISPS}
 else
-lisps ?= ccl clisp sbcl ecl ecl_bytecodes cmucl abcl scl allegro lispworks allegromodern xcl gcl
+lisps ?= ccl clisp sbcl ecl ecl_bytecodes cmucl abcl scl allegro lispworks allegromodern gcl
 endif
 ## NOT SUPPORTED BY OUR AUTOMATED TESTS:
 ##	cormancl genera lispworks-personal-edition mkcl rmcl
 ## Some are manually tested once in a while.
-## MAJOR FAIL: gclcvs -- Compiler bug fixed upstream, but gcl fails to compile on modern Linuxen.
+## FAIL: gcl -- most implementation bugs are now fixed, but some remain. See TODO.
+## FAIL: xcl -- implementation bugs now prevent ASDF3 from working at all. See TODO.
 ## grep for #+/#- features in the test/ directory to see plenty of disabled tests.
 ifdef ASDF_TEST_SYSTEMS
 s ?= ${ASDF_TEST_SYSTEMS}
diff --git a/TODO b/TODO
index 8fa2ef917978e796b0abf76e6cab584673efa2a3..de31a040745d11894e242225cb66fa799053aaf9 100644
--- a/TODO
+++ b/TODO
@@ -19,6 +19,19 @@
 ** Modify SBCL and other implementations so they provide UIOP
    independently from ASDF?
 
+* XCL is no longer supported due to an implementation bug:
+  the return in search-for-system-definition fails to return from the
+  (block nil ...) and seems to mistakenly return from
+  some implicit internal block.
+  TODO: either get it fixed, or provide a workaround in uiop/common-lisp.
+  In the meantime, XCL is officially not supported anymore.
+  XCL also has a bug in make-pathname, and probably other bugs;
+  it takes a long time for errors to propagate to the REPL —
+  Maybe O(n^3) behavior or worse in walking the C++ stack?
+
+* GCL is almost working again; but implementation bugs remain.
+  See November 2013 discussion on gcl-devel
+
 * Some out-of-line configuration mechanism for various options?
    i.e. have files that override some variables around compilation of some systems.
 
diff --git a/uiop/image.lisp b/uiop/image.lisp
index 53cdba622901b54a08e47b46a3c36064b7729d02..c62f107f93866c1efe00adc78ce95fc1eb84c3a2 100644
--- a/uiop/image.lisp
+++ b/uiop/image.lisp
@@ -135,7 +135,10 @@ This is designed to abstract away the implementation specific quit forms."
     #+sbcl
     (sb-debug:backtrace
      #.(if (find-symbol* "*VERBOSITY*" "SB-DEBUG" nil) :stream '(or count most-positive-fixnum))
-     stream))
+     stream)
+    #+xcl
+    (dolist (frame (extensions:backtrace-as-list))
+      (println frame stream)))
 
   (defun print-backtrace (&rest keys &key stream count)
     "Print a backtrace"