On Thu, Feb 13, 2020 at 02:06:47PM +0000, Richard W.M. Jones wrote:
---
configure.ac | 5 +++++
plugins/vddk/vddk.c | 4 ++++
2 files changed, 9 insertions(+)
diff --git a/configure.ac b/configure.ac
index d71f06e4..57626a76 100644
--- a/configure.ac
+++ b/configure.ac
@@ -321,6 +321,11 @@ AC_SEARCH_LIBS([dlsym], [dl dld], [
])
LIBS="$old_LIBS"
+old_LIBS="$LIBS"
+LIBS="$LIBS -ldl"
+AC_CHECK_FUNCS([dlmopen])
+LIBS="$old_LIBS"
+
dnl Test if <iconv.h> header can build working binaries.
dnl
dnl On FreeBSD: iconv and libiconv both exist, both can be installed
diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
index c49eebcd..b988946b 100644
--- a/plugins/vddk/vddk.c
+++ b/plugins/vddk/vddk.c
@@ -267,7 +267,11 @@ load_library (void)
exit (EXIT_FAILURE);
}
+#ifdef HAVE_DLMOPEN
+ dl = dlmopen (LM_ID_NEWLM, path, RTLD_NOW);
+#else
dl = dlopen (path, RTLD_NOW);
+#endif
if (dl != NULL)
break;
if (i == 0) {
The error when this patch is applied is:
nbdkit: debug: VDDK call: VixDiskLib_InitEx (5, 1, &debug_fn, &error_fn,
&error_fn, /home/rjones/tmp/vddk-5.1.1/vmware-vix-disklib-distrib, NULL)
nbdkit: debug: VixDiskLib: linuxVerifySSLCertificates is 0
nbdkit: debug: VixDiskLib: config options: libdir
'/home/rjones/tmp/vddk-5.1.1/vmware-vix-disklib-distrib', tmpDir
'/tmp/vmware-rjones'.
nbdkit: debug: OBJLIB-LIB : Objlib initialized.
nbdkit: debug: VixDiskLib: Attempting to locate advanced transport module in
"/home/rjones/tmp/vddk-5.1.1/vmware-vix-disklib-distrib".
/home/rjones/d/nbdkit/server/nbdkit: error while loading shared libraries:
libcrypto.so.0.9.8: cannot open shared object file: No such file or directory
What appears to happen here is that libvixDiskLib.so.6 is loaded and
runs (see the VixDiskLib debug messages which come from VDDK itself).
However VDDK tries to open "Advanced Transport" (which is a VDDK
extension) and I think it's trying itself to use dlopen() and that is
failing.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine. Supports Linux and Windows.
http://people.redhat.com/~rjones/virt-df/