gimli
A zero-copy parser for the DWARF debugging format.
Bring your own object file loader: gimli
makes no assumptions about what kind
of object file you're working with. The flipside to that is that it's up to you
to provide an ELF loader on Linux or Mach-O loader on OSX.
Install
Either
$ cargo add gimli
or add this to your Cargo.toml
:
[dependencies]
gimli = "0.2.0"
Documentation
TODO
-
Better documentation and examples
-
Gracefully handle all reserved values and vendor extensibility points
- Might need to support some extensions like DWZ compressor which is used heavily for system libraries on at least Fedora.
-
Be more future compatible by using "unknown" variants rather than throwing parse errors when we find something unexpected
-
DWARF expressions and location descriptions
-
A CompilationUnitHeader iterator that skips across the DIE tree and just yields each header.- Factor this out and also have a
TypeUnitIterator
-- where doPartialUnit
s fall into this again?
- Factor this out and also have a
-
Cursor-based DIE parsing
next_dfs()- next_sibling()
Needs to hold a reference to the current DIE to reuse the attribute parse when possible- implement two iterators on top of this:
- iterate all DIEs in dfs
- given a DIE, iterate its direct children
-
Make a common
Unit
trait for allCompilationUnit
,TypeUnit
, andPartialUnit
so DIEs can just have a fat pointer to their unit rather than be generic.