On 02/09/20 12:24, Thomas Huth wrote:
> When cross-compiling with MinGW, there are sometimes some weird linker
> errors like:
>
> ibqemuutil.a(util_main-loop.c.obj): In function `qemu_notify_event':
> /builds/huth/qemu/build/../util/main-loop.c:139: multiple definition of
> `qemu_notify_event'
> libqemuutil.a(stubs_notify-event.c.obj):/builds/huth/qemu/stubs/notify-event.c:5:
> first defined here
> collect2: error: ld returned 1 exit status
> /builds/huth/qemu/rules.mak:88: recipe for target 'tests/test-timed-average.exe'
> failed
>
> It seems like it works better when the qemu_timer_notify_cb() stub (which
> calls qemu_notify_event()) is in a separate file - then we can also even
> remove the qemu_notify_event() stub now.
>
> This patch is based on ideas from the patch "stubs: Remove qemu_notify_event()"
> by Philippe Mathieu-Daudé and the patch "cpu-timers, icount: new modules" from
> Claudio Fontana.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> stubs/cpu-get-icount.c | 5 -----
> stubs/meson.build | 2 +-
> stubs/notify-event.c | 6 ------
> stubs/qemu-timer-notify-cb.c | 8 ++++++++
> 4 files changed, 9 insertions(+), 12 deletions(-)
> delete mode 100644 stubs/notify-event.c
> create mode 100644 stubs/qemu-timer-notify-cb.c
>
> diff --git a/stubs/cpu-get-icount.c b/stubs/cpu-get-icount.c
> index b35f844638..4001613240 100644
> --- a/stubs/cpu-get-icount.c
> +++ b/stubs/cpu-get-icount.c
> @@ -14,8 +14,3 @@ int64_t cpu_get_icount_raw(void)
> {
> abort();
> }
> -
> -void qemu_timer_notify_cb(void *opaque, QEMUClockType type)
> -{
> - qemu_notify_event();
> -}
> diff --git a/stubs/meson.build b/stubs/meson.build
> index 019bd79c7a..e2dfedc2a7 100644
> --- a/stubs/meson.build
> +++ b/stubs/meson.build
> @@ -24,9 +24,9 @@ stub_ss.add(files('machine-init-done.c'))
> stub_ss.add(files('migr-blocker.c'))
> stub_ss.add(files('monitor.c'))
> stub_ss.add(files('monitor-core.c'))
> -stub_ss.add(files('notify-event.c'))
> stub_ss.add(files('pci-bus.c'))
> stub_ss.add(files('pci-host-piix.c'))
> +stub_ss.add(files('qemu-timer-notify-cb.c'))
> stub_ss.add(files('qmp_memory_device.c'))
> stub_ss.add(files('qtest.c'))
> stub_ss.add(files('ram-block.c'))
> diff --git a/stubs/notify-event.c b/stubs/notify-event.c
> deleted file mode 100644
> index 827bb52d1a..0000000000
> --- a/stubs/notify-event.c
> +++ /dev/null
> @@ -1,6 +0,0 @@
> -#include "qemu/osdep.h"
> -#include "qemu/main-loop.h"
> -
> -void qemu_notify_event(void)
> -{
> -}
> diff --git a/stubs/qemu-timer-notify-cb.c b/stubs/qemu-timer-notify-cb.c
> new file mode 100644
> index 0000000000..054b408b1c
> --- /dev/null
> +++ b/stubs/qemu-timer-notify-cb.c
> @@ -0,0 +1,8 @@
> +#include "qemu/osdep.h"
> +#include "sysemu/cpus.h"
> +#include "qemu/main-loop.h"
> +
> +void qemu_timer_notify_cb(void *opaque, QEMUClockType type)
> +{
> + qemu_notify_event();
> +}
>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
LGTM, can you queue this patch,