scripts/gdb/symbols: make lx-symbols skip the s390 decompressor
authorIlya Leoshkevich <iii@linux.ibm.com>
Wed, 25 Jun 2025 15:36:52 +0000 (17:36 +0200)
committerAlexander Gordeev <agordeev@linux.ibm.com>
Thu, 10 Jul 2025 12:42:10 +0000 (14:42 +0200)
commitb6d0427cfc699243fc1f82087b58f63d389321aa
tree1acec8ab9943b06640de925fd1e1475e357b0f6e
parent996f7f292b7e190138738bd9213616a544837a41
scripts/gdb/symbols: make lx-symbols skip the s390 decompressor

When one starts QEMU with the -S flag and attaches GDB, the kernel is
not yet loaded, and the current instruction is an entry point to the
decompressor. In case the intention is to debug the early kernel boot,
and not the decompressor, e.g., put a breakpoint on some kernel
function and see all the invocations, one has to skip the decompressor.

There are many ways to do this, and so far people wrote private scripts
or memorized certain command sequences.

Make it work out of the box like this:

    $ gdb -ex 'target remote :6812' -ex 'source vmlinux-gdb.py' vmlinux
    Remote debugging using :6812
    0x0000000000010000 in ?? ()
    (gdb) lx-symbols
    loading vmlinux
    (gdb) x/i $pc
    => 0x3ffe0100000 <startup_continue>:    lghi    %r2,0

Implement this by reading the address of the jump_to_kernel() function
from the lowcore, and step until DAT is turned on.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Acked-by: Jan Kiszka <jan.kiszka@siemens.com>
Tested-by: Alexander Gordeev <agordeev@linux.ibm.com>
Link: https://lore.kernel.org/r/20250625154220.75300-3-iii@linux.ibm.com
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
scripts/gdb/linux/symbols.py