* [Qemu-devel] [PATCH v2 0/6] contrib/elf2dmp: elf2dmp for Windows hosts
@ 2018-12-20 1:24 Viktor Prutyanov
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 1/6] contrib/elf2dmp: fix elf.h including Viktor Prutyanov
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: Viktor Prutyanov @ 2018-12-20 1:24 UTC (permalink / raw)
To: pbonzini, rkagan; +Cc: eblake, qemu-devel, Viktor Prutyanov
In most cases, it is more convenient to convert a dump on the same machine
on which the analysis is performed. Because of WinDbg, the analysis of guest
Windows problems needs Windows host anyway, so it is useful to have dump
convertion tool near the debugger.
After these patches elf2dmp can be built both for Linux and Windows (x86
and x86_64) hosts.
Viktor Prutyanov (6):
contrib/elf2dmp: fix elf.h including
contrib/elf2dmp: use GLib in ELF processing
contrib/elf2dmp: use GLib in PDB processing
contrib/elf2dmp: fix structures definitions
contrib/elf2dmp: fix printf format
configure: enable elf2dmp build for Windows hosts
Makefile | 4 ++--
configure | 4 ++--
contrib/elf2dmp/kdbg.h | 12 ++++++++----
contrib/elf2dmp/main.c | 27 +++++++++++++++------------
contrib/elf2dmp/pdb.c | 33 +++++++++++----------------------
contrib/elf2dmp/pdb.h | 4 +++-
contrib/elf2dmp/pe.h | 6 ++++--
contrib/elf2dmp/qemu_elf.c | 27 ++++++++-------------------
contrib/elf2dmp/qemu_elf.h | 10 +++++-----
9 files changed, 58 insertions(+), 69 deletions(-)
--
2.17.2
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH v2 1/6] contrib/elf2dmp: fix elf.h including
2018-12-20 1:24 [Qemu-devel] [PATCH v2 0/6] contrib/elf2dmp: elf2dmp for Windows hosts Viktor Prutyanov
@ 2018-12-20 1:24 ` Viktor Prutyanov
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 2/6] contrib/elf2dmp: use GLib in ELF processing Viktor Prutyanov
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Viktor Prutyanov @ 2018-12-20 1:24 UTC (permalink / raw)
To: pbonzini, rkagan; +Cc: eblake, qemu-devel, Viktor Prutyanov
Before this patch QEMU elf.h was not actually included.
Signed-off-by: Viktor Prutyanov <viktor.prutyanov@phystech.edu>
---
contrib/elf2dmp/qemu_elf.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/contrib/elf2dmp/qemu_elf.h b/contrib/elf2dmp/qemu_elf.h
index d85d6558fa..19d1299954 100644
--- a/contrib/elf2dmp/qemu_elf.h
+++ b/contrib/elf2dmp/qemu_elf.h
@@ -5,11 +5,11 @@
*
*/
-#ifndef QEMU_ELF_H
-#define QEMU_ELF_H
+#ifndef ELF2DMP_ELF_H
+#define ELF2DMP_ELF_H
#include <stdint.h>
-#include <elf.h>
+#include "elf.h"
typedef struct QEMUCPUSegment {
uint32_t selector;
@@ -48,4 +48,4 @@ void QEMU_Elf_exit(QEMU_Elf *qe);
Elf64_Phdr *elf64_getphdr(void *map);
Elf64_Half elf_getphdrnum(void *map);
-#endif /* QEMU_ELF_H */
+#endif /* ELF2DMP_ELF_H */
--
2.17.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH v2 2/6] contrib/elf2dmp: use GLib in ELF processing
2018-12-20 1:24 [Qemu-devel] [PATCH v2 0/6] contrib/elf2dmp: elf2dmp for Windows hosts Viktor Prutyanov
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 1/6] contrib/elf2dmp: fix elf.h including Viktor Prutyanov
@ 2018-12-20 1:24 ` Viktor Prutyanov
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 3/6] contrib/elf2dmp: use GLib in PDB processing Viktor Prutyanov
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Viktor Prutyanov @ 2018-12-20 1:24 UTC (permalink / raw)
To: pbonzini, rkagan; +Cc: eblake, qemu-devel, Viktor Prutyanov
Replace POSIX mmap with GLib g_mapped_file_new in ELF processing module
to make elf2dmp cross-platform.
Signed-off-by: Viktor Prutyanov <viktor.prutyanov@phystech.edu>
---
contrib/elf2dmp/qemu_elf.c | 27 ++++++++-------------------
contrib/elf2dmp/qemu_elf.h | 2 +-
2 files changed, 9 insertions(+), 20 deletions(-)
diff --git a/contrib/elf2dmp/qemu_elf.c b/contrib/elf2dmp/qemu_elf.c
index e9c0d2534a..0db7816586 100644
--- a/contrib/elf2dmp/qemu_elf.c
+++ b/contrib/elf2dmp/qemu_elf.c
@@ -120,25 +120,17 @@ static void exit_states(QEMU_Elf *qe)
int QEMU_Elf_init(QEMU_Elf *qe, const char *filename)
{
+ GError *gerr = NULL;
int err = 0;
- struct stat st;
- qe->fd = open(filename, O_RDONLY, 0);
- if (qe->fd == -1) {
- eprintf("Failed to open ELF dump file \'%s\'\n", filename);
+ qe->gmf = g_mapped_file_new(filename, TRUE, &gerr);
+ if (gerr) {
+ eprintf("Failed to map ELF dump file \'%s\'\n", filename);
return 1;
}
- fstat(qe->fd, &st);
- qe->size = st.st_size;
-
- qe->map = mmap(NULL, qe->size, PROT_READ | PROT_WRITE,
- MAP_PRIVATE, qe->fd, 0);
- if (qe->map == MAP_FAILED) {
- eprintf("Failed to map ELF file\n");
- err = 1;
- goto out_fd;
- }
+ qe->map = g_mapped_file_get_contents(qe->gmf);
+ qe->size = g_mapped_file_get_length(qe->gmf);
if (init_states(qe)) {
eprintf("Failed to extract QEMU CPU states\n");
@@ -149,9 +141,7 @@ int QEMU_Elf_init(QEMU_Elf *qe, const char *filename)
return 0;
out_unmap:
- munmap(qe->map, qe->size);
-out_fd:
- close(qe->fd);
+ g_mapped_file_unref(qe->gmf);
return err;
}
@@ -159,6 +149,5 @@ out_fd:
void QEMU_Elf_exit(QEMU_Elf *qe)
{
exit_states(qe);
- munmap(qe->map, qe->size);
- close(qe->fd);
+ g_mapped_file_unref(qe->gmf);
}
diff --git a/contrib/elf2dmp/qemu_elf.h b/contrib/elf2dmp/qemu_elf.h
index 19d1299954..fc69606d00 100644
--- a/contrib/elf2dmp/qemu_elf.h
+++ b/contrib/elf2dmp/qemu_elf.h
@@ -34,7 +34,7 @@ typedef struct QEMUCPUState {
int is_system(QEMUCPUState *s);
typedef struct QEMU_Elf {
- int fd;
+ GMappedFile *gmf;
size_t size;
void *map;
QEMUCPUState **state;
--
2.17.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH v2 3/6] contrib/elf2dmp: use GLib in PDB processing
2018-12-20 1:24 [Qemu-devel] [PATCH v2 0/6] contrib/elf2dmp: elf2dmp for Windows hosts Viktor Prutyanov
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 1/6] contrib/elf2dmp: fix elf.h including Viktor Prutyanov
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 2/6] contrib/elf2dmp: use GLib in ELF processing Viktor Prutyanov
@ 2018-12-20 1:24 ` Viktor Prutyanov
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 4/6] contrib/elf2dmp: fix structures definitions Viktor Prutyanov
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Viktor Prutyanov @ 2018-12-20 1:24 UTC (permalink / raw)
To: pbonzini, rkagan; +Cc: eblake, qemu-devel, Viktor Prutyanov
Replace POSIX mmap with GLib g_mapped_file_new in PDB processing stage
to make elf2dmp cross-platform. There are no direct POSIX in elf2dmp
after this patch.
Signed-off-by: Viktor Prutyanov <viktor.prutyanov@phystech.edu>
---
contrib/elf2dmp/pdb.c | 29 ++++++++---------------------
contrib/elf2dmp/pdb.h | 2 +-
2 files changed, 9 insertions(+), 22 deletions(-)
diff --git a/contrib/elf2dmp/pdb.c b/contrib/elf2dmp/pdb.c
index bcb01b414f..52e352df79 100644
--- a/contrib/elf2dmp/pdb.c
+++ b/contrib/elf2dmp/pdb.c
@@ -277,28 +277,18 @@ static void pdb_reader_exit(struct pdb_reader *r)
int pdb_init_from_file(const char *name, struct pdb_reader *reader)
{
+ GError *gerr = NULL;
int err = 0;
- int fd;
void *map;
- struct stat st;
- fd = open(name, O_RDONLY, 0);
- if (fd == -1) {
- eprintf("Failed to open PDB file \'%s\'\n", name);
+ reader->gmf = g_mapped_file_new(name, TRUE, &gerr);
+ if (gerr) {
+ eprintf("Failed to map PDB file \'%s\'\n", name);
return 1;
}
- reader->fd = fd;
-
- fstat(fd, &st);
- reader->file_size = st.st_size;
-
- map = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
- if (map == MAP_FAILED) {
- eprintf("Failed to map PDB file\n");
- err = 1;
- goto out_fd;
- }
+ reader->file_size = g_mapped_file_get_length(reader->gmf);
+ map = g_mapped_file_get_contents(reader->gmf);
if (pdb_reader_init(reader, map)) {
err = 1;
goto out_unmap;
@@ -307,16 +297,13 @@ int pdb_init_from_file(const char *name, struct pdb_reader *reader)
return 0;
out_unmap:
- munmap(map, st.st_size);
-out_fd:
- close(fd);
+ g_mapped_file_unref(reader->gmf);
return err;
}
void pdb_exit(struct pdb_reader *reader)
{
- munmap(reader->ds.header, reader->file_size);
- close(reader->fd);
+ g_mapped_file_unref(reader->gmf);
pdb_reader_exit(reader);
}
diff --git a/contrib/elf2dmp/pdb.h b/contrib/elf2dmp/pdb.h
index 4351a2dd61..8e395119d1 100644
--- a/contrib/elf2dmp/pdb.h
+++ b/contrib/elf2dmp/pdb.h
@@ -218,7 +218,7 @@ typedef struct pdb_seg {
#define IMAGE_FILE_MACHINE_AMD64 0x8664
struct pdb_reader {
- int fd;
+ GMappedFile *gmf;
size_t file_size;
struct {
PDB_DS_HEADER *header;
--
2.17.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH v2 4/6] contrib/elf2dmp: fix structures definitions
2018-12-20 1:24 [Qemu-devel] [PATCH v2 0/6] contrib/elf2dmp: elf2dmp for Windows hosts Viktor Prutyanov
` (2 preceding siblings ...)
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 3/6] contrib/elf2dmp: use GLib in PDB processing Viktor Prutyanov
@ 2018-12-20 1:24 ` Viktor Prutyanov
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 5/6] contrib/elf2dmp: fix printf format Viktor Prutyanov
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Viktor Prutyanov @ 2018-12-20 1:24 UTC (permalink / raw)
To: pbonzini, rkagan; +Cc: eblake, qemu-devel, Viktor Prutyanov
Remove duplicate structures definitions in case of build for Windows hosts.
Signed-off-by: Viktor Prutyanov <viktor.prutyanov@phystech.edu>
---
contrib/elf2dmp/kdbg.h | 12 ++++++++----
contrib/elf2dmp/pdb.h | 2 ++
contrib/elf2dmp/pe.h | 6 ++++--
3 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/contrib/elf2dmp/kdbg.h b/contrib/elf2dmp/kdbg.h
index 851b57c321..002e3d0cd5 100644
--- a/contrib/elf2dmp/kdbg.h
+++ b/contrib/elf2dmp/kdbg.h
@@ -25,11 +25,15 @@ typedef struct DBGKD_GET_VERSION64 {
uint64_t DebuggerDataList;
} DBGKD_GET_VERSION64;
+#ifndef _WIN32
+typedef struct LIST_ENTRY64 {
+ struct LIST_ENTRY64 *Flink;
+ struct LIST_ENTRY64 *Blink;
+} LIST_ENTRY64;
+#endif
+
typedef struct DBGKD_DEBUG_DATA_HEADER64 {
- struct LIST_ENTRY64 {
- struct LIST_ENTRY64 *Flink;
- struct LIST_ENTRY64 *Blink;
- } List;
+ LIST_ENTRY64 List;
uint32_t OwnerTag;
uint32_t Size;
} DBGKD_DEBUG_DATA_HEADER64;
diff --git a/contrib/elf2dmp/pdb.h b/contrib/elf2dmp/pdb.h
index 8e395119d1..9a848f75e2 100644
--- a/contrib/elf2dmp/pdb.h
+++ b/contrib/elf2dmp/pdb.h
@@ -11,12 +11,14 @@
#include <stdint.h>
#include <stdlib.h>
+#ifndef _WIN32
typedef struct GUID {
unsigned int Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
} GUID;
+#endif
struct PDB_FILE {
uint32_t size;
diff --git a/contrib/elf2dmp/pe.h b/contrib/elf2dmp/pe.h
index 374e06a9c5..0fd5c23c7f 100644
--- a/contrib/elf2dmp/pe.h
+++ b/contrib/elf2dmp/pe.h
@@ -10,6 +10,7 @@
#include <stdint.h>
+#ifndef _WIN32
typedef struct IMAGE_DOS_HEADER {
uint16_t e_magic; /* 0x00: MZ Header signature */
uint16_t e_cblp; /* 0x02: Bytes on last page of file */
@@ -88,8 +89,6 @@ typedef struct IMAGE_NT_HEADERS64 {
IMAGE_OPTIONAL_HEADER64 OptionalHeader;
} __attribute__ ((packed)) IMAGE_NT_HEADERS64;
-#define IMAGE_FILE_DEBUG_DIRECTORY 6
-
typedef struct IMAGE_DEBUG_DIRECTORY {
uint32_t Characteristics;
uint32_t TimeDateStamp;
@@ -102,6 +101,9 @@ typedef struct IMAGE_DEBUG_DIRECTORY {
} __attribute__ ((packed)) IMAGE_DEBUG_DIRECTORY;
#define IMAGE_DEBUG_TYPE_CODEVIEW 2
+#endif
+
+#define IMAGE_FILE_DEBUG_DIRECTORY 6
typedef struct guid_t {
uint32_t a;
--
2.17.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH v2 5/6] contrib/elf2dmp: fix printf format
2018-12-20 1:24 [Qemu-devel] [PATCH v2 0/6] contrib/elf2dmp: elf2dmp for Windows hosts Viktor Prutyanov
` (3 preceding siblings ...)
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 4/6] contrib/elf2dmp: fix structures definitions Viktor Prutyanov
@ 2018-12-20 1:24 ` Viktor Prutyanov
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 6/6] configure: enable elf2dmp build for Windows hosts Viktor Prutyanov
2019-01-15 17:38 ` [Qemu-devel] [PATCH v2 0/6] contrib/elf2dmp: elf2dmp " Paolo Bonzini
6 siblings, 0 replies; 8+ messages in thread
From: Viktor Prutyanov @ 2018-12-20 1:24 UTC (permalink / raw)
To: pbonzini, rkagan; +Cc: eblake, qemu-devel, Viktor Prutyanov
Format strings for printf are changed for successful build for Windows
hosts.
Signed-off-by: Viktor Prutyanov <viktor.prutyanov@phystech.edu>
---
contrib/elf2dmp/main.c | 27 +++++++++++++++------------
contrib/elf2dmp/pdb.c | 4 +++-
2 files changed, 18 insertions(+), 13 deletions(-)
diff --git a/contrib/elf2dmp/main.c b/contrib/elf2dmp/main.c
index 9b93dab662..fdafb54900 100644
--- a/contrib/elf2dmp/main.c
+++ b/contrib/elf2dmp/main.c
@@ -5,6 +5,8 @@
*
*/
+#include <inttypes.h>
+
#include "qemu/osdep.h"
#include "err.h"
#include "addrspace.h"
@@ -41,7 +43,8 @@ static const uint64_t SharedUserData = 0xfffff78000000000;
#define KUSD_OFFSET_PRODUCT_TYPE 0x264
#define SYM_RESOLVE(base, r, s) ((s = pdb_resolve(base, r, #s)),\
- s ? printf(#s" = 0x%016lx\n", s) : eprintf("Failed to resolve "#s"\n"), s)
+ s ? printf(#s" = 0x%016"PRIx64"\n", s) :\
+ eprintf("Failed to resolve "#s"\n"), s)
static uint64_t rol(uint64_t x, uint64_t y)
{
@@ -98,8 +101,8 @@ static KDDEBUGGER_DATA64 *get_kdbg(uint64_t KernBase, struct pdb_reader *pdb,
return NULL;
}
- printf("[KiWaitNever] = 0x%016lx\n", kwn);
- printf("[KiWaitAlways] = 0x%016lx\n", kwa);
+ printf("[KiWaitNever] = 0x%016"PRIx64"\n", kwn);
+ printf("[KiWaitAlways] = 0x%016"PRIx64"\n", kwa);
/*
* If KDBG header can be decoded, KDBG size is available
@@ -202,7 +205,7 @@ static int fix_dtb(struct va_space *vs, QEMU_Elf *qe)
if (is_system(s)) {
va_space_set_dtb(vs, s->cr[3]);
- printf("DTB 0x%016lx has been found from CPU #%zu"
+ printf("DTB 0x%016"PRIx64" has been found from CPU #%zu"
" as system task CR3\n", vs->dtb, i);
return !(va_space_resolve(vs, SharedUserData));
}
@@ -222,7 +225,7 @@ static int fix_dtb(struct va_space *vs, QEMU_Elf *qe)
}
va_space_set_dtb(vs, *cr3);
- printf("DirectoryTableBase = 0x%016lx has been found from CPU #0"
+ printf("DirectoryTableBase = 0x%016"PRIx64" has been found from CPU #0"
" as interrupt handling CR3\n", vs->dtb);
return !(va_space_resolve(vs, SharedUserData));
}
@@ -393,8 +396,8 @@ static int pe_get_pdb_symstore_hash(uint64_t base, void *start_addr,
return 1;
}
- printf("Debug Directory RVA = 0x%016x\n",
- data_dir[IMAGE_FILE_DEBUG_DIRECTORY].VirtualAddress);
+ printf("Debug Directory RVA = 0x%08"PRIx32"\n",
+ (uint32_t)data_dir[IMAGE_FILE_DEBUG_DIRECTORY].VirtualAddress);
if (va_space_rw(vs,
base + data_dir[IMAGE_FILE_DEBUG_DIRECTORY].VirtualAddress,
@@ -488,7 +491,7 @@ int main(int argc, char *argv[])
}
state = qemu_elf.state[0];
- printf("CPU #0 CR3 is 0x%016lx\n", state->cr[3]);
+ printf("CPU #0 CR3 is 0x%016"PRIx64"\n", state->cr[3]);
va_space_create(&vs, &ps, state->cr[3]);
if (fix_dtb(&vs, &qemu_elf)) {
@@ -497,7 +500,7 @@ int main(int argc, char *argv[])
goto out_elf;
}
- printf("CPU #0 IDT is at 0x%016lx\n", state->idt.base);
+ printf("CPU #0 IDT is at 0x%016"PRIx64"\n", state->idt.base);
if (va_space_rw(&vs, state->idt.base,
&first_idt_desc, sizeof(first_idt_desc), 0)) {
@@ -505,10 +508,10 @@ int main(int argc, char *argv[])
err = 1;
goto out_ps;
}
- printf("CPU #0 IDT[0] -> 0x%016lx\n", idt_desc_addr(first_idt_desc));
+ printf("CPU #0 IDT[0] -> 0x%016"PRIx64"\n", idt_desc_addr(first_idt_desc));
KernBase = idt_desc_addr(first_idt_desc) & ~(PAGE_SIZE - 1);
- printf("Searching kernel downwards from 0x%16lx...\n", KernBase);
+ printf("Searching kernel downwards from 0x%016"PRIx64"...\n", KernBase);
for (; KernBase >= 0xfffff78000000000; KernBase -= PAGE_SIZE) {
nt_start_addr = va_space_resolve(&vs, KernBase);
@@ -521,7 +524,7 @@ int main(int argc, char *argv[])
}
}
- printf("KernBase = 0x%16lx, signature is \'%.2s\'\n", KernBase,
+ printf("KernBase = 0x%016"PRIx64", signature is \'%.2s\'\n", KernBase,
(char *)nt_start_addr);
if (pe_get_pdb_symstore_hash(KernBase, nt_start_addr, pdb_hash, &vs)) {
diff --git a/contrib/elf2dmp/pdb.c b/contrib/elf2dmp/pdb.c
index 52e352df79..64af20f584 100644
--- a/contrib/elf2dmp/pdb.c
+++ b/contrib/elf2dmp/pdb.c
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include <inttypes.h>
+
#include "qemu/osdep.h"
#include "pdb.h"
#include "err.h"
@@ -66,7 +68,7 @@ uint64_t pdb_find_public_v3_symbol(struct pdb_reader *r, const char *name)
uint32_t sect_rva = segment->dword[1];
uint64_t rva = sect_rva + sym->public_v3.offset;
- printf("%s: 0x%016x(%d:\'%.8s\') + 0x%08x = 0x%09lx\n", name,
+ printf("%s: 0x%016x(%d:\'%.8s\') + 0x%08x = 0x%09"PRIx64"\n", name,
sect_rva, sym->public_v3.segment,
((char *)segment - 8), sym->public_v3.offset, rva);
return rva;
--
2.17.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH v2 6/6] configure: enable elf2dmp build for Windows hosts
2018-12-20 1:24 [Qemu-devel] [PATCH v2 0/6] contrib/elf2dmp: elf2dmp for Windows hosts Viktor Prutyanov
` (4 preceding siblings ...)
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 5/6] contrib/elf2dmp: fix printf format Viktor Prutyanov
@ 2018-12-20 1:24 ` Viktor Prutyanov
2019-01-15 17:38 ` [Qemu-devel] [PATCH v2 0/6] contrib/elf2dmp: elf2dmp " Paolo Bonzini
6 siblings, 0 replies; 8+ messages in thread
From: Viktor Prutyanov @ 2018-12-20 1:24 UTC (permalink / raw)
To: pbonzini, rkagan; +Cc: eblake, qemu-devel, Viktor Prutyanov
After this patch contrib/elf2dmp can be built for Windows x86 and x86_64
hosts by mingw.
Signed-off-by: Viktor Prutyanov <viktor.prutyanov@phystech.edu>
---
Makefile | 4 ++--
configure | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/Makefile b/Makefile
index c8b9efdad4..25acb94aa6 100644
--- a/Makefile
+++ b/Makefile
@@ -565,8 +565,8 @@ ifneq ($(EXESUF),)
qemu-ga: qemu-ga$(EXESUF) $(QGA_VSS_PROVIDER) $(QEMU_GA_MSI)
endif
-elf2dmp: LIBS = $(CURL_LIBS)
-elf2dmp: $(elf2dmp-obj-y)
+elf2dmp$(EXESUF): LIBS += $(CURL_LIBS)
+elf2dmp$(EXESUF): $(elf2dmp-obj-y)
$(call LINK, $^)
ifdef CONFIG_IVSHMEM
diff --git a/configure b/configure
index 224d3071ac..686ae2e093 100755
--- a/configure
+++ b/configure
@@ -5753,8 +5753,8 @@ if test "$want_tools" = "yes" ; then
if [ "$ivshmem" = "yes" ]; then
tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
fi
- if [ "$posix" = "yes" ] && [ "$curl" = "yes" ]; then
- tools="elf2dmp $tools"
+ if [ "$curl" = "yes" ]; then
+ tools="elf2dmp\$(EXESUF) $tools"
fi
fi
if test "$softmmu" = yes ; then
--
2.17.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH v2 0/6] contrib/elf2dmp: elf2dmp for Windows hosts
2018-12-20 1:24 [Qemu-devel] [PATCH v2 0/6] contrib/elf2dmp: elf2dmp for Windows hosts Viktor Prutyanov
` (5 preceding siblings ...)
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 6/6] configure: enable elf2dmp build for Windows hosts Viktor Prutyanov
@ 2019-01-15 17:38 ` Paolo Bonzini
6 siblings, 0 replies; 8+ messages in thread
From: Paolo Bonzini @ 2019-01-15 17:38 UTC (permalink / raw)
To: Viktor Prutyanov, rkagan; +Cc: qemu-devel
On 20/12/18 02:24, Viktor Prutyanov wrote:
> In most cases, it is more convenient to convert a dump on the same machine
> on which the analysis is performed. Because of WinDbg, the analysis of guest
> Windows problems needs Windows host anyway, so it is useful to have dump
> convertion tool near the debugger.
> After these patches elf2dmp can be built both for Linux and Windows (x86
> and x86_64) hosts.
>
> Viktor Prutyanov (6):
> contrib/elf2dmp: fix elf.h including
> contrib/elf2dmp: use GLib in ELF processing
> contrib/elf2dmp: use GLib in PDB processing
> contrib/elf2dmp: fix structures definitions
> contrib/elf2dmp: fix printf format
> configure: enable elf2dmp build for Windows hosts
>
> Makefile | 4 ++--
> configure | 4 ++--
> contrib/elf2dmp/kdbg.h | 12 ++++++++----
> contrib/elf2dmp/main.c | 27 +++++++++++++++------------
> contrib/elf2dmp/pdb.c | 33 +++++++++++----------------------
> contrib/elf2dmp/pdb.h | 4 +++-
> contrib/elf2dmp/pe.h | 6 ++++--
> contrib/elf2dmp/qemu_elf.c | 27 ++++++++-------------------
> contrib/elf2dmp/qemu_elf.h | 10 +++++-----
> 9 files changed, 58 insertions(+), 69 deletions(-)
>
Queued, thanks.
Paolo
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-01-15 17:38 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-20 1:24 [Qemu-devel] [PATCH v2 0/6] contrib/elf2dmp: elf2dmp for Windows hosts Viktor Prutyanov
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 1/6] contrib/elf2dmp: fix elf.h including Viktor Prutyanov
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 2/6] contrib/elf2dmp: use GLib in ELF processing Viktor Prutyanov
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 3/6] contrib/elf2dmp: use GLib in PDB processing Viktor Prutyanov
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 4/6] contrib/elf2dmp: fix structures definitions Viktor Prutyanov
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 5/6] contrib/elf2dmp: fix printf format Viktor Prutyanov
2018-12-20 1:24 ` [Qemu-devel] [PATCH v2 6/6] configure: enable elf2dmp build for Windows hosts Viktor Prutyanov
2019-01-15 17:38 ` [Qemu-devel] [PATCH v2 0/6] contrib/elf2dmp: elf2dmp " Paolo Bonzini
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.