dump: Build stubs once for non-x86 targets

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é <philmd@linaro.org>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20260121215622.92966-3-philmd@linaro.org>
This commit is contained in:
Philippe Mathieu-Daudé
2026-01-04 18:41:12 +01:00
parent 40b51dd9b4
commit a2290fa210
5 changed files with 31 additions and 20 deletions

View File

@@ -1,6 +1,7 @@
source Kconfig.host source Kconfig.host
source backends/Kconfig source backends/Kconfig
source accel/Kconfig source accel/Kconfig
source dump/Kconfig
source target/Kconfig source target/Kconfig
source hw/Kconfig source hw/Kconfig
source semihosting/Kconfig source semihosting/Kconfig

6
dump/Kconfig Normal file
View File

@@ -0,0 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
config WINDUMP
bool
default y if X86_64
depends on X86_64

View File

@@ -1,2 +1,3 @@
system_ss.add([files('dump.c', 'dump-hmp-cmds.c'), snappy, lzo]) 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'))

21
dump/win_dump-stubs.c Normal file
View File

@@ -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();
}

View File

@@ -1,5 +1,5 @@
/* /*
* Windows crashdump (target specific implementations) * Windows crashdump (x86 specific implementations)
* *
* Copyright (c) 2018 Virtuozzo International GmbH * Copyright (c) 2018 Virtuozzo International GmbH
* *
@@ -18,8 +18,6 @@
#include "win_dump.h" #include "win_dump.h"
#include "cpu.h" #include "cpu.h"
#if defined(TARGET_X86_64)
bool win_dump_available(Error **errp) bool win_dump_available(Error **errp)
{ {
return true; return true;
@@ -477,19 +475,3 @@ out_free:
out_cr3: out_cr3:
first_x86_cpu->env.cr[3] = saved_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