edlang/gimli/read/index.html
2024-02-13 06:38:44 +00:00

233 lines
48 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Read DWARF debugging information."><title>gimli::read - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-ac92e1bbe349e143.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="gimli" data-themes="" data-resource-suffix="" data-rustdoc-version="1.76.0 (07dca489a 2024-02-04)" data-channel="1.76.0" data-search-js="search-2b6ce74ff89ae146.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-f2adc0d6ca4d09fb.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-305769736d49e732.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-feafe1bb7466e4bd.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../gimli/index.html">gimli</a><span class="version">0.28.1</span></h2></div><h2 class="location"><a href="#">Module read</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#types">Type Aliases</a></li></ul></section><h2><a href="../index.html">In crate gimli</a></h2></div></nav><div class="sidebar-resizer"></div>
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../gimli/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../index.html">gimli</a>::<wbr><a class="mod" href="#">read</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/gimli/read/mod.rs.html#1-827">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Read DWARF debugging information.</p>
<ul>
<li><a href="#example-usage">Example Usage</a></li>
<li><a href="#api-structure">API Structure</a></li>
<li><a href="#using-with-fallibleiterator">Using with <code>FallibleIterator</code></a></li>
</ul>
<h3 id="example-usage"><a href="#example-usage">Example Usage</a></h3>
<p>Print out all of the functions in the debuggee program:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="comment">// Read the DWARF sections with whatever object loader you're using.
// These closures should return a `Reader` instance (e.g. `EndianSlice`).
</span><span class="kw">let </span>loader = |section: gimli::SectionId| { get_file_section_reader(section.name()) };
<span class="kw">let </span>sup_loader = |section: gimli::SectionId| { get_sup_file_section_reader(section.name()) };
<span class="kw">let </span><span class="kw-2">mut </span>dwarf = gimli::Dwarf::load(loader)<span class="question-mark">?</span>;
dwarf.load_sup(sup_loader)<span class="question-mark">?</span>;
<span class="comment">// Iterate over all compilation units.
</span><span class="kw">let </span><span class="kw-2">mut </span>iter = dwarf.units();
<span class="kw">while let </span><span class="prelude-val">Some</span>(header) = iter.next()<span class="question-mark">? </span>{
<span class="comment">// Parse the abbreviations and other information for this compilation unit.
</span><span class="kw">let </span>unit = dwarf.unit(header)<span class="question-mark">?</span>;
<span class="comment">// Iterate over all of this compilation unit's entries.
</span><span class="kw">let </span><span class="kw-2">mut </span>entries = unit.entries();
<span class="kw">while let </span><span class="prelude-val">Some</span>((<span class="kw">_</span>, entry)) = entries.next_dfs()<span class="question-mark">? </span>{
<span class="comment">// If we find an entry for a function, print it.
</span><span class="kw">if </span>entry.tag() == gimli::DW_TAG_subprogram {
<span class="macro">println!</span>(<span class="string">"Found a function: {:?}"</span>, entry);
}
}
}</code></pre></div>
<p>Full example programs:</p>
<ul>
<li>
<p><a href="https://github.com/gimli-rs/gimli/blob/master/crates/examples/src/bin/simple.rs">A simple parser</a></p>
</li>
<li>
<p><a href="https://github.com/gimli-rs/gimli/blob/master/crates/examples/src/bin/dwarfdump.rs">A <code>dwarfdump</code>
clone</a></p>
</li>
<li>
<p><a href="https://github.com/gimli-rs/addr2line">An <code>addr2line</code> clone</a></p>
</li>
<li>
<p><a href="https://github.com/gimli-rs/ddbug"><code>ddbug</code></a>, a utility giving insight into
code generation by making debugging information readable</p>
</li>
<li>
<p><a href="https://github.com/fitzgen/dwprod"><code>dwprod</code></a>, a tiny utility to list the
compilers used to create each compilation unit within a shared library or
executable (via <code>DW_AT_producer</code>)</p>
</li>
<li>
<p><a href="https://github.com/gimli-rs/gimli/blob/master/crates/examples/src/bin/dwarf-validate.rs"><code>dwarf-validate</code></a>,
a program to validate the integrity of some DWARF and its references
between sections and compilation units.</p>
</li>
</ul>
<h3 id="api-structure"><a href="#api-structure">API Structure</a></h3>
<ul>
<li>
<p>Basic familiarity with DWARF is assumed.</p>
</li>
<li>
<p>The <a href="./struct.Dwarf.html"><code>Dwarf</code></a> type contains the commonly used DWARF
sections. It has methods that simplify access to debugging data that spans
multiple sections. Use of this type is optional, but recommended.</p>
</li>
<li>
<p>Each section gets its own type. Consider these types the entry points to
the library:</p>
<ul>
<li>
<p><a href="./struct.DebugAbbrev.html"><code>DebugAbbrev</code></a>: The <code>.debug_abbrev</code> section.</p>
</li>
<li>
<p><a href="./struct.DebugAddr.html"><code>DebugAddr</code></a>: The <code>.debug_addr</code> section.</p>
</li>
<li>
<p><a href="./struct.DebugAranges.html"><code>DebugAranges</code></a>: The <code>.debug_aranges</code>
section.</p>
</li>
<li>
<p><a href="./struct.DebugFrame.html"><code>DebugFrame</code></a>: The <code>.debug_frame</code> section.</p>
</li>
<li>
<p><a href="./struct.DebugInfo.html"><code>DebugInfo</code></a>: The <code>.debug_info</code> section.</p>
</li>
<li>
<p><a href="./struct.DebugLine.html"><code>DebugLine</code></a>: The <code>.debug_line</code> section.</p>
</li>
<li>
<p><a href="./struct.DebugLineStr.html"><code>DebugLineStr</code></a>: The <code>.debug_line_str</code> section.</p>
</li>
<li>
<p><a href="./struct.DebugLoc.html"><code>DebugLoc</code></a>: The <code>.debug_loc</code> section.</p>
</li>
<li>
<p><a href="./struct.DebugLocLists.html"><code>DebugLocLists</code></a>: The <code>.debug_loclists</code> section.</p>
</li>
<li>
<p><a href="./struct.DebugPubNames.html"><code>DebugPubNames</code></a>: The <code>.debug_pubnames</code>
section.</p>
</li>
<li>
<p><a href="./struct.DebugPubTypes.html"><code>DebugPubTypes</code></a>: The <code>.debug_pubtypes</code>
section.</p>
</li>
<li>
<p><a href="./struct.DebugRanges.html"><code>DebugRanges</code></a>: The <code>.debug_ranges</code> section.</p>
</li>
<li>
<p><a href="./struct.DebugRngLists.html"><code>DebugRngLists</code></a>: The <code>.debug_rnglists</code> section.</p>
</li>
<li>
<p><a href="./struct.DebugStr.html"><code>DebugStr</code></a>: The <code>.debug_str</code> section.</p>
</li>
<li>
<p><a href="./struct.DebugStrOffsets.html"><code>DebugStrOffsets</code></a>: The <code>.debug_str_offsets</code> section.</p>
</li>
<li>
<p><a href="./struct.DebugTypes.html"><code>DebugTypes</code></a>: The <code>.debug_types</code> section.</p>
</li>
<li>
<p><a href="./struct.DebugCuIndex.html"><code>DebugCuIndex</code></a>: The <code>.debug_cu_index</code> section.</p>
</li>
<li>
<p><a href="./struct.DebugTuIndex.html"><code>DebugTuIndex</code></a>: The <code>.debug_tu_index</code> section.</p>
</li>
<li>
<p><a href="./struct.EhFrame.html"><code>EhFrame</code></a>: The <code>.eh_frame</code> section.</p>
</li>
<li>
<p><a href="./struct.EhFrameHdr.html"><code>EhFrameHdr</code></a>: The <code>.eh_frame_hdr</code> section.</p>
</li>
</ul>
</li>
<li>
<p>Each section type exposes methods for accessing the debugging data encoded
in that section. For example, the <a href="./struct.DebugInfo.html"><code>DebugInfo</code></a>
struct has the <a href="./struct.DebugInfo.html#method.units"><code>units</code></a> method for
iterating over the compilation units defined within it.</p>
</li>
<li>
<p>Offsets into a section are strongly typed: an offset into <code>.debug_info</code> is
the <a href="./struct.DebugInfoOffset.html"><code>DebugInfoOffset</code></a> type. It cannot be
used to index into the <a href="./struct.DebugLine.html"><code>DebugLine</code></a> type because
<code>DebugLine</code> represents the <code>.debug_line</code> section. There are similar types
for offsets relative to a compilation unit rather than a section.</p>
</li>
</ul>
<h3 id="using-with-fallibleiterator"><a href="#using-with-fallibleiterator">Using with <code>FallibleIterator</code></a></h3>
<p>The standard librarys <code>Iterator</code> trait and related APIs do not play well
with iterators where the <code>next</code> operation is fallible. One can make the
<code>Iterator</code>s associated <code>Item</code> type be a <code>Result&lt;T, E&gt;</code>, however the
provided methods cannot gracefully handle the case when an <code>Err</code> is
returned.</p>
<p>This situation led to the
<a href="https://crates.io/crates/fallible-iterator"><code>fallible-iterator</code></a> crates
existence. You can read more of the rationale for its existence in its
docs. The crate provides the helpers you have come to expect (eg <code>map</code>,
<code>filter</code>, etc) for iterators that can fail.</p>
<p><code>gimli</code>s many lazy parsing iterators are a perfect match for the
<code>fallible-iterator</code> crates <code>FallibleIterator</code> trait because parsing is not
done eagerly. Parse errors later in the input might only be discovered after
having iterated through many items.</p>
<p>To use <code>gimli</code> iterators with <code>FallibleIterator</code>, import the crate and trait
into your code:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="comment">// Use the `FallibleIterator` trait so its methods are in scope!
</span><span class="kw">use </span>fallible_iterator::FallibleIterator;
<span class="kw">use </span>gimli::{DebugAranges, EndianSlice, LittleEndian};
<span class="kw">fn </span>find_sum_of_address_range_lengths(aranges: DebugAranges&lt;EndianSlice&lt;LittleEndian&gt;&gt;)
-&gt; gimli::Result&lt;u64&gt;
{
<span class="comment">// `DebugAranges::headers` returns a `FallibleIterator`!
</span>aranges.headers()
<span class="comment">// `flat_map` is provided by `FallibleIterator`!
</span>.flat_map(|header| <span class="prelude-val">Ok</span>(header.entries()))
<span class="comment">// `map` is provided by `FallibleIterator`!
</span>.map(|arange| <span class="prelude-val">Ok</span>(arange.length()))
<span class="comment">// `fold` is provided by `FallibleIterator`!
</span>.fold(<span class="number">0</span>, |sum, len| <span class="prelude-val">Ok</span>(sum + len))
}</code></pre></div>
</div></details><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.Abbreviation.html" title="struct gimli::read::Abbreviation">Abbreviation</a></div><div class="desc docblock-short">An abbreviation describes the shape of a <code>DebuggingInformationEntry</code>s type:
its code, tag type, whether it has children, and its set of attributes.</div></li><li><div class="item-name"><a class="struct" href="struct.Abbreviations.html" title="struct gimli::read::Abbreviations">Abbreviations</a></div><div class="desc docblock-short">A set of type abbreviations.</div></li><li><div class="item-name"><a class="struct" href="struct.AbbreviationsCache.html" title="struct gimli::read::AbbreviationsCache">AbbreviationsCache</a></div><div class="desc docblock-short">A cache of previously parsed <code>Abbreviations</code>.</div></li><li><div class="item-name"><a class="struct" href="struct.ArangeEntry.html" title="struct gimli::read::ArangeEntry">ArangeEntry</a></div><div class="desc docblock-short">A single parsed arange.</div></li><li><div class="item-name"><a class="struct" href="struct.ArangeEntryIter.html" title="struct gimli::read::ArangeEntryIter">ArangeEntryIter</a></div><div class="desc docblock-short">An iterator over the aranges from a <code>.debug_aranges</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.ArangeHeader.html" title="struct gimli::read::ArangeHeader">ArangeHeader</a></div><div class="desc docblock-short">A header for a set of entries in the <code>.debug_arange</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.ArangeHeaderIter.html" title="struct gimli::read::ArangeHeaderIter">ArangeHeaderIter</a></div><div class="desc docblock-short">An iterator over the headers of a <code>.debug_aranges</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.Attribute.html" title="struct gimli::read::Attribute">Attribute</a></div><div class="desc docblock-short">An attribute in a <code>DebuggingInformationEntry</code>, consisting of a name and
associated value.</div></li><li><div class="item-name"><a class="struct" href="struct.AttributeSpecification.html" title="struct gimli::read::AttributeSpecification">AttributeSpecification</a></div><div class="desc docblock-short">The description of an attribute in an abbreviated type. It is a pair of name
and form.</div></li><li><div class="item-name"><a class="struct" href="struct.AttrsIter.html" title="struct gimli::read::AttrsIter">AttrsIter</a></div><div class="desc docblock-short">An iterator over a particular entrys attributes.</div></li><li><div class="item-name"><a class="struct" href="struct.Augmentation.html" title="struct gimli::read::Augmentation">Augmentation</a></div><div class="desc docblock-short">We support the z-style augmentation <a href="https://refspecs.linuxfoundation.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html">defined by <code>.eh_frame</code></a>.</div></li><li><div class="item-name"><a class="struct" href="struct.BaseAddresses.html" title="struct gimli::read::BaseAddresses">BaseAddresses</a></div><div class="desc docblock-short">Optional base addresses for the relative <code>DW_EH_PE_*</code> encoded pointers.</div></li><li><div class="item-name"><a class="struct" href="struct.CallFrameInstructionIter.html" title="struct gimli::read::CallFrameInstructionIter">CallFrameInstructionIter</a></div><div class="desc docblock-short">A lazy iterator parsing call frame instructions.</div></li><li><div class="item-name"><a class="struct" href="struct.CfiEntriesIter.html" title="struct gimli::read::CfiEntriesIter">CfiEntriesIter</a></div><div class="desc docblock-short">An iterator over CIE and FDE entries in a <code>.debug_frame</code> or <code>.eh_frame</code>
section.</div></li><li><div class="item-name"><a class="struct" href="struct.CommonInformationEntry.html" title="struct gimli::read::CommonInformationEntry">CommonInformationEntry</a></div><div class="desc docblock-short"><blockquote>
A Common Information Entry holds information that is shared among many
Frame Description Entries. There is at least one CIE in every non-empty
<code>.debug_frame</code> section.</blockquote>
</div></li><li><div class="item-name"><a class="struct" href="struct.CompleteLineProgram.html" title="struct gimli::read::CompleteLineProgram">CompleteLineProgram</a></div><div class="desc docblock-short">A line number program that has previously been run to completion.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugAbbrev.html" title="struct gimli::read::DebugAbbrev">DebugAbbrev</a></div><div class="desc docblock-short">The <code>DebugAbbrev</code> struct represents the abbreviations describing
<code>DebuggingInformationEntry</code>s attribute names and forms found in the
<code>.debug_abbrev</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugAddr.html" title="struct gimli::read::DebugAddr">DebugAddr</a></div><div class="desc docblock-short">The raw contents of the <code>.debug_addr</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugAranges.html" title="struct gimli::read::DebugAranges">DebugAranges</a></div><div class="desc docblock-short">The <code>DebugAranges</code> struct represents the DWARF address range information
found in the <code>.debug_aranges</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugCuIndex.html" title="struct gimli::read::DebugCuIndex">DebugCuIndex</a></div><div class="desc docblock-short">The data in the <code>.debug_cu_index</code> section of a <code>.dwp</code> file.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugFrame.html" title="struct gimli::read::DebugFrame">DebugFrame</a></div><div class="desc docblock-short"><code>DebugFrame</code> contains the <code>.debug_frame</code> sections frame unwinding
information required to unwind to and recover registers from older frames on
the stack. For example, this is useful for a debugger that wants to print
locals in a backtrace.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugInfo.html" title="struct gimli::read::DebugInfo">DebugInfo</a></div><div class="desc docblock-short">The <code>DebugInfo</code> struct represents the DWARF debugging information found in
the <code>.debug_info</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugInfoUnitHeadersIter.html" title="struct gimli::read::DebugInfoUnitHeadersIter">DebugInfoUnitHeadersIter</a></div><div class="desc docblock-short">An iterator over the units of a .debug_info section.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugLine.html" title="struct gimli::read::DebugLine">DebugLine</a></div><div class="desc docblock-short">The <code>DebugLine</code> struct contains the source location to instruction mapping
found in the <code>.debug_line</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugLineStr.html" title="struct gimli::read::DebugLineStr">DebugLineStr</a></div><div class="desc docblock-short">The <code>DebugLineStr</code> struct represents the DWARF strings
found in the <code>.debug_line_str</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugLoc.html" title="struct gimli::read::DebugLoc">DebugLoc</a></div><div class="desc docblock-short">The raw contents of the <code>.debug_loc</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugLocLists.html" title="struct gimli::read::DebugLocLists">DebugLocLists</a></div><div class="desc docblock-short">The <code>DebugLocLists</code> struct represents the DWARF data
found in the <code>.debug_loclists</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugPubNames.html" title="struct gimli::read::DebugPubNames">DebugPubNames</a></div><div class="desc docblock-short">The <code>DebugPubNames</code> struct represents the DWARF public names information
found in the <code>.debug_pubnames</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugPubTypes.html" title="struct gimli::read::DebugPubTypes">DebugPubTypes</a></div><div class="desc docblock-short">The <code>DebugPubTypes</code> struct represents the DWARF public types information
found in the <code>.debug_info</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugRanges.html" title="struct gimli::read::DebugRanges">DebugRanges</a></div><div class="desc docblock-short">The raw contents of the <code>.debug_ranges</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugRngLists.html" title="struct gimli::read::DebugRngLists">DebugRngLists</a></div><div class="desc docblock-short">The <code>DebugRngLists</code> struct represents the contents of the
<code>.debug_rnglists</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugStr.html" title="struct gimli::read::DebugStr">DebugStr</a></div><div class="desc docblock-short">The <code>DebugStr</code> struct represents the DWARF strings
found in the <code>.debug_str</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugStrOffsets.html" title="struct gimli::read::DebugStrOffsets">DebugStrOffsets</a></div><div class="desc docblock-short">The raw contents of the <code>.debug_str_offsets</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugTuIndex.html" title="struct gimli::read::DebugTuIndex">DebugTuIndex</a></div><div class="desc docblock-short">The data in the <code>.debug_tu_index</code> section of a <code>.dwp</code> file.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugTypes.html" title="struct gimli::read::DebugTypes">DebugTypes</a></div><div class="desc docblock-short">The <code>DebugTypes</code> struct represents the DWARF type information
found in the <code>.debug_types</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.DebugTypesUnitHeadersIter.html" title="struct gimli::read::DebugTypesUnitHeadersIter">DebugTypesUnitHeadersIter</a></div><div class="desc docblock-short">An iterator over the type-units of this <code>.debug_types</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.DebuggingInformationEntry.html" title="struct gimli::read::DebuggingInformationEntry">DebuggingInformationEntry</a></div><div class="desc docblock-short">A Debugging Information Entry (DIE).</div></li><li><div class="item-name"><a class="struct" href="struct.Dwarf.html" title="struct gimli::read::Dwarf">Dwarf</a></div><div class="desc docblock-short">All of the commonly used DWARF sections, and other common information.</div></li><li><div class="item-name"><a class="struct" href="struct.DwarfPackage.html" title="struct gimli::read::DwarfPackage">DwarfPackage</a></div><div class="desc docblock-short">The sections from a <code>.dwp</code> file.</div></li><li><div class="item-name"><a class="struct" href="struct.EhFrame.html" title="struct gimli::read::EhFrame">EhFrame</a></div><div class="desc docblock-short"><code>EhFrame</code> contains the frame unwinding information needed during exception
handling found in the <code>.eh_frame</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.EhFrameHdr.html" title="struct gimli::read::EhFrameHdr">EhFrameHdr</a></div><div class="desc docblock-short"><code>EhFrameHdr</code> contains the information about the <code>.eh_frame_hdr</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.EhHdrTable.html" title="struct gimli::read::EhHdrTable">EhHdrTable</a></div><div class="desc docblock-short">The CFI binary search table that is an optional part of the <code>.eh_frame_hdr</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.EhHdrTableIter.html" title="struct gimli::read::EhHdrTableIter">EhHdrTableIter</a></div><div class="desc docblock-short">An iterator for <code>.eh_frame_hdr</code> sections binary search table.</div></li><li><div class="item-name"><a class="struct" href="struct.EndianSlice.html" title="struct gimli::read::EndianSlice">EndianSlice</a></div><div class="desc docblock-short">A <code>&amp;[u8]</code> slice with endianity metadata.</div></li><li><div class="item-name"><a class="struct" href="struct.EntriesCursor.html" title="struct gimli::read::EntriesCursor">EntriesCursor</a></div><div class="desc docblock-short">A cursor into the Debugging Information Entries tree for a compilation unit.</div></li><li><div class="item-name"><a class="struct" href="struct.EntriesRaw.html" title="struct gimli::read::EntriesRaw">EntriesRaw</a></div><div class="desc docblock-short">A raw reader of the data that defines the Debugging Information Entries.</div></li><li><div class="item-name"><a class="struct" href="struct.EntriesTree.html" title="struct gimli::read::EntriesTree">EntriesTree</a></div><div class="desc docblock-short">The state information for a tree view of the Debugging Information Entries.</div></li><li><div class="item-name"><a class="struct" href="struct.EntriesTreeIter.html" title="struct gimli::read::EntriesTreeIter">EntriesTreeIter</a></div><div class="desc docblock-short">An iterator that allows traversal of the children of an
<code>EntriesTreeNode</code>.</div></li><li><div class="item-name"><a class="struct" href="struct.EntriesTreeNode.html" title="struct gimli::read::EntriesTreeNode">EntriesTreeNode</a></div><div class="desc docblock-short">A node in the Debugging Information Entry tree.</div></li><li><div class="item-name"><a class="struct" href="struct.Evaluation.html" title="struct gimli::read::Evaluation">Evaluation</a></div><div class="desc docblock-short">A DWARF expression evaluator.</div></li><li><div class="item-name"><a class="struct" href="struct.Expression.html" title="struct gimli::read::Expression">Expression</a></div><div class="desc docblock-short">The bytecode for a DWARF expression or location description.</div></li><li><div class="item-name"><a class="struct" href="struct.FileEntry.html" title="struct gimli::read::FileEntry">FileEntry</a></div><div class="desc docblock-short">An entry in the <code>LineProgramHeader</code>s <code>file_names</code> set.</div></li><li><div class="item-name"><a class="struct" href="struct.FileEntryFormat.html" title="struct gimli::read::FileEntryFormat">FileEntryFormat</a></div><div class="desc docblock-short">The format of a component of an include directory or file name entry.</div></li><li><div class="item-name"><a class="struct" href="struct.FrameDescriptionEntry.html" title="struct gimli::read::FrameDescriptionEntry">FrameDescriptionEntry</a></div><div class="desc docblock-short">A <code>FrameDescriptionEntry</code> is a set of CFA instructions for an address range.</div></li><li><div class="item-name"><a class="struct" href="struct.IncompleteLineProgram.html" title="struct gimli::read::IncompleteLineProgram">IncompleteLineProgram</a></div><div class="desc docblock-short">A line number program that has not been run to completion.</div></li><li><div class="item-name"><a class="struct" href="struct.LineInstructions.html" title="struct gimli::read::LineInstructions">LineInstructions</a></div><div class="desc docblock-short">An iterator yielding parsed instructions.</div></li><li><div class="item-name"><a class="struct" href="struct.LineProgramHeader.html" title="struct gimli::read::LineProgramHeader">LineProgramHeader</a></div><div class="desc docblock-short">A header for a line number program in the <code>.debug_line</code> section, as defined
in section 6.2.4 of the standard.</div></li><li><div class="item-name"><a class="struct" href="struct.LineRow.html" title="struct gimli::read::LineRow">LineRow</a></div><div class="desc docblock-short">A row in the line number programs resulting matrix.</div></li><li><div class="item-name"><a class="struct" href="struct.LineRows.html" title="struct gimli::read::LineRows">LineRows</a></div><div class="desc docblock-short">Executes a <code>LineProgram</code> to iterate over the rows in the matrix of line number information.</div></li><li><div class="item-name"><a class="struct" href="struct.LineSequence.html" title="struct gimli::read::LineSequence">LineSequence</a></div><div class="desc docblock-short">A sequence within a line number program. A sequence, as defined in section
6.2.5 of the standard, is a linear subset of a line number program within
which addresses are monotonically increasing.</div></li><li><div class="item-name"><a class="struct" href="struct.LocListIter.html" title="struct gimli::read::LocListIter">LocListIter</a></div><div class="desc docblock-short">An iterator over a location list.</div></li><li><div class="item-name"><a class="struct" href="struct.LocationListEntry.html" title="struct gimli::read::LocationListEntry">LocationListEntry</a></div><div class="desc docblock-short">A location list entry from the <code>.debug_loc</code> or <code>.debug_loclists</code> sections.</div></li><li><div class="item-name"><a class="struct" href="struct.LocationLists.html" title="struct gimli::read::LocationLists">LocationLists</a></div><div class="desc docblock-short">The DWARF data found in <code>.debug_loc</code> and <code>.debug_loclists</code> sections.</div></li><li><div class="item-name"><a class="struct" href="struct.OperationIter.html" title="struct gimli::read::OperationIter">OperationIter</a></div><div class="desc docblock-short">An iterator for the operations in an expression.</div></li><li><div class="item-name"><a class="struct" href="struct.ParsedEhFrameHdr.html" title="struct gimli::read::ParsedEhFrameHdr">ParsedEhFrameHdr</a></div><div class="desc docblock-short"><code>ParsedEhFrameHdr</code> contains the parsed information from the <code>.eh_frame_hdr</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.PartialFrameDescriptionEntry.html" title="struct gimli::read::PartialFrameDescriptionEntry">PartialFrameDescriptionEntry</a></div><div class="desc docblock-short">A partially parsed <code>FrameDescriptionEntry</code>.</div></li><li><div class="item-name"><a class="struct" href="struct.Piece.html" title="struct gimli::read::Piece">Piece</a></div><div class="desc docblock-short">The description of a single piece of the result of a DWARF
expression.</div></li><li><div class="item-name"><a class="struct" href="struct.PubNamesEntry.html" title="struct gimli::read::PubNamesEntry">PubNamesEntry</a></div><div class="desc docblock-short">A single parsed pubname.</div></li><li><div class="item-name"><a class="struct" href="struct.PubNamesEntryIter.html" title="struct gimli::read::PubNamesEntryIter">PubNamesEntryIter</a></div><div class="desc docblock-short">An iterator over the pubnames from a <code>.debug_pubnames</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.PubTypesEntry.html" title="struct gimli::read::PubTypesEntry">PubTypesEntry</a></div><div class="desc docblock-short">A single parsed pubtype.</div></li><li><div class="item-name"><a class="struct" href="struct.PubTypesEntryIter.html" title="struct gimli::read::PubTypesEntryIter">PubTypesEntryIter</a></div><div class="desc docblock-short">An iterator over the pubtypes from a <code>.debug_pubtypes</code> section.</div></li><li><div class="item-name"><a class="struct" href="struct.Range.html" title="struct gimli::read::Range">Range</a></div><div class="desc docblock-short">An address range from the <code>.debug_ranges</code>, <code>.debug_rnglists</code>, or <code>.debug_aranges</code> sections.</div></li><li><div class="item-name"><a class="struct" href="struct.RangeIter.html" title="struct gimli::read::RangeIter">RangeIter</a></div><div class="desc docblock-short">An iterator for the address ranges of a <code>DebuggingInformationEntry</code>.</div></li><li><div class="item-name"><a class="struct" href="struct.RangeLists.html" title="struct gimli::read::RangeLists">RangeLists</a></div><div class="desc docblock-short">The DWARF data found in <code>.debug_ranges</code> and <code>.debug_rnglists</code> sections.</div></li><li><div class="item-name"><a class="struct" href="struct.RawLocListIter.html" title="struct gimli::read::RawLocListIter">RawLocListIter</a></div><div class="desc docblock-short">A raw iterator over a location list.</div></li><li><div class="item-name"><a class="struct" href="struct.RawRngListIter.html" title="struct gimli::read::RawRngListIter">RawRngListIter</a></div><div class="desc docblock-short">A raw iterator over an address range list.</div></li><li><div class="item-name"><a class="struct" href="struct.ReaderOffsetId.html" title="struct gimli::read::ReaderOffsetId">ReaderOffsetId</a></div><div class="desc docblock-short">An identifier for an offset within a section reader.</div></li><li><div class="item-name"><a class="struct" href="struct.RegisterRuleIter.html" title="struct gimli::read::RegisterRuleIter">RegisterRuleIter</a></div><div class="desc docblock-short">An unordered iterator for register rules.</div></li><li><div class="item-name"><a class="struct" href="struct.RngListIter.html" title="struct gimli::read::RngListIter">RngListIter</a></div><div class="desc docblock-short">An iterator over an address range list.</div></li><li><div class="item-name"><a class="struct" href="struct.SectionBaseAddresses.html" title="struct gimli::read::SectionBaseAddresses">SectionBaseAddresses</a></div><div class="desc docblock-short">Optional base addresses for the relative <code>DW_EH_PE_*</code> encoded pointers
in a particular section.</div></li><li><div class="item-name"><a class="struct" href="struct.StoreOnHeap.html" title="struct gimli::read::StoreOnHeap">StoreOnHeap</a></div><div class="desc docblock-short">Indicates that storage should be allocated on heap.</div></li><li><div class="item-name"><a class="struct" href="struct.Unit.html" title="struct gimli::read::Unit">Unit</a></div><div class="desc docblock-short">All of the commonly used information for a unit in the <code>.debug_info</code> or <code>.debug_types</code>
sections.</div></li><li><div class="item-name"><a class="struct" href="struct.UnitHeader.html" title="struct gimli::read::UnitHeader">UnitHeader</a></div><div class="desc docblock-short">The common fields for the headers of compilation units and
type units.</div></li><li><div class="item-name"><a class="struct" href="struct.UnitIndex.html" title="struct gimli::read::UnitIndex">UnitIndex</a></div><div class="desc docblock-short">The partially parsed index from a <code>DebugCuIndex</code> or <code>DebugTuIndex</code>.</div></li><li><div class="item-name"><a class="struct" href="struct.UnitIndexSection.html" title="struct gimli::read::UnitIndexSection">UnitIndexSection</a></div><div class="desc docblock-short">Information about a units contribution to a section in a <code>.dwp</code> file.</div></li><li><div class="item-name"><a class="struct" href="struct.UnitIndexSectionIterator.html" title="struct gimli::read::UnitIndexSectionIterator">UnitIndexSectionIterator</a></div><div class="desc docblock-short">An iterator over the section offsets and sizes for a row in a <code>UnitIndex</code>.</div></li><li><div class="item-name"><a class="struct" href="struct.UnitOffset.html" title="struct gimli::read::UnitOffset">UnitOffset</a></div><div class="desc docblock-short">An offset into the current compilation or type unit.</div></li><li><div class="item-name"><a class="struct" href="struct.UnwindContext.html" title="struct gimli::read::UnwindContext">UnwindContext</a></div><div class="desc docblock-short">Common context needed when evaluating the call frame unwinding information.</div></li><li><div class="item-name"><a class="struct" href="struct.UnwindTable.html" title="struct gimli::read::UnwindTable">UnwindTable</a></div><div class="desc docblock-short">The <code>UnwindTable</code> iteratively evaluates a <code>FrameDescriptionEntry</code>s
<code>CallFrameInstruction</code> program, yielding the each row one at a time.</div></li><li><div class="item-name"><a class="struct" href="struct.UnwindTableRow.html" title="struct gimli::read::UnwindTableRow">UnwindTableRow</a></div><div class="desc docblock-short">A row in the virtual unwind table that describes how to find the values of
the registers in the <em>previous</em> frame for a range of PC addresses.</div></li></ul><h2 id="enums" class="section-header"><a href="#enums">Enums</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.AbbreviationsCacheStrategy.html" title="enum gimli::read::AbbreviationsCacheStrategy">AbbreviationsCacheStrategy</a></div><div class="desc docblock-short">The strategy to use for caching abbreviations.</div></li><li><div class="item-name"><a class="enum" href="enum.AttributeValue.html" title="enum gimli::read::AttributeValue">AttributeValue</a></div><div class="desc docblock-short">The value of an attribute in a <code>DebuggingInformationEntry</code>.</div></li><li><div class="item-name"><a class="enum" href="enum.CallFrameInstruction.html" title="enum gimli::read::CallFrameInstruction">CallFrameInstruction</a></div><div class="desc docblock-short">A parsed call frame instruction.</div></li><li><div class="item-name"><a class="enum" href="enum.CfaRule.html" title="enum gimli::read::CfaRule">CfaRule</a></div><div class="desc docblock-short">The canonical frame address (CFA) recovery rules.</div></li><li><div class="item-name"><a class="enum" href="enum.CieOrFde.html" title="enum gimli::read::CieOrFde">CieOrFde</a></div><div class="desc docblock-short">Either a <code>CommonInformationEntry</code> (CIE) or a <code>FrameDescriptionEntry</code> (FDE).</div></li><li><div class="item-name"><a class="enum" href="enum.ColumnType.html" title="enum gimli::read::ColumnType">ColumnType</a></div><div class="desc docblock-short">The type of column that a row is referring to.</div></li><li><div class="item-name"><a class="enum" href="enum.DieReference.html" title="enum gimli::read::DieReference">DieReference</a></div><div class="desc docblock-short">A reference to a DIE, either relative to the current CU or
relative to the section.</div></li><li><div class="item-name"><a class="enum" href="enum.Error.html" title="enum gimli::read::Error">Error</a></div><div class="desc docblock-short">An error that occurred when parsing.</div></li><li><div class="item-name"><a class="enum" href="enum.EvaluationResult.html" title="enum gimli::read::EvaluationResult">EvaluationResult</a></div><div class="desc docblock-short">The state of an <code>Evaluation</code> after evaluating a DWARF expression.
The evaluation is either <code>Complete</code>, or it requires more data
to continue, as described by the variant.</div></li><li><div class="item-name"><a class="enum" href="enum.LineInstruction.html" title="enum gimli::read::LineInstruction">LineInstruction</a></div><div class="desc docblock-short">A parsed line number program instruction.</div></li><li><div class="item-name"><a class="enum" href="enum.Location.html" title="enum gimli::read::Location">Location</a></div><div class="desc docblock-short">A single location of a piece of the result of a DWARF expression.</div></li><li><div class="item-name"><a class="enum" href="enum.Operation.html" title="enum gimli::read::Operation">Operation</a></div><div class="desc docblock-short">A single decoded DWARF expression operation.</div></li><li><div class="item-name"><a class="enum" href="enum.Pointer.html" title="enum gimli::read::Pointer">Pointer</a></div><div class="desc docblock-short">A decoded pointer.</div></li><li><div class="item-name"><a class="enum" href="enum.RawLocListEntry.html" title="enum gimli::read::RawLocListEntry">RawLocListEntry</a></div><div class="desc docblock-short">A raw entry in .debug_loclists.</div></li><li><div class="item-name"><a class="enum" href="enum.RawRngListEntry.html" title="enum gimli::read::RawRngListEntry">RawRngListEntry</a></div><div class="desc docblock-short">A raw entry in .debug_rnglists</div></li><li><div class="item-name"><a class="enum" href="enum.RegisterRule.html" title="enum gimli::read::RegisterRule">RegisterRule</a></div><div class="desc docblock-short">An entry in the abstract CFI table that describes how to find the value of a
register.</div></li><li><div class="item-name"><a class="enum" href="enum.UnitType.html" title="enum gimli::read::UnitType">UnitType</a></div><div class="desc docblock-short">This enum specifies the type of the unit and any type
specific data carried in the header (e.g. the type
signature/type offset of a type unit).</div></li><li><div class="item-name"><a class="enum" href="enum.Value.html" title="enum gimli::read::Value">Value</a></div><div class="desc docblock-short">The value of an entry on the DWARF stack.</div></li><li><div class="item-name"><a class="enum" href="enum.ValueType.html" title="enum gimli::read::ValueType">ValueType</a></div><div class="desc docblock-short">The type of an entry on the DWARF stack.</div></li></ul><h2 id="traits" class="section-header"><a href="#traits">Traits</a></h2><ul class="item-table"><li><div class="item-name"><a class="trait" href="trait.ArrayLike.html" title="trait gimli::read::ArrayLike">ArrayLike</a></div><div class="desc docblock-short">Marker trait for types that can be used as backing storage when a growable array type is needed.</div></li><li><div class="item-name"><a class="trait" href="trait.EvaluationStorage.html" title="trait gimli::read::EvaluationStorage">EvaluationStorage</a></div><div class="desc docblock-short">Specification of what storage should be used for <a href="struct.Evaluation.html" title="struct gimli::read::Evaluation"><code>Evaluation</code></a>.</div></li><li><div class="item-name"><a class="trait" href="trait.LineProgram.html" title="trait gimli::read::LineProgram">LineProgram</a></div><div class="desc docblock-short">A <code>LineProgram</code> provides access to a <code>LineProgramHeader</code> and
a way to add files to the files table if necessary. Gimli consumers should
never need to use or see this trait.</div></li><li><div class="item-name"><a class="trait" href="trait.Reader.html" title="trait gimli::read::Reader">Reader</a></div><div class="desc docblock-short">A trait for reading the data from a DWARF section.</div></li><li><div class="item-name"><a class="trait" href="trait.ReaderOffset.html" title="trait gimli::read::ReaderOffset">ReaderOffset</a></div><div class="desc docblock-short">A trait for offsets with a DWARF section.</div></li><li><div class="item-name"><a class="trait" href="trait.Section.html" title="trait gimli::read::Section">Section</a></div><div class="desc docblock-short">A convenience trait for loading DWARF sections from object files. To be
used like:</div></li><li><div class="item-name"><a class="trait" href="trait.UnwindContextStorage.html" title="trait gimli::read::UnwindContextStorage">UnwindContextStorage</a></div><div class="desc docblock-short">Specification of what storage should be used for <a href="struct.UnwindContext.html" title="struct gimli::read::UnwindContext"><code>UnwindContext</code></a>.</div></li><li><div class="item-name"><a class="trait" href="trait.UnwindOffset.html" title="trait gimli::read::UnwindOffset">UnwindOffset</a></div><div class="desc docblock-short">An offset into an <code>UnwindSection</code>.</div></li><li><div class="item-name"><a class="trait" href="trait.UnwindSection.html" title="trait gimli::read::UnwindSection">UnwindSection</a></div><div class="desc docblock-short">A section holding unwind information: either <code>.debug_frame</code> or
<code>.eh_frame</code>. See <a href="./struct.DebugFrame.html"><code>DebugFrame</code></a> and
<a href="./struct.EhFrame.html"><code>EhFrame</code></a> respectively.</div></li></ul><h2 id="types" class="section-header"><a href="#types">Type Aliases</a></h2><ul class="item-table"><li><div class="item-name"><a class="type" href="type.CompleteLineNumberProgram.html" title="type gimli::read::CompleteLineNumberProgram">CompleteLineNumberProgram</a><span class="stab deprecated" title="">Deprecated</span></div><div class="desc docblock-short">Deprecated. <code>CompleteLineNumberProgram</code> has been renamed to <code>CompleteLineProgram</code>.</div></li><li><div class="item-name"><a class="type" href="type.EndianBuf.html" title="type gimli::read::EndianBuf">EndianBuf</a><span class="stab deprecated" title="">Deprecated</span></div><div class="desc docblock-short"><code>EndianBuf</code> has been renamed to <code>EndianSlice</code>. For ease of upgrading across
<code>gimli</code> versions, we export this type alias.</div></li><li><div class="item-name"><a class="type" href="type.IncompleteLineNumberProgram.html" title="type gimli::read::IncompleteLineNumberProgram">IncompleteLineNumberProgram</a><span class="stab deprecated" title="">Deprecated</span></div><div class="desc docblock-short">Deprecated. <code>IncompleteLineNumberProgram</code> has been renamed to <code>IncompleteLineProgram</code>.</div></li><li><div class="item-name"><a class="type" href="type.LineNumberProgram.html" title="type gimli::read::LineNumberProgram">LineNumberProgram</a><span class="stab deprecated" title="">Deprecated</span></div><div class="desc docblock-short">Deprecated. <code>LineNumberProgram</code> has been renamed to <code>LineProgram</code>.</div></li><li><div class="item-name"><a class="type" href="type.LineNumberProgramHeader.html" title="type gimli::read::LineNumberProgramHeader">LineNumberProgramHeader</a><span class="stab deprecated" title="">Deprecated</span></div><div class="desc docblock-short">Deprecated. <code>LineNumberProgramHeader</code> has been renamed to <code>LineProgramHeader</code>.</div></li><li><div class="item-name"><a class="type" href="type.LineNumberRow.html" title="type gimli::read::LineNumberRow">LineNumberRow</a><span class="stab deprecated" title="">Deprecated</span></div><div class="desc docblock-short">Deprecated. <code>LineNumberRow</code> has been renamed to <code>LineRow</code>.</div></li><li><div class="item-name"><a class="type" href="type.LineNumberSequence.html" title="type gimli::read::LineNumberSequence">LineNumberSequence</a><span class="stab deprecated" title="">Deprecated</span></div><div class="desc docblock-short">Deprecated. <code>LineNumberSequence</code> has been renamed to <code>LineSequence</code>.</div></li><li><div class="item-name"><a class="type" href="type.Opcode.html" title="type gimli::read::Opcode">Opcode</a><span class="stab deprecated" title="">Deprecated</span></div><div class="desc docblock-short">Deprecated. <code>Opcode</code> has been renamed to <code>LineInstruction</code>.</div></li><li><div class="item-name"><a class="type" href="type.OpcodesIter.html" title="type gimli::read::OpcodesIter">OpcodesIter</a><span class="stab deprecated" title="">Deprecated</span></div><div class="desc docblock-short">Deprecated. <code>OpcodesIter</code> has been renamed to <code>LineInstructions</code>.</div></li><li><div class="item-name"><a class="type" href="type.Result.html" title="type gimli::read::Result">Result</a></div><div class="desc docblock-short">The result of a parse.</div></li><li><div class="item-name"><a class="type" href="type.StateMachine.html" title="type gimli::read::StateMachine">StateMachine</a><span class="stab deprecated" title="">Deprecated</span></div><div class="desc docblock-short">Deprecated. <code>StateMachine</code> has been renamed to <code>LineRows</code>.</div></li></ul></section></div></main></body></html>