The Problem: ============ Currently crash is unable to show function arguments and local variables, as gdb can do. And functionality for moving between frames ('up'/'down') is not working in crash. Crash has 'gdb passthroughs' for things gdb can do, but the gdb passthroughs 'bt', 'frame', 'info locals', 'up', 'down' are not working either, due to gdb not getting the register values from `crash_target::fetch_registers`, which then uses `machdep->get_cpu_reg`, which is not implemented for PPC64 Proposed Solution: ================== Fix the gdb passthroughs by implementing "machdep->get_cpu_reg" for PPC64. This way, "gdb mode in crash" will support this feature for both ELF and kdump-compressed vmcore formats, while "gdb" would only have supported ELF format Implications on Architectures: ==================================== No architecture other than PPC64 has been affected, other than in case of 'frame' command As mentioned in patch #2, since frame will not be prohibited, so it will print: crash> frame #0 <unavailable> in ?? () Instead of before prohibited message: crash> frame crash: prohibited gdb command: frame On PPC64, the default mode ("crash mode") will not have ANY OTHER changes, other than 'frame' as mentioned above. Major change will be in 'gdb mode' on PPC64, that it will print the frames, and local variables, instead of failing with errors showing no frame, or showing that couldn't get PC Testing: ======== Git tree with this patch series applied: https://github.com/adi-g15-ibm/crash/tree/stack-unwind-rfc2 To test gdb passthroughs: crash> set gdb on gdb> thread 3 # or any other thread number to change context in gdb gdb> bt gdb> frame gdb> up gdb> down gdb> info locals Known Issues: ============= 1. In gdb mode, 'info threads' might hang for few seconds, and print only 2 threads 2. In gdb mode, 'bt' might fail to show backtrace in few vmcores collected from older kernels. This is a known issue due to register mismatch, and its fix has been merged upstream: Commit: https://github.com/torvalds/linux/commit/b684c09f09e7a6af3794d4233ef785819e72db79 TODO: ===== 1. Introduce automatic thread selection in gdb mode, to select the crashing thread in gdb, eliminating the need to manually run "thread <id>" after switching to gdb mode. Changelog: ========== RFC V2: - removed patch implementing 'frame', 'up', 'down' in crash - updated the cover letter by removing the mention of those commands other than the respective gdb passthrough Aditya Gupta (4): add generic get_dumpfile_regs to read registers ppc64: fix gdb passthrough by implementing machdep->get_cpu_reg remove 'frame' from prohibited commands list make cpu context change transparent to crash/gdb defs.h | 125 ++++++++++++++++++++++++++++++++++++++++++++++++ gdb-10.2.patch | 28 +++++++++++ gdb_interface.c | 2 +- kernel.c | 33 +++++++++++++ ppc64.c | 105 ++++++++++++++++++++++++++++++++++++++-- tools.c | 12 +++-- 6 files changed, 298 insertions(+), 7 deletions(-) -- 2.41.0 -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://listman.redhat.com/mailman/listinfo/crash-utility Contribution Guidelines: https://github.com/crash-utility/crash/wiki