This introduces a breaking change: [undefined] was previously represented by 0, and is now represented by `numeric_limits<uintptr_t>::max()` |
||
---|---|---|
.. | ||
.gitignore | ||
CodeGenerator.cpp | ||
CodeGenerator.hpp | ||
DwarfReader.cpp | ||
DwarfReader.hpp | ||
main.cpp | ||
Makefile | ||
PcListReader.cpp | ||
PcListReader.hpp | ||
README.md | ||
settings.cpp | ||
settings.hpp | ||
SimpleDwarf.cpp | ||
SimpleDwarf.hpp |
Dwarf-assembly
Generates C code from the DWARF embedded in an ELF file. This code can then be compiled into a .so, and used to unwind stack frames.
Options
Switch generation policy
The code can either generate one big switch
statement for every PC in the
ELF, or one switch
and a function per FDE, plus a lookup function.
One of the two options must be passed:
--switch-per-func
: oneswitch
and function per FDE;--global-switch
: a single bigswitch
for the whole ELF.
PC list
Instead of generating interval switches (eg case 0x42 ... 0x100
), it is
possible to provide a binary file (generated by ../extract_pc.py
) containing
a list of all PCs in the ELF. The file contains one 8-bytes chunk per PC,
which is the PC in little endian.
--pc-list PC_LIST_FILE_PATH