diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am
index 38c919ca..6e4f2692 100644
--- a/tests/data/Makefile.am
+++ b/tests/data/Makefile.am
@@ -1871,6 +1871,14 @@ test-diff-pkg/elfutils-debuginfo-0.183-1.el9.x86_64.rpm \
 test-diff-pkg/graphviz-2.44.0-18.el9.aarch64-self-check-report-0.txt \
 test-diff-pkg/graphviz-2.44.0-18.el9.aarch64.rpm \
 test-diff-pkg/graphviz-debuginfo-2.44.0-18.el9.aarch64.rpm \
+test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-4.1.1-6.el8.x86_64-output-1.txt \
+test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-compat-4.4.18-3.el9.x86_64-report-1.txt \
+test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64.rpm \
+test-diff-pkg/libxcrypt-4.4.18-3.el9.x86_64.rpm \
+test-diff-pkg/libxcrypt-compat-4.4.18-3.el9.x86_64.rpm \
+test-diff-pkg/libxcrypt-compat-debuginfo-4.4.18-3.el9.x86_64.rpm \
+test-diff-pkg/libxcrypt-debuginfo-4.1.1-6.el8.x86_64.rpm \
+test-diff-pkg/libxcrypt-debuginfo-4.4.18-3.el9.x86_64.rpm \
 \
 test-fedabipkgdiff/dbus-glib-0.104-3.fc23.x86_64.rpm \
 test-fedabipkgdiff/dbus-glib-debuginfo-0.104-3.fc23.x86_64.rpm \
diff --git a/tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-4.1.1-6.el8.x86_64-output-1.txt b/tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-4.1.1-6.el8.x86_64-output-1.txt
new file mode 100644
index 00000000..b428bcf9
--- /dev/null
+++ b/tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-4.1.1-6.el8.x86_64-output-1.txt
@@ -0,0 +1,4 @@
+Removed binaries:
+  [D] /lib64/libcrypt.so.1.1.0, no SONAME
+Added binaries:
+  [A] /usr/lib64/libcrypt.so.2.0.0, no SONAME
diff --git a/tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-compat-4.4.18-3.el9.x86_64-report-1.txt b/tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-compat-4.4.18-3.el9.x86_64-report-1.txt
new file mode 100644
index 00000000..b2030147
--- /dev/null
+++ b/tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-compat-4.4.18-3.el9.x86_64-report-1.txt
@@ -0,0 +1,13 @@
+================ changes of 'libcrypt.so.1.1.0'===============
+  Functions changes summary: 0 Removed, 0 Changed, 4 Added functions
+  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
+
+  4 Added functions:
+
+    [A] 'function int _crypt_crypt_checksalt(const char*)'    {crypt_checksalt@@XCRYPT_4.3}
+    [A] 'function char* _crypt_crypt_gensalt_rn(const char*, unsigned long int, const char*, int, char*, int)'    {xcrypt_gensalt_r@XCRYPT_2.0, aliases crypt_gensalt_r@XCRYPT_2.0, crypt_gensalt_rn@@XCRYPT_2.0}
+    [A] 'function const char* _crypt_crypt_preferred_method()'    {crypt_preferred_method@@XCRYPT_4.4}
+    [A] 'function char* _crypt_crypt_r(const char*, const char*, crypt_data*)'    {xcrypt_r@XCRYPT_2.0, aliases crypt_r@@XCRYPT_2.0, crypt_r@GLIBC_2.2.5}
+
+================ end of changes of 'libcrypt.so.1.1.0'===============
+
diff --git a/tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64.rpm b/tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64.rpm
new file mode 100644
index 0000000000000000000000000000000000000000..14cc710afbd14fd0b2874a36cf1b1b90e0e7a0e6
GIT binary patch
diff --git a/tests/data/test-diff-pkg/libxcrypt-4.4.18-3.el9.x86_64.rpm b/tests/data/test-diff-pkg/libxcrypt-4.4.18-3.el9.x86_64.rpm
new file mode 100644
index 0000000000000000000000000000000000000000..220284eb07cd527508697716304d9a967e3ff491
GIT binary patch
diff --git a/tests/data/test-diff-pkg/libxcrypt-compat-4.4.18-3.el9.x86_64.rpm b/tests/data/test-diff-pkg/libxcrypt-compat-4.4.18-3.el9.x86_64.rpm
new file mode 100644
index 0000000000000000000000000000000000000000..732212abc6c0f9f6cb194ee9fc4d1828a06d02f7
GIT binary patch
diff --git a/tests/data/test-diff-pkg/libxcrypt-compat-debuginfo-4.4.18-3.el9.x86_64.rpm b/tests/data/test-diff-pkg/libxcrypt-compat-debuginfo-4.4.18-3.el9.x86_64.rpm
new file mode 100644
index 0000000000000000000000000000000000000000..e29007822bdf93968e9c283fd67f6e83204ddb04
GIT binary patch
diff --git a/tests/data/test-diff-pkg/libxcrypt-debuginfo-4.1.1-6.el8.x86_64.rpm b/tests/data/test-diff-pkg/libxcrypt-debuginfo-4.1.1-6.el8.x86_64.rpm
new file mode 100644
index 0000000000000000000000000000000000000000..ef9f3615c4151f8166f9f039e044ef5ded7a58c8
GIT binary patch
diff --git a/tests/data/test-diff-pkg/libxcrypt-debuginfo-4.4.18-3.el9.x86_64.rpm b/tests/data/test-diff-pkg/libxcrypt-debuginfo-4.4.18-3.el9.x86_64.rpm
new file mode 100644
index 0000000000000000000000000000000000000000..6216dea6bec814da77dbe5e5b34df4dec456a011
GIT binary patch
diff --git a/tests/test-diff-pkg.cc b/tests/test-diff-pkg.cc
index 3d4a73f3..5869412d 100644
--- a/tests/test-diff-pkg.cc
+++ b/tests/test-diff-pkg.cc
@@ -708,6 +708,31 @@ static InOutSpec in_out_specs[] =
     "data/test-diff-pkg/graphviz-2.44.0-18.el9.aarch64-self-check-report-0.txt",
     "output/test-diff-pkg/graphviz-2.44.0-18.el9.aarch64-self-check-report-0.txt"
   } ,
