----- Original Message ----- > VMSS dump files contain the state of each vCPU at the time of suspending > the VM. This change enables 'crash' to read some relevant registers from > each vCPU state to display them in 'bt' and adds additional output for > commands 'help -D', 'help -r' and 'help -p'. > > This is also the first step towards implementing kaslr offset > calculation for VMSS dump files. > --- > defs.h | 5 + > help.c | 3 + > kernel.c | 2 + > main.c | 3 + > memory.c | 2 + > vmware_vmss.c | 375 > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- > vmware_vmss.h | 31 +++++ > x86_64.c | 13 +- > 8 files changed, 424 insertions(+), 10 deletions(-) > Hi Sergio, I should have mentioned this before, but there is a build option for compiling with several warning ptions, which should result in clean compiles. Here on an x86_64: $ make warn ... [ cut ] ... cc -c -g -DX86_64 -DLZO -DSNAPPY -DGDB_7_6 vmware_vmss.c -Wall -O2 -Wstrict-prototypes -Wmissing-prototypes -fstack-protector -Wformat-security vmware_vmss.c: In function ‘vmware_vmss_init’: vmware_vmss.c:242:6: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] vmss.regs64[cpu]->idtr = *((uint64_t *)(&buf[0] + 2)); ^ vmware_vmss.c: In function ‘vmware_vmss_display_regs’: vmware_vmss.c:439:3: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 3 has type ‘uint64_t’ [-Wformat=] ); ^ vmware_vmss.c:439:3: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:439:3: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:439:3: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 6 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:439:3: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 7 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:439:3: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 8 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:439:3: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 9 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:439:3: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 10 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:439:3: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 11 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:439:3: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 12 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:439:3: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 13 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:439:3: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 14 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:439:3: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 15 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:439:3: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 16 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:439:3: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 17 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:439:3: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 18 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:439:3: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 19 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:439:3: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 20 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c: In function ‘get_vmware_vmss_regs’: vmware_vmss.c:447:23: warning: unused variable ‘rp’ [-Wunused-variable] struct register_set *rp; ^ vmware_vmss.c: In function ‘vmware_vmss_memory_dump’: vmware_vmss.c:501:4: warning: format ‘%s’ expects argument of type ‘char *’, but argument 3 has type ‘int’ [-Wformat=] errno, strerror(errno)); ^ vmware_vmss.c:501:4: warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘char *’ [-Wformat=] vmware_vmss.c:501:4: warning: format ‘%s’ expects a matching ‘char *’ argument [-Wformat=] vmware_vmss.c: In function ‘dump_registers_for_vmss_dump’: vmware_vmss.c:695:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 3 has type ‘uint64_t’ [-Wformat=] regs->rax, regs->rbx, regs->rcx); ^ vmware_vmss.c:695:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:695:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:697:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 3 has type ‘uint64_t’ [-Wformat=] regs->rdx, regs->rsi, regs->rdi); ^ vmware_vmss.c:697:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:697:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:699:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 3 has type ‘uint64_t’ [-Wformat=] regs->rsp, regs->rbp, regs->r8); ^ vmware_vmss.c:699:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:699:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:701:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 3 has type ‘uint64_t’ [-Wformat=] regs->r9, regs->r10, regs->r11); ^ vmware_vmss.c:701:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:701:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:703:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 3 has type ‘uint64_t’ [-Wformat=] regs->r12, regs->r13, regs->r14); ^ vmware_vmss.c:703:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:703:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:705:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 3 has type ‘uint64_t’ [-Wformat=] regs->r15, regs->rip, regs->rflags); ^ vmware_vmss.c:705:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:705:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:707:25: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 3 has type ‘uint64_t’ [-Wformat=] regs->idtr); ^ vmware_vmss.c:709:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 3 has type ‘uint64_t’ [-Wformat=] regs->cr[0], regs->cr[1], regs->cr[2]); ^ vmware_vmss.c:709:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:709:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘uint64_t’ [-Wformat=] vmware_vmss.c:711:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 3 has type ‘uint64_t’ [-Wformat=] regs->cr[3], regs->cr[4]); ^ vmware_vmss.c:711:4: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘uint64_t’ [-Wformat=] cc -c -g -DX86_64 -DLZO -DSNAPPY -DGDB_7_6 xen_dom0.c -Wall -O2 -Wstrict-prototypes -Wmissing-prototypes -fstack-protector -Wformat-security ... And here on 32-bit x86: $ make warn ... [ cut ] ... cc -c -g -DX86 -m32 -D_FILE_OFFSET_BITS=64 -DLZO -DSNAPPY -DGDB_7_6 vmware_vmss.c -Wall -O2 -Wstrict-prototypes -Wmissing-prototypes -fstack-protector -Wformat-security vmware_vmss.c: In function ‘vmware_vmss_init’: vmware_vmss.c:242:6: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] vmss.regs64[cpu]->idtr = *((uint64_t *)(&buf[0] + 2)); ^ vmware_vmss.c: In function ‘get_vmware_vmss_regs’: vmware_vmss.c:447:23: warning: unused variable ‘rp’ [-Wunused-variable] struct register_set *rp; ^ vmware_vmss.c: In function ‘vmware_vmss_memory_dump’: vmware_vmss.c:501:4: warning: format ‘%s’ expects argument of type ‘char *’, but argument 3 has type ‘int’ [-Wformat=] errno, strerror(errno)); ^ vmware_vmss.c:501:4: warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘char *’ [-Wformat=] vmware_vmss.c:501:4: warning: format ‘%s’ expects a matching ‘char *’ argument [-Wformat=] ... Can you clean these up? Thanks, Dave -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility