One way or another, the guest could communicate various dump info (via guest agent or vmcoreinfo device) and populate that structure. It can then be used to augment the dump with various details, as done in the following patch.
Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> --- include/sysemu/dump-info.h | 18 ++++++++++++++++++ dump.c | 3 +++ 2 files changed, 21 insertions(+) create mode 100644 include/sysemu/dump-info.h diff --git a/include/sysemu/dump-info.h b/include/sysemu/dump-info.h new file mode 100644 index 0000000000..d2378e15e2 --- /dev/null +++ b/include/sysemu/dump-info.h @@ -0,0 +1,18 @@ +#ifndef DUMP_INFO_H +#define DUMP_INFO_H + +typedef struct DumpInfo { + bool received; + /* kernel base address */ + bool has_phys_base; + uint64_t phys_base; + /* "_text" symbol location */ + bool has_text; + uint64_t text; + /* the content of /sys/kernel/vmcoreinfo on Linux */ + char *vmcoreinfo; +} DumpInfo; + +extern DumpInfo dump_info; + +#endif /* DUMP_INFO_H */ diff --git a/dump.c b/dump.c index d9090a24cc..bdf3270f02 100644 --- a/dump.c +++ b/dump.c @@ -20,6 +20,7 @@ #include "monitor/monitor.h" #include "sysemu/kvm.h" #include "sysemu/dump.h" +#include "sysemu/dump-info.h" #include "sysemu/sysemu.h" #include "sysemu/memory_mapping.h" #include "sysemu/cpus.h" @@ -38,6 +39,8 @@ #define ELF_MACHINE_UNAME "Unknown" #endif +DumpInfo dump_info = { 0, }; + uint16_t cpu_to_dump16(DumpState *s, uint16_t val) { if (s->dump_info.d_endian == ELFDATA2LSB) { -- 2.13.0.91.g00982b8dd