diff --git a/bundle.lisp b/bundle.lisp
index 4e3106d3eeb7eb93dfbf72c334ed758cfedcfd02..68d7bd05fc08335f730ed4e9bb0ebac06fd18642 100644
--- a/bundle.lisp
+++ b/bundle.lisp
@@ -244,7 +244,7 @@ itself.")) ;; operation on a system and its dependencies
                (loop :for f :in (funcall key sub-o sub-c)
                      :when (funcall test f) :do (collect f))))))
 
-  (defmethod input-files ((o bundle-op) (c system))
+  (defmethod input-files ((o gather-op) (c system))
     (unless (eq (bundle-type o) :no-output-file)
       (direct-dependency-files o c :test 'bundlable-file-p :key 'output-files)))
 
@@ -454,8 +454,9 @@ itself.")) ;; operation on a system and its dependencies
 
 #+ecl
 (with-upgradability ()
-  ;; I think that Juanjo intended for this to be,
-  ;; but it breaks 4 tests in what looks like to be a compiler bug, so I'll punt for now.
+  ;; I think that Juanjo intended for this to be.
+  ;; But it might break systems with missing dependencies,
+  ;; and there is a weird bug in test-xach-update-bug.script
   ;;(unless (use-ecl-byte-compiler-p)
   ;;  (setf *load-system-operation* 'load-fasl-op))
 
diff --git a/test/test-inline-methods.script b/test/test-inline-methods.script
index 42e2003b403094fa97af328133aa8d612cdf0f76..b1eaaabd318fcfd03f542642cc65c32eed903a10 100644
--- a/test/test-inline-methods.script
+++ b/test/test-inline-methods.script
@@ -7,13 +7,15 @@
   ((:file "file1"
     :perform (load-op :before (o c)
                       (incf *a*)
-                      (format t "Method run before ~A~%" (action-description o c))))
+                      (format t "Method run before ~A - *a* = ~S~%~%" (action-description o c) *a*)))
    (:file "file2" :depends-on ("file1")
     :perform (load-op (o c)
                       (incf *a*)
-                      (format t "Method run for ~A~%" (action-description o c))
+                      (format t "Method run for ~A - *a* = ~S~%" (action-description o c) *a*)
                       (call-next-method)))))
 
-(load-system :foo)
+;;; Note: not calling load-system, because on ECL that would be a load-fasl-op,
+;;; and at most the file load-op happen, whereas the second .o is linked and never loaded.
+(operate 'load-op :foo)
 
 (assert-equal *a* 2)
diff --git a/test/test-system-pathnames.script b/test/test-system-pathnames.script
index dfd650fb18ba0ae9a4080c88aa8570272fb96c02..dd36484f2941e5a5c001f0bf1dd7cb0dbb7fd1fc 100644
--- a/test/test-system-pathnames.script
+++ b/test/test-system-pathnames.script
@@ -5,7 +5,7 @@
   :source-file nil
   :components
   ((:file "file1")
-   (:file "file2" :pathname "level2/file2")
+   (:file "file2" :pathname "level2/file2" :depends-on ("file1"))
    (:static-file "level2/static.file")
    (:static-file "test-tmp.cl")))
 
diff --git a/test/test-xach-update-bug.script b/test/test-xach-update-bug.script
index 74fdc5ed2cdb13d1c1f2bcc1bd5b40c5fcc03b2e..76974b6b95e0a13ae397152783f2ae9ed61837d1 100644
--- a/test/test-xach-update-bug.script
+++ b/test/test-xach-update-bug.script
@@ -40,6 +40,11 @@
  (subpathname *test-directory* "xach-foo-2/b.lisp")
  (component-pathname (find-component foo2 "b")))
 (DBG "load foo yet again. It should see the pathname has changed and load it anew")
-(load-system foo)
+;;; ECL bug: this fails if we use load-fasl-op instead of load-op:
+;;; the test-asdf-location-change.fasb is linked and loaded,
+;;; but that fails to create the :second-version package;
+;;; loading the same .fasb in another ecl works fine, and defined (second-version:wtf). WTF?
+;;; Test it by replacing load-op below by load-fasl-op, and trace load* and other functions.
+(operate 'load-op foo)
 (assert (symbol-value (find-symbol* :loaded :second-version)))
 (assert-equal 42 (symbol-call :second-version :wtf))
diff --git a/test/test2.script b/test/test2.script
index 24d66277cb9eafdc825254c0a7b95123f498a9e0..d92eb5bfb550f4d4cd90c44e3e4b9570f2409ad9 100644
--- a/test/test2.script
+++ b/test/test2.script
@@ -1,9 +1,10 @@
 ;;; -*- Lisp -*-
 
-
+;; We don't use load-system, because it can be load-fasl-op on ECL,
+;; and these systems define manual dependencies on compile-op.
 
 (DBG "test2: loading test2b1")
-(asdf:load-system 'test2b1)
+(operate 'load-op 'test2b1)
 
 (DBG "test2: file3 and file4 were compiled")
 (assert (and (probe-file (test-fasl "file3.lisp"))
@@ -12,7 +13,7 @@
 (DBG "test2: loading test2b2 should fail")
 
 (handler-case
-    (asdf:load-system 'test2b2)
+    (operate 'load-op 'test2b2)
   (asdf:missing-dependency (c)
     (format t "load failed as expected: - ~%~A~%" c))
   (:no-error (c)
@@ -22,7 +23,7 @@
 (DBG "test2: loading test2b3 should fail")
 
 (handler-case
-    (asdf:load-system 'test2b3)
+    (operate 'load-op 'test2b3)
   (asdf:missing-dependency (c)
     (format t "load failed as expected: - ~%~A~%" c))
   (:no-error (c)
diff --git a/test/xach-foo-2/a.lisp b/test/xach-foo-2/a.lisp
index d8dee0d71588e79bd3d0975e6248341547b5f213..ea2b5ac2041698d642384eb9a0a01fc7e2b38342 100644
--- a/test/xach-foo-2/a.lisp
+++ b/test/xach-foo-2/a.lisp
@@ -7,6 +7,3 @@
 (in-package :second-version)
 
 (defparameter loaded t)
-
-
-
diff --git a/test/xach-foo-2/test-asdf-location-change.asd b/test/xach-foo-2/test-asdf-location-change.asd
index 1471f4c58ad17ac979fb9890af37626faff6237f..e1290b8cd154c4700660c9fd539650b12e82aab5 100644
--- a/test/xach-foo-2/test-asdf-location-change.asd
+++ b/test/xach-foo-2/test-asdf-location-change.asd
@@ -3,4 +3,4 @@
 (asdf:defsystem #:test-asdf-location-change
   :serial t
   :components ((:file "a")
-               (:file "b")))
+               (:file "b" :depends-on ("a"))))