3fa2d384c2
elf2dmp is a converter from ELF dump (produced by 'dump-guest-memory') to Windows MEMORY.DMP format (also know as 'Complete Memory Dump') which can be opened in WinDbg. This tool can help if VMCoreInfo device/driver is absent in Windows VM and 'dump-guest-memory -w' is not available but dump can be created in ELF format. The tool works as follows: 1. Determine the system paging root looking at GS_BASE or KERNEL_GS_BASE to locate the PRCB structure and finds the kernel CR3 nearby if QEMU CPU state CR3 is not suitable. 2. Find an address within the kernel image by dereferencing the first IDT entry and scans virtual memory upwards until the start of the kernel. 3. Download a PDB matching the kernel from the Microsoft symbol store, and figure out the layout of certain relevant structures necessary for the dump. 4. Populate the corresponding structures in the memory image and create the appropriate dump header. Signed-off-by: Viktor Prutyanov <viktor.prutyanov@virtuozzo.com> Message-Id: <1535546488-30208-3-git-send-email-viktor.prutyanov@virtuozzo.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
270 lines
9.0 KiB
Makefile
270 lines
9.0 KiB
Makefile
#######################################################################
|
|
# Common libraries for tools and emulators
|
|
stub-obj-y = stubs/ crypto/
|
|
util-obj-y = util/ qobject/ qapi/
|
|
util-obj-y += qapi/qapi-builtin-types.o
|
|
util-obj-y += qapi/qapi-types.o
|
|
util-obj-y += qapi/qapi-types-block-core.o
|
|
util-obj-y += qapi/qapi-types-block.o
|
|
util-obj-y += qapi/qapi-types-char.o
|
|
util-obj-y += qapi/qapi-types-common.o
|
|
util-obj-y += qapi/qapi-types-crypto.o
|
|
util-obj-y += qapi/qapi-types-introspect.o
|
|
util-obj-y += qapi/qapi-types-job.o
|
|
util-obj-y += qapi/qapi-types-migration.o
|
|
util-obj-y += qapi/qapi-types-misc.o
|
|
util-obj-y += qapi/qapi-types-net.o
|
|
util-obj-y += qapi/qapi-types-rocker.o
|
|
util-obj-y += qapi/qapi-types-run-state.o
|
|
util-obj-y += qapi/qapi-types-sockets.o
|
|
util-obj-y += qapi/qapi-types-tpm.o
|
|
util-obj-y += qapi/qapi-types-trace.o
|
|
util-obj-y += qapi/qapi-types-transaction.o
|
|
util-obj-y += qapi/qapi-types-ui.o
|
|
util-obj-y += qapi/qapi-builtin-visit.o
|
|
util-obj-y += qapi/qapi-visit.o
|
|
util-obj-y += qapi/qapi-visit-block-core.o
|
|
util-obj-y += qapi/qapi-visit-block.o
|
|
util-obj-y += qapi/qapi-visit-char.o
|
|
util-obj-y += qapi/qapi-visit-common.o
|
|
util-obj-y += qapi/qapi-visit-crypto.o
|
|
util-obj-y += qapi/qapi-visit-introspect.o
|
|
util-obj-y += qapi/qapi-visit-job.o
|
|
util-obj-y += qapi/qapi-visit-migration.o
|
|
util-obj-y += qapi/qapi-visit-misc.o
|
|
util-obj-y += qapi/qapi-visit-net.o
|
|
util-obj-y += qapi/qapi-visit-rocker.o
|
|
util-obj-y += qapi/qapi-visit-run-state.o
|
|
util-obj-y += qapi/qapi-visit-sockets.o
|
|
util-obj-y += qapi/qapi-visit-tpm.o
|
|
util-obj-y += qapi/qapi-visit-trace.o
|
|
util-obj-y += qapi/qapi-visit-transaction.o
|
|
util-obj-y += qapi/qapi-visit-ui.o
|
|
util-obj-y += qapi/qapi-events.o
|
|
util-obj-y += qapi/qapi-events-block-core.o
|
|
util-obj-y += qapi/qapi-events-block.o
|
|
util-obj-y += qapi/qapi-events-char.o
|
|
util-obj-y += qapi/qapi-events-common.o
|
|
util-obj-y += qapi/qapi-events-crypto.o
|
|
util-obj-y += qapi/qapi-events-introspect.o
|
|
util-obj-y += qapi/qapi-events-job.o
|
|
util-obj-y += qapi/qapi-events-migration.o
|
|
util-obj-y += qapi/qapi-events-misc.o
|
|
util-obj-y += qapi/qapi-events-net.o
|
|
util-obj-y += qapi/qapi-events-rocker.o
|
|
util-obj-y += qapi/qapi-events-run-state.o
|
|
util-obj-y += qapi/qapi-events-sockets.o
|
|
util-obj-y += qapi/qapi-events-tpm.o
|
|
util-obj-y += qapi/qapi-events-trace.o
|
|
util-obj-y += qapi/qapi-events-transaction.o
|
|
util-obj-y += qapi/qapi-events-ui.o
|
|
util-obj-y += qapi/qapi-introspect.o
|
|
|
|
chardev-obj-y = chardev/
|
|
|
|
#######################################################################
|
|
# block-obj-y is code used by both qemu system emulation and qemu-img
|
|
|
|
block-obj-y += nbd/
|
|
block-obj-y += block.o blockjob.o job.o
|
|
block-obj-y += block/ scsi/
|
|
block-obj-y += qemu-io-cmds.o
|
|
block-obj-$(CONFIG_REPLICATION) += replication.o
|
|
|
|
block-obj-m = block/
|
|
|
|
#######################################################################
|
|
# crypto-obj-y is code used by both qemu system emulation and qemu-img
|
|
|
|
crypto-obj-y = crypto/
|
|
crypto-aes-obj-y = crypto/
|
|
|
|
#######################################################################
|
|
# qom-obj-y is code used by both qemu system emulation and qemu-img
|
|
|
|
qom-obj-y = qom/
|
|
|
|
#######################################################################
|
|
# io-obj-y is code used by both qemu system emulation and qemu-img
|
|
|
|
io-obj-y = io/
|
|
|
|
######################################################################
|
|
# Target independent part of system emulation. The long term path is to
|
|
# suppress *all* target specific code in case of system emulation, i.e. a
|
|
# single QEMU executable should support all CPUs and machines.
|
|
|
|
ifeq ($(CONFIG_SOFTMMU),y)
|
|
common-obj-y = blockdev.o blockdev-nbd.o block/
|
|
common-obj-y += bootdevice.o iothread.o
|
|
common-obj-y += job-qmp.o
|
|
common-obj-y += net/
|
|
common-obj-y += qdev-monitor.o device-hotplug.o
|
|
common-obj-$(CONFIG_WIN32) += os-win32.o
|
|
common-obj-$(CONFIG_POSIX) += os-posix.o
|
|
|
|
common-obj-$(CONFIG_LINUX) += fsdev/
|
|
|
|
common-obj-y += migration/
|
|
|
|
common-obj-y += audio/
|
|
common-obj-m += audio/
|
|
common-obj-y += hw/
|
|
|
|
common-obj-y += replay/
|
|
|
|
common-obj-y += ui/
|
|
common-obj-m += ui/
|
|
common-obj-y += bt-host.o bt-vhci.o
|
|
bt-host.o-cflags := $(BLUEZ_CFLAGS)
|
|
|
|
common-obj-y += dma-helpers.o
|
|
common-obj-y += vl.o
|
|
vl.o-cflags := $(GPROF_CFLAGS) $(SDL_CFLAGS)
|
|
common-obj-$(CONFIG_TPM) += tpm.o
|
|
|
|
common-obj-$(CONFIG_SLIRP) += slirp/
|
|
|
|
common-obj-y += backends/
|
|
common-obj-y += chardev/
|
|
|
|
common-obj-$(CONFIG_SECCOMP) += qemu-seccomp.o
|
|
qemu-seccomp.o-cflags := $(SECCOMP_CFLAGS)
|
|
qemu-seccomp.o-libs := $(SECCOMP_LIBS)
|
|
|
|
common-obj-$(CONFIG_FDT) += device_tree.o
|
|
|
|
######################################################################
|
|
# qapi
|
|
|
|
common-obj-y += qapi/qapi-commands.o
|
|
common-obj-y += qapi/qapi-commands-block-core.o
|
|
common-obj-y += qapi/qapi-commands-block.o
|
|
common-obj-y += qapi/qapi-commands-char.o
|
|
common-obj-y += qapi/qapi-commands-common.o
|
|
common-obj-y += qapi/qapi-commands-crypto.o
|
|
common-obj-y += qapi/qapi-commands-introspect.o
|
|
common-obj-y += qapi/qapi-commands-job.o
|
|
common-obj-y += qapi/qapi-commands-migration.o
|
|
common-obj-y += qapi/qapi-commands-misc.o
|
|
common-obj-y += qapi/qapi-commands-net.o
|
|
common-obj-y += qapi/qapi-commands-rocker.o
|
|
common-obj-y += qapi/qapi-commands-run-state.o
|
|
common-obj-y += qapi/qapi-commands-sockets.o
|
|
common-obj-y += qapi/qapi-commands-tpm.o
|
|
common-obj-y += qapi/qapi-commands-trace.o
|
|
common-obj-y += qapi/qapi-commands-transaction.o
|
|
common-obj-y += qapi/qapi-commands-ui.o
|
|
common-obj-y += qapi/qapi-introspect.o
|
|
common-obj-y += qmp.o hmp.o
|
|
endif
|
|
|
|
#######################################################################
|
|
# Target-independent parts used in system and user emulation
|
|
common-obj-y += cpus-common.o
|
|
common-obj-y += hw/
|
|
common-obj-y += qom/
|
|
common-obj-y += disas/
|
|
|
|
######################################################################
|
|
# Resource file for Windows executables
|
|
version-obj-$(CONFIG_WIN32) += $(BUILD_DIR)/version.o
|
|
|
|
######################################################################
|
|
# tracing
|
|
util-obj-y += trace/
|
|
target-obj-y += trace/
|
|
|
|
######################################################################
|
|
# guest agent
|
|
|
|
# FIXME: a few definitions from qapi/qapi-types.o and
|
|
# qapi/qapi-visit.o are needed by libqemuutil.a. These should be
|
|
# extracted into a QAPI schema module, or perhaps a separate schema.
|
|
qga-obj-y = qga/
|
|
qga-vss-dll-obj-y = qga/
|
|
|
|
######################################################################
|
|
# contrib
|
|
elf2dmp-obj-y = contrib/elf2dmp/
|
|
ivshmem-client-obj-$(CONFIG_IVSHMEM) = contrib/ivshmem-client/
|
|
ivshmem-server-obj-$(CONFIG_IVSHMEM) = contrib/ivshmem-server/
|
|
libvhost-user-obj-y = contrib/libvhost-user/
|
|
vhost-user-scsi.o-cflags := $(LIBISCSI_CFLAGS)
|
|
vhost-user-scsi.o-libs := $(LIBISCSI_LIBS)
|
|
vhost-user-scsi-obj-y = contrib/vhost-user-scsi/
|
|
vhost-user-blk-obj-y = contrib/vhost-user-blk/
|
|
|
|
######################################################################
|
|
trace-events-subdirs =
|
|
trace-events-subdirs += accel/kvm
|
|
trace-events-subdirs += accel/tcg
|
|
trace-events-subdirs += audio
|
|
trace-events-subdirs += block
|
|
trace-events-subdirs += chardev
|
|
trace-events-subdirs += crypto
|
|
trace-events-subdirs += hw/9pfs
|
|
trace-events-subdirs += hw/acpi
|
|
trace-events-subdirs += hw/alpha
|
|
trace-events-subdirs += hw/arm
|
|
trace-events-subdirs += hw/audio
|
|
trace-events-subdirs += hw/block
|
|
trace-events-subdirs += hw/block/dataplane
|
|
trace-events-subdirs += hw/char
|
|
trace-events-subdirs += hw/display
|
|
trace-events-subdirs += hw/dma
|
|
trace-events-subdirs += hw/hppa
|
|
trace-events-subdirs += hw/i2c
|
|
trace-events-subdirs += hw/i386
|
|
trace-events-subdirs += hw/i386/xen
|
|
trace-events-subdirs += hw/ide
|
|
trace-events-subdirs += hw/input
|
|
trace-events-subdirs += hw/intc
|
|
trace-events-subdirs += hw/isa
|
|
trace-events-subdirs += hw/mem
|
|
trace-events-subdirs += hw/misc
|
|
trace-events-subdirs += hw/misc/macio
|
|
trace-events-subdirs += hw/net
|
|
trace-events-subdirs += hw/nvram
|
|
trace-events-subdirs += hw/pci
|
|
trace-events-subdirs += hw/pci-host
|
|
trace-events-subdirs += hw/ppc
|
|
trace-events-subdirs += hw/rdma
|
|
trace-events-subdirs += hw/rdma/vmw
|
|
trace-events-subdirs += hw/s390x
|
|
trace-events-subdirs += hw/scsi
|
|
trace-events-subdirs += hw/sd
|
|
trace-events-subdirs += hw/sparc
|
|
trace-events-subdirs += hw/sparc64
|
|
trace-events-subdirs += hw/timer
|
|
trace-events-subdirs += hw/tpm
|
|
trace-events-subdirs += hw/usb
|
|
trace-events-subdirs += hw/vfio
|
|
trace-events-subdirs += hw/virtio
|
|
trace-events-subdirs += hw/watchdog
|
|
trace-events-subdirs += hw/xen
|
|
trace-events-subdirs += io
|
|
trace-events-subdirs += linux-user
|
|
trace-events-subdirs += migration
|
|
trace-events-subdirs += nbd
|
|
trace-events-subdirs += net
|
|
trace-events-subdirs += qapi
|
|
trace-events-subdirs += qom
|
|
trace-events-subdirs += scsi
|
|
trace-events-subdirs += target/arm
|
|
trace-events-subdirs += target/i386
|
|
trace-events-subdirs += target/mips
|
|
trace-events-subdirs += target/ppc
|
|
trace-events-subdirs += target/s390x
|
|
trace-events-subdirs += target/sparc
|
|
trace-events-subdirs += ui
|
|
trace-events-subdirs += util
|
|
|
|
trace-events-files = $(SRC_PATH)/trace-events $(trace-events-subdirs:%=$(SRC_PATH)/%/trace-events)
|
|
|
|
trace-obj-y = trace-root.o
|
|
trace-obj-y += $(trace-events-subdirs:%=%/trace.o)
|
|
trace-obj-$(CONFIG_TRACE_UST) += trace-ust-all.o
|
|
trace-obj-$(CONFIG_TRACE_DTRACE) += trace-dtrace-root.o
|
|
trace-obj-$(CONFIG_TRACE_DTRACE) += $(trace-events-subdirs:%=%/trace-dtrace.o)
|