35 KiB
gimli
Change Log
0.28.1
Released 2023/11/24.
Changed
-
Changed
read::AbbreviationsCache
to require manual population usingDwarf::populate_abbreviations_cache
. #679 -
Changed the default
read::UnwindContextStorage
to useBox
instead ofVec
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 forread::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
0.28.0
Released 2023/08/12.
Breaking changes
-
Deleted
impl From<EndianSlice> for &[u8]
. UseEndianSlice::slice
instead. #669 -
Deleted
impl Index<usize> for EndianSlice
andimpl Index<RangeFrom<usize>> for EndianSlice
. #669 -
Replaced
impl From<Pointer> for u64
withPointer::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 toread::RegisterRule
,read::CallFrameInstruction
, andwrite::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
, andread::EhFrame::set_vendor
. #673 -
Added more ARM and AArch64 register definitions, and
DW_CFA_AARCH64_negate_ra_state
support. #673
0.27.3
Released 2023/06/14.
Changed
- Excluded test fixtures from published package. #661
Added
-
Added
FallibleIterator
implementation forread::OperationIter
. #649 -
Added
DW_AT_GNU_deleted
constant. #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_name
andread::Section::xcoff_section_name
. #635 -
Added
read::Dwarf::make_dwo
andread::Unit::dwo_name
. #637
Changed
- Changed
read::DwarfPackage::sections
to handle supplementary files. #638
0.27.0
Released 2022/11/23.
Breaking changes
- Added
read::Dwarf::abbreviations_cache
to cache abbreviations at offset 0. Changedread::Dwarf::abbreviations
to returnResult<Arc<Abbreviations>>
, and changedread::Unit::abbreviations
toArc<Abbreviations>
. #628
Added
-
Added LoongArch register definitions. #624
-
Added support for tombstones in
read::LocListIter
andread::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_pointer
handling 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::CfiStackFull
toStackFull
. #595 -
Added
UnwindContextStorage
type parameter toread::UnwindContext
,read::UnwindTable
,read::UnwindTableRow
, andread::RegisterRuleMap
. #595 -
Added
EvaluationStorage
type parameter toread::Evaluation
. #595 -
Added
read::SectionId::DebugCuIndex
andread::SectionId::DebugTuIndex
. #588
Changed
-
Fixed
DW_EH_PE_pcrel
handling in defaultwrite::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 RISC-V register definitions. #579
-
Added
read::DwarfPackage
,read::DebugCuIndex
, andread::DebugTuIndex
. #588 -
Added
read-core
feature 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_address
now returns a reference instead of cloning. #557 -
read::AttributeValue::RangeListsRef
now contains aRawRangeListsOffset
to allow handling of GNU split DWARF extensions. Useread::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
, 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::items
withread::DebugAranges::headers
. #539 -
Added
read::Operation::Wasm*
. #546 -
read::LineRow::line
now returnsOption<NonZeroU64>
. Theread::ColumnType::Column
variant now contains aNonZeroU64
. #551 -
Replaced
read::Dwarf::debug_str_sup
withread::Dwarf::sup
. Deletedsup
parameter 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_pc
inread::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
CompilationUnitHeader
andTypeUnitHeader
withUnitHeader
. ReplacedCompilationUnitHeadersIter
withDebugInfoUnitHeadersIter
. ReplacedTypeUnitHeadersIter
withDebugTypesUnitHeadersIter
. #523
Added
-
Added
read::Dwarf::attr_address
. #524 -
Added read support for
DW_AT_GNU_addr_base
andDW_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_header
for DWARF 5 units. #518
Added
-
Added fuzz targets in CI. #512
-
Added read support for
DW_OP_GNU_addr_index
andDW_OP_GNU_const_index
. #516 -
Added
.dwo
support to dwarfdump. #516 -
Added
SectionId::dwo_name
andSection::dwo_section_name
. #517
Fixed
-
Fixed panic when reading
DW_FORM_indirect
combined 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::new
whenDW_AT_name
orDW_AT_comp_dir
is missing. #515
0.21.0
Released 2020/05/12.
Breaking changes
-
Minimum Rust version increased to 1.38.0.
-
Replaced
read::Operation::Literal
withOperation::UnsignedConstant
andOperation::SignedConstant
. Changedread::Operation::Bra
andread::Operation::Skip
to contain the target offset instead of the bytecode. #479 -
Changed
write::Expression
to support references. Existing users can convert to useExpression::raw
. #479 -
Replaced
write::AttributeValue::AnyUnitEntryRef
withDebugInfoRef
. Renamedwrite::AttributeValue::ThisUnitEntryRef
toUnitRef
. #479 -
Added more optional features:
endian-reader
andfallible-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
andDebugFrame
towrite::Sections
. #492 -
Improved performance of
write::LineProgram::generate_row
. #476 -
Removed use of the
byteorder
,arrayvec
andsmallvec
crates. #494 #496 #497
0.20.0
Released 2020/01/11.
Breaking changes
-
Changed type of
DwTag
,DwAt
, andDwForm
constants. #451 -
Added
read/write::AttributeValue::DebugMacroRef
, and returned where required inread::Attribute::value
. AddedSectionId::DebugMacro
. #454 -
Deleted
alloc
feature, and fixedno-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
0.19.0
Released 2019/07/08.
Breaking changes
- Small API changes related to
.debug_loc
and.debug_loclists
: addedread::RawLocListEntry::AddressOrOffsetPair
enum variant, addedwrite::Sections::debug_loc/debug_loclists
public members, and replacedwrite::AttributeValue::LocationListsRef
withLocationListRef
. #425
Added
-
Added
read::Attribute::exprloc_value
andread::AttributeValue::exprloc_value
. #422 -
Added support for writing
.debug_loc
and.debug_loclists
sections. #425 -
Added
-G
flag todwarfdump
example to display global offsets. #427 -
Added
examples/simple.rs
. #429
Fixed
write::LineProgram::from
no longer requiresDW_AT_name
orDW_AT_comp_dir
attributes 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
Offset
type parameter, the defaultOffset
has changed fromusize
toR::Offset
. #392 -
Added an
Offset
type parameter to theread::Unit
type to allow variance. #393 -
Changed the
UninitializedUnwindContext::initialize
method to borrowself
, and return&mut UnwindContext
. Deleted theInitializedUnwindContext
type. #395 -
Deleted the
UnwindSection
type parameters from theCommonInformationEntry
,FrameDescriptionEntry
,UninitializedUnwindContext
,UnwindContext
, andUnwindTable
types. #399 -
Changed the signature of the
get_cie
callback parameter for various functions. The signature now matches theUnwindSection::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 theEhHdrTable::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
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
Register
type instead ofu8
/u64
. #328 -
Replaced
BaseAddresses::set_cfi
withset_eh_frame_hdr
andset_eh_frame
. ReplacedBaseAddresses::set_data
withset_got
. You should now use the sameBaseAddresses
value for parsing both.eh_frame
and.eh_frame_hdr
. #351 -
Renamed many types and functions related to
.debug_line
. RenamedLineNumberProgram
toLineProgram
. RenamedIncompleteLineNumberProgram
toIncompleteLineProgram
. RenamedCompleteLineNumberProgram
toCompleteLineProgram
. RenamedLineNumberProgramHeader
toLineProgramHeader
. RenamedLineNumberRow
toLineRow
. RenamedStateMachine
toLineRows
. RenamedOpcode
toLineInstruction
. RenamedOpcodesIter
toLineInstructions
. RenamedLineNumberSequence
toLineSequence
. #359 -
Added
Offset
type parameter toAttributeValue
,LineProgram
,IncompleteLineProgram
,CompleteLineProgram
,LineRows
,LineInstruction
, andFileEntry
. #324 -
Changed
FileEntry::path_name
,FileEntry::directory
, andLineProgramHeader::directory
to return anAttributeValue
instead of aReader
. #366 -
Renamed
FileEntry::last_modification
toFileEntry::timestamp
and renamedFileEntry::length
toFileEntry::size
. #366 -
Added an
Encoding
type. Changed many functions that previously acceptedFormat
, version or address size parameters to accept anEncoding
parameter instead. Notable changes areLocationLists::locations
,RangeLists::ranges
, andExpression::evaluation
. #364 -
Changed return type of
LocationLists::new
andRangeLists::new
. #370 -
Added parameters to
LocationsLists::locations
andRangeLists::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
withEvaluationResult::RequiresRelocatedAddress
. The handling ofTextBase
was incorrect. #335 -
Added
EvaluationResult::IndexedAddress
for operations that require an address from.debug_addr
. #358 -
Added
Reader::read_slice
. Added a default implementation ofReader::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
andwrite
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 parsingDW_FORM_strx*
attributes. #358 -
Added support for reading DWARF 5
.debug_addr
sections, including parsingDW_FORM_addrx*
attributes and evaluatingDW_OP_addrx
andDW_OP_constx
operations. #358 -
Added support for reading DWARF 5 indexed addresses and offsets in
.debug_loclists
and.debug_rnglists
, including parsingDW_FORM_rnglistx
andDW_FORM_loclistx
attributes. #358 -
Added high level
Dwarf
andUnit
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
andDebugFrame::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 itsReader
type parameter. #324 -
Fixed handling of empty units in dwarfdump. #330
-
Fixed
UnitHeader::length_including_self
forDwarf64
. #342 -
Fixed parsing of
DW_CFA_set_loc
. #355 -
Fixed handling of multiple headers in
.debug_loclists
and.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 thealloc
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
andDW_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 customReader
implementation with a reference to a generic buffer of bytes and an associated endianity. #298 #302
Changed
-
Various speed improvements for evaluating
.debug_line
line number programs. #276 -
The example
dwarfdump
clone is a whole lot faster now. #282 #284 #285
Deprecated
EndianBuf
has been renamed toEndianSlice
, 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
0.15.0
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 exampledwarfdump
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
andUninitializedUnwindContext::initialize
. #241 -
CfaRule
andRegisterRule
now expose theirDW_OP
expressions asExpression
. 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 anExpression
instead of aReader
now. This is a minor breaking change. #256
0.14.0
Released 2017/08/08.
Added
-
All
pub
types nowderive(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 usinggimli
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 thegimli::Reader
trait. This manifests as small (but many) breaking changes to much of the public API. #182