----- Original Message ----- > Hi all, > > Am trying to use crash to analyse a dump file produced on an ARM-32. > (Actually, it's on a Qemu-emulated ARM Vexpress-CA9 platform). Have > succeeded in setting up and building a custom kernel with KEXEC, etc > enabled, done the kexec of the dump kernel, triggered a crash (via > /proc/sysrq-trigger). > > The system then 'reboots' successfully into the dump kernel (same > zImage btw), and I can see and copy the /proc/vmcore kdump file. All > fine there. > > The issue is in analysing the same using the crash utility on my > x86_64 (Ubuntu 17.04) host. I realize: > "... > On an x86 or x86_64 host, a 32-bit x86 binary that can be used to analyze > 32-bit arm dumpfiles may be built by typing "make target=ARM". > ..." > > But the build fails, pl see output below: > > git clone https://github.com/crash-utility/crash.git > cd crash > make target=ARM > TARGET: ARM > CRASH: 7.1.9++ > GDB: 7.6 > > --snip-- <lots of o/p> > > gcc -m32 -static-libstdc++ -static-libgcc \ > -o ../../crash ../../crashlib.a arm-tdep.o arm-linux-tdep.o > glibc-tdep.o solib-svr4.o symfile-mem.o linux-tdep.o ser-base.o > ser-unix.o ser-pipe.o ser-tcp.o remote.o dcache.o tracepoint.o > ax-general.o ax-gdb.o remote-fileio.o remote-notif.o cli-dump.o > cli-decode.o cli-script.o cli-cmds.o cli-setshow.o cli-logging.o > cli-interp.o cli-utils.o mi-out.o mi-console.o mi-cmds.o > mi-cmd-catch.o mi-cmd-env.o mi-cmd-var.o mi-cmd-break.o mi-cmd-stack.o > mi-cmd-file.o mi-cmd-disas.o mi-symbol-cmds.o mi-cmd-target.o > mi-cmd-info.o mi-interp.o mi-main.o mi-parse.o mi-getopt.o > tui-command.o tui-data.o tui-disasm.o tui-file.o tui-hooks.o > tui-interp.o tui-io.o tui-layout.o tui-out.o tui-regs.o tui-source.o > tui-stack.o tui-win.o tui-windata.o tui-wingeneral.o tui-winsource.o > tui.o python.o py-value.o py-prettyprint.o py-auto-load.o elfread.o > stap-probe.o posix-hdep.o c-exp.o cp-name-parser.o ada-exp.o jv-exp.o > f-exp.o go-exp.o m2-exp.o p-exp.o version.o annotate.o addrmap.o > auto-load.o auxv.o agent.o bfd-target.o blockframe.o breakpoint.o > break-catch-sig.o findvar.o regcache.o cleanups.o charset.o > continuations.o corelow.o disasm.o dummy-frame.o dfp.o source.o > value.o eval.o valops.o valarith.o valprint.o printcmd.o block.o > symtab.o psymtab.o symfile.o symmisc.o linespec.o dictionary.o > infcall.o infcmd.o infrun.o expprint.o environ.o stack.o thread.o > exceptions.o filesystem.o inf-child.o interps.o minidebug.o main.o > macrotab.o macrocmd.o macroexp.o macroscope.o mi-common.o event-loop.o > event-top.o inf-loop.o completer.o gdbarch.o arch-utils.o gdbtypes.o > gdb_bfd.o gdb_obstack.o osabi.o copying.o memattr.o mem-break.o > target.o parse.o language.o buildsym.o findcmd.o std-regs.o signals.o > exec.o reverse.o bcache.o objfiles.o observer.o minsyms.o maint.o > demangle.o dbxread.o coffread.o coff-pe-read.o dwarf2read.o mipsread.o > stabsread.o corefile.o dwarf2expr.o dwarf2loc.o dwarf2-frame.o > dwarf2-frame-tailcall.o ada-lang.o c-lang.o d-lang.o f-lang.o > objc-lang.o ada-tasks.o ada-varobj.o ui-out.o cli-out.o varobj.o vec.o > go-lang.o go-valprint.o go-typeprint.o jv-lang.o jv-valprint.o > jv-typeprint.o m2-lang.o opencl-lang.o p-lang.o p-typeprint.o > p-valprint.o sentinel-frame.o complaints.o typeprint.o ada-typeprint.o > c-typeprint.o f-typeprint.o m2-typeprint.o ada-valprint.o c-valprint.o > cp-valprint.o d-valprint.o f-valprint.o m2-valprint.o serial.o > mdebugread.o top.o utils.o ui-file.o user-regs.o frame.o > frame-unwind.o doublest.o frame-base.o inline-frame.o gnu-v2-abi.o > gnu-v3-abi.o cp-abi.o cp-support.o cp-namespace.o reggroups.o regset.o > trad-frame.o tramp-frame.o solib.o solib-target.o prologue-value.o > memory-map.o memrange.o xml-support.o xml-syscall.o xml-utils.o > target-descriptions.o target-memory.o xml-tdesc.o xml-builtin.o > inferior.o osdata.o gdb_usleep.o record.o record-full.o gcore.o > gdb_vecs.o jit.o progspace.o skip.o probe.o common-utils.o buffer.o > ptid.o gdb-dlfcn.o common-agent.o format.o registry.o btrace.o > record-btrace.o inflow.o init.o \ > ../readline/libreadline.a ../opcodes/libopcodes.a ../bfd/libbfd.a > ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a -ldl > -lncurses -lm ../libiberty/libiberty.a build-gnulib/import/libgnu.a > -lz -ldl -rdynamic > /usr/bin/ld: cannot find -lz > collect2: error: ld returned 1 exit status > Makefile:1174: recipe for target 'gdb' failed > make[3]: *** [gdb] Error 1 > Makefile:244: recipe for target 'rebuild' failed > make[2]: *** [rebuild] Error 2 > Makefile:229: recipe for target 'gdb_merge' failed > make[1]: *** [gdb_merge] Error 2 > Makefile:224: recipe for target 'all' failed > make: *** [all] Error 2 > $ > > Looks to me like it fails with > > /usr/bin/ld: cannot find -lz > > So, I did the usual checks; i have these 'libz' libs installed on the box: > > $ dpkg -l |grep "libz.*comp" > ii libzstd-dev 1.1.2-1 amd64 fast lossless > compression algorithm -- development files > ii libzstd1 1.1.2-1 amd64 fast lossless > compression algorithm > $ > > What package(s) do I need to install to overcome this issue? / what am i doing wrong? > Any help appreciated, tia! > > > Regards, > Kaiwan. I can't get into any specifics w/respect to Ubuntu package installation, but since you are actually building a 32-bit x86 binary with target=ARM, you need to have all of the required 32-bit i686 libraries installed. So you will need to install a 32-bit zlib library. Dave -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility