NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #216 most downloaded on crates.io
A library for reading and writing the DWARF debugging format.
Last release 3 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
This includes the addition of #[non_exhaustive] to write::Error so that future additions to it are not breaking changes.
This includes the addition of #[non_exhaustive] to write::Error
so that future additions to it are not breaking changes.
Released 2026/06/25.
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 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 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
One column per quarter.
Release 0.33.1
Release 0.33.1 (#873)
~Released 2026/03/29.~ Yanked due to breaking change.
Added Wasm location support to read::Evaluation.
#871
Changed write module to validate use of base addresses in range and location lists.
#870
Release 0.33.0
Release 0.33.0 (#868)
Released 2026/01/24.
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
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 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 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
Release 0.32.3
Release 0.32.3 (#799)
Released 2025/09/13.
.debug_line,
.debug_aranges, .debug_loclists, and .debug_rnglists.
#791Remove PartialEq<Debug*Offset> implementations for UnitSectionOffset . These were an unintended breaking change.
Remove PartialEq<Debug*Offset> implementations for UnitSectionOffset.
These were an unintended breaking change.
Released 2025/08/26.
PartialEq<Debug*Offset> implementations for UnitSectionOffset.
These were an unintended breaking change.
#789Release 0.32.1
Release 0.32.1 (#788)
Released 2025/08/22.
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
Release 0.32.0
Release 0.32.0 (#773)
Released 2025/06/11.
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
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
DebugAddr::headers.
#760Release 0.31.1
Release 0.31.1 (#753)
Released 2024/10/04.
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
MIPS::HI and MIPS::LO.
#749Release 0.31.0
Release 0.31.0 (#736)
Released 2024/07/16.
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.
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 read::IndexSectionId::section_id.
#719
Added read::FrameDescriptionEntry::end_address.
#727
Added support for DW_LNCT_LLVM_source.
#728
Added context to some read::Error variants. #703
Released 2024/05/26.
Added context to some read::Error variants.
#703
Changed type of read::UnitIndexSection::section to IndexSectionId.
#716
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
read::UnitRef.
#711Changed Reader type parameter to ReaderOffset for read::UnwindContext and related types. Replaced Expression with UnwindExpression in unwind informati
Released 2024/04/11.
Reader type parameter to ReaderOffset for read::UnwindContext and related types.
Replaced Expression with UnwindExpression in unwind information types.
#703Changed 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
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
Changed read::AbbreviationsCache to require manual population using Dwarf::populate_abbreviations_cache. #679
Released 2023/11/24.
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 more AArch64 register definitions. #680
Added read::Unit::new_with_abbreviations.
#677
Added read::Evaluation::value_result.
#676
Deleted impl From for &[u8]. Use EndianSlice::slice instead. #669
Released 2023/08/12.
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
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 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
Excluded test fixtures from published package. #661
Added support for tombstones in read::LineRows. #642
Added SectionId::xcoff_name and read::Section::xcoff_section_name. #635
Added read::Dwarf::abbreviations_cache to cache abbreviations at offset 0. Changed read::Dwarf::abbreviations to return Result >, and changed read::Un
Released 2022/11/23.
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>.
#628Added LoongArch register definitions. #624
Added support for tombstones in read::LocListIter and read::RngListIter.
#631
Fixed CFI personality encoding when writing. #609
Fixed segmentation fault in ArrayVec >::into_vec, which may be used by read::Evaluation::result. This regression was introduced in 0.26.0. #601
Released 2021/11/02.
ArrayVec<Vec<T>>::into_vec, which may be used by
read::Evaluation::result. This regression was introduced in 0.26.0.
#601Removed read::UninitializedUnwindContext. Use Box instead. #593
Released 2021/10/24.
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
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 write::DebuggingInformationEntry::delete_child.
#570
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
read::FrameDescriptionEntry::unwind_info_for_address now returns a reference instead of cloning. #557
Released 2021/07/26.
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
.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 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
Minimum Rust version increased to 1.42.0.
Released 2021/05/01.
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
Support DW_FORM_addrx* for DW_AT_low_pc/DW_AT_high_pc in read::Dwarf.
#541
Performance improvement in EndianReader.
#549
Added more variants to read::UnitType. Added read::AttributeValue::DwoId #521
Released 2020/10/27.
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 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
Fixed UnitHeader::size_of_header for DWARF 5 units. #518
Released 2020/07/03.
UnitHeader::size_of_header for DWARF 5 units.
#518Added 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 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
Minimum Rust version increased to 1.38.0.
Released 2020/05/12.
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
read::Expression::operations
#479Fixed 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
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
Changed type of DwTag, DwAt, and DwForm constants. #451
Released 2020/01/11.
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 GNU view constants. #434
Added read::EntriesRaw for low level DIE parsing.
#455
Added examples/simple-line.rs.
#460
Fixed handling of CFI augmentations without data. #438
dwarfdump: fix panic for malformed expressions. #447
dwarfdump: fix handling of Mach-O relocations. #449
Small API changes related to .debug_loc and .debug_loclists: added read::RawLocListEntry::AddressOrOffsetPair enum variant, added write::Sections::deb
Released 2019/07/08.
.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.
#425Added 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
write::LineProgram::from no longer requires DW_AT_name or DW_AT_comp_dir
attributes to be present in the unit DIE.
#430Added the EhHdrTable::fde_for_address method and deprecated the EhHdrTable::lookup_and_parse method. #400
Released 2019/04/25.
The focus of this release has been on improving support for reading CFI, and adding support for writing CFI.
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
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
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
The focus of this release has been on improving DWARF 5 support, and adding support for writing DWARF.
Released 2019/02/21.
The focus of this release has been on improving DWARF 5 support, and adding support for writing DWARF.
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 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 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
Added support for building in #![no_std] environments, when the alloc crate is available. Disable the "std" feature and enable the "alloc" feature. [#
Released 2018/06/01.
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
Various speed improvements for evaluating .debug_line line number
programs. #276
The example dwarfdump clone is a whole lot faster
now. #282 #284 #285
EndianBuf has been renamed to EndianSlice, use that name instead. #295DW_CFA_restore_state opcode properly maintains the current
location. Previously it would incorrectly restore the old location when
popping from evaluation stack. #274…option because it requires allocation. This is a breaking change affecting UnwindSection::unwind_info_for_address and UninitializedUnwindContext::init…
Released 2017/12/01.
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
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
This is abstracted over with the gimli::Reader trait. This manifests as small (but many) breaking changes to much of the public API. [#182][]
Released 2017/08/08.
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
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. #182Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →