qemucapsprobemock: Fix lookup of qemu functions

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>
This commit is contained in:
Roman Bolshakov 2020-11-24 01:10:18 +03:00 committed by Michal Privoznik
parent 11e67a2910
commit 78999beabc

View 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 = []