+  {
+    "data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64.rpm",
+    "data/test-diff-pkg/libxcrypt-4.4.18-3.el9.x86_64.rpm",
+    "",
+    "",
+    "data/test-diff-pkg/libxcrypt-debuginfo-4.1.1-6.el8.x86_64.rpm",
+    "data/test-diff-pkg/libxcrypt-debuginfo-4.4.18-3.el9.x86_64.rpm",
+    "",
+    "",
+    "data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-4.1.1-6.el8.x86_64-output-1.txt",
+    "output/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-4.1.1-6.el8.x86_64-output-1.txt"
+  } ,
+  {
+    "data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64.rpm",
+    "data/test-diff-pkg/libxcrypt-compat-4.4.18-3.el9.x86_64.rpm",
+    "",
+    "",
+    "data/test-diff-pkg/libxcrypt-debuginfo-4.1.1-6.el8.x86_64.rpm",
+    "data/test-diff-pkg/libxcrypt-debuginfo-4.4.18-3.el9.x86_64.rpm,"
+    "data/test-diff-pkg/libxcrypt-compat-debuginfo-4.4.18-3.el9.x86_64.rpm",
+    "",
+    "",
+    "data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-compat-4.4.18-3.el9.x86_64-report-1.txt",
+    "output/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-compat-4.4.18-3.el9.x86_64-report-1.txt"
+  } ,
 #endif // WITH_RPM_4_15
 #endif //WITH_RPM
 
