Crate gimli [] [src]

A lazy, zero-copy parser for the DWARF debugging information format.

  • Zero-copy: everything is just a reference to the original input buffer. No copies of the input data ever get made.

  • Lazy: only the compilation units' entries that you iterate over get parsed, and only as deep as you ask. Skip over a compilation unit and its entries don't get parsed.

  • Cross-platform: gimli isn't coupled to any platform or object file format. Use your own ELF parser on Linux or a Mach-O parser on OSX.

    • Unsure which object file parser to use? Try the cross-platform object crate.

This library primarily targets the fourth edition of the standard (the most recent, at time of writing).

Example Usage

Print out all of the functions in the debuggee program:

extern crate gimli;

// Read the .debug_info and .debug_abbrev sections with whatever object
// loader you're using.
let debug_info = gimli::DebugInfo::<gimli::LittleEndian>::new(read_debug_info());
let debug_abbrev = gimli::DebugAbbrev::<gimli::LittleEndian>::new(read_debug_abbrev());

// Iterate over all compilation units.
let mut iter = debug_info.units();
while let Some(unit) = try!(iter.next()) {
    // Parse the abbreviations for this compilation unit.
    let abbrevs = try!(unit.abbreviations(debug_abbrev));

    // Iterate over all of this compilation unit's entries.
    let mut entries = unit.entries(&abbrevs);
    while let Some((_, entry)) = try!(entries.next_dfs()) {
        // If we find an entry for a function, print it.
        if entry.tag() == gimli::DW_TAG_subprogram {
            println!("Found a function: {:?}", entry);
        }
    }
}

See the example programs for complete examples.

API Structure

  • Basic familiarity with DWARF is assumed.

  • Each section gets its own type. Consider these types the entry points to the library:

  • Each section type exposes methods for accessing the debugging data encoded in that section. For example, the DebugInfo struct has the units method for iterating over the compilation units defined within it.

  • Offsets into a section are strongly typed: an offset into .debug_info is the DebugInfoOffset type. It cannot be used to index into the DebugLine type because DebugLine represents the .debug_line section. There are similar types for offsets relative to a compilation unit rather than a section.

Using with FallibleIterator

The standard library's Iterator trait and related APIs do not play well with iterators where the next operation is fallible. One can make the Iterator's associated Item type be a Result<T, E>, however the provided methods cannot gracefully handle the case when an Err is returned.

This situation led to the fallible-iterator crate's 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 map, filter, etc) for iterators that can fail.

gimli's many lazy parsing iterators are a perfect match for the fallible-iterator crate's FallibleIterator trait because parsing is not done eagerly. Parse errors later in the input might only be discovered after having iterated through many items.

To use gimli iterators with FallibleIterator, import the crate and trait into your code:

// Add the `fallible-iterator` crate. Don't forget to add it to your
// `Cargo.toml`, too!
extern crate fallible_iterator;
extern crate gimli;

// Use the `FallibleIterator` trait so its methods are in scope!
use fallible_iterator::FallibleIterator;
use gimli::{DebugAranges, LittleEndian};

fn find_sum_of_address_range_lengths(aranges: DebugAranges<LittleEndian>)
    -> gimli::Result<u64>
{
    // `DebugAranges::items` returns a `FallibleIterator`!
    aranges.items()
        // `map` is provided by `FallibleIterator`!
        .map(|arange| arange.length())
        // `fold` is provided by `FallibleIterator`!
        .fold(0, |sum, len| sum + len)
}

Structs

Abbreviation

An abbreviation describes the shape of a DebuggingInformationEntry's type: its code, tag type, whether it has children, and its set of attributes.

Abbreviations

A set of type abbreviations.

ArangeEntry

A single parsed arange.

Attribute

An attribute in a DebuggingInformationEntry, consisting of a name and associated value.

AttributeSpecification

The description of an attribute in an abbreviated type. It is a pair of name and form.

AttrsIter

An iterator over a particular entry's attributes.

Augmentation

We support the z-style augmentation defined by .eh_frame.

BaseAddresses

Optional base addresses for the relative DW_EH_PE_* encoded pointers.

CallFrameInstructionIter

A lazy iterator parsing call frame instructions.

CfiEntriesIter

