On 6/5/24 17:25, Zhao Liu wrote:
Compiling without system, user, tools or guest-agent fails with the
following error message:

./configure --disable-system --disable-user --disable-tools \
--disable-guest-agent

error message:

/usr/bin/ld: libqemuutil.a.p/util_error-report.c.o: in function `error_printf':
/media/liuzhao/data/qemu-cook/build/../util/error-report.c:38: undefined 
reference to `error_vprintf'
/usr/bin/ld: libqemuutil.a.p/util_error-report.c.o: in function `vreport':
/media/liuzhao/data/qemu-cook/build/../util/error-report.c:215: undefined 
reference to `error_vprintf'
collect2: error: ld returned 1 exit status

This is because tests/bench and tests/unit both need qemuutil, which
requires error_vprintf stub when system is disabled.

Add error_vprintf stub into stub_ss for all cases other than disabling
system.

Should be "other than enabled system emulation", but...

-if have_ga
-  stub_ss.add(files('error-printf.c'))
-endif
-
  if have_block or have_user
    stub_ss.add(files('qtest.c'))
    stub_ss.add(files('vm-stop.c'))
    stub_ss.add(files('vmstate.c'))
-
-  # more symbols provided by the monitor
-  stub_ss.add(files('error-printf.c'))
  endif

... these should be left in, since it's possible to build with --enable-guest-agent --enable-system.

The best and easiest solution is simply to move error-printf.c to the unconditional section at the top of the file. I queued the patch with that change.

Paolo

  if have_user
@@ -76,6 +69,9 @@ if have_system
    stub_ss.add(files('target-monitor-defs.c'))
    stub_ss.add(files('win32-kbd-hook.c'))
    stub_ss.add(files('xen-hw-stub.c'))
+else
+  # more symbols provided by the monitor
+  stub_ss.add(files('error-printf.c'))
  endif
if have_system or have_user


Reply via email to