edlang/gimli/read/index.html

233 lines
48 KiB
HTML
Raw Normal View History

<!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>