• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..20-Jan-2022-

benches/H20-Jan-2022-808680

examples/H20-Jan-2022-2,6852,476

fixtures/self/H20-Jan-2022-148126

src/H20-Jan-2022-44,00833,112

tests/H20-Jan-2022-591485

.cargo-checksum.jsonH A D03-May-202289 11

CHANGELOG.mdH A D20-Jan-202227.5 KiB784531

CONTRIBUTING.mdH A D20-Jan-20223.8 KiB13894

Cargo.lockH A D20-Jan-20229.9 KiB382337

Cargo.tomlH A D20-Jan-20222.6 KiB11593

LICENSE-APACHEH A D20-Jan-202210.6 KiB202169

LICENSE-MITH A D20-Jan-20221 KiB2622

README.mdH A D20-Jan-20222.9 KiB7951

README.md

1# `gimli`
2
3[![](http://meritbadge.herokuapp.com/gimli) ![](https://img.shields.io/crates/d/gimli.svg)](https://crates.io/crates/gimli)
4[![](https://docs.rs/gimli/badge.svg)](https://docs.rs/gimli/)
5[![Build Status](https://github.com/gimli-rs/gimli/workflows/Rust/badge.svg)](https://github.com/gimli-rs/gimli/actions)
6[![Coverage Status](https://coveralls.io/repos/github/gimli-rs/gimli/badge.svg?branch=master)](https://coveralls.io/github/gimli-rs/gimli?branch=master)
7
8`gimli` is a blazing fast library for consuming the
9[DWARF debugging format](http://dwarfstd.org/).
10
11* **Zero copy:** everything is just a reference to the original input buffer. No
12  copies of the input data get made.
13
14* **Lazy:** you can iterate compilation units without parsing their
15  contents. Parse only as many debugging information entry (DIE) trees as you
16  iterate over. `gimli` also uses `DW_AT_sibling` references to avoid parsing a
17  DIE's children to find its next sibling, when possible.
18
19* **Cross-platform:** `gimli` makes no assumptions about what kind of object
20  file you're working with. The flipside to that is that it's up to you to
21  provide an ELF loader on Linux or Mach-O loader on macOS.
22
23  * Unsure which object file parser to use? Try the cross-platform
24  [`object`](https://github.com/gimli-rs/object) crate. See the
25  [`examples/`](./examples) directory for usage with `gimli`.
26
27## Install
28
29Add this to your `Cargo.toml`:
30
31```toml
32[dependencies]
33gimli = "0.25.0"
34```
35
36The minimum supported Rust version is 1.42.0.
37
38## Documentation
39
40* [Documentation on docs.rs](https://docs.rs/gimli/)
41
42* Example programs:
43
44  * [A simple `.debug_info` parser](./examples/simple.rs)
45
46  * [A simple `.debug_line` parser](./examples/simple_line.rs)
47
48  * [A `dwarfdump` clone](./examples/dwarfdump.rs)
49
50  * [An `addr2line` clone](https://github.com/gimli-rs/addr2line)
51
52  * [`ddbug`](https://github.com/philipc/ddbug), a utility giving insight into
53    code generation by making debugging information readable.
54
55  * [`dwprod`](https://github.com/fitzgen/dwprod), a tiny utility to list the
56    compilers used to create each compilation unit within a shared library or
57    executable (via `DW_AT_producer`).
58
59  * [`dwarf-validate`](./examples/dwarf-validate.rs), a program to validate the
60    integrity of some DWARF and its references between sections and compilation
61    units.
62
63## License
64
65Licensed under either of
66
67  * Apache License, Version 2.0 ([`LICENSE-APACHE`](./LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
68  * MIT license ([`LICENSE-MIT`](./LICENSE-MIT) or http://opensource.org/licenses/MIT)
69
70at your option.
71
72## Contribution
73
74See [CONTRIBUTING.md](./CONTRIBUTING.md) for hacking.
75
76Unless you explicitly state otherwise, any contribution intentionally submitted
77for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
78dual licensed as above, without any additional terms or conditions.
79