diff --git a/Makefile b/Makefile
index 18e6c3b3c0204c8679ccc5457b31a15efa9e3537..bdbcaa9f7106c15b1c9a208ec1ec7457901274e5 100644
--- a/Makefile
+++ b/Makefile
@@ -12,12 +12,10 @@ lisps ?= ${ASDF_TEST_LISPS}
 else
 lisps ?= ccl clisp sbcl ecl ecl_bytecodes cmucl abcl scl allegro lispworks allegromodern gcl xcl
 endif
+## grep for #+/#- features in the test/ directory to see plenty of disabled tests on some platforms
 ## NOT SUPPORTED BY OUR AUTOMATED TESTS:
 ##	cormancl genera lispworks-personal-edition mkcl rmcl
 ## Some are manually tested once in a while.
-## FAIL: gcl -- most implementation bugs are now fixed, but some remain. See TODO.
-## FAIL: xcl -- implementation bugs require lots of papering over during tests. See TODO.
-## grep for #+/#- features in the test/ directory to see plenty of disabled tests.
 ifdef ASDF_TEST_SYSTEMS
 s ?= ${ASDF_TEST_SYSTEMS}
 endif
@@ -42,8 +40,6 @@ SBCL ?= sbcl
 SCL ?= scl
 XCL ?= xcl
 
-# website, tag, install
-
 header_lisp := header.lisp
 driver_lisp := uiop/package.lisp uiop/common-lisp.lisp uiop/utility.lisp uiop/os.lisp uiop/pathname.lisp uiop/filesystem.lisp uiop/stream.lisp uiop/image.lisp uiop/run-program.lisp uiop/lisp-build.lisp uiop/configuration.lisp uiop/backward-driver.lisp uiop/driver.lisp
 defsystem_lisp := upgrade.lisp component.lisp system.lisp cache.lisp find-system.lisp find-component.lisp operation.lisp action.lisp lisp-action.lisp plan.lisp operate.lisp output-translations.lisp source-registry.lisp backward-internals.lisp parse-defsystem.lisp bundle.lisp concatenate-source.lisp backward-interface.lisp package-system.lisp interface.lisp user.lisp footer.lisp
@@ -156,9 +152,32 @@ test-all-upgrade-no-stop:
 	@for lisp in ${lisps} ; do ${MAKE} test-upgrade l=$$lisp ; done ; :
 
 test-all-no-upgrade-no-stop: doc test-load-systems test-all-clean-load test-all-lisp-no-stop
-
-test-all-no-stop: test-all-no-upgrade-no-stop test-all-upgrade-no-stop
-
+	make check-all-test-results
+
+test-all-no-stop: doc test-load-systems test-all-clean-load test-all-lisp-no-stop test-all-upgrade-no-stop
+	make check-all-results
+
+check-all-test-results:
+	@A="`grep -L '49 passing and 0 failing' build/results/*-test.text`" ; \
+	if [ -n "$$A" ] ; then \
+		echo "Unexpected test failures on these implementations:" ; \
+		echo "$$A" ; \
+		exit 1 ; \
+	fi
+
+check-all-upgrade-results:
+	@A="$$(for i in build/results/*-upgrade.text ; do \
+		case $$i in */cmucl-*|*/gcl-*|*/xcl-*) ;; *) \
+		if [ 'Script succeeded' != "$$(tail -1 < $$i)" ] ; \
+		then echo $$i ; fi ; esac ; done)" ; \
+	if [ -n "$$A" ] ; then \
+		echo "Unexpected upgrade failures on these implementations:" ; \
+		echo "$$A" ; \
+		exit 1 ; \
+	fi
+
+check-all-results:
+	@r=0 ; make check-all-test-results || r=1 ; make check-all-upgrade-results || r=1 ; exit $r
 
 extract: extract-all-tagged-asdf
 extract-all-tagged-asdf: build/asdf.lisp
diff --git a/test/run-tests.sh b/test/run-tests.sh
index 3f6125fd2509755440547fe609636b7b1ac594ac..450abd45f03e57f86fc8ebb98a0e992fee8a29e3 100755
--- a/test/run-tests.sh
+++ b/test/run-tests.sh
@@ -397,7 +397,7 @@ valid_upgrade_test_p () {
         # Skip many ECL tests, for various ASDF issues
         ecl*:1.*|ecl*:2.0[01]*|ecl*:2.20:*) : ;;
         # GCL 2.7.0 from late November 2013 is required, with ASDF 3.1.1
-        gcl:1.*|gcl:2.*|gcl:3.0*) : ;;
+        gcl:REQUIRE:*|gcl:1.*|gcl:2.*|gcl:3.0*) : ;;
         # MKCL is only supported starting with 2.24, so skip earlier versions
         mkcl:1.*|mkcl:2.0[01]*|mkcl:2.2[0-3]:*) : ;;
         # XCL support starts with ASDF 2.014.2