diff --git a/asdf.asd b/asdf.asd
index d17da208e9a51a9da0464fc59a28f2a019e5ffcb..01dc0588fd6936579609f683d0332a9817f7103d 100644
--- a/asdf.asd
+++ b/asdf.asd
@@ -75,7 +75,7 @@
   :licence "MIT"
   :description "Another System Definition Facility"
   :long-description "ASDF builds Common Lisp software organized into defined systems."
-  :version "3.1.0.53" ;; to be automatically updated by make bump-version
+  :version "3.1.0.54" ;; to be automatically updated by make bump-version
   :depends-on ()
   #+asdf3 :encoding #+asdf3 :utf-8
   :class #.(if (find-class 'package-system nil) 'package-system 'system)
diff --git a/bundle.lisp b/bundle.lisp
index 24fb0cae22a135ff36d50d8fba1ec6521569f082..9c3bfe3c033d4420d2b38d283b51242676bfdad7 100644
--- a/bundle.lisp
+++ b/bundle.lisp
@@ -81,12 +81,12 @@
   (defclass monolithic-fasl-op (monolithic-bundle-compile-op basic-fasl-op non-propagating-operation) ()
     (:documentation "Create a single fasl for the system and its dependencies."))
 
-  (defclass monolithic-lib-op (monolithic-bundle-compile-op basic-compile-op non-propagating-operation no-ld-flags-op)
+  (defclass monolithic-lib-op (monolithic-bundle-compile-op non-propagating-operation no-ld-flags-op)
     ((bundle-type :initform #+(or ecl mkcl) :lib #-(or ecl mkcl) :no-output-file))
     (:documentation #+(or ecl mkcl) "Create a single linkable library for the system and its dependencies."
      #-(or ecl mkcl) "Compile a system and its dependencies."))
 
-  (defclass monolithic-dll-op (monolithic-bundle-compile-op sideway-operation selfward-operation no-ld-flags-op)
+  (defclass monolithic-dll-op (monolithic-bundle-compile-op non-propagating-operation no-ld-flags-op)
     ((bundle-type :initform :dll))
     (:documentation "Create a single dynamic (.so/.dll) library for the system and its dependencies."))
 
diff --git a/header.lisp b/header.lisp
index b13e1c4ccf0d19726964beb52a4a1af6ca44fa4d..aab3bb91107a1b4e177e74076103552716000d0b 100644
--- a/header.lisp
+++ b/header.lisp
@@ -1,5 +1,5 @@
 ;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp -*-
-;;; This is ASDF 3.1.0.53: Another System Definition Facility.
+;;; This is ASDF 3.1.0.54: Another System Definition Facility.
 ;;;
 ;;; Feedback, bug reports, and patches are all welcome:
 ;;; please mail to <asdf-devel@common-lisp.net>.
diff --git a/test/monodll-1.lisp b/test/monodll-1.lisp
new file mode 100644
index 0000000000000000000000000000000000000000..f4cfa5faf8342bb502f0408e5bb06d55654a51f5
--- /dev/null
+++ b/test/monodll-1.lisp
@@ -0,0 +1,11 @@
+(defpackage :test-asdf/monodll-1 (:use)) ;; dummy, for package-system dependencies.
+
+#+ecl
+(ffi:clines "
+extern int always_7();
+
+int always_7()
+{
+	return 7;
+}
+")
diff --git a/test/monodll-user.lisp b/test/monodll-user.lisp
new file mode 100644
index 0000000000000000000000000000000000000000..92b3055001edd5513a4c96d75348eeb9f951cc9a
--- /dev/null
+++ b/test/monodll-user.lisp
@@ -0,0 +1,4 @@
+(defpackage :test-asdf/monodll-user (:use)) ;; dummy, for package-system dependencies.
+
+(in-package :test-package)
+(ffi:def-function "always_42" () :returning :int)
diff --git a/test/monodll.lisp b/test/monodll.lisp
new file mode 100644
index 0000000000000000000000000000000000000000..1984900c37d08c116ab44883bcff911ac5f9452e
--- /dev/null
+++ b/test/monodll.lisp
@@ -0,0 +1,11 @@
+(defpackage :test-asdf/monodll (:use :test-asdf/monodll-1)) ;; dummy, for package-system dependencies.
+
+#+ecl
+(ffi:clines "
+extern int always_42();
+
+int always_42()
+{
+	return 6*always_7();
+}
+")
diff --git a/test/test-bundle.script b/test/test-bundle.script
index a71a1abe0659cee45ed836565258697db83c99f0..751aad2ca6dd0a3e8648acfa7f7acd1b3d552dac 100644
--- a/test/test-bundle.script
+++ b/test/test-bundle.script
@@ -43,10 +43,14 @@
 (operate 'monolithic-fasl-op :test-asdf/bundle-2)
 (assert (probe-file *mono-bundle-2*))
 
-;;; Test DLL-op on ECL.
+;;; Test dll-op and monolithic-dll-op on ECL.
 #+ecl
 (progn
   (operate 'dll-op :test-asdf/dll-test)
   (si:load-foreign-module (first (output-files 'dll-op :test-asdf/dll-test)))
   (operate 'load-op :test-asdf/dll-user)
-  (assert (= (test-package::sample-function) 42)))
+  (assert (= (test-package::sample-function) 42))
+  (operate 'monolithic-dll-op :test-asdf/monodll)
+  (si:load-foreign-module (first (output-files 'monolithic-dll-op :test-asdf/monodll)))
+  (operate 'load-op :test-asdf/monodll-user)
+  (assert (= (test-package::always-42) 42)))
diff --git a/upgrade.lisp b/upgrade.lisp
index b6f782977cac5e310bb996eefb8d46c289b3366b..d6cfcf4b0a32d1ec2df58eef6413d7b36a2d18a4 100644
--- a/upgrade.lisp
+++ b/upgrade.lisp
@@ -64,7 +64,7 @@ You can compare this string with e.g.: (ASDF:VERSION-SATISFIES (ASDF:ASDF-VERSIO
          ;; "3.4.5.67" would be a development version in the official branch, on top of 3.4.5.
          ;; "3.4.5.0.8" would be your eighth local modification of official release 3.4.5
          ;; "3.4.5.67.8" would be your eighth local modification of development version 3.4.5.67
-         (asdf-version "3.1.0.53")
+         (asdf-version "3.1.0.54")
          (existing-version (asdf-version)))
     (setf *asdf-version* asdf-version)
     (when (and existing-version (not (equal asdf-version existing-version)))
diff --git a/version.lisp-expr b/version.lisp-expr
index 6e844fc9d01d768f58d70cc63fd772ca868b8e8a..ff2172f49daf5cec80a899b564aa4c9b5ee5cb2f 100644
--- a/version.lisp-expr
+++ b/version.lisp-expr
@@ -1,2 +1,2 @@
-"3.1.0.53"
+"3.1.0.54"