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 2026Releases
latest 46-
0.34.025 Jun 2026Release notes
Open source →This includes the addition of
#[non_exhaustive]towrite::Error
so that future additions to it are not breaking changes.Release notes
Open source →Released 2026/06/25.
Breaking changes
-
Added
SectionId::DebugGnuPubNamesandSectionId::DebugGnuPubTypes. #883 -
Added Wasm variants to
read::EvaluationResult. #871 -
Added
#[non_exhaustive]and base address variants towrite::Error. #870
Changed
-
Changed
writemodule to validate use of base addresses in range and location lists. #870 -
Improved parsing performance for unsigned LEB128. #875
-
Fixed
write::Writer::write_udatato 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::ListsHeaderfor.debug_loclistsand.debug_rnglists. #878 -
Added
read::DebugPubNames::setsandread::DebugPubTypes::sets. #882 -
Added
read::DebugGnuPubNamesandread::DebugGnuPubTypes. #883 -
Added parsing for bare S CFI augmentations. #887
-
Added
read::PubNamesEntry::flagsandread::PubTypesEntry::flags. #888
-
-
0.33.129 Mar 2026 withdrawnRelease notes
Open source →~Released 2026/03/29.~ Yanked due to breaking change.
Breaking changes
-
Added Wasm location support to
read::Evaluation. #871 -
Changed
writemodule to validate use of base addresses in range and location lists. #870
-
-
0.33.024 Jan 2026Release notes
Open source →Released 2026/01/24.
Breaking changes
-
Changed
read::DebuggingInformationEntryto store attributes in aVec. This improves the performance for some uses, but may hurt performance for others. In particular,read::UnitHeader::entryandread::DebuggingInformationEntry::clonehave an increased cost. Consider usingread::UnitHeader::entries_rawinstead of these. #841 -
Changed
read::DebuggingInformationEntryattribute query methods to no longer returnResult. #841 -
Changed
read::EntriesCursor::next_dfsto no longer return the depth delta. Useread::DebuggingInformationEntry::depthinstead. #841 -
Changed
read::EntriesCursor::next_entryto return abool. #841 -
Deleted the unit lifetime from
read::DebuggingInformationEntry,read::EntriesRaw,read::EntriesCursor, andread::EntriesTree. #839 -
Changed
UnitSectionOffsetto a struct, and related API changes. #825 #851 -
Deleted unused
read::Errorvariants, and modified other variants to improve naming and include additional information. #865 -
Deleted
read::Error::description. #865 -
Implemented
Iteratorfor all types that implementFallibleIterator, and removedfallible-iteratorfrom the default features. Most users should be able to switch to usingIterator. Use ofFallibleIteratormay require disambiguation. #842 #853 -
Added
read::Operation::VariableValueandread::Operation::Uninitialized. #787 #867 -
Added
read::AttributeValue::Data16to replace use ofread::AttributeValue::BlockforDW_FORM_data16. #797 -
Changed
supparameter to be optional forread::DwarfSections::borrow_with_sup. #801 -
Changed
Deref::TargetfromUnit<R>to&'a Unit<R>forread::UnitRef<'a, R>. #811 -
Deleted deprecated items. #813
-
Renamed
write::Referencetowrite::DebugInfoRef. #814 -
Deleted
write::UnitTable::from,write::LineProgram::from, andwrite::Expression::from. #815 -
Removed
#[non_exhaustive]fromread::RegisterRule. #852 -
Added
debug_macinfoanddebug_macrotoread::DwarfPackageSectionsandread::DwarfPackage. #862 -
Added
debug_namestoread::DwarfSectionsandread::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::LineProgramto automatically start sequences. #745 -
Changed conversion to preserve
DW_FORM_implicit_valueandDW_FORM_flag_present. #834 -
Changed the
Debugimplementation forread::RelocateReader. #849 -
Changed
read::UnwindTableRow::registerto returnNonefor default rules. Changedread::UnwindTableRow::registersto omit default rules. #859 -
Improved support for writing attributes in older DWARF versions. #864
-
Optimised parsing for failure paths in
read::UnwindSection::cie_from_offsetandread::UnwindSection::partial_fde_from_offset. #866
Added
-
Added
RiscV::FP,RiscV::AFRC, and vector registers. #802 #803 -
Added
write::Dwarf::convertand related APIs. #745 #816 #817 #818 #819 #822 #823 #824 #826 #828 #829 -
Added
read::EntriesRaw::read_attribute_inlineandread::EntriesRaw::read_attributes. #838 -
Added
no_stdsupport for thewritefeature. #855 -
Added
read::DebugNames. #847 -
Added
write::Expression::as_raw. #863
-
-
0.32.313 Sep 2025Release notes
Open source →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
- Changed parsing to accept -2 for tombstone values in
-
0.32.226 Aug 2025Release notes
Open source →Remove
PartialEq<Debug*Offset>implementations forUnitSectionOffset.
These were an unintended breaking change.Release notes
Open source →Released 2025/08/26.
Changed
- Removed
PartialEq<Debug*Offset>implementations forUnitSectionOffset. These were an unintended breaking change. #789
- Removed
-
0.32.122 Aug 2025Release notes
Open source →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::LineProgramto support any form for file source code. #784 #786
Added
- Added DWARF version 1.1 constant definitions. #775
-
-
0.32.011 Jun 2025Release notes
Open source →Released 2025/06/11.
Breaking changes
-
Added
read::Dwarf::debug_macinfo,read::Dwarf::debug_macro, and associated support. #759 #763 #772 -
Removed
#[non_exhaustive]fromread::CallFrameInstruction. #764 -
Added
source_dirparameter towrite::LineProgram::new. #768
Changed
-
Fixed spelling in
Error::UnknownCallFrameInstructiondescription. #758 -
Removed
compiler-builtinsfromrustc-dep-of-stddependencies. #769 -
Changed
write::UnitTable::fromto ignoreDW_AT_GNU_locviewsattributes. #771
Added
- Added
DebugAddr::headers. #760
-
-
0.31.104 Oct 2024Release notes
Open source →Released 2024/10/04.
Changed
-
Changed
read::Evaluation::evaluateto validateDW_OP_deref_size. #739 -
Changed
write::LineProgramto allow use of file index 0 for DWARF version 5. #740 -
Improved the workaround for reading zero length entries in
.debug_frame. #741 -
Implemented
Defaultforread::DwarfSectionsandread::DwarfPackageSections. #742 -
Changed
read::ArangeEntryIterto handle tombstones in.debug_aranges. #743 -
Improved handling handling of 0 for tombstones in
DW_LNE_set_addressand address pairs in ranges and locations. #750 -
Changed the
read::ArrayLiketrait implementation to use const generics. #752
Added
- Added
MIPS::HIandMIPS::LO. #749
-
-
0.31.016 Jul 2024Release notes
Open source →Released 2024/07/16.
Breaking changes
-
Deleted support for segment selectors. #720
-
Added
read::FileEntry::sourceand deletedCopyimplementation. #728 -
Changed
read::LineRow::executeto return aResult. #731 -
Deleted
Displayimplementation forread::LineInstruction. #734 -
Changed
read::Errorto be non-exhaustive.
Changed
-
Fixed
Hashimplementation forread::EndianReader. #723 -
Changed
read::EhFrameHdr::parseto validate the FDE count encoding. #725 -
Changed address overflow to be an error for
read::UnwindTableRow,read::LineRow, andread::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
-
-
0.30.026 May 2024Release notes
Open source →Released 2024/05/26.
Breaking changes
-
Added context to some
read::Errorvariants. #703 -
Changed type of
read::UnitIndexSection::sectiontoIndexSectionId. #716
Changed
-
Fixed
write::Operation::ImplicitPointer::size. #712 -
Changed
read::RngListIterandread::LocListIterto skip ranges where the end is before the beginning, instead of returning an error. #715 -
Fixed clippy warnings. #713
Added
- Added
read::UnitRef. #711
-
-
0.29.011 Apr 2024Release notes
Open source →Released 2024/04/11.
Breaking changes
- Changed
Readertype parameter toReaderOffsetforread::UnwindContextand related types. ReplacedExpressionwithUnwindExpressionin unwind information types. #703
Changed
-
Changed
write::Sections::for_eachandfor_each_mutto 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
Added
-
Added MIPS register definitions. #690
-
Added PowerPC register definitions. #691
-
Added
read::DwarfSectionsandread::DwarfPackageSections. #698 -
Implemented
BitOrforDwEhPe. #709 -
Added
read::Relocate,read::RelocateReader, andwrite::RelocateWriter. #709
- Changed
-
0.28.124 Nov 2023Release notes
Open source →Released 2023/11/24.
Changed
-
Changed
read::AbbreviationsCacheto require manual population usingDwarf::populate_abbreviations_cache. #679 -
Changed the default
read::UnwindContextStorageto useBoxinstead ofVecso that its memory usage is limited. #687 -
Changed
read::UnwindTable::newto always reset the context, because previous errors may have left the context in an invalid state. #684 -
Changed the
Debugimplementation forread::EndianSliceto 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
-
-
0.28.013 Aug 2023Release notes
Open source →Released 2023/08/12.
Breaking changes
-
Deleted
impl From<EndianSlice> for &[u8]. UseEndianSlice::sliceinstead. #669 -
Deleted
impl Index<usize> for EndianSliceandimpl Index<RangeFrom<usize>> for EndianSlice. #669 -
Replaced
impl From<Pointer> for u64withPointer::pointer. #670 -
Updated
fallible-iteratorto 0.3.0. #672 -
Changed some optional dependencies to use the
dep:feature syntax. #672 -
Added
non_exhaustiveattribute toread::RegisterRule,read::CallFrameInstruction, andwrite::CallFrameInstruction. #673
Changed
-
The minimum supported rust version for the
readfeature 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, andread::EhFrame::set_vendor. #673 -
Added more ARM and AArch64 register definitions, and
DW_CFA_AARCH64_negate_ra_statesupport. #673
-
-
0.27.315 Jun 2023Release notes
Open source →Released 2023/06/14.
Changed
- Excluded test fixtures from published package. #661
Added
-
Added
FallibleIteratorimplementation forread::OperationIter. #649 -
Added
DW_AT_GNU_deletedconstant. #658
-
0.27.215 Feb 2023Release notes
Open source → -
0.27.123 Jan 2023Release notes
Open source →Released 2023/01/23.
Added
-
Added
SectionId::xcoff_nameandread::Section::xcoff_section_name. #635 -
Added
read::Dwarf::make_dwoandread::Unit::dwo_name. #637
Changed
- Changed
read::DwarfPackage::sectionsto handle supplementary files. #638
-
-
0.27.024 Nov 2022Release notes
Open source →Released 2022/11/23.
Breaking changes
- Added
read::Dwarf::abbreviations_cacheto cache abbreviations at offset 0. Changedread::Dwarf::abbreviationsto returnResult<Arc<Abbreviations>>, and changedread::Unit::abbreviationstoArc<Abbreviations>. #628
Added
-
Added LoongArch register definitions. #624
-
Added support for tombstones in
read::LocListIterandread::RngListIter. #631
- Added
-
0.26.217 Jul 2022Release notes
Open source →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_pointerhandling for DWARF version 2. #618
Added
- Added
read::EhHdrTable::iter. #619
-
-
0.26.102 Nov 2021Release notes
Open source →Released 2021/11/02.
Changed
- Fixed segmentation fault in
ArrayVec<Vec<T>>::into_vec, which may be used byread::Evaluation::result. This regression was introduced in 0.26.0. #601
- Fixed segmentation fault in
-
0.26.024 Oct 2021Release notes
Open source →Released 2021/10/24.
Breaking changes
-
Removed
read::UninitializedUnwindContext. UseBox<UnwindContext>instead. #593 -
Renamed
read::Error::CfiStackFulltoStackFull. #595 -
Added
UnwindContextStoragetype parameter toread::UnwindContext,read::UnwindTable,read::UnwindTableRow, andread::RegisterRuleMap. #595 -
Added
EvaluationStoragetype parameter toread::Evaluation. #595 -
Added
read::SectionId::DebugCuIndexandread::SectionId::DebugTuIndex. #588
Changed
-
Fixed
DW_EH_PE_pcrelhandling in defaultwrite::Writer::write_eh_pointerimplementation. #576 -
Fixed
read::AttributeSpecification::sizefor some forms. #597 -
Display more unit details in dwarfdump. #584
Added
-
Added
write::DebuggingInformationEntry::delete_child. #570 -
Added RISC-V register definitions. #579
-
Added
read::DwarfPackage,read::DebugCuIndex, andread::DebugTuIndex. #588 -
Added
read-corefeature to allow building withoutliballoc. #596 -
Added
read::EntriesRaw::skip_attributes. #597
-
-
0.25.026 Jul 2021Release notes
Open source →Released 2021/07/26.
Breaking changes
-
read::FrameDescriptionEntry::unwind_info_for_addressnow returns a reference instead of cloning. #557 -
read::AttributeValue::RangeListsRefnow contains aRawRangeListsOffsetto allow handling of GNU split DWARF extensions. Useread::Dwarf::ranges_offset_from_rawto handle it. #568 #569 -
Added
read::Unit::dwo_id. #569
Changed
-
.debug_arangesparsing now accepts version 3. #560 -
read::Dwarf::attr_ranges_offsetand 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_LANGconstants. #565 -
dwarfdump: added DWO parent support. #568
-
Added
read::Dwarfmethods:ranges_offset_from_raw,raw_ranges, andraw_locations. #568 #569
-
-
0.24.002 May 2021Release notes
Open source →Released 2021/05/01.
Breaking changes
-
Minimum Rust version increased to 1.42.0.
-
Added
read::Dwarf::debug_aranges. #539 -
Replaced
read::DebugAranges::itemswithread::DebugAranges::headers. #539 -
Added
read::Operation::Wasm*. #546 -
read::LineRow::linenow returnsOption<NonZeroU64>. Theread::ColumnType::Columnvariant now contains aNonZeroU64. #551 -
Replaced
read::Dwarf::debug_str_supwithread::Dwarf::sup. Deletedsupparameter ofread::Dwarf::load. Addedread::Dwarf::load_sup. #554
Added
- dwarfdump: Supplementary object file support. #552
Changed
-
Support
DW_FORM_addrx*forDW_AT_low_pc/DW_AT_high_pcinread::Dwarf. #541 -
Performance improvement in
EndianReader. #549
-
-
0.23.027 Oct 2020Release notes
Open source →Released 2020/10/27.
Breaking changes
-
Added more variants to
read::UnitType. Addedread::AttributeValue::DwoId#521 -
Replaced
CompilationUnitHeaderandTypeUnitHeaderwithUnitHeader. ReplacedCompilationUnitHeadersIterwithDebugInfoUnitHeadersIter. ReplacedTypeUnitHeadersIterwithDebugTypesUnitHeadersIter. #523
Added
-
Added
read::Dwarf::attr_address. #524 -
Added read support for
DW_AT_GNU_addr_baseandDW_AT_GNU_ranges_base. #525 -
dwarfdump: Display index values for attributes. #526
-
Added
name_to_register. #532
-
-
0.22.004 Jul 2020Release notes
Open source →Released 2020/07/03.
Breaking changes
- Fixed
UnitHeader::size_of_headerfor DWARF 5 units. #518
Added
-
Added fuzz targets in CI. #512
-
Added read support for
DW_OP_GNU_addr_indexandDW_OP_GNU_const_index. #516 -
Added
.dwosupport to dwarfdump. #516 -
Added
SectionId::dwo_nameandSection::dwo_section_name. #517
Fixed
-
Fixed panic when reading
DW_FORM_indirectcombined withDW_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::newwhenDW_AT_nameorDW_AT_comp_diris missing. #515
- Fixed
-
0.21.012 May 2020Release notes
Open source →Released 2020/05/12.
Breaking changes
-
Minimum Rust version increased to 1.38.0.
-
Replaced
read::Operation::LiteralwithOperation::UnsignedConstantandOperation::SignedConstant. Changedread::Operation::Braandread::Operation::Skipto contain the target offset instead of the bytecode. #479 -
Changed
write::Expressionto support references. Existing users can convert to useExpression::raw. #479 -
Replaced
write::AttributeValue::AnyUnitEntryRefwithDebugInfoRef. Renamedwrite::AttributeValue::ThisUnitEntryReftoUnitRef. #479 -
Added more optional features:
endian-readerandfallible-iterator. #495 #498
Added
- Added
read::Expression::operations#479
Fixed
-
Fixed newlines in
dwarfdumpexample. #470 -
Ignore zero terminators when reading
.debug_framesections. #486 -
Increase the number of CFI register rules supported by
read::UnwindContext. #487 -
Fixed version handling and return register encoding when reading
.eh_framesections. #493
Changed
-
Added
EhFrameandDebugFrametowrite::Sections. #492 -
Improved performance of
write::LineProgram::generate_row. #476 -
Removed use of the
byteorder,arrayvecandsmallveccrates. #494 #496 #497
-
-
0.20.011 Jan 2020Release notes
Open source →Released 2020/01/11.
Breaking changes
-
Changed type of
DwTag,DwAt, andDwFormconstants. #451 -
Added
read/write::AttributeValue::DebugMacroRef, and returned where required inread::Attribute::value. AddedSectionId::DebugMacro. #454 -
Deleted
allocfeature, and fixedno-stdbuilds 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::EntriesRawfor 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
-
-
0.19.008 Jul 2019Release notes
Open source →Released 2019/07/08.
Breaking changes
- Small API changes related to
.debug_locand.debug_loclists: addedread::RawLocListEntry::AddressOrOffsetPairenum variant, addedwrite::Sections::debug_loc/debug_loclistspublic members, and replacedwrite::AttributeValue::LocationListsRefwithLocationListRef. #425
Added
-
Added
read::Attribute::exprloc_valueandread::AttributeValue::exprloc_value. #422 -
Added support for writing
.debug_locand.debug_loclistssections. #425 -
Added
-Gflag todwarfdumpexample to display global offsets. #427 -
Added
examples/simple.rs. #429
Fixed
write::LineProgram::fromno longer requiresDW_AT_nameorDW_AT_comp_dirattributes to be present in the unit DIE. #430
- Small API changes related to
-
0.18.025 Apr 2019Release notes
Open source →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
Offsettype parameter, the defaultOffsethas changed fromusizetoR::Offset. #392 -
Added an
Offsettype parameter to theread::Unittype to allow variance. #393 -
Changed the
UninitializedUnwindContext::initializemethod to borrowself, and return&mut UnwindContext. Deleted theInitializedUnwindContexttype. #395 -
Deleted the
UnwindSectiontype parameters from theCommonInformationEntry,FrameDescriptionEntry,UninitializedUnwindContext,UnwindContext, andUnwindTabletypes. #399 -
Changed the signature of the
get_ciecallback parameter for various functions. The signature now matches theUnwindSection::cie_from_offsetmethod, so that method can be used as the parameter. #400 -
Reduced the number of lifetime parameters for the
UnwindTabletype. #400 -
Updated
fallible-iteratorto version 0.2.0. #407 -
Added a parameter to the
Error::UnexpectedEofenum variant. #408
Added
-
Update to 2018 edition. #391
-
Added the
FrameDescriptionEntry::unwind_info_for_addressmethod. #396 -
Added the
FrameDescriptionEntry::rowsmethod. #396 -
Added the
EhHdrTable::unwind_info_for_addressmethod. #400 -
Added the
EhHdrTable::fde_for_addressmethod and deprecated theEhHdrTable::lookup_and_parsemethod. #400 -
Added the
EhHdrTable::pointer_to_offsetmethod. #400 -
Added the
UnwindSection::fde_for_addressmethod. #396 -
Added the
UnwindSection::fde_from_offsetmethod. #400 -
Added the
UnwindSection::partial_fde_from_offsetmethod. #400 -
Added the
Section::idmethod. #406 -
Added the
Dwarf::loadmethod, and corresponding methods for individual sections. #406 -
Added the
Dwarf::borrowmethod, and corresponding methods for individual sections. #406 -
Added the
Dwarf::format_errormethod. #408 -
Added the
Dwarf::die_rangesmethod. #417 -
Added the
Dwarf::unit_rangesmethod. #417 -
Added support for writing
.debug_frameand.eh_framesections. #412 #419
Fixed
-
The
code_alignment_factoris 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_framebase addresses in dwarfdump. #410
-
-
0.17.021 Feb 2019Release notes
Open source →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
Registertype instead ofu8/u64. #328 -
Replaced
BaseAddresses::set_cfiwithset_eh_frame_hdrandset_eh_frame. ReplacedBaseAddresses::set_datawithset_got. You should now use the sameBaseAddressesvalue for parsing both.eh_frameand.eh_frame_hdr. #351 -
Renamed many types and functions related to
.debug_line. RenamedLineNumberProgramtoLineProgram. RenamedIncompleteLineNumberProgramtoIncompleteLineProgram. RenamedCompleteLineNumberProgramtoCompleteLineProgram. RenamedLineNumberProgramHeadertoLineProgramHeader. RenamedLineNumberRowtoLineRow. RenamedStateMachinetoLineRows. RenamedOpcodetoLineInstruction. RenamedOpcodesItertoLineInstructions. RenamedLineNumberSequencetoLineSequence. #359 -
Added
Offsettype parameter toAttributeValue,LineProgram,IncompleteLineProgram,CompleteLineProgram,LineRows,LineInstruction, andFileEntry. #324 -
Changed
FileEntry::path_name,FileEntry::directory, andLineProgramHeader::directoryto return anAttributeValueinstead of aReader. #366 -
Renamed
FileEntry::last_modificationtoFileEntry::timestampand renamedFileEntry::lengthtoFileEntry::size. #366 -
Added an
Encodingtype. Changed many functions that previously acceptedFormat, version or address size parameters to accept anEncodingparameter instead. Notable changes areLocationLists::locations,RangeLists::ranges, andExpression::evaluation. #364 -
Changed return type of
LocationLists::newandRangeLists::new. #370 -
Added parameters to
LocationsLists::locationsandRangeLists::rangesto support.debug_addr. #358 -
Added more
AttributeValuevariants: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::TextBasewithEvaluationResult::RequiresRelocatedAddress. The handling ofTextBasewas incorrect. #335 -
Added
EvaluationResult::IndexedAddressfor operations that require an address from.debug_addr. #358 -
Added
Reader::read_slice. Added a default implementation ofReader::read_u8_arraywhich 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
readandwriteCargo features. Both are enabled by default. #343 -
Added support for reading DWARF 5
.debug_lineand.debug_line_strsections. #366 -
Added support for reading DWARF 5
.debug_str_offsetssections, including parsingDW_FORM_strx*attributes. #358 -
Added support for reading DWARF 5
.debug_addrsections, including parsingDW_FORM_addrx*attributes and evaluatingDW_OP_addrxandDW_OP_constxoperations. #358 -
Added support for reading DWARF 5 indexed addresses and offsets in
.debug_loclistsand.debug_rnglists, including parsingDW_FORM_rnglistxandDW_FORM_loclistxattributes. #358 -
Added high level
DwarfandUnittypes. 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_sizeandDebugFrame::set_address_sizemethods to allow parsing non-native CFI sections. The default address size is still the native size. #325 -
Added architecture specific definitions for
Registervalues 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
LineRowsto be covariant in itsReadertype parameter. #324 -
Fixed handling of empty units in dwarfdump. #330
-
Fixed
UnitHeader::length_including_selfforDwarf64. #342 -
Fixed parsing of
DW_CFA_set_loc. #355 -
Fixed handling of multiple headers in
.debug_loclistsand.debug_rnglists. #370
-
-
0.16.129 Aug 2018 -
0.16.001 Jun 2018Release notes
Open source →Released 2018/06/01.
Added
-
Added support for building in
#![no_std]environments, when thealloccrate is available. Disable the "std" feature and enable the "alloc" feature. #138 #271 -
Added support for DWARF 5
.debug_rnglistsand.debug_loclistssections. #272 -
Added support for DWARF 5
DW_FORM_ref_supandDW_FORM_strp_supattribute forms. #288 -
Added support for DWARF 5 operations on typed values. #293
-
A
dwarf-validateexample 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 customReaderimplementation with a reference to a generic buffer of bytes and an associated endianity. #298 #302
Changed
-
Various speed improvements for evaluating
.debug_lineline number programs. #276 -
The example
dwarfdumpclone is a whole lot faster now. #282 #284 #285
Deprecated
EndianBufhas been renamed toEndianSlice, use that name instead. #295
Fixed
- Evaluating the
DW_CFA_restore_stateopcode properly maintains the current location. Previously it would incorrectly restore the old location when popping from evaluation stack. #274
-
-
0.15.001 Dec 2017Release notes
Open source →Released 2017/12/01.
Added
-
Added the
EndianBuf::to_string()method. #233 -
Added more robust error handling in our example
dwarfdumpclone. #234 -
Added
FrameDescriptionEntry::initial_addressmethod. #237 -
Added
FrameDescriptionEntry::lenmethod. #237 -
Added the
FrameDescriptionEntry::entry_lenmethod. #241 -
Added the
CommonInformationEntry::offsetmethod. #241 -
Added the
CommonInformationEntry::entry_lenmethod. #241 -
Added the
CommonInformationEntry::versionmethod. #241 -
Added the
CommonInformationEntry::augmentationmethod. #241 -
Added the
CommonInformationEntry::code_alignment_factormethod. #241 -
Added the
CommonInformationEntry::data_alignment_factormethod. #241 -
Added the
CommonInformationEntry::return_address_registermethod. #241 -
Added support for printing
.eh_framesections to our exampledwarfdumpclone. #241 -
Added support for parsing the
.eh_frame_hdrsection. On Linux, the.eh_frame_hdrsection provides a pointer to the already-mapped-in-memory.eh_framedata, 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_addressandUninitializedUnwindContext::initialize. #241 -
CfaRuleandRegisterRulenow expose theirDW_OPexpressions asExpression. This is a minor breaking change. #241 -
The
Error::UnknownVersionvariant now contains the unknown version number. This is a minor breaking change. #245 -
EvaluationResult::RequiresEntryValuerequires anExpressioninstead of aReadernow. This is a minor breaking change. #256
-
-
0.14.008 Aug 2017Release notes
Open source →Released 2017/08/08.
Added
-
All
pubtypes nowderive(Hash). #192 -
All the constants from DWARF 5 are now defined. #193
-
Added support for the
DW_OP_GNU_parameter_refGNU 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
gimlino longer requires the object file's section be fully loaded into memory. This enables usinggimlion 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 thegimli::Readertrait. This manifests as small (but many) breaking changes to much of the public API. #182
Fixed
-
-
0.13.024 Mar 2017Nothing published for this version
-
0.12.017 Feb 2017Nothing published for this version
-
0.11.020 Jan 2017Nothing published for this version
-
0.10.007 Dec 2016Nothing published for this version
-
0.9.028 Oct 2016Nothing published for this version
-
0.8.018 Sep 2016Nothing published for this version
-
0.7.028 Aug 2016Nothing published for this version
-
0.6.015 Aug 2016Nothing published for this version
-
0.5.012 Aug 2016Nothing published for this version
-
0.4.011 Aug 2016Nothing published for this version
-
0.3.027 Jul 2016Nothing published for this version
-
0.2.014 Jul 2016Nothing published for this version
-
0.1.015 Jun 2016Nothing published for this version