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). Since Kconfig symbols aren't evaluated for user emulation, the file unit is only built for system emulation. Signed-off-by: Philippe Mathieu-Daudé <[email protected]> Reviewed-by: Marc-André Lureau <[email protected]> Reviewed-by: Richard Henderson <[email protected]> Message-Id: <[email protected]> --- dump/win_dump-stubs.c | 21 +++++++++++++++++++++ dump/{win_dump.c => win_dump-x86.c} | 20 +------------------- Kconfig | 1 + dump/Kconfig | 6 ++++++ dump/meson.build | 3 ++- 5 files changed, 31 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..96c1095c4e1 --- /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(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 6e07913dfb4..d893dea7f19 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) - bool win_dump_available(Error **errp) { return true; @@ -477,19 +475,3 @@ out_free: out_cr3: first_x86_cpu->env.cr[3] = saved_cr3; } - -#else /* !TARGET_X86_64 */ - -bool win_dump_available(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..4b59dbb5fce --- /dev/null +++ b/dump/Kconfig @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: GPL-2.0-or-later + +config WINDUMP + bool + default y if X86_64 + depends on X86_64 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')) +system_ss.add(when: 'CONFIG_WINDUMP', if_false: files('win_dump-stubs.c')) -- 2.52.0
