[Crash-utility] Make note information human readable when help -D
"Zhou, Wenjian/周文剑"
zhouwj-fnst at cn.fujitsu.com
Thu Dec 11 06:56:34 UTC 2014
On 12/11/2014 06:27 AM, Dave Anderson wrote:
> First, please address all of these warnings:
>
> $ make warn
> ... [ cut ] ...
> cc -c -g -DX86_64 -DLZO -DSNAPPY -DGDB_7_6 netdump.c -Wall -O2 -Wstrict-prototypes -Wmissing-prototypes -fstack-protector -Wformat-security
> netdump.c: In function 'dump_Elf32_Nhdr':
> netdump.c:1987:4: warning: format not a string literal and no format arguments [-Wformat-security]
> netdump.c: In function 'dump_Elf64_Nhdr':
> netdump.c:2272:4: warning: format not a string literal and no format arguments [-Wformat-security]
> netdump.c:2303:4: warning: format not a string literal and no format arguments [-Wformat-security]
> ...
>
Hello Dave,
These warnings have been addressed.
> Secondly, for compressed kdumps in diskdump.c, you have this construct:
>
> if (dd->machine_type == EM_386)
> display_note_elf32(dd->nt_prstatus_percpu[i],l_buf);
> else if (dd->machine_type == EM_X86_64)
> display_note_elf64(dd->nt_prstatus_percpu[i],l_buf);
>
> But for ELF kdumps in netdump.c, display_note_elf32() are display_note_elf64()
> look to be called unconditionally. What about the other architectures?
>
I distinguish the architectures by the struct size in display_note(). I wonder
if it is needed to add other conditions like machine_type.
display_note(void *note_ptr, char *buf, int descsz)
{
if (descsz == (2 * sizeof(struct x86_64_prstatus)))
display_prstatus_elf64(note_ptr, buf);
else if (descsz == sizeof(struct x86_prstatus))
display_prstatus_elf32(note_ptr, buf);
else if (descsz == (2 * sizeof(QEMUCPUState)))
display_qemu_elf64(note_ptr, buf);
else if (descsz == sizeof(QEMUCPUState))
display_qemu_elf32(note_ptr, buf);
}
> Also, are there any dumping facilities that actually utilize any of
> the nt_prstatus fields besides the registers and maybe the pid?:
>
> struct x86_64_prstatus {
> int si_signo;
> int si_code;
> int si_errno;
> short cursig;
> unsigned long sigpend;
> unsigned long sighold;
> int pid;
> int ppid;
> int pgrp;
> int sid;
> struct timeval utime;
> struct timeval stime;
> struct timeval cutime;
> struct timeval cstime;
> struct x86_64_user_regs_struct regs;
> int fpvalid;
> };
>
> For example, kdump just does this:
>
> memset(&prstatus, 0, sizeof(prstatus));
> prstatus.pr_pid = current->pid;
> elf_core_copy_kernel_regs(&prstatus.pr_reg, regs);
>
> So I guess I wonder what is the point of displaying of all the other fields?
>
These patches are just used to make the original information readable.
I'm not sure whether it is a good idea to display only the registers contents here,
for help -r can show them well.
> Also, can you explain to me the difference between the register contents
> in the QEMUCPUState structure vs. the register contents in the NT_PRSTATUS
> note?
>
They are almost the same except that there are more information in QEMUCPUState.
> And related to that question, why doesn't your dump_qemu_elf() function
> display the rip and rflags registers?
>
It's my fault that I left them. And they have been added.
> Dave
>
> --
> Crash-utility mailing list
> Crash-utility at redhat.com
> https://www.redhat.com/mailman/listinfo/crash-utility
--
Thanks
Zhou Wenjian
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 0001-Make-elf64-note-human-readable.patch
URL: <http://listman.redhat.com/archives/crash-utility/attachments/20141211/5d621c2e/attachment.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 0002-Make-elf32-note-human-readable.patch
URL: <http://listman.redhat.com/archives/crash-utility/attachments/20141211/5d621c2e/attachment-0001.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 0003-Show-kdump-note-information-when-help-D.patch
URL: <http://listman.redhat.com/archives/crash-utility/attachments/20141211/5d621c2e/attachment-0002.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 0004-Make-qemu64-note-human-readable.patch
URL: <http://listman.redhat.com/archives/crash-utility/attachments/20141211/5d621c2e/attachment-0003.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 0005-Make-qemu32-note-human-readable.patch
URL: <http://listman.redhat.com/archives/crash-utility/attachments/20141211/5d621c2e/attachment-0004.ksh>
More information about the Crash-utility
mailing list