diff --git a/tools/abipkgdiff.cc b/tools/abipkgdiff.cc
index 05e180de..382cdfde 100644
--- a/tools/abipkgdiff.cc
+++ b/tools/abipkgdiff.cc
@@ -2672,6 +2672,10 @@ compare_prepared_userspace_packages(package& first_package,
 	{
 	  if (iter->second->type != abigail::dwarf_reader::ELF_TYPE_RELOCATABLE)
 	    {
+	      if (opts.verbose)
+		emit_prefix("abipkgdiff", cerr)
+		  << "Going to compare files '"
+		  << it->first << "' and '" << iter->first << "'\n";
 	      compare_args_sptr args
 		(new compare_args(*it->second,
 				  debug_dir1,
@@ -2688,6 +2692,10 @@ compare_prepared_userspace_packages(package& first_package,
 	}
       else if (iter == second_package.path_elf_file_sptr_map().end())
 	{
+	  if (opts.verbose)
+	    emit_prefix("abipkgdiff", cerr)
+	      << "Detected removed file:  '"
+	      << it->first << "'\n";
 	  diff.removed_binaries.push_back(it->second);
 	  status |= abigail::tools_utils::ABIDIFF_ABI_INCOMPATIBLE_CHANGE;
 	  status |= abigail::tools_utils::ABIDIFF_ABI_CHANGE;
@@ -2695,42 +2703,42 @@ compare_prepared_userspace_packages(package& first_package,
     }
 
   if (compare_tasks.empty())
-    {
-      maybe_erase_temp_dirs(first_package, second_package, opts);
-      return abigail::tools_utils::ABIDIFF_OK;
-    }
-
-  // Larger elfs are processed first, since it's usually safe to assume
-  // their debug-info is larger as well, but the results are still
-  // in a map ordered by looked up in elf.name order.
-  std::sort(compare_tasks.begin(), compare_tasks.end(), elf_size_is_greater);
-
-  // There's no reason to spawn more workers than there are ELF pairs
-  // to be compared.
-  size_t num_workers = (opts.parallel
-			? std::min(opts.num_workers, compare_tasks.size())
-			: 1);
-  assert(num_workers >= 1);
+    maybe_erase_temp_dirs(first_package, second_package, opts);
 
   comparison_done_notify notifier(diff);
-  abigail::workers::queue comparison_queue(num_workers, notifier);
-
-  // Compare all the binaries, in parallel and then wait for the
-  // comparisons to complete.
-  comparison_queue.schedule_tasks(compare_tasks);
-  comparison_queue.wait_for_workers_to_complete();
-
-  // Get the set of comparison tasks that were perform and sort them.
-  queue::tasks_type& done_tasks = comparison_queue.get_completed_tasks();
-  std::sort(done_tasks.begin(), done_tasks.end(), elf_size_is_greater);
-
-  // Print the reports of the comparison to standard output.
-  for (queue::tasks_type::const_iterator i = done_tasks.begin();
-       i != done_tasks.end();
-       ++i)
+  if (!compare_tasks.empty())
     {
-      compare_task_sptr t = dynamic_pointer_cast<compare_task>(*i);
-      cout << t->pretty_output;
+      // Larger elfs are processed first, since it's usually safe to assume
+      // their debug-info is larger as well, but the results are still
+      // in a map ordered by looked up in elf.name order.
+      std::sort(compare_tasks.begin(), compare_tasks.end(), elf_size_is_greater);
+
+      // There's no reason to spawn more workers than there are ELF pairs
+      // to be compared.
+      size_t num_workers = (opts.parallel
+			    ? std::min(opts.num_workers, compare_tasks.size())
+			    : 1);
+      assert(num_workers >= 1);
+
+      abigail::workers::queue comparison_queue(num_workers, notifier);
+
+      // Compare all the binaries, in parallel and then wait for the
+      // comparisons to complete.
+      comparison_queue.schedule_tasks(compare_tasks);
+      comparison_queue.wait_for_workers_to_complete();
+
+      // Get the set of comparison tasks that were perform and sort them.
+      queue::tasks_type& done_tasks = comparison_queue.get_completed_tasks();
+      std::sort(done_tasks.begin(), done_tasks.end(), elf_size_is_greater);
+
+      // Print the reports of the comparison to standard output.
+      for (queue::tasks_type::const_iterator i = done_tasks.begin();
+	   i != done_tasks.end();
+	   ++i)
+	{
+	  compare_task_sptr t = dynamic_pointer_cast<compare_task>(*i);
+	  cout << t->pretty_output;
+	}
     }
 
   // Update the count of added binaries.
