]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemucapsprobemock: Fix lookup of qemu functions v6.10.0-rc2
authorRoman Bolshakov <r.bolshakov@yadro.com>
Mon, 23 Nov 2020 22:10:18 +0000 (01:10 +0300)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 27 Nov 2020 15:31:50 +0000 (16:31 +0100)
qemucapsprobemock can't find real versions of qemuMonitorSend() and
qemuMonitorJSONIOProcessLine() on macOS. That breaks qemucapsprobe.

The failure can be explained by documented behaviour of dlsym(3) on
macOS:

  If dlsym() is called with the special handle RTLD_NEXT, then dyld
  searches for the symbol in the dylibs the calling image linked against
  when built.

  [...] For flat linked images, the search starts in the load ordered
  list of all images, in the image right after the caller's image.

That means qemucapsprobemock must be linked against qemu test driver to
find symbols there with RTLD_NEXT.

Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
tests/meson.build

index e2682cb3a5f2f0f9161b1e78cad736fd72553686..f1d91ca50d47d7a1a565dcd1f4d585efbd489521 100644 (file)
@@ -101,7 +101,6 @@ endif
 if conf.has('WITH_QEMU')
   mock_libs += [
     { 'name': 'qemucaps2xmlmock' },
-    { 'name': 'qemucapsprobemock' },
     { 'name': 'qemucpumock' },
     { 'name': 'qemuhotplugmock' },
     { 'name': 'qemuxml2argvmock' },
@@ -171,6 +170,10 @@ if conf.has('WITH_QEMU')
     link_whole: [ qemu_driver_impl ],
     link_with: [ libvirt_lib ],
   )
+
+  mock_libs += [
+    { 'name': 'qemucapsprobemock', 'link_with': [ test_qemu_driver_lib ] },
+  ]
 else
   test_qemu_driver_lib = []
   test_utils_qemu_lib = []