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(a)jp.fujitsu.com)
- 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(a)jp.fujitsu.com)
- 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(a)jp.fujitsu.com)
- 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(a)jp.fujitsu.com)
- 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(a)jp.fujitsu.com)
- 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(a)jp.fujitsu.com)
- 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(a)jp.fujitsu.com)
Thanks.
HATAYAMA Daisuke