Browse by type
Libelfin is a from-scratch C++11 library for reading ELF binaries and DWARFv4 debug information.
make, and optionally make install. You'll need GCC 4.7 or later.
Native C++11 code and interface, designed from scratch to interact well with C++11 features, from range-based for loops to move semantics to enum classes.
Libelfin fully implements parsing for Debugging Information Entries (DIEs), the core data structure used by the DWARF format, as well as most DWARFv4 tables.
Supports all DWARFv4 DIE value types except location lists and macros.
Nearly complete evaluator for DWARFv4 expressions and location descriptions.
Complete interpreter for DWARFv4 line tables.
Iterators for easily and naturally traversing compilation units, type units, DIE trees, and DIE attribute lists.
Every enum value can be pretty-printed.
Large collection of type-safe DIE attribute fetchers.
Libelfin implements a syntactic layer for DWARF and ELF, but not a semantic layer. Interpreting the information stored in DWARF DIE trees still requires a great deal of understanding of DWARF, but libelfin will make sense of the bytes for you.
To build against libdwarf++, use, for example
g++ -std=c++11 a.cc $(pkg-config --cflags --libs libdwarf++)
To use a local build of libelfin, set PKG_CONFIG_PATH. For example,
export PKG_CONFIG_PATH=$PWD/elf:$PWD/dwarf
There are various example programs in examples/.
Libelfin is a good start. It's not production-ready and there are many parts of the DWARF specification it does not yet implement, but it's complete enough to be useful for many things and is a good deal more pleasant to use than every other debug info library I've tried.
$ claude mcp add libelfin \
-- python -m otcore.mcp_server <graph>