39 KiB
gimli Change Log
0.31.0
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.0
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.0
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
0.28.1
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.0
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.3
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.2
Released 2023/02/15.
Added
- Added support for tombstones in
read::LineRows. #642
0.27.1
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.0
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
0.26.2
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.1
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
0.26.0
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.0
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.0
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.0
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.0
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
0.21.0
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.0
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.0
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
0.18.0
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.0
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.1
Released 2018/08/28.
Added
Fixed
0.16.0
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.0
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.0
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