Skip to content

Commit

Permalink
dump: Simplify compiling win_dump.o by introducing win_dump_available()
Browse files Browse the repository at this point in the history
To make dump.c less target dependent, move the TARGET_X86_64 #ifdef'ry
from dump.c to win_dump.c (introducing a win_dump_available() method
there). By doing so we can build win_dump.c on any target, and
simplify the meson rule.

Reviewed-by: Richard Henderson <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Marc-André Lureau <[email protected]>
Message-Id: <[email protected]>
  • Loading branch information
philmd committed Feb 27, 2023
1 parent ac97877 commit efc3146
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 12 deletions.
16 changes: 5 additions & 11 deletions dump/dump.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,7 @@
#include "hw/misc/vmcoreinfo.h"
#include "migration/blocker.h"
#include "hw/core/cpu.h"

#ifdef TARGET_X86_64
#include "win_dump.h"
#endif

#include <zlib.h>
#ifdef CONFIG_LZO
Expand Down Expand Up @@ -2126,12 +2123,10 @@ void qmp_dump_guest_memory(bool paging, const char *file,
}
#endif

#ifndef TARGET_X86_64
if (has_format && format == DUMP_GUEST_MEMORY_FORMAT_WIN_DMP) {
error_setg(errp, "Windows dump is only available for x86-64");
if (has_format && format == DUMP_GUEST_MEMORY_FORMAT_WIN_DMP
&& !win_dump_available(errp)) {
return;
}
#endif

#if !defined(WIN32)
if (strstart(file, "fd:", &p)) {
Expand Down Expand Up @@ -2213,10 +2208,9 @@ DumpGuestMemoryCapability *qmp_query_dump_guest_memory_capability(Error **errp)
QAPI_LIST_APPEND(tail, DUMP_GUEST_MEMORY_FORMAT_KDUMP_SNAPPY);
#endif

/* Windows dump is available only if target is x86_64 */
#ifdef TARGET_X86_64
QAPI_LIST_APPEND(tail, DUMP_GUEST_MEMORY_FORMAT_WIN_DMP);
#endif
if (win_dump_available(NULL)) {
QAPI_LIST_APPEND(tail, DUMP_GUEST_MEMORY_FORMAT_WIN_DMP);
}

return cap;
}
2 changes: 1 addition & 1 deletion dump/meson.build
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
softmmu_ss.add(files('dump-hmp-cmds.c'))

specific_ss.add(when: 'CONFIG_SOFTMMU', if_true: [files('dump.c'), snappy, lzo])
specific_ss.add(when: ['CONFIG_SOFTMMU', 'TARGET_X86_64'], if_true: files('win_dump.c'))
specific_ss.add(when: 'CONFIG_SOFTMMU', if_true: files('win_dump.c'))
18 changes: 18 additions & 0 deletions dump/win_dump.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,13 @@
#include "win_dump.h"
#include "cpu.h"

#if defined(TARGET_X86_64)

bool win_dump_available(Error **errp)
{
return true;
}

static size_t win_dump_ptr_size(bool x64)
{
return x64 ? sizeof(uint64_t) : sizeof(uint32_t);
Expand Down Expand Up @@ -470,3 +477,14 @@ void create_win_dump(DumpState *s, Error **errp)

return;
}

#else /* !TARGET_X86_64 */

bool win_dump_available(Error **errp)
{
error_setg(errp, "Windows dump is only available for x86-64");

return false;
}

#endif
3 changes: 3 additions & 0 deletions dump/win_dump.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@

#include "sysemu/dump.h"

/* Check Windows dump availability for the current target */
bool win_dump_available(Error **errp);

void create_win_dump(DumpState *s, Error **errp);

#endif /* WIN_DUMP_H */

0 comments on commit efc3146

Please sign in to comment.