mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
Add support for vmdump 64big format to the zgetdump utility. The result is an elf file suitable for tool crash. This patch adds file dfi_vmdump.c to handle conversion from z/VM vmdump format to the internal memory representation of this tool. Therefore both output formats elf and s390 are supported as target of the conversion. The vmdump file formats 32bit and 64bit are not supported anymore. They have been obsolete since CP version 5.1 (end of service since 30-Sep-2009). Vector register set is not part of a vmdump file and can not be displayed. Output before: # zgetdump ~/vmdump-0383 zgetdump: No valid dump found on "/root/vmdump-0383" # Output after: # ./zgetdump ~/vmdump-0383 ~/vmdump-0383.elf Format Info: Source: vmdump Target: elf Copying dump: 00000000 / 00000379 MB 00000379 / 00000379 MB Success: Dump has been copied # file ~/vmdump-0383.elf /root/vmdump-0383.elf: ELF 64-bit MSB core file, IBM S/390, version 1 \ .... (SYSV), SVR4-style, from 'vmlinux' # # ./zgetdump -i ~/vmdump-0383 General dump info: Dump format........: vmdump Version............: 2 UTS node name......: s8360046.lnxne.boe UTS kernel release.: 6.1.0-rc2-d-perf+ UTS kernel version.: #1 SMP Fri Oct 28 09:42:13 CEST 2022 System arch........: s390x (64 bit) CPU count (online).: 2 CPU count (real)...: 2 Dump memory range..: 2048 MB Memory map: 0000000000000000 - 000000007fffffff (2048 MB) # Signed-off-by: Thomas Richter <tmricht@linux.ibm.com> Reviewed-by: Mikhail Zaslonko <zaslonko@linux.ibm.com> Signed-off-by: Steffen Eiden <seiden@linux.ibm.com>
140 lines
3.7 KiB
Makefile
140 lines
3.7 KiB
Makefile
include ../common.mak
|
|
|
|
ALL_CFLAGS += -Wno-address-of-packed-member
|
|
|
|
#
|
|
# HAVE_FUSE: Allow to build zgetdump without mount support
|
|
#
|
|
ifeq (${HAVE_FUSE},0)
|
|
|
|
.check_dep_fuse:
|
|
touch $@
|
|
else
|
|
|
|
.check_dep_fuse:
|
|
$(call check_dep, \
|
|
"zgetdump mount support", \
|
|
"fuse.h", \
|
|
"fuse3-devel or libfuse3-dev", \
|
|
"HAVE_FUSE=0", \
|
|
"-DFUSE_USE_VERSION=30")
|
|
touch $@
|
|
endif
|
|
|
|
.detect_openssl.dep.c:
|
|
echo "#include <openssl/evp.h>" > $@
|
|
echo "#if OPENSSL_VERSION_NUMBER < 0x10100000L" >> $@
|
|
echo " #error At least OpenSSL version 1.1.0 is required" >> $@
|
|
echo "#endif" >> $@
|
|
echo "static void __attribute__((unused)) test(void) {" >> $@
|
|
echo " EVP_MD_CTX *ctx = EVP_MD_CTX_new();" >> $@
|
|
echo " EVP_MD_CTX_free(ctx);" >> $@
|
|
echo "}" >> $@
|
|
|
|
.check_dep_zgetdump: .detect_openssl.dep.c .check_dep_fuse
|
|
$(call check_dep, \
|
|
"zgetdump", \
|
|
"zlib.h", \
|
|
"zlib-devel or libz-dev", \
|
|
"HAVE_ZLIB=0")
|
|
$(call check_dep, \
|
|
"zgetdump", \
|
|
"glib.h", \
|
|
"glib2-devel / libglib2.0-dev", \
|
|
"HAVE_GLIB2=0")
|
|
$(call check_dep, \
|
|
"zgetdump", \
|
|
$<, \
|
|
"openssl-devel / libssl-dev version >= 1.1.0", \
|
|
"HAVE_OPENSSL=0", \
|
|
"-I.")
|
|
touch $@
|
|
|
|
#
|
|
# Allow skip of zgetdump build, when no zlib-devel, openssl-devel, glib2-devel is available
|
|
#
|
|
BUILD_TARGETS :=skip-zgetdump
|
|
INSTALL_TARGETS := skip-zgetdump
|
|
ifneq (${HAVE_ZLIB},0)
|
|
ifneq (${HAVE_OPENSSL},0)
|
|
ifneq (${HAVE_GLIB2},0)
|
|
BUILD_TARGETS := zgetdump
|
|
INSTALL_TARGETS := install-zgetdump
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
OBJECTS = zgetdump.o opts.o zg.o zg_error.o zg_print.o \
|
|
dfi.o dfi_mem_chunk.o dfi_vmcoreinfo.o \
|
|
dfi_lkcd.o dfi_elf.o dfi_elf_common.o dfi_pv_elf.o \
|
|
dfi_s390.o dfi_s390_ext.o\
|
|
dfi_s390mv.o dfi_s390mv_ext.o \
|
|
dfi_s390tape.o dfi_kdump.o \
|
|
dfi_devmem.o dfo.o dfo_mem_chunk.o \
|
|
dfo_elf.o dfo_s390.o \
|
|
df_elf.o df_s390.o \
|
|
dt.o dt_s390sv.o dt_s390sv_ext.o \
|
|
dt_s390mv.o dt_s390mv_ext.o \
|
|
dt_scsi.o output.o \
|
|
ngdump.o dt_ngdump.o dfi_ngdump.o dfi_vmdump.o \
|
|
pv_utils.o
|
|
|
|
ifneq ($(shell sh -c 'command -v pkg-config'),)
|
|
GLIB2_CFLAGS := $(shell pkg-config --silence-errors --cflags glib-2.0)
|
|
GLIB2_LIBS := $(shell pkg-config --silence-errors --libs glib-2.0)
|
|
LIBCRYPTO_CFLAGS := $(shell pkg-config --silence-errors --cflags libcrypto)
|
|
LIBCRYPTO_LIBS := $(shell pkg-config --silence-errors --libs libcrypto)
|
|
else
|
|
GLIB2_CFLAGS := -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include
|
|
GLIB2_LIBS := -lglib-2.0
|
|
LIBCRYPTO_CFLAGS :=
|
|
LIBCRYPTO_LIBS := -lcrypto
|
|
endif
|
|
|
|
LIBPV = $(rootdir)/libpv/libpv.a
|
|
LIBPV_CFLAGS := -DOPENSSL_API_COMPAT=0x10100000L \
|
|
$(GLIB2_CFLAGS) \
|
|
$(LIBCRYPTO_CFLAGS) \
|
|
$(NULL)
|
|
LIBPV_LIBS := $(GLIB2_LIBS) $(LIBCRYPTO_LIBS)
|
|
|
|
ifeq ("$(HAVE_FUSE)","0")
|
|
FUSE_CFLAGS = -DHAVE_FUSE=0 -D_FILE_OFFSET_BITS=64
|
|
FUSE_LDLIBS =
|
|
else ifneq ($(shell sh -c 'command -v pkg-config'),)
|
|
FUSE_CFLAGS = -DHAVE_FUSE=1 $(shell pkg-config --silence-errors --cflags fuse3)
|
|
FUSE_LDLIBS = $(shell pkg-config --silence-errors --libs fuse3)
|
|
else
|
|
FUSE_CFLAGS = -DHAVE_FUSE=1 -D_FILE_OFFSET_BITS=64 -I/usr/include/fuse3
|
|
FUSE_LDLIBS = -lfuse3
|
|
endif
|
|
LDLIBS += -lz $(FUSE_LDLIBS) $(LIBPV_LIBS)
|
|
ALL_CFLAGS += $(FUSE_CFLAGS) $(LIBPV_CFLAGS)
|
|
|
|
ifneq ("$(HAVE_FUSE)","0")
|
|
OBJECTS += zfuse.o
|
|
endif
|
|
|
|
libs = $(rootdir)/libutil/libutil.a $(LIBPV)
|
|
|
|
all: $(BUILD_TARGETS)
|
|
|
|
$(OBJECTS): .check_dep_zgetdump
|
|
|
|
zgetdump: $(OBJECTS) $(libs)
|
|
|
|
skip-zgetdump:
|
|
echo " SKIP zgetdump due to unresolved dependencies"
|
|
|
|
install-zgetdump: zgetdump
|
|
$(INSTALL) -d -m 755 $(DESTDIR)$(MANDIR)/man8 $(DESTDIR)$(BINDIR)
|
|
$(INSTALL) -m 755 zgetdump $(DESTDIR)$(BINDIR)
|
|
$(INSTALL) -m 644 zgetdump.8 $(DESTDIR)$(MANDIR)/man8
|
|
|
|
install: $(INSTALL_TARGETS)
|
|
|
|
clean:
|
|
rm -f -- *.o *~ zgetdump core.* .detect_openssl.dep.c .check_dep_zgetdump .check_dep_fuse
|
|
|
|
.PHONY: all install clean skip-zgetdump install-zgetdump
|