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 > >