An iterator over CIE and FDE entries in a .debug_frame or .eh_frame section.

CommonInformationEntry

A Common Information Entry holds information that is shared among many Frame Description Entries. There is at least one CIE in every non-empty .debug_frame section.

CompilationUnitHeader

The header of a compilation unit's debugging information.

CompilationUnitHeadersIter

An iterator over the compilation- and partial-units of a section.

CompleteLineNumberProgram

A line number program that has previously been run to completion.

DebugAbbrev

The DebugAbbrev struct represents the abbreviations describing DebuggingInformationEntrys' attribute names and forms found in the .debug_abbrev section.

DebugAbbrevOffset

An offset into the .debug_abbrev section.

DebugFrame

DebugFrame contains the .debug_frame section's 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.

DebugFrameOffset

An offset into the .debug_frame section.

DebugInfo

The DebugInfo struct represents the DWARF debugging information found in the .debug_info section.

DebugInfoOffset

An offset into the .debug_info section.

DebugLine

The DebugLine struct contains the source location to instruction mapping found in the .debug_line section.

DebugLineOffset

An offset into the .debug_line section.

DebugLoc

The DebugLoc struct represents the DWARF strings found in the .debug_loc section.

DebugLocOffset

An offset into the .debug_loc section.

DebugMacinfoOffset

An offset into the .debug_macinfo section.

DebugRanges

The DebugRanges struct represents the DWARF strings found in the .debug_ranges section.

DebugRangesOffset

An offset into the .debug_ranges section.

DebugStr

The DebugStr struct represents the DWARF strings found in the .debug_str section.

DebugStrOffset

An offset into the .debug_str section.

DebugTypeSignature

A type signature as used in the .debug_types section.

DebugTypes

The DebugTypes struct represents the DWARF type information found in the .debug_types section.

DebugTypesOffset

An offset into the .debug_types section.

DebuggingInformationEntry

A Debugging Information Entry (DIE).

DwAccess
DwAddr
DwAt
DwAte
DwCc
DwCfa
DwChildren
DwDs
DwDsc
DwEhPe
DwEnd
DwForm
DwId
DwInl
DwLang
DwLne
DwLns
DwOp
DwOrd
DwTag
DwVirtuality
DwVis
EhFrame

EhFrame contains the frame unwinding information needed during exception handling found in the .eh_frame section.

EhFrameOffset

An offset into the .eh_frame section.

EndianBuf

A &[u8] slice with compile-time endianity metadata.

EntriesCursor

A cursor into the Debugging Information Entries tree for a compilation unit.

EntriesTree

The state information for a tree view of the Debugging Information Entries.

EntriesTreeIter

An iterator that allows recursive traversal of the Debugging Information Entry tree.

Evaluation

A DWARF expression evaluator.

FileEntry

An entry in the LineNumberProgramHeader's file_names set.

FrameDescriptionEntry

A FrameDescriptionEntry is a set of CFA instructions for an address range.

IncompleteLineNumberProgram

A line number program that has not been run to completion.

InitializedUnwindContext

An initialized unwinding context.

LineNumberProgramHeader

A header for a line number program in the .debug_line section, as defined in section 6.2.4 of the standard.

LineNumberRow

A row in the line number program's resulting matrix.

LineNumberSequence

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.

LocationListEntry

A location list entry from the .debug_loc section.

LocationListIter

An iterator over a location list.

OpcodesIter

An iterator yielding parsed opcodes.

PartialFrameDescriptionEntry

A partially parsed FrameDescriptionEntry.

Piece

The description of a single piece of the result of a DWARF expression.

PubNamesEntry

A single parsed pubname.

PubTypesEntry

A single parsed pubtype.

Range

An address range from the .debug_ranges section.

RangesIter

An iterator over an address range list.

RawLocationListIter

A raw iterator over a location list.

RawRangesIter

A raw iterator over an address range list.

RegisterRuleIter

An unordered iterator for register rules.

StateMachine

Executes a LineNumberProgram to recreate the matrix mapping to and from instructions to source locations.

TypeUnitHeader

The header of a type unit's debugging information.

TypeUnitHeadersIter

An iterator over the type-units of this .debug_types section.

UninitializedUnwindContext

