PackageTrack
Sign in Get early access

gimli

A library for reading and writing the DWARF debugging format.

0.34.0 534M downloads/mo #192 most downloaded on crates.io gimli-rs/gimli

What this package is like to depend on

Last release 1 months ago

25 Jun 2026

Ships fairly regularly

a new release about every 3 months

Most releases are documented

notes for 32 of 45 stable releases

1 version withdrawn

withdrawn after publishing

10 years old

46 releases · first in 2016

4 releases in the last 12 months

see the full history below

Release timeline

46 releases · Jun 2016 to Jun 2026
2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 46
  1. 0.34.0 25 Jun 2026
    Release notes

    This includes the addition of #[non_exhaustive] to write::Error
    so that future additions to it are not breaking changes.

    Open source →
    Release notes

    Released 2026/06/25.

    Breaking changes

    • Added SectionId::DebugGnuPubNames and SectionId::DebugGnuPubTypes. #883

    • Added Wasm variants to read::EvaluationResult. #871

    • Added #[non_exhaustive] and base address variants to write::Error. #870

    Changed

    • Changed write module to validate use of base addresses in range and location lists. #870

    • Improved parsing performance for unsigned LEB128. #875

    • Fixed write::Writer::write_udata to handle size 3. #877

    • Improved parsing performance for read::DebugLine::program. #885

    • Checked for arithmetic overflow when looking up indexed offset tables. #889

    • Checked for arithmetic overflow when parsing DW_OP_piece. #891

    Added

    • Added Wasm location support to read::Evaluation. #871

    • Added read::ListsHeader for .debug_loclists and .debug_rnglists. #878

    • Added read::DebugPubNames::sets and read::DebugPubTypes::sets. #882

    • Added read::DebugGnuPubNames and read::DebugGnuPubTypes. #883

    • Added parsing for bare S CFI augmentations. #887

    • Added read::PubNamesEntry::flags and read::PubTypesEntry::flags. #888


    Open source →
  2. 0.33.1 29 Mar 2026 withdrawn
    Release notes

    Release 0.33.1 (#873)

    Open source →
    Release notes

    ~Released 2026/03/29.~ Yanked due to breaking change.

    Breaking changes

    • Added Wasm location support to read::Evaluation. #871

    • Changed write module to validate use of base addresses in range and location lists. #870


    Open source →
  3. 0.33.0 24 Jan 2026
    Release notes

    Release 0.33.0 (#868)

    Open source →
    Release notes

    Released 2026/01/24.

    Breaking changes

    • Changed read::DebuggingInformationEntry to store attributes in a Vec. This improves the performance for some uses, but may hurt performance for others. In particular, read::UnitHeader::entry and read::DebuggingInformationEntry::clone have an increased cost. Consider using read::UnitHeader::entries_raw instead of these. #841

    • Changed read::DebuggingInformationEntry attribute query methods to no longer return Result. #841

    • Changed read::EntriesCursor::next_dfs to no longer return the depth delta. Use read::DebuggingInformationEntry::depth instead. #841

    • Changed read::EntriesCursor::next_entry to return a bool. #841

    • Deleted the unit lifetime from read::DebuggingInformationEntry, read::EntriesRaw, read::EntriesCursor, and read::EntriesTree. #839

    • Changed UnitSectionOffset to a struct, and related API changes. #825 #851

    • Deleted unused read::Error variants, and modified other variants to improve naming and include additional information. #865

    • Deleted read::Error::description. #865

    • Implemented Iterator for all types that implement FallibleIterator, and removed fallible-iterator from the default features. Most users should be able to switch to using Iterator. Use of FallibleIterator may require disambiguation. #842 #853

    • Added read::Operation::VariableValue and read::Operation::Uninitialized. #787 #867

    • Added read::AttributeValue::Data16 to replace use of read::AttributeValue::Block for DW_FORM_data16. #797

    • Changed sup parameter to be optional for read::DwarfSections::borrow_with_sup. #801

    • Changed Deref::Target from Unit<R> to &'a Unit<R> for read::UnitRef<'a, R>. #811

    • Deleted deprecated items. #813

    • Renamed write::Reference to write::DebugInfoRef. #814

    • Deleted write::UnitTable::from, write::LineProgram::from, and write::Expression::from. #815

    • Removed #[non_exhaustive] from read::RegisterRule. #852

    • Added debug_macinfo and debug_macro to read::DwarfPackageSections and read::DwarfPackage. #862

    • Added debug_names to read::DwarfSections and read::Dwarf. #847

    Changed

    • Increased minimum supported Rust version (MSRV) to 1.88.0. #812 #840

    • Optimised unsigned LEB128 reading. #795

    • Relaxed the encoding requirements for write::LineProgram. #800

    • Changed write::LineProgram to automatically start sequences. #745

    • Changed the write module to use FNV for hashes. #827 #830

    • Changed conversion to preserve DW_FORM_implicit_value and DW_FORM_flag_present. #834

    • Changed the Debug implementation for read::RelocateReader. #849

    • Changed read::UnwindTableRow::register to return None for default rules. Changed read::UnwindTableRow::registers to omit default rules. #859

    • Improved support for writing attributes in older DWARF versions. #864

    • Optimised parsing for failure paths in read::UnwindSection::cie_from_offset and read::UnwindSection::partial_fde_from_offset. #866

    Added

    • Added RiscV::FP, RiscV::AFRC, and vector registers. #802 #803

    • Added write::Dwarf::convert and related APIs. #745 #816 #817 #818 #819 #822 #823 #824 #826 #828 #829

    • Added read::EntriesRaw::read_attribute_inline and read::EntriesRaw::read_attributes. #838

    • Added no_std support for the write feature. #855

    • Added read::DebugNames. #847

    • Added write::Expression::as_raw. #863


    Open source →
  4. 0.32.3 13 Sep 2025
    Release notes

    Release 0.32.3 (#799)

    Open source →
    Release notes

    Released 2025/09/13.

    Changed

    • Changed parsing to accept -2 for tombstone values in .debug_line, .debug_aranges, .debug_loclists, and .debug_rnglists. #791

    Added

    • Added more x86-64 register definitions. #794

    Open source →
  5. 0.32.2 26 Aug 2025
    Release notes

    Remove PartialEq<Debug*Offset> implementations for UnitSectionOffset.
    These were an unintended breaking change.

    Open source →
    Release notes

    Released 2025/08/26.

    Changed

    • Removed PartialEq<Debug*Offset> implementations for UnitSectionOffset. These were an unintended breaking change. #789

    Open source →
  6. 0.32.1 22 Aug 2025
    Release notes

    Release 0.32.1 (#788)

    Open source →
    Release notes

    Released 2025/08/22.

    Changed

    • Improved handling of invalid DIE references during writing. #777 #779

    • Changed abbreviation parsing to allow a missing null terminator. #781

    • Changed write::LineProgram to support any form for file source code. #784 #786

    Added

    • Added DWARF version 1.1 constant definitions. #775

    Open source →
  7. 0.32.0 11 Jun 2025
    Release notes

    Release 0.32.0 (#773)

    Open source →
    Release notes

    Released 2025/06/11.

    Breaking changes

    • Added read::Dwarf::debug_macinfo, read::Dwarf::debug_macro, and associated support. #759 #763 #772

    • Removed #[non_exhaustive] from read::CallFrameInstruction. #764

    • Added source_dir parameter to write::LineProgram::new. #768

    Changed

    • Fixed spelling in Error::UnknownCallFrameInstruction description. #758

    • Removed compiler-builtins from rustc-dep-of-std dependencies. #769

    • Changed write::UnitTable::from to ignore DW_AT_GNU_locviews attributes. #771

    Added

    • Added DebugAddr::headers. #760

    Open source →
  8. 0.31.1 04 Oct 2024
    Release notes

    Release 0.31.1 (#753)

    Open source →
    Release notes

    Released 2024/10/04.

    Changed

    • Changed read::Evaluation::evaluate to validate DW_OP_deref_size. #739

    • Changed write::LineProgram to allow use of file index 0 for DWARF version 5. #740

    • Improved the workaround for reading zero length entries in .debug_frame. #741

    • Implemented Default for read::DwarfSections and read::DwarfPackageSections. #742

    • Changed read::ArangeEntryIter to handle tombstones in .debug_aranges. #743

    • Improved handling handling of 0 for tombstones in DW_LNE_set_address and address pairs in ranges and locations. #750

    • Changed the read::ArrayLike trait implementation to use const generics. #752

    Added

    • Added MIPS::HI and MIPS::LO. #749

    Open source →
  9. 0.31.0 16 Jul 2024
    Release notes

    Release 0.31.0 (#736)

    Open source →
    Release notes

    Released 2024/07/16.

    Breaking changes

    • Deleted support for segment selectors. #720

    • Added read::FileEntry::source and deleted Copy implementation. #728

    • Changed read::LineRow::execute to return a Result. #731

    • Deleted Display implementation for read::LineInstruction. #734

    • Changed read::Error to be non-exhaustive.

    Changed

    • Fixed Hash implementation for read::EndianReader. #723

    • Changed read::EhFrameHdr::parse to validate the FDE count encoding. #725

    • Changed address overflow to be an error for read::UnwindTableRow, read::LineRow, and read::ArangeEntry. #730 #731 #732

    • Changed wrapping addition for 32-bit addresses to wrap at 32 bits instead of at 64 bits. #733

    • Added earlier validation of address sizes. #733

    Added

    • Added read::IndexSectionId::section_id. #719

    • Added read::FrameDescriptionEntry::end_address. #727

    • Added support for DW_LNCT_LLVM_source. #728


    Open source →
  10. 0.30.0 26 May 2024
    Release notes

    Released 2024/05/26.

    Breaking changes

    • Added context to some read::Error variants. #703

    • Changed type of read::UnitIndexSection::section to IndexSectionId. #716

    Changed

    • Fixed write::Operation::ImplicitPointer::size. #712

    • Changed read::RngListIter and read::LocListIter to skip ranges where the end is before the beginning, instead of returning an error. #715

    • Fixed clippy warnings. #713

    Added

    • Added read::UnitRef. #711

    Open source →
  11. 0.29.0 11 Apr 2024
    Release notes

    Released 2024/04/11.

    Breaking changes

    • Changed Reader type parameter to ReaderOffset for read::UnwindContext and related types. Replaced Expression with UnwindExpression in unwind information types. #703

    Changed

    • Changed write::Sections::for_each and for_each_mut to specify section lifetime. #699

    • Fixed writing unwind information with an LSDA encoding that is not DW_EH_PE_absptr. #704

    • Fixed parsing for an empty DWP index. #706

    • Improved error handling in read::Unit::dwo_name. #693

    • Fixed warnings. #692 #694 #695 #696

    Added

    • Added MIPS register definitions. #690

    • Added PowerPC register definitions. #691

    • Added read::DwarfSections and read::DwarfPackageSections. #698

    • Implemented BitOr for DwEhPe. #709

    • Added read::Relocate, read::RelocateReader, and write::RelocateWriter. #709


    Open source →
  12. 0.28.1 24 Nov 2023
    Release notes

    Released 2023/11/24.

    Changed

    • Changed read::AbbreviationsCache to require manual population using Dwarf::populate_abbreviations_cache. #679

    • Changed the default read::UnwindContextStorage to use Box instead of Vec so that its memory usage is limited. #687

    • Changed read::UnwindTable::new to always reset the context, because previous errors may have left the context in an invalid state. #684

    • Changed the Debug implementation for read::EndianSlice to limit the number of bytes it displays. #686

    Added

    • Added more AArch64 register definitions. #680

    • Added read::Unit::new_with_abbreviations. #677

    • Added read::Evaluation::value_result. #676


    Open source →
  13. 0.28.0 13 Aug 2023
    Release notes

    Released 2023/08/12.

    Breaking changes

    • Deleted impl From<EndianSlice> for &[u8]. Use EndianSlice::slice instead. #669

    • Deleted impl Index<usize> for EndianSlice and impl Index<RangeFrom<usize>> for EndianSlice. #669

    • Replaced impl From<Pointer> for u64 with Pointer::pointer. #670

    • Updated fallible-iterator to 0.3.0. #672

    • Changed some optional dependencies to use the dep: feature syntax. #672

    • Added non_exhaustive attribute to read::RegisterRule, read::CallFrameInstruction, and write::CallFrameInstruction. #673

    Changed

    • The minimum supported rust version for the read feature and its dependencies increased to 1.60.0.

    • The minimum supported rust version for other features increased to 1.65.0.

    Added

    • Added Vendor, read::DebugFrame::set_vendor, and read::EhFrame::set_vendor. #673

    • Added more ARM and AArch64 register definitions, and DW_CFA_AARCH64_negate_ra_state support. #673


    Open source →
  14. 0.27.3 15 Jun 2023
    Release notes

    Released 2023/06/14.

    Changed

    • Excluded test fixtures from published package. #661

    Added

    • Added FallibleIterator implementation for read::OperationIter. #649

    • Added DW_AT_GNU_deleted constant. #658


    Open source →
  15. 0.27.2 15 Feb 2023
    Release notes

    Released 2023/02/15.

    Added

    • Added support for tombstones in read::LineRows. #642

    Open source →
  16. 0.27.1 23 Jan 2023
    Release notes

    Released 2023/01/23.

    Added

    • Added SectionId::xcoff_name and read::Section::xcoff_section_name. #635

    • Added read::Dwarf::make_dwo and read::Unit::dwo_name. #637

    Changed

    • Changed read::DwarfPackage::sections to handle supplementary files. #638

    Open source →
  17. 0.27.0 24 Nov 2022
    Release notes

    Released 2022/11/23.

    Breaking changes

    • Added read::Dwarf::abbreviations_cache to cache abbreviations at offset 0. Changed read::Dwarf::abbreviations to return Result<Arc<Abbreviations>>, and changed read::Unit::abbreviations to Arc<Abbreviations>. #628

    Added

    • Added LoongArch register definitions. #624

    • Added support for tombstones in read::LocListIter and read::RngListIter. #631


    Open source →
  18. 0.26.2 17 Jul 2022
    Release notes

    Released 2022/07/16.

    Changed

    • Fixed CFI personality encoding when writing. #609

    • Fixed use of raw pointer for mutation, detected by Miri. #614

    • Fixed DW_OP_GNU_implicit_pointer handling for DWARF version 2. #618

    Added

    • Added read::EhHdrTable::iter. #619

    Open source →
  19. 0.26.1 02 Nov 2021
    Release notes

    Released 2021/11/02.

    Changed

    • Fixed segmentation fault in ArrayVec<Vec<T>>::into_vec, which may be used by read::Evaluation::result. This regression was introduced in 0.26.0. #601

    Open source →
  20. 0.26.0 24 Oct 2021
    Release notes

    Released 2021/10/24.

    Breaking changes

    • Removed read::UninitializedUnwindContext. Use Box<UnwindContext> instead. #593

    • Renamed read::Error::CfiStackFull to StackFull. #595

    • Added UnwindContextStorage type parameter to read::UnwindContext, read::UnwindTable, read::UnwindTableRow, and read::RegisterRuleMap. #595

    • Added EvaluationStorage type parameter to read::Evaluation. #595

    • Added read::SectionId::DebugCuIndex and read::SectionId::DebugTuIndex. #588

    Changed

    • Fixed DW_EH_PE_pcrel handling in default write::Writer::write_eh_pointer implementation. #576

    • Fixed read::AttributeSpecification::size for some forms. #597

    • Display more unit details in dwarfdump. #584

    Added

    • Added write::DebuggingInformationEntry::delete_child. #570

    • Added ARM and AArch64 register definitions. #574 #577

    • Added RISC-V register definitions. #579

    • Added read::DwarfPackage, read::DebugCuIndex, and read::DebugTuIndex. #588

    • Added read-core feature to allow building without liballoc. #596

    • Added read::EntriesRaw::skip_attributes. #597


    Open source →
  21. 0.25.0 26 Jul 2021
    Release notes

    Released 2021/07/26.

    Breaking changes

    • read::FrameDescriptionEntry::unwind_info_for_address now returns a reference instead of cloning. #557

    • read::AttributeValue::RangeListsRef now contains a RawRangeListsOffset to allow handling of GNU split DWARF extensions. Use read::Dwarf::ranges_offset_from_raw to handle it. #568 #569

    • Added read::Unit::dwo_id. #569

    Changed

    • .debug_aranges parsing now accepts version 3. #560

    • read::Dwarf::attr_ranges_offset and its callers now handle GNU split DWARF extensions. #568 #569

    Added

    • Added read::DebugLineStr::new. #556

    • Added read::UnwindTable::into_current_row. #557

    • Added more DW_LANG constants. #565

    • dwarfdump: added DWO parent support. #568

    • Added read::Dwarf methods: ranges_offset_from_raw, raw_ranges, and raw_locations. #568 #569


    Open source →
  22. 0.24.0 02 May 2021
    Release notes

    Released 2021/05/01.

    Breaking changes

    • Minimum Rust version increased to 1.42.0.

    • Added read::Dwarf::debug_aranges. #539

    • Replaced read::DebugAranges::items with read::DebugAranges::headers. #539

    • Added read::Operation::Wasm*. #546

    • read::LineRow::line now returns Option<NonZeroU64>. The read::ColumnType::Column variant now contains a NonZeroU64. #551

    • Replaced read::Dwarf::debug_str_sup with read::Dwarf::sup. Deleted sup parameter of read::Dwarf::load. Added read::Dwarf::load_sup. #554

    Added

    • dwarfdump: Supplementary object file support. #552

    Changed

    • Support DW_FORM_addrx* for DW_AT_low_pc/DW_AT_high_pc in read::Dwarf. #541

    • Performance improvement in EndianReader. #549


    Open source →
  23. 0.23.0 27 Oct 2020
    Release notes

    Released 2020/10/27.

    Breaking changes

    • Added more variants to read::UnitType. Added read::AttributeValue::DwoId #521

    • Replaced CompilationUnitHeader and TypeUnitHeader with UnitHeader. Replaced CompilationUnitHeadersIter with DebugInfoUnitHeadersIter. Replaced TypeUnitHeadersIter with DebugTypesUnitHeadersIter. #523

    Added

    • Added read support for split DWARF. #527 #529

    • Added read::Dwarf::attr_address. #524

    • Added read support for DW_AT_GNU_addr_base and DW_AT_GNU_ranges_base. #525

    • dwarfdump: Display index values for attributes. #526

    • Added name_to_register. #532


    Open source →
  24. 0.22.0 04 Jul 2020
    Release notes

    Released 2020/07/03.

    Breaking changes

    • Fixed UnitHeader::size_of_header for DWARF 5 units. #518

    Added

    • Added fuzz targets in CI. #512

    • Added read support for DW_OP_GNU_addr_index and DW_OP_GNU_const_index. #516

    • Added .dwo support to dwarfdump. #516

    • Added SectionId::dwo_name and Section::dwo_section_name. #517

    Fixed

    • Fixed panic when reading DW_FORM_indirect combined with DW_FORM_implicit_const. #502

    • Fixed panic for read::Abbreviations::get(0). #505

    • Fixed arithmetic overflow when reading .debug_line. #508

    • Fixed arithmetic overflow when reading CFI. #509

    • Fixed arithmetic overflow and division by zero when reading .debug_aranges. #510

    • Don't return error from read::Unit::new when DW_AT_name or DW_AT_comp_dir is missing. #515


    Open source →
  25. 0.21.0 12 May 2020
    Release notes

    Released 2020/05/12.

    Breaking changes

    • Minimum Rust version increased to 1.38.0.

    • Replaced read::Operation::Literal with Operation::UnsignedConstant and Operation::SignedConstant. Changed read::Operation::Bra and read::Operation::Skip to contain the target offset instead of the bytecode. #479

    • Changed write::Expression to support references. Existing users can convert to use Expression::raw. #479

    • Replaced write::AttributeValue::AnyUnitEntryRef with DebugInfoRef. Renamed write::AttributeValue::ThisUnitEntryRef to UnitRef. #479

    • Added more optional features: endian-reader and fallible-iterator. #495 #498

    Added

    • Added read::Expression::operations #479

    Fixed

    • Fixed newlines in dwarfdump example. #470

    • Ignore zero terminators when reading .debug_frame sections. #486

    • Increase the number of CFI register rules supported by read::UnwindContext. #487

    • Fixed version handling and return register encoding when reading .eh_frame sections. #493

    Changed

    • Added EhFrame and DebugFrame to write::Sections. #492

    • Improved performance of write::LineProgram::generate_row. #476

    • Removed use of the byteorder, arrayvec and smallvec crates. #494 #496 #497


    Open source →
  26. 0.20.0 11 Jan 2020
    Release notes

    Released 2020/01/11.

    Breaking changes

    • Changed type of DwTag, DwAt, and DwForm constants. #451

    • Added read/write::AttributeValue::DebugMacroRef, and returned where required in read::Attribute::value. Added SectionId::DebugMacro. #454

    • Deleted alloc feature, and fixed no-std builds with stable rust. #459

    • Deleted read::Error::description, and changed <read::Error as Display> to display what was previously the description. #462

    Added

    • Added GNU view constants. #434

    • Added read::EntriesRaw for low level DIE parsing. #455

    • Added examples/simple-line.rs. #460

    Fixed

    • Fixed handling of CFI augmentations without data. #438

    • dwarfdump: fix panic for malformed expressions. #447

    • dwarfdump: fix handling of Mach-O relocations. #449

    Changed

    • Improved abbreviation parsing performance. #451

    Open source →
  27. 0.19.0 08 Jul 2019
    Release notes

    Released 2019/07/08.

    Breaking changes

    • Small API changes related to .debug_loc and .debug_loclists: added read::RawLocListEntry::AddressOrOffsetPair enum variant, added write::Sections::debug_loc/debug_loclists public members, and replaced write::AttributeValue::LocationListsRef with LocationListRef. #425

    Added

    • Added read::Attribute::exprloc_value and read::AttributeValue::exprloc_value. #422

    • Added support for writing .debug_loc and .debug_loclists sections. #425

    • Added -G flag to dwarfdump example to display global offsets. #427

    • Added examples/simple.rs. #429

    Fixed

    • write::LineProgram::from no longer requires DW_AT_name or DW_AT_comp_dir attributes to be present in the unit DIE. #430

    Open source →
  28. 0.18.0 25 Apr 2019
    Release notes

    Released 2019/04/25.

    The focus of this release has been on improving support for reading CFI, and adding support for writing CFI.

    Breaking changes

    • For types which have an Offset type parameter, the default Offset has changed from usize to R::Offset. #392

    • Added an Offset type parameter to the read::Unit type to allow variance. #393

    • Changed the UninitializedUnwindContext::initialize method to borrow self, and return &mut UnwindContext. Deleted the InitializedUnwindContext type. #395

    • Deleted the UnwindSection type parameters from the CommonInformationEntry, FrameDescriptionEntry, UninitializedUnwindContext, UnwindContext, and UnwindTable types. #399

    • Changed the signature of the get_cie callback parameter for various functions. The signature now matches the UnwindSection::cie_from_offset method, so that method can be used as the parameter. #400

    • Reduced the number of lifetime parameters for the UnwindTable type. #400

    • Updated fallible-iterator to version 0.2.0. #407

    • Added a parameter to the Error::UnexpectedEof enum variant. #408

    Added

    • Update to 2018 edition. #391

    • Added the FrameDescriptionEntry::unwind_info_for_address method. #396

    • Added the FrameDescriptionEntry::rows method. #396

    • Added the EhHdrTable::unwind_info_for_address method. #400

    • Added the EhHdrTable::fde_for_address method and deprecated the EhHdrTable::lookup_and_parse method. #400

    • Added the EhHdrTable::pointer_to_offset method. #400

    • Added the UnwindSection::fde_for_address method. #396

    • Added the UnwindSection::fde_from_offset method. #400

    • Added the UnwindSection::partial_fde_from_offset method. #400

    • Added the Section::id method. #406

    • Added the Dwarf::load method, and corresponding methods for individual sections. #406

    • Added the Dwarf::borrow method, and corresponding methods for individual sections. #406

    • Added the Dwarf::format_error method. #408

    • Added the Dwarf::die_ranges method. #417

    • Added the Dwarf::unit_ranges method. #417

    • Added support for writing .debug_frame and .eh_frame sections. #412 #419

    Fixed

    • The code_alignment_factor is now used when evaluating CFI instructions that advance the location. #401

    • Fixed parsing of pointers encoded with DW_EH_PE_funcrel. #402

    • Use the FDE address encoding from the augmentation when parsing DW_CFA_set_loc. #403

    • Fixed setting of .eh_frame base addresses in dwarfdump. #410

    Open source →
  29. 0.17.0 21 Feb 2019
    Release notes

    Released 2019/02/21.

    The focus of this release has been on improving DWARF 5 support, and adding support for writing DWARF.

    Breaking changes

    • Changed register values to a Register type instead of u8/u64. #328

    • Replaced BaseAddresses::set_cfi with set_eh_frame_hdr and set_eh_frame. Replaced BaseAddresses::set_data with set_got. You should now use the same BaseAddresses value for parsing both .eh_frame and .eh_frame_hdr. #351

    • Renamed many types and functions related to .debug_line. Renamed LineNumberProgram to LineProgram. Renamed IncompleteLineNumberProgram to IncompleteLineProgram. Renamed CompleteLineNumberProgram to CompleteLineProgram. Renamed LineNumberProgramHeader to LineProgramHeader. Renamed LineNumberRow to LineRow. Renamed StateMachine to LineRows. Renamed Opcode to LineInstruction. Renamed OpcodesIter to LineInstructions. Renamed LineNumberSequence to LineSequence. #359

    • Added Offset type parameter to AttributeValue, LineProgram, IncompleteLineProgram, CompleteLineProgram, LineRows, LineInstruction, and FileEntry. #324

    • Changed FileEntry::path_name, FileEntry::directory, and LineProgramHeader::directory to return an AttributeValue instead of a Reader. #366

    • Renamed FileEntry::last_modification to FileEntry::timestamp and renamed FileEntry::length to FileEntry::size. #366

    • Added an Encoding type. Changed many functions that previously accepted Format, version or address size parameters to accept an Encoding parameter instead. Notable changes are LocationLists::locations, RangeLists::ranges, and Expression::evaluation. #364

    • Changed return type of LocationLists::new and RangeLists::new. #370

    • Added parameters to LocationsLists::locations and RangeLists::ranges to support .debug_addr. #358

    • Added more AttributeValue variants: DebugAddrBase, DebugAddrIndex, DebugLocListsBase, DebugLocListsIndex, DebugRngListsBase, DebugRngListsIndex, DebugStrOffsetsBase, DebugStrOffsetsIndex, DebugLineStrRef. #358

    • Changed AttributeValue::Data* attributes to native endian integers instead of byte arrays. #365

    • Replaced EvaluationResult::TextBase with EvaluationResult::RequiresRelocatedAddress. The handling of TextBase was incorrect. #335

    • Added EvaluationResult::IndexedAddress for operations that require an address from .debug_addr. #358

    • Added Reader::read_slice. Added a default implementation of Reader::read_u8_array which uses this. #358

    Added

    • Added initial support for writing DWARF. This is targeted at supporting line number information only. #340 #344 #346 #361 #362 #365 #368 #382

    • Added read and write Cargo features. Both are enabled by default. #343

    • Added support for reading DWARF 5 .debug_line and .debug_line_str sections. #366

    • Added support for reading DWARF 5 .debug_str_offsets sections, including parsing DW_FORM_strx* attributes. #358

    • Added support for reading DWARF 5 .debug_addr sections, including parsing DW_FORM_addrx* attributes and evaluating DW_OP_addrx and DW_OP_constx operations. #358

    • Added support for reading DWARF 5 indexed addresses and offsets in .debug_loclists and .debug_rnglists, including parsing DW_FORM_rnglistx and DW_FORM_loclistx attributes. #358

    • Added high level Dwarf and Unit types. Existing code does not need to switch to using these types, but doing so will make DWARF 5 support simpler. #352 #380 #381

    • Added EhFrame::set_address_size and DebugFrame::set_address_size methods to allow parsing non-native CFI sections. The default address size is still the native size. #325

    • Added architecture specific definitions for Register values and names. Changed dwarfdump to print them. #328

    • Added support for reading relocatable DWARF sections. #337

    • Added parsing of DW_FORM_data16. #366

    Fixed

    • Fixed parsing DWARF 5 ranges with start == end == 0. #323

    • Changed LineRows to be covariant in its Reader type parameter. #324

    • Fixed handling of empty units in dwarfdump. #330

    • Fixed UnitHeader::length_including_self for Dwarf64. #342

    • Fixed parsing of DW_CFA_set_loc. #355

    • Fixed handling of multiple headers in .debug_loclists and .debug_rnglists. #370


    Open source →
  30. 0.16.1 29 Aug 2018
    Release notes

    Released 2018/08/28.

    Added

    • Added EhFrameHdr::lookup_and_parse. #316
    • Added support for DW_CFA_GNU_args_size. #319

    Fixed

    • Implement Send/Sync for SubRange. #305
    • Fixed alloc support on nightly. #306 #310

    Open source →
  31. 0.16.0 01 Jun 2018
    Release notes

    Released 2018/06/01.

    Added

    • Added support for building in #![no_std] environments, when the alloc crate is available. Disable the "std" feature and enable the "alloc" feature. #138 #271

    • Added support for DWARF 5 .debug_rnglists and .debug_loclists sections. #272

    • Added support for DWARF 5 DW_FORM_ref_sup and DW_FORM_strp_sup attribute forms. #288

    • Added support for DWARF 5 operations on typed values. #293

    • A dwarf-validate example program that checks the integrity of the given DWARF and its references between sections. #290

    • Added the EndianReader<T> type, an easy way to define a custom Reader implementation with a reference to a generic buffer of bytes and an associated endianity. #298 #302

    Changed

    Deprecated

    • EndianBuf has been renamed to EndianSlice, use that name instead. #295

    Fixed

    • Evaluating the DW_CFA_restore_state opcode properly maintains the current location. Previously it would incorrectly restore the old location when popping from evaluation stack. #274

    Open source →
  32. 0.15.0 01 Dec 2017
    Release notes

    Released 2017/12/01.

    Added

    • Added the EndianBuf::to_string() method. #233

    • Added more robust error handling in our example dwarfdump clone. #234

    • Added FrameDescriptionEntry::initial_address method. #237

    • Added FrameDescriptionEntry::len method. #237

    • Added the FrameDescriptionEntry::entry_len method. #241

    • Added the CommonInformationEntry::offset method. #241

    • Added the CommonInformationEntry::entry_len method. #241

    • Added the CommonInformationEntry::version method. #241

    • Added the CommonInformationEntry::augmentation method. #241

    • Added the CommonInformationEntry::code_alignment_factor method. #241

    • Added the CommonInformationEntry::data_alignment_factor method. #241

    • Added the CommonInformationEntry::return_address_register method. #241

    • Added support for printing .eh_frame sections to our example dwarfdump clone. #241

    • Added support for parsing the .eh_frame_hdr section. On Linux, the .eh_frame_hdr section provides a pointer to the already-mapped-in-memory .eh_frame data, so that it doesn't need to be duplicated, and a binary search table of its entries for faster unwinding information lookups. #250

    • Added support for parsing DWARF 5 compilation unit headers. #257

    • Added support for DWARF 5's DW_FORM_implicit_const. #257

    Changed

    • Unwinding methods now give ownership of the unwinding context back to the caller if errors are encountered, not just on the success path. This allows recovering from errors in signal-safe code, where constructing a new unwinding context is not an option because it requires allocation. This is a breaking change affecting UnwindSection::unwind_info_for_address and UninitializedUnwindContext::initialize. #241

    • CfaRule and RegisterRule now expose their DW_OP expressions as Expression. This is a minor breaking change. #241

    • The Error::UnknownVersion variant now contains the unknown version number. This is a minor breaking change. #245

    • EvaluationResult::RequiresEntryValue requires an Expression instead of a Reader now. This is a minor breaking change. #256


    Open source →
  33. 0.14.0 08 Aug 2017
    Release notes

    Released 2017/08/08.

    Added

    • All pub types now derive(Hash). #192

    • All the constants from DWARF 5 are now defined. #193

    • Added support for the DW_OP_GNU_parameter_ref GNU extension to parsing and evaluation DWARF opcodes. #208

    • Improved LEB128 parsing performance. #216

    • Improved .debug_{aranges,pubnames,pubtypes} parsing performance. #218

    • Added the ability to choose endianity dynamically at run time, rather than only statically at compile time. #219

    Changed

    • The biggest change of this release is that gimli no longer requires the object file's section be fully loaded into memory. This enables using gimli on 32 bit platforms where there often isn't enough contiguous virtual memory address space to load debugging information into. The default behavior is still geared for 64 bit platforms, where address space overfloweth, and you can still load the whole sections of the object file (or the entire object file) into memory. This is abstracted over with the gimli::Reader trait. This manifests as small (but many) breaking changes to much of the public API. #182

    Fixed

    • The DW_END_* constants for defining endianity of a compilation unit were previously incorrect. #193

    • The DW_OP_addr opcode is relative to the base address of the .text section of the binary, but we were incorrectly treating it as an absolute value. #210

    Open source →
  34. 0.13.0 24 Mar 2017

    Nothing published for this version

  35. 0.12.0 17 Feb 2017

    Nothing published for this version

  36. 0.11.0 20 Jan 2017

    Nothing published for this version

  37. 0.10.0 07 Dec 2016

    Nothing published for this version

  38. 0.9.0 28 Oct 2016

    Nothing published for this version

  39. 0.8.0 18 Sep 2016

    Nothing published for this version

  40. 0.7.0 28 Aug 2016

    Nothing published for this version

  41. 0.6.0 15 Aug 2016

    Nothing published for this version

  42. 0.5.0 12 Aug 2016

    Nothing published for this version

  43. 0.4.0 11 Aug 2016

    Nothing published for this version

  44. 0.3.0 27 Jul 2016

    Nothing published for this version

  45. 0.2.0 14 Jul 2016

    Nothing published for this version

  46. 0.1.0 15 Jun 2016

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive