Generate symbol file:
python kernel_syms.py
as -o kernal_syms.o kernel_syms.sLoad the symbols into gdb:
# in gdb
symbol-file kernel_syms.o| #!/usr/bin/env python3 | |
| import re | |
| infos = dict() | |
| with open('kallsyms', 'rt') as syms_fd, open('kernel_syms.s', 'wt') as out_fd: | |
| out_fd.write('.text\n') | |
| syms = syms_fd.read() | |
| for line in syms.split('\n'): | |
| info = re.search(r'^(?P<addr>[0-9a-fA-F]+) . (?P<sym>\w+)', line) | |
| if info: | |
| addr, sym = info.groups() | |
| addr = int(addr, 16) | |
| if sym not in infos: | |
| infos[sym] = addr | |
| infos = dict(sorted(infos.items(), key=lambda item: item[1])) | |
| for sym, addr in infos.items(): | |
| out_fd.write(f'\t.org 0x{addr:x}\n{sym}:\n') |