This update introduces a support of 32-bit user-space tasks on X86_64 , and fixes a number of bugs. This time RHEL5.6 has newly been tested. Support range for 32-bit tasks on X86_64 is just the same as for ordinary 64-bit tasks. In summary, the current support range is as follows: Architecture: X86_64 including 32-bit tasks and X86 Versions: RHEL4.8, RHEL5.5, RHEL5.6, RHEL6.0 and vanilla 2.6.36. Note: there is the issue that register restoration for callee-saved registers doesn't work well on RHEL6.0 and recent kernels that are built with recent tools. I'm going to address this issue but it's still under investigation. I'd stress here that the register values restored is enough for back tracing. Also any comment, suggestion and report is welcome. ChangeLog: - Support 32-bit user-space tasks on X86_64. Created are 32-bit ELF core files containing the same kinds of note information as on X86. (d.hatayama@xxxxxxxxxxxxxx) - Fix a bug in calculation of detecting whether NT_IOPERM is available or not. Without this fix, NT_IOPERM is never included in a core file. (d.hatayama@xxxxxxxxxxxxxx) - Fix a bug in a processing of writing note information. Without this patch, a length of ELF note section recorded in PT_NOTE program header entry could be different from an actual size of written data, and tools such as gdb and binutils recognize it as an invalid ELF file. (d.hatayama@xxxxxxxxxxxxxx) - Fix a bug in resuming an original task context. Without this patch, gcore fails to let crash's state resume back to the original context when specifying a different task context as a target from a current one. (d.hatayama@xxxxxxxxxxxxxx) - Fix a bug in getting register values from NT_PRSTATUS. DISKDUMP/NETDUMP saves register values for a panic task only, while KDUMP saves NT_PRSTATUS for all active tasks. Without this patch, dumping processing fails if a non-panic active task is specified and analyzed kernel dumpfile contains NT_PRSTATUS for panic task only. Although best way is to check the number of NT_PRSTATUS contained in a given kernel dumpfile, this fix temporarilly only checks in what formats the analying kernel dump is. (d.hatayama@xxxxxxxxxxxxxx) - Fix a bug in restoring segment register DS. Without this patch, the value of DS segment register in NT_PRSTATUS is always 0 if a dump target task is a sleep task. (d.hatayama@xxxxxxxxxxxxxx) - Fix a bug in restoring segment registers. Field size for segment registers in kernel is 2 bytes, while field size in note information is 8 bytes. Without this patch, high 6-bytes has an arbitrary value in note information. Low 2-bytes remains the same. (d.hatayama@xxxxxxxxxxxxxx) Thanks. HATAYAMA Daisuke
Attachment:
gcore.tar.bz2
Description: Binary data
-- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility