drgn/tests
Omar Sandoval 630d39e345 libdrgn: add ORC unwinder
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>
2021-03-29 10:01:52 -07:00
..
helpers libdrgn: add ORC unwinder 2021-03-29 10:01:52 -07:00
__init__.py Track byte order in scalar types instead of objects 2021-02-19 21:41:29 -08:00
dwarf.py Track byte order in scalar types instead of objects 2021-02-19 21:41:29 -08:00
dwarfwriter.py Fix trailing commas for Black v20.8b1 2020-08-27 11:31:29 -07:00
elf.py Update copyright headers to Facebook and add missing headers 2020-05-15 15:13:02 -07:00
elfwriter.py Fix trailing commas for Black v20.8b1 2020-08-27 11:31:29 -07:00
libdrgn.py Format imports with isort 2020-08-20 16:55:07 -07:00
test_docs.py Update copyright headers to Facebook and add missing headers 2020-05-15 15:13:02 -07:00
test_dwarf.py libdrgn: debug_info: fix parsing specifications of declarations 2021-02-25 10:46:34 -08:00
test_language_c.py tests: move C-specific tests from test_object to test_language_c 2021-02-21 16:11:19 -08:00
test_lexer.py Format imports with isort 2020-08-20 16:55:07 -07:00
test_object.py tests: move C-specific tests from test_object to test_language_c 2021-02-21 16:11:19 -08:00
test_path.py Update copyright headers to Facebook and add missing headers 2020-05-15 15:13:02 -07:00
test_platform.py Remove register numbers from API and add register aliases 2021-01-28 17:47:45 -08:00
test_program.py libdrgn/python: remove Type == operator 2020-12-22 03:11:38 -08:00
test_python.py Format imports with isort 2020-08-20 16:55:07 -07:00
test_serialize.py Format imports with isort 2020-08-20 16:55:07 -07:00
test_type.py libdrgn: python: identify bit fields in TypeMember.__repr__ 2021-03-17 12:02:53 -07:00
test_util.py Update copyright headers to Facebook and add missing headers 2020-05-15 15:13:02 -07:00