Hi

On Thu, Jan 8, 2026 at 8:12 PM Philippe Mathieu-Daudé <[email protected]>
wrote:

> Rather than compiling the same content for all targets (unused
> most of the time, i.e. qemu-system-avr ...), extract the non
> x86 specific parts to a stub file and build it once for all
> non-x86 targets.
> Add a Kconfig symbol to only select the target-specific file
> with the x86 target (rename this file with '-x86' suffix).
>
> Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
> ---
>  dump/win_dump-stubs.c               | 21 +++++++++++++++++++++
>  dump/{win_dump.c => win_dump-x86.c} | 20 +-------------------
>  Kconfig                             |  1 +
>  dump/Kconfig                        |  4 ++++
>  dump/meson.build                    |  3 ++-
>  5 files changed, 29 insertions(+), 20 deletions(-)
>  create mode 100644 dump/win_dump-stubs.c
>  rename dump/{win_dump.c => win_dump-x86.c} (97%)
>  create mode 100644 dump/Kconfig
>
> diff --git a/dump/win_dump-stubs.c b/dump/win_dump-stubs.c
> new file mode 100644
> index 00000000000..07d1a0c5ea9
> --- /dev/null
> +++ b/dump/win_dump-stubs.c
> @@ -0,0 +1,21 @@
> +/*
> + * Windows crashdump stubs
> + *
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + */
> +
> +#include "qemu/osdep.h"
> +#include "qapi/error.h"
> +#include "win_dump.h"
> +
> +bool win_dump_available(DumpState *s, Error **errp)
> +{
> +    error_setg(errp, "x86-64 Windows guest dump not built-in");
> +
> +    return false;
> +}
> +
> +void create_win_dump(DumpState *s, Error **errp)
> +{
> +    g_assert_not_reached();
> +}
> diff --git a/dump/win_dump.c b/dump/win_dump-x86.c
> similarity index 97%
> rename from dump/win_dump.c
> rename to dump/win_dump-x86.c
> index e5fdc12ad34..4f8bcc356fc 100644
> --- a/dump/win_dump.c
> +++ b/dump/win_dump-x86.c
> @@ -1,5 +1,5 @@
>  /*
> - * Windows crashdump (target specific implementations)
> + * Windows crashdump (x86 specific implementations)
>   *
>   * Copyright (c) 2018 Virtuozzo International GmbH
>   *
> @@ -18,8 +18,6 @@
>  #include "win_dump.h"
>  #include "cpu.h"
>
> -#if defined(TARGET_X86_64)
> -
>  static bool check_header(WinDumpHeader *h, bool *x64, Error **errp);
>
>  bool win_dump_available(DumpState *s, Error **errp)
> @@ -494,19 +492,3 @@ out_free:
>  out_cr3:
>      first_x86_cpu->env.cr[3] = saved_cr3;
>  }
> -
> -#else /* !TARGET_X86_64 */
> -
> -bool win_dump_available(DumpState *s, Error **errp)
> -{
> -    error_setg(errp, "Windows dump is only available for x86-64");
> -
> -    return false;
> -}
> -
> -void create_win_dump(DumpState *s, Error **errp)
> -{
> -    g_assert_not_reached();
> -}
> -
> -#endif
> diff --git a/Kconfig b/Kconfig
> index 63ca7f46df7..26388c12838 100644
> --- a/Kconfig
> +++ b/Kconfig
> @@ -1,6 +1,7 @@
>  source Kconfig.host
>  source backends/Kconfig
>  source accel/Kconfig
> +source dump/Kconfig
>  source target/Kconfig
>  source hw/Kconfig
>  source semihosting/Kconfig
> diff --git a/dump/Kconfig b/dump/Kconfig
> new file mode 100644
> index 00000000000..99f99ff4a4f
> --- /dev/null
> +++ b/dump/Kconfig
> @@ -0,0 +1,4 @@
> +config WINDUMP
> +    bool
> +    default y if I386
> +    depends on I386
> diff --git a/dump/meson.build b/dump/meson.build
> index 4277ce9328a..26e1561ed48 100644
> --- a/dump/meson.build
> +++ b/dump/meson.build
> @@ -1,2 +1,3 @@
>  system_ss.add([files('dump.c', 'dump-hmp-cmds.c'), snappy, lzo])
> -specific_ss.add(when: 'CONFIG_SYSTEM_ONLY', if_true: files('win_dump.c'))
> +specific_ss.add(when: 'CONFIG_WINDUMP', if_true: files('win_dump-x86.c'))
>

I thought this could end up in qemu-user, but apparently I was wrong..

Reviewed-by: Marc-André Lureau <[email protected]>


> +system_ss.add(when: 'CONFIG_WINDUMP', if_false: files('win_dump-stubs.c'))
> --
> 2.52.0
>
>

Reply via email to