mirror of
https://github.com/JakeHillion/drgn.git
synced 2024-12-23 01:33:06 +00:00
630d39e345
The Linux kernel has its own stack unwinding format for x86-64 called ORC: https://www.kernel.org/doc/html/latest/x86/orc-unwinder.html. It is essentially a simplified, less complete version of DWARF CFI. ORC is generated by analyzing machine code, so it is present for all but a few ignored functions. In contrast, DWARF CFI is generated by the compiler and is therefore missing for functions written in assembly and inline assembly (which is widespread in the kernel). This implements an ORC stack unwinder: it applies ELF relocations to the ORC sections, adds a new DRGN_CFI_RULE_REGISTER_ADD_OFFSET CFI rule kind, parses and efficiently stores ORC data, and translates ORC to drgn CFI rules. This will allow us to stack trace through assembly code, interrupts, and system calls. Signed-off-by: Omar Sandoval <osandov@osandov.com> |
||
---|---|---|
.. | ||
helpers | ||
__init__.py | ||
dwarf.py | ||
dwarfwriter.py | ||
elf.py | ||
elfwriter.py | ||
libdrgn.py | ||
test_docs.py | ||
test_dwarf.py | ||
test_language_c.py | ||
test_lexer.py | ||
test_object.py | ||
test_path.py | ||
test_platform.py | ||
test_program.py | ||
test_python.py | ||
test_serialize.py | ||
test_type.py | ||
test_util.py |