On 9/1/26 09:50, Marc-André Lureau wrote:
Hi

On Thu, Jan 8, 2026 at 8:12 PM Philippe Mathieu-Daudé <[email protected] <mailto:[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]
    <mailto:[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 <http://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..

I was myself surprised too. I think this is somehow by luck, because
IIUC Kconfig symbols aren't evaluated for user emulation (IOW the file
isn't added because CONFIG_WINDUMP is unset on USER).


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

Thanks!


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



Reply via email to