Some downstreams rename the QEMU binary to "qemu-kvm". This breaks qtest_get_arch(), which attempts to parse the target architecture from the QTEST_QEMU_BINARY environment variable.
Print an error instead of returning the architecture "kvm". Things fail in weird ways when the architecture string is bogus. Arguably qtests should always be run in a build directory instead of against an installed QEMU. In any case, printing a clear error when this happens is helpful. Reported-by: Qin Wang <qinw...@rehdat.com> Cc: Emanuele Giuseppe Esposito <eespo...@redhat.com> Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> --- tests/qtest/libqtest.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c index 71e359efcd..7caf20f56b 100644 --- a/tests/qtest/libqtest.c +++ b/tests/qtest/libqtest.c @@ -910,6 +910,16 @@ const char *qtest_get_arch(void) abort(); } + if (!strstr(qemu, "-system-")) { + fprintf(stderr, "QTEST_QEMU_BINARY must end with *-system-<arch> where " + "'arch' is the target architecture (x86_64, aarch64, " + "etc). If you are using qemu-kvm or another custom " + "name, please create a symlink like ln -s " + "path/to/qemu-kvm qemu-system-x86_64 and use that " + "instead.\n"); + abort(); + } + return end + 1; } -- 2.30.2