Unfortunately this series doesn't work with the real VDDK library :-(
I see:
nbdkit: debug: vddk: config_complete
nbdkit: debug: dlopen shim prefix set to
/home/rjones/tmp/vddk-6.7.3/vmware-vix-disklib-distrib/lib64
Then a little bit later during VDDK initialization it fails with:
nbdkit: debug: VixDiskLib: Could not load default plugins from
/home/rjones/tmp/vddk-6.7.3/vmware-vix-disklib-distrib/lib64/libdiskLibPlugin.so: Cannot
open library: libcrypto.so.1.0.2: cannot open shared object file: No such file or
directory.
I was curious if the replacement dlopen() was being called at all, and
it is certainly called from plugins/vddk/vddk.c:
nbdkit: debug: dlopen:
/home/rjones/tmp/vddk-6.7.3/vmware-vix-disklib-distrib/lib64/libvixDiskLib.so.6 flags=2
It's also called from VDDK itself:
nbdkit: debug: dlopen:
/home/rjones/tmp/vddk-6.7.3/vmware-vix-disklib-distrib/lib64/libdiskLibPlugin.so
flags=257
but it's not being explicitly called for libcrypto.so because
immediately after the above message I see the error:
nbdkit: debug: VixDiskLib: Could not load default plugins from
/home/rjones/tmp/vddk-6.7.3/vmware-vix-disklib-distrib/lib64/libdiskLibPlugin.so: Cannot
open library: libcrypto.so.1.0.2: cannot open shared object file: No such file or
directory.
So I guess libcrypto is actually loaded from a DT_NEEDED entry:
$ eu-readelf -d
/home/rjones/tmp/vddk-6.7.3/vmware-vix-disklib-distrib/lib64/libdiskLibPlugin.so | grep
NEEDED
NEEDED Shared library: [libpthread.so.0]
NEEDED Shared library: [libstdc++.so.6]
NEEDED Shared library: [libdl.so.2]
NEEDED Shared library: [libcrypto.so.1.0.2]
NEEDED Shared library: [libssl.so.1.0.2]
NEEDED Shared library: [libexpat.so]
NEEDED Shared library: [libz.so.1]
NEEDED Shared library: [libvmacore.so]
NEEDED Shared library: [libvmomi.so]
NEEDED Shared library: [libvim-types.so]
NEEDED Shared library: [librt.so.1]
NEEDED Shared library: [libgcc_s.so.1]
NEEDED Shared library: [libc.so.6]
NEEDED Shared library: [ld-linux-x86-64.so.2]
which I suppose doesn't actually go through dlopen ...
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v