util/yank.c and stubs/yank.c are both in libqemuutil.a, even though their external symbols conflict. The linker happens to pick the former. This links a bunch of unneeded code into the executables that actually want the latter: qemu-io, qemu-img, qemu-nbd, and several tests. Amazingly, none of them fails to link.
To fix this, the non-stub yank.c from sourceset util_ss to sourceset qmp_ss. This requires moving it from util/ to monitor/. Suggested-by: Paolo Bonzini <pbonz...@redhat.com> Signed-off-by: Markus Armbruster <arm...@redhat.com> --- {util => monitor}/yank.c | 0 MAINTAINERS | 2 +- monitor/meson.build | 1 + util/meson.build | 1 - 4 files changed, 2 insertions(+), 2 deletions(-) rename {util => monitor}/yank.c (100%) diff --git a/util/yank.c b/monitor/yank.c similarity index 100% rename from util/yank.c rename to monitor/yank.c diff --git a/MAINTAINERS b/MAINTAINERS index 5ca3c9f851..d3174c0bb0 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2799,7 +2799,7 @@ F: tests/unit/test-uuid.c Yank feature M: Lukas Straub <lukasstra...@web.de> S: Odd fixes -F: util/yank.c +F: monitor/yank.c F: stubs/yank.c F: include/qemu/yank.h F: qapi/yank.json diff --git a/monitor/meson.build b/monitor/meson.build index 6d00985ace..1ce5909c88 100644 --- a/monitor/meson.build +++ b/monitor/meson.build @@ -1,4 +1,5 @@ qmp_ss.add(files('monitor.c', 'qmp.c', 'qmp-cmds-control.c')) +qmp_ss.add(files('yank.c')) softmmu_ss.add(files( 'hmp-cmds.c', diff --git a/util/meson.build b/util/meson.build index 984fba965f..fa0298adab 100644 --- a/util/meson.build +++ b/util/meson.build @@ -51,7 +51,6 @@ endif if have_system util_ss.add(files('crc-ccitt.c')) util_ss.add(when: 'CONFIG_GIO', if_true: [files('dbus.c'), gio]) - util_ss.add(files('yank.c')) util_ss.add(when: 'CONFIG_LINUX', if_true: files('userfaultfd.c')) endif -- 2.26.2