gimli 0.2.0

A zero-copy DWARF debugging format parser.
Documentation

gimli

Build Status

Coverage Status

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

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 do PartialUnits fall into this again?
  • 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 all CompilationUnit, TypeUnit, and PartialUnit so DIEs can just have a fat pointer to their unit rather than be generic.