Common context needed when evaluating the call frame unwinding information.

UnitOffset

An offset into the current compilation or type unit.

UnwindTable

The UnwindTable iteratively evaluates a FrameDescriptionEntry's CallFrameInstruction program, yielding the each row one at a time.

UnwindTableRow

A row in the virtual unwind table that describes how to find the values of the registers in the previous frame for a range of PC addresses.

Enums

AttributeValue

The value of an attribute in a DebuggingInformationEntry.

BigEndian

Big endian byte order.

CallFrameInstruction

A parsed call frame instruction.

CfaRule

The canonical frame address (CFA) recovery rules.

CieOrFde

Either a CommonInformationEntry (CIE) or a FrameDescriptionEntry (FDE).

ColumnType

The type of column that a row is referring to.

DieReference

A reference to a DIE, either relative to the current CU or relative to the section.

Error

An error that occurred when parsing.

EvaluationResult

The state of an Evaluation after evaluating a DWARF expression. The evaluation is either Complete, or it requires more data to continue, as described by the variant.

Format

Whether the format of a compilation unit is 32- or 64-bit.

LittleEndian

Little endian byte order.

Location

A single location of a piece of the result of a DWARF expression.

Opcode

A parsed line number program opcode.

Operation

A single decoded DWARF expression operation.

RegisterRule

An entry in the abstract CFI table that describes how to find the value of a register.

Constants

