Durin is a library for reading and writing the Dwarf debugging format.
It aims to support:
- Reading DWARF 5 encoded information from ELF and MachO object files.
- Writing DWARF 5 information into ELF and MachO object files.
- Writing DWARF 5 information into assembly files.
In future it could support DWARF 4 or newer versions of the DWARF standard.
It should provide:
- Cross-platform:
durin
makes no assumptions about what kind of object file you're working with. Provide your own Buffer or use theobject
library. - Lazy: you can iterate compilation units without parsing their contents.
Parse only as many debugging information entry (DIE) trees as you iterate
over.
durin
also usesDW_AT_sibling
references to avoid parsing a DIE's children to find it's next sibling where possible.
To install durin
as a dependency, run:
$ opam install durin
And add durin
to your project's dune-project
or *.opam
files.
- Documentation on ocaml.org
- Example programs in
example
directory- A simple .debug_info parser
- A simple .debug_line parser
- A dwarfdump clone
- An addr2line clone
- A small utility dwprod to list the compilers
used to create each compilation unit within a shared library or
executable (via
DW_AT_producer
). - A dwarf-valiate clone, a program to validate the integrity of some DWARF information and the references between sections and compilation units.
-
Apple Compact Unwinding Format is defined by the LLVM implementation.
-
Vendor extensions from GCC https://sourceware.org/elfutils/DwarfExtensions