DW_ACCESS_private
DW_ACCESS_protected
DW_ACCESS_public
DW_ADDR_none
DW_ATE_UTF
DW_ATE_address
DW_ATE_boolean
DW_ATE_complex_float
DW_ATE_decimal_float
DW_ATE_edited
DW_ATE_float
DW_ATE_hi_user
DW_ATE_imaginary_float
DW_ATE_lo_user
DW_ATE_numeric_string
DW_ATE_packed_decimal
DW_ATE_signed
DW_ATE_signed_char
DW_ATE_signed_fixed
DW_ATE_unsigned
DW_ATE_unsigned_char
DW_ATE_unsigned_fixed
DW_AT_ALTIUM_loclist
DW_AT_APPLE_block
DW_AT_APPLE_flags
DW_AT_APPLE_isa
DW_AT_APPLE_major_runtime_vers
DW_AT_APPLE_objc_complete_type
DW_AT_APPLE_omit_frame_ptr
DW_AT_APPLE_optimized
DW_AT_APPLE_property
DW_AT_APPLE_property_attribute
DW_AT_APPLE_property_getter
DW_AT_APPLE_property_name
DW_AT_APPLE_property_setter
DW_AT_APPLE_runtime_class
DW_AT_BORLAND_Delphi_ABI
DW_AT_BORLAND_Delphi_anonymous_method
DW_AT_BORLAND_Delphi_class
DW_AT_BORLAND_Delphi_constructor
DW_AT_BORLAND_Delphi_destructor
DW_AT_BORLAND_Delphi_frameptr
DW_AT_BORLAND_Delphi_interface
DW_AT_BORLAND_Delphi_metaclass
DW_AT_BORLAND_Delphi_record
DW_AT_BORLAND_Delphi_return
DW_AT_BORLAND_Delphi_unit
DW_AT_BORLAND_closure
DW_AT_BORLAND_property_default
DW_AT_BORLAND_property_implements
DW_AT_BORLAND_property_index
DW_AT_BORLAND_property_read
DW_AT_BORLAND_property_write
DW_AT_GNAT_descriptive_type
DW_AT_GNU_addr_base
DW_AT_GNU_all_call_sites
DW_AT_GNU_all_source_call_sites
DW_AT_GNU_all_tail_call_sites
DW_AT_GNU_bias
DW_AT_GNU_call_site_data_value
DW_AT_GNU_call_site_target
DW_AT_GNU_call_site_target_clobbered
DW_AT_GNU_call_site_value
DW_AT_GNU_denominator
DW_AT_GNU_discriminator
DW_AT_GNU_dwo_id
DW_AT_GNU_dwo_name
DW_AT_GNU_exclusive_locks_required
DW_AT_GNU_guarded
DW_AT_GNU_guarded_by
DW_AT_GNU_locks_excluded
DW_AT_GNU_macros
DW_AT_GNU_numerator
DW_AT_GNU_odr_signature
DW_AT_GNU_pt_guarded
DW_AT_GNU_pt_guarded_by
DW_AT_GNU_pubnames
DW_AT_GNU_pubtypes
DW_AT_GNU_ranges_base
DW_AT_GNU_shared_locks_required
DW_AT_GNU_tail_call
DW_AT_GNU_template_name
DW_AT_GNU_vector
DW_AT_INTEL_other_endian
DW_AT_LLVM_config_macros
DW_AT_LLVM_include_path
DW_AT_LLVM_isysroot
DW_AT_MIPS_abstract_name
DW_AT_MIPS_allocatable_dopetype
DW_AT_MIPS_assumed_shape_dopetype
DW_AT_MIPS_assumed_size
DW_AT_MIPS_clone_origin
DW_AT_MIPS_epilog_begin
DW_AT_MIPS_fde
DW_AT_MIPS_has_inlines
DW_AT_MIPS_linkage_name
DW_AT_MIPS_loop_begin
DW_AT_MIPS_loop_unroll_factor
DW_AT_MIPS_ptr_dopetype
DW_AT_MIPS_software_pipeline_depth
DW_AT_MIPS_stride
DW_AT_MIPS_stride_byte
DW_AT_MIPS_stride_elem
DW_AT_MIPS_tail_loop_begin
DW_AT_PGI_lbase
DW_AT_PGI_lstride
DW_AT_PGI_soffset
DW_AT_SUN_alignment
DW_AT_SUN_amd64_parmdump
DW_AT_SUN_browser_file
DW_AT_SUN_c_vla
DW_AT_SUN_cf_kind
DW_AT_SUN_command_line
DW_AT_SUN_compile_options
DW_AT_SUN_count_guarantee
DW_AT_SUN_dtor_length
DW_AT_SUN_dtor_start
DW_AT_SUN_dtor_state_deltas
DW_AT_SUN_dtor_state_final
DW_AT_SUN_dtor_state_initial
DW_AT_SUN_f90_allocatable
DW_AT_SUN_f90_assumed_shape_array
DW_AT_SUN_f90_pointer
DW_AT_SUN_f90_use_only
DW_AT_SUN_fortran_based
DW_AT_SUN_fortran_main_alias
DW_AT_SUN_func_offset
DW_AT_SUN_func_offsets
DW_AT_SUN_hwcprof_signature
DW_AT_SUN_import_by_lname
DW_AT_SUN_import_by_name
DW_AT_SUN_is_omp_child_func
DW_AT_SUN_language
DW_AT_SUN_link_name
DW_AT_SUN_memop_signature
DW_AT_SUN_memop_type_ref
DW_AT_SUN_namelist_spec
DW_AT_SUN_obj_dir
DW_AT_SUN_obj_file
DW_AT_SUN_omp_child_func
DW_AT_SUN_omp_tpriv_addr
DW_AT_SUN_original_name
DW_AT_SUN_part_link_name
DW_AT_SUN_pass_by_ref
DW_AT_SUN_pass_with_const
DW_AT_SUN_profile_id
DW_AT_SUN_return_value_ptr
DW_AT_SUN_return_with_const
DW_AT_SUN_template
DW_AT_SUN_vbase
DW_AT_SUN_vtable
DW_AT_SUN_vtable_abi
DW_AT_SUN_vtable_index
DW_AT_abstract_origin
DW_AT_accessibility
DW_AT_addr_base
DW_AT_address_class
DW_AT_allocated
DW_AT_artificial
DW_AT_associated
DW_AT_base_types
DW_AT_binary_scale
DW_AT_bit_offset
DW_AT_bit_size
DW_AT_bit_stride
DW_AT_body_begin
DW_AT_body_end
DW_AT_byte_size
DW_AT_byte_stride
DW_AT_call_column
DW_AT_call_file
DW_AT_call_line
DW_AT_calling_convention
DW_AT_common_reference
DW_AT_comp_dir
DW_AT_const_expr
DW_AT_const_value
DW_AT_containing_type
DW_AT_count
DW_AT_data_bit_offset
DW_AT_data_location
DW_AT_data_member_location
DW_AT_decimal_scale
DW_AT_decimal_sign
DW_AT_decl_column
DW_AT_decl_file
DW_AT_decl_line
DW_AT_declaration
DW_AT_default_value
DW_AT_description
DW_AT_digit_count
DW_AT_discr
DW_AT_discr_list
DW_AT_discr_value
DW_AT_dwo_id
DW_AT_dwo_name
DW_AT_elemental
DW_AT_encoding
DW_AT_endianity
DW_AT_entry_pc
DW_AT_enum_class
DW_AT_explicit
DW_AT_extension
DW_AT_external
DW_AT_frame_base
DW_AT_friend
DW_AT_hi_user
DW_AT_high_pc
DW_AT_identifier_case
DW_AT_import
DW_AT_inline
DW_AT_is_optional
DW_AT_language
DW_AT_linkage_name
DW_AT_lo_user
DW_AT_location
DW_AT_low_pc
DW_AT_lower_bound
DW_AT_mac_info
DW_AT_macro_info
DW_AT_macros
DW_AT_main_subprogram
DW_AT_mutable
DW_AT_name
DW_AT_namelist_item
DW_AT_noreturn
DW_AT_null
DW_AT_object_pointer
DW_AT_ordering
DW_AT_picture_string
DW_AT_priority
DW_AT_producer
DW_AT_prototyped
DW_AT_pure
DW_AT_ranges
DW_AT_ranges_base
DW_AT_rank
DW_AT_recursive
DW_AT_reference
DW_AT_return_addr
DW_AT_rvalue_reference
DW_AT_segment
DW_AT_sf_names
DW_AT_sibling
DW_AT_signature
DW_AT_small
DW_AT_specification
DW_AT_src_coords
DW_AT_src_info
DW_AT_start_scope
DW_AT_static_link
DW_AT_stmt_list
DW_AT_str_offsets_base
DW_AT_string_length
DW_AT_string_length_bit_size
DW_AT_string_length_byte_size
DW_AT_threads_scaled
DW_AT_trampoline
DW_AT_type
DW_AT_upc_threads_scaled
DW_AT_upper_bound
DW_AT_use_GNAT_descriptive_type
DW_AT_use_UTF8
DW_AT_use_location
DW_AT_variable_parameter
DW_AT_virtuality
DW_AT_visibility
DW_AT_vtable_elem_location
DW_CC_hi_user
DW_CC_lo_user
DW_CC_nocall
DW_CC_normal
DW_CC_program
DW_CFA_GNU_args_size
DW_CFA_GNU_negative_offset_extended
DW_CFA_GNU_window_save
DW_CFA_MIPS_advance_loc8
DW_CFA_advance_loc
DW_CFA_advance_loc1
DW_CFA_advance_loc2
DW_CFA_advance_loc4
DW_CFA_def_cfa
DW_CFA_def_cfa_expression
DW_CFA_def_cfa_offset
DW_CFA_def_cfa_offset_sf
DW_CFA_def_cfa_register
DW_CFA_def_cfa_sf
DW_CFA_expression
DW_CFA_hi_user
DW_CFA_lo_user
DW_CFA_nop
DW_CFA_offset
DW_CFA_offset_extended
DW_CFA_offset_extended_sf
DW_CFA_register
DW_CFA_remember_state
DW_CFA_restore
DW_CFA_restore_extended
DW_CFA_restore_state
DW_CFA_same_value
DW_CFA_set_loc
DW_CFA_undefined
DW_CFA_val_expression
DW_CFA_val_offset
DW_CFA_val_offset_sf
DW_CHILDREN_no
DW_CHILDREN_yes
DW_DSC_label
DW_DSC_range
DW_DS_leading_overpunch
DW_DS_leading_separate
DW_DS_trailing_overpunch
DW_DS_trailing_separate
DW_DS_unsigned
DW_EH_PE_absptr
DW_EH_PE_aligned
DW_EH_PE_datarel
DW_EH_PE_funcrel
DW_EH_PE_indirect
DW_EH_PE_omit
DW_EH_PE_pcrel
DW_EH_PE_sdata2
DW_EH_PE_sdata4
DW_EH_PE_sdata8
DW_EH_PE_sleb128
DW_EH_PE_textrel
DW_EH_PE_udata2
DW_EH_PE_udata4
DW_EH_PE_udata8
DW_EH_PE_uleb128
DW_END_hi_user
DW_END_lo_user
DW_END_private
DW_END_protected
DW_END_public
DW_FORM_GNU_addr_index
DW_FORM_GNU_ref_alt
DW_FORM_GNU_str_index
DW_FORM_GNU_strp_alt
DW_FORM_addr
DW_FORM_block
DW_FORM_block1
DW_FORM_block2
DW_FORM_block4
DW_FORM_data1
DW_FORM_data2
DW_FORM_data4
DW_FORM_data8
DW_FORM_exprloc
DW_FORM_flag
DW_FORM_flag_present
DW_FORM_indirect
DW_FORM_null
DW_FORM_ref1
DW_FORM_ref2
DW_FORM_ref4
DW_FORM_ref8
DW_FORM_ref_addr
DW_FORM_ref_sig8
DW_FORM_ref_udata
DW_FORM_sdata
DW_FORM_sec_offset
DW_FORM_string
DW_FORM_strp
DW_FORM_udata
DW_ID_case_insensitive
DW_ID_case_sensitive
DW_ID_down_case
DW_ID_up_case
DW_INL_declared_inlined
DW_INL_declared_not_inlined
DW_INL_inlined
DW_INL_not_inlined
DW_LANG_ALTIUM_Assembler
DW_LANG_Ada83
DW_LANG_Ada95
DW_LANG_BORLAND_Delphi
DW_LANG_C
DW_LANG_C11
DW_LANG_C89
DW_LANG_C99
DW_LANG_C_plus_plus
DW_LANG_C_plus_plus_03
DW_LANG_C_plus_plus_11
DW_LANG_C_plus_plus_14
DW_LANG_Cobol74
DW_LANG_Cobol85
DW_LANG_D
DW_LANG_Dylan
DW_LANG_Fortran03
DW_LANG_Fortran08
DW_LANG_Fortran77
DW_LANG_Fortran90
DW_LANG_Fortran95
DW_LANG_GOOGLE_RenderScript
DW_LANG_Go
DW_LANG_Haskell
DW_LANG_Java
DW_LANG_Julia
DW_LANG_Mips_Assembler
DW_LANG_Modula2
DW_LANG_Modula3
DW_LANG_OCaml
DW_LANG_ObjC
DW_LANG_ObjC_plus_plus
DW_LANG_OpenCL
DW_LANG_PLI
DW_LANG_Pascal83
DW_LANG_Python
DW_LANG_Rust
DW_LANG_SUN_Assembler
DW_LANG_Swift
DW_LANG_UPC
DW_LANG_hi_user
DW_LANG_lo_user
DW_LNE_define_file
DW_LNE_end_sequence
DW_LNE_hi_user
DW_LNE_lo_user
DW_LNE_set_address
DW_LNE_set_discriminator
DW_LNS_advance_line
DW_LNS_advance_pc
DW_LNS_const_add_pc
DW_LNS_copy
DW_LNS_fixed_advance_pc
DW_LNS_negate_stmt
DW_LNS_set_basic_block
DW_LNS_set_column
DW_LNS_set_epilogue_begin
DW_LNS_set_file
DW_LNS_set_isa
DW_LNS_set_prologue_end
DW_OP_GNU_entry_value
DW_OP_GNU_implicit_pointer
DW_OP_GNU_push_tls_address
DW_OP_abs
DW_OP_addr
DW_OP_and
DW_OP_bit_piece
DW_OP_bra
DW_OP_breg0
DW_OP_breg1
DW_OP_breg2
DW_OP_breg3
DW_OP_breg4
DW_OP_breg5
DW_OP_breg6
DW_OP_breg7
DW_OP_breg8
DW_OP_breg9
DW_OP_breg10
DW_OP_breg11
DW_OP_breg12
DW_OP_breg13
DW_OP_breg14
DW_OP_breg15
DW_OP_breg16
DW_OP_breg17
DW_OP_breg18
DW_OP_breg19
DW_OP_breg20
DW_OP_breg21
DW_OP_breg22
DW_OP_breg23
DW_OP_breg24
DW_OP_breg25
DW_OP_breg26
DW_OP_breg27
DW_OP_breg28
DW_OP_breg29
DW_OP_breg30
DW_OP_breg31
DW_OP_bregx
DW_OP_call2
DW_OP_call4
DW_OP_call_frame_cfa
DW_OP_call_ref
DW_OP_const1s
DW_OP_const1u
DW_OP_const2s
DW_OP_const2u
DW_OP_const4s
DW_OP_const4u
DW_OP_const8s
DW_OP_const8u
DW_OP_consts
DW_OP_constu
DW_OP_deref
DW_OP_deref_size
DW_OP_div
DW_OP_drop
DW_OP_dup
DW_OP_entry_value
DW_OP_eq
DW_OP_fbreg
DW_OP_form_tls_address
DW_OP_ge
DW_OP_gt
DW_OP_implicit_pointer
DW_OP_implicit_value
DW_OP_le
DW_OP_lit0
DW_OP_lit1
DW_OP_lit2
DW_OP_lit3
DW_OP_lit4
DW_OP_lit5
DW_OP_lit6
DW_OP_lit7
DW_OP_lit8
DW_OP_lit9
DW_OP_lit10
DW_OP_lit11
DW_OP_lit12
DW_OP_lit13
DW_OP_lit14
DW_OP_lit15
DW_OP_lit16
DW_OP_lit17
DW_OP_lit18
DW_OP_lit19
DW_OP_lit20
DW_OP_lit21
DW_OP_lit22
DW_OP_lit23
DW_OP_lit24
DW_OP_lit25
DW_OP_lit26
DW_OP_lit27
DW_OP_lit28
DW_OP_lit29
DW_OP_lit30
DW_OP_lit31
DW_OP_lt
DW_OP_minus
DW_OP_mod
DW_OP_mul
DW_OP_ne
DW_OP_neg
DW_OP_nop
DW_OP_not
DW_OP_or
DW_OP_over
DW_OP_pick
DW_OP_piece
DW_OP_plus
DW_OP_plus_uconst
DW_OP_push_object_address
DW_OP_reg0
DW_OP_reg1
DW_OP_reg2
DW_OP_reg3
DW_OP_reg4
DW_OP_reg5
DW_OP_reg6
DW_OP_reg7
DW_OP_reg8
DW_OP_reg9
DW_OP_reg10
DW_OP_reg11
DW_OP_reg12
DW_OP_reg13
DW_OP_reg14
DW_OP_reg15
DW_OP_reg16
DW_OP_reg17
DW_OP_reg18
DW_OP_reg19
DW_OP_reg20
DW_OP_reg21
DW_OP_reg22
DW_OP_reg23
DW_OP_reg24
DW_OP_reg25
DW_OP_reg26
DW_OP_reg27
DW_OP_reg28
DW_OP_reg29
DW_OP_reg30
DW_OP_reg31
DW_OP_regx
DW_OP_rot
DW_OP_shl
DW_OP_shr
DW_OP_shra
DW_OP_skip
DW_OP_stack_value
DW_OP_swap
DW_OP_xderef
DW_OP_xderef_size
DW_OP_xor
DW_ORD_col_major
DW_ORD_row_major
DW_TAG_ALTIUM_circ_type
DW_TAG_ALTIUM_mwa_circ_type
DW_TAG_ALTIUM_rev_carry_type
DW_TAG_ALTIUM_rom
DW_TAG_APPLE_property
DW_TAG_BORLAND_Delphi_dynamic_array
DW_TAG_BORLAND_Delphi_set
DW_TAG_BORLAND_Delphi_string
DW_TAG_BORLAND_Delphi_variant
DW_TAG_BORLAND_property
DW_TAG_GNU_BINCL
DW_TAG_GNU_EINCL
DW_TAG_GNU_call_site
DW_TAG_GNU_call_site_parameter
DW_TAG_GNU_formal_parameter_pack
DW_TAG_GNU_template_parameter_pack
DW_TAG_GNU_template_template_param
DW_TAG_HP_Bliss_field
DW_TAG_HP_Bliss_field_set
DW_TAG_HP_array_descriptor
DW_TAG_MIPS_loop
DW_TAG_PGI_interface_block
DW_TAG_PGI_kanji_type
DW_TAG_SUN_class_template
DW_TAG_SUN_codeflags
DW_TAG_SUN_dtor
DW_TAG_SUN_dtor_info
DW_TAG_SUN_f90_interface
DW_TAG_SUN_fortran_vax_structure
DW_TAG_SUN_function_template
DW_TAG_SUN_indirect_inheritance
DW_TAG_SUN_memop_info
DW_TAG_SUN_omp_child_func
DW_TAG_SUN_rtti_descriptor
DW_TAG_SUN_struct_template
DW_TAG_SUN_union_template
DW_TAG_access_declaration
DW_TAG_array_type
DW_TAG_atomic_type
DW_TAG_base_type
DW_TAG_call_site
DW_TAG_call_site_parameter
DW_TAG_catch_block
DW_TAG_class_template
DW_TAG_class_type
DW_TAG_coarray_type
DW_TAG_common_block
DW_TAG_common_inclusion
DW_TAG_compile_unit
DW_TAG_condition
DW_TAG_const_type
DW_TAG_constant
DW_TAG_dwarf_procedure
DW_TAG_dynamic_type
DW_TAG_entry_point
DW_TAG_enumeration_type
DW_TAG_enumerator
DW_TAG_file_type
DW_TAG_formal_parameter
DW_TAG_format_label
DW_TAG_friend
DW_TAG_function_template
DW_TAG_generic_subrange
DW_TAG_hi_user
DW_TAG_imported_declaration
DW_TAG_imported_module
DW_TAG_imported_unit
DW_TAG_inheritance
DW_TAG_inlined_subroutine
DW_TAG_interface_type
DW_TAG_label
DW_TAG_lexical_block
DW_TAG_lo_user
DW_TAG_member
DW_TAG_module
DW_TAG_namelist
DW_TAG_namelist_item
DW_TAG_namespace
DW_TAG_null
DW_TAG_packed_type
DW_TAG_partial_unit
DW_TAG_pointer_type
DW_TAG_ptr_to_member_type
DW_TAG_reference_type
DW_TAG_restrict_type
DW_TAG_rvalue_reference_type
DW_TAG_set_type
DW_TAG_shared_type
DW_TAG_string_type
DW_TAG_structure_type
DW_TAG_subprogram
DW_TAG_subrange_type
DW_TAG_subroutine_type
DW_TAG_template_alias
DW_TAG_template_type_parameter
DW_TAG_template_value_parameter
DW_TAG_thrown_type
DW_TAG_try_block
DW_TAG_type_unit
DW_TAG_typedef
DW_TAG_union_type
DW_TAG_unspecified_parameters
DW_TAG_unspecified_type
DW_TAG_upc_relaxed_type
DW_TAG_upc_shared_type
DW_TAG_upc_strict_type
DW_TAG_variable
DW_TAG_variant
DW_TAG_variant_part
DW_TAG_volatile_type
DW_TAG_with_stmt
DW_VIRTUALITY_none
DW_VIRTUALITY_pure_virtual
DW_VIRTUALITY_virtual
DW_VIS_exported
DW_VIS_local
DW_VIS_qualified

Traits

Endianity

A trait describing the endianity of some buffer.

LineNumberProgram

A LineNumberProgram provides access to a LineNumberProgramHeader and a way to add files to the files table if necessary. Gimli consumers should never need to use or see this trait.

Section

A convenience trait for loading DWARF sections from object files. To be used like:

UnwindSection

A section holding unwind information: either .debug_frame or .eh_frame. See DebugFrame and EhFrame respectively.

Type Definitions

ArangeEntryIter

An iterator over the aranges from a .debug_aranges section.

DebugAranges

The DebugAranges struct represents the DWARF address range information found in the .debug_aranges section.

DebugPubNames

The DebugPubNames struct represents the DWARF public names information found in the .debug_pubnames section.

DebugPubTypes

The DebugPubTypes struct represents the DWARF public types information found in the .debug_types section.

NativeEndian

The native endianity for the target platform.

PubNamesEntryIter

An iterator over the pubnames from a .debug_pubnames section.

PubTypesEntryIter

An iterator over the pubtypes from a .debug_pubtypes section.

Result

The result of a parse.