1023 lines
35 KiB
Markdown
1023 lines
35 KiB
Markdown
# `gimli` Change Log
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.28.1
|
|
|
|
Released 2023/11/24.
|
|
|
|
### Changed
|
|
|
|
* Changed `read::AbbreviationsCache` to require manual population using
|
|
`Dwarf::populate_abbreviations_cache`.
|
|
[#679](https://github.com/gimli-rs/gimli/pull/679)
|
|
|
|
* Changed the default `read::UnwindContextStorage` to use `Box` instead of `Vec`
|
|
so that its memory usage is limited.
|
|
[#687](https://github.com/gimli-rs/gimli/pull/687)
|
|
|
|
* Changed `read::UnwindTable::new` to always reset the context, because
|
|
previous errors may have left the context in an invalid state.
|
|
[#684](https://github.com/gimli-rs/gimli/pull/684)
|
|
|
|
* Changed the `Debug` implementation for `read::EndianSlice` to limit the number
|
|
of bytes it displays.
|
|
[#686](https://github.com/gimli-rs/gimli/pull/686)
|
|
|
|
### Added
|
|
|
|
* Added more AArch64 register definitions.
|
|
[#680](https://github.com/gimli-rs/gimli/pull/680)
|
|
|
|
* Added `read::Unit::new_with_abbreviations`.
|
|
[#677](https://github.com/gimli-rs/gimli/pull/677)
|
|
|
|
* Added `read::Evaluation::value_result`.
|
|
[#676](https://github.com/gimli-rs/gimli/pull/676)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.28.0
|
|
|
|
Released 2023/08/12.
|
|
|
|
### Breaking changes
|
|
|
|
* Deleted `impl From<EndianSlice> for &[u8]`. Use `EndianSlice::slice` instead.
|
|
[#669](https://github.com/gimli-rs/gimli/pull/669)
|
|
|
|
* Deleted `impl Index<usize> for EndianSlice` and
|
|
`impl Index<RangeFrom<usize>> for EndianSlice`.
|
|
[#669](https://github.com/gimli-rs/gimli/pull/669)
|
|
|
|
* Replaced `impl From<Pointer> for u64` with `Pointer::pointer`.
|
|
[#670](https://github.com/gimli-rs/gimli/pull/670)
|
|
|
|
* Updated `fallible-iterator` to 0.3.0.
|
|
[#672](https://github.com/gimli-rs/gimli/pull/672)
|
|
|
|
* Changed some optional dependencies to use the `dep:` feature syntax.
|
|
[#672](https://github.com/gimli-rs/gimli/pull/672)
|
|
|
|
* Added `non_exhaustive` attribute to `read::RegisterRule`,
|
|
`read::CallFrameInstruction`, and `write::CallFrameInstruction`.
|
|
[#673](https://github.com/gimli-rs/gimli/pull/673)
|
|
|
|
### Changed
|
|
|
|
* The minimum supported rust version for the `read` feature and its dependencies
|
|
increased to 1.60.0.
|
|
|
|
* The minimum supported rust version for other features increased to 1.65.0.
|
|
|
|
### Added
|
|
|
|
* Added `Vendor`, `read::DebugFrame::set_vendor`, and `read::EhFrame::set_vendor`.
|
|
[#673](https://github.com/gimli-rs/gimli/pull/673)
|
|
|
|
* Added more ARM and AArch64 register definitions, and
|
|
`DW_CFA_AARCH64_negate_ra_state` support.
|
|
[#673](https://github.com/gimli-rs/gimli/pull/673)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.27.3
|
|
|
|
Released 2023/06/14.
|
|
|
|
### Changed
|
|
|
|
* Excluded test fixtures from published package.
|
|
[#661](https://github.com/gimli-rs/gimli/pull/661)
|
|
|
|
### Added
|
|
|
|
* Added `FallibleIterator` implementation for `read::OperationIter`.
|
|
[#649](https://github.com/gimli-rs/gimli/pull/649)
|
|
|
|
* Added `DW_AT_GNU_deleted` constant.
|
|
[#658](https://github.com/gimli-rs/gimli/pull/658)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.27.2
|
|
|
|
Released 2023/02/15.
|
|
|
|
### Added
|
|
|
|
* Added support for tombstones in `read::LineRows`.
|
|
[#642](https://github.com/gimli-rs/gimli/pull/642)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.27.1
|
|
|
|
Released 2023/01/23.
|
|
|
|
### Added
|
|
|
|
* Added `SectionId::xcoff_name` and `read::Section::xcoff_section_name`.
|
|
[#635](https://github.com/gimli-rs/gimli/pull/635)
|
|
|
|
* Added `read::Dwarf::make_dwo` and `read::Unit::dwo_name`.
|
|
[#637](https://github.com/gimli-rs/gimli/pull/637)
|
|
|
|
### Changed
|
|
|
|
* Changed `read::DwarfPackage::sections` to handle supplementary files.
|
|
[#638](https://github.com/gimli-rs/gimli/pull/638)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.27.0
|
|
|
|
Released 2022/11/23.
|
|
|
|
### Breaking changes
|
|
|
|
* Added `read::Dwarf::abbreviations_cache` to cache abbreviations at offset 0.
|
|
Changed `read::Dwarf::abbreviations` to return `Result<Arc<Abbreviations>>`,
|
|
and changed `read::Unit::abbreviations` to `Arc<Abbreviations>`.
|
|
[#628](https://github.com/gimli-rs/gimli/pull/628)
|
|
|
|
### Added
|
|
|
|
* Added LoongArch register definitions.
|
|
[#624](https://github.com/gimli-rs/gimli/pull/624)
|
|
|
|
* Added support for tombstones in `read::LocListIter` and `read::RngListIter`.
|
|
[#631](https://github.com/gimli-rs/gimli/pull/631)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.26.2
|
|
|
|
Released 2022/07/16.
|
|
|
|
### Changed
|
|
|
|
* Fixed CFI personality encoding when writing.
|
|
[#609](https://github.com/gimli-rs/gimli/pull/609)
|
|
|
|
* Fixed use of raw pointer for mutation, detected by Miri.
|
|
[#614](https://github.com/gimli-rs/gimli/pull/614)
|
|
|
|
* Fixed `DW_OP_GNU_implicit_pointer` handling for DWARF version 2.
|
|
[#618](https://github.com/gimli-rs/gimli/pull/618)
|
|
|
|
### Added
|
|
|
|
* Added `read::EhHdrTable::iter`.
|
|
[#619](https://github.com/gimli-rs/gimli/pull/619)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.26.1
|
|
|
|
Released 2021/11/02.
|
|
|
|
### Changed
|
|
|
|
* Fixed segmentation fault in `ArrayVec<Vec<T>>::into_vec`, which may be used by
|
|
`read::Evaluation::result`. This regression was introduced in 0.26.0.
|
|
[#601](https://github.com/gimli-rs/gimli/pull/601)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.26.0
|
|
|
|
Released 2021/10/24.
|
|
|
|
### Breaking changes
|
|
|
|
* Removed `read::UninitializedUnwindContext`. Use `Box<UnwindContext>` instead.
|
|
[#593](https://github.com/gimli-rs/gimli/pull/593)
|
|
|
|
* Renamed `read::Error::CfiStackFull` to `StackFull`.
|
|
[#595](https://github.com/gimli-rs/gimli/pull/595)
|
|
|
|
* Added `UnwindContextStorage` type parameter to `read::UnwindContext`, `read::UnwindTable`,
|
|
`read::UnwindTableRow`, and `read::RegisterRuleMap`.
|
|
[#595](https://github.com/gimli-rs/gimli/pull/595)
|
|
|
|
* Added `EvaluationStorage` type parameter to `read::Evaluation`.
|
|
[#595](https://github.com/gimli-rs/gimli/pull/595)
|
|
|
|
* Added `read::SectionId::DebugCuIndex` and `read::SectionId::DebugTuIndex`.
|
|
[#588](https://github.com/gimli-rs/gimli/pull/588)
|
|
|
|
### Changed
|
|
|
|
* Fixed `DW_EH_PE_pcrel` handling in default `write::Writer::write_eh_pointer` implementation.
|
|
[#576](https://github.com/gimli-rs/gimli/pull/576)
|
|
|
|
* Fixed `read::AttributeSpecification::size` for some forms.
|
|
[#597](https://github.com/gimli-rs/gimli/pull/597)
|
|
|
|
* Display more unit details in dwarfdump.
|
|
[#584](https://github.com/gimli-rs/gimli/pull/584)
|
|
|
|
### Added
|
|
|
|
* Added `write::DebuggingInformationEntry::delete_child`.
|
|
[#570](https://github.com/gimli-rs/gimli/pull/570)
|
|
|
|
* Added ARM and AArch64 register definitions.
|
|
[#574](https://github.com/gimli-rs/gimli/pull/574)
|
|
[#577](https://github.com/gimli-rs/gimli/pull/577)
|
|
|
|
* Added RISC-V register definitions.
|
|
[#579](https://github.com/gimli-rs/gimli/pull/579)
|
|
|
|
* Added `read::DwarfPackage`, `read::DebugCuIndex`, and `read::DebugTuIndex`.
|
|
[#588](https://github.com/gimli-rs/gimli/pull/588)
|
|
|
|
* Added `read-core` feature to allow building without `liballoc`.
|
|
[#596](https://github.com/gimli-rs/gimli/pull/596)
|
|
|
|
* Added `read::EntriesRaw::skip_attributes`.
|
|
[#597](https://github.com/gimli-rs/gimli/pull/597)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.25.0
|
|
|
|
Released 2021/07/26.
|
|
|
|
### Breaking changes
|
|
|
|
* `read::FrameDescriptionEntry::unwind_info_for_address` now returns a reference
|
|
instead of cloning.
|
|
[#557](https://github.com/gimli-rs/gimli/pull/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](https://github.com/gimli-rs/gimli/pull/568)
|
|
[#569](https://github.com/gimli-rs/gimli/pull/569)
|
|
|
|
* Added `read::Unit::dwo_id`.
|
|
[#569](https://github.com/gimli-rs/gimli/pull/569)
|
|
|
|
### Changed
|
|
|
|
* `.debug_aranges` parsing now accepts version 3.
|
|
[#560](https://github.com/gimli-rs/gimli/pull/560)
|
|
|
|
* `read::Dwarf::attr_ranges_offset` and its callers now handle GNU split DWARF extensions.
|
|
[#568](https://github.com/gimli-rs/gimli/pull/568)
|
|
[#569](https://github.com/gimli-rs/gimli/pull/569)
|
|
|
|
### Added
|
|
|
|
* Added `read::DebugLineStr::new`.
|
|
[#556](https://github.com/gimli-rs/gimli/pull/556)
|
|
|
|
* Added `read::UnwindTable::into_current_row`.
|
|
[#557](https://github.com/gimli-rs/gimli/pull/557)
|
|
|
|
* Added more `DW_LANG` constants.
|
|
[#565](https://github.com/gimli-rs/gimli/pull/565)
|
|
|
|
* dwarfdump: added DWO parent support.
|
|
[#568](https://github.com/gimli-rs/gimli/pull/568)
|
|
|
|
* Added `read::Dwarf` methods: `ranges_offset_from_raw`, `raw_ranges`, and `raw_locations`.
|
|
[#568](https://github.com/gimli-rs/gimli/pull/568)
|
|
[#569](https://github.com/gimli-rs/gimli/pull/569)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.24.0
|
|
|
|
Released 2021/05/01.
|
|
|
|
### Breaking changes
|
|
|
|
* Minimum Rust version increased to 1.42.0.
|
|
|
|
* Added `read::Dwarf::debug_aranges`.
|
|
[#539](https://github.com/gimli-rs/gimli/pull/539)
|
|
|
|
* Replaced `read::DebugAranges::items` with `read::DebugAranges::headers`.
|
|
[#539](https://github.com/gimli-rs/gimli/pull/539)
|
|
|
|
* Added `read::Operation::Wasm*`.
|
|
[#546](https://github.com/gimli-rs/gimli/pull/546)
|
|
|
|
* `read::LineRow::line` now returns `Option<NonZeroU64>`.
|
|
The `read::ColumnType::Column` variant now contains a `NonZeroU64`.
|
|
[#551](https://github.com/gimli-rs/gimli/pull/551)
|
|
|
|
* Replaced `read::Dwarf::debug_str_sup` with `read::Dwarf::sup`.
|
|
Deleted `sup` parameter of `read::Dwarf::load`.
|
|
Added `read::Dwarf::load_sup`.
|
|
[#554](https://github.com/gimli-rs/gimli/pull/554)
|
|
|
|
### Added
|
|
|
|
* dwarfdump: Supplementary object file support.
|
|
[#552](https://github.com/gimli-rs/gimli/pull/552)
|
|
|
|
### Changed
|
|
|
|
* Support `DW_FORM_addrx*` for `DW_AT_low_pc`/`DW_AT_high_pc` in `read::Dwarf`.
|
|
[#541](https://github.com/gimli-rs/gimli/pull/541)
|
|
|
|
* Performance improvement in `EndianReader`.
|
|
[#549](https://github.com/gimli-rs/gimli/pull/549)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.23.0
|
|
|
|
Released 2020/10/27.
|
|
|
|
### Breaking changes
|
|
|
|
* Added more variants to `read::UnitType`.
|
|
Added `read::AttributeValue::DwoId`
|
|
[#521](https://github.com/gimli-rs/gimli/pull/521)
|
|
|
|
* Replaced `CompilationUnitHeader` and `TypeUnitHeader` with `UnitHeader`.
|
|
Replaced `CompilationUnitHeadersIter` with `DebugInfoUnitHeadersIter`.
|
|
Replaced `TypeUnitHeadersIter` with `DebugTypesUnitHeadersIter`.
|
|
[#523](https://github.com/gimli-rs/gimli/pull/523)
|
|
|
|
|
|
### Added
|
|
|
|
* Added read support for split DWARF.
|
|
[#527](https://github.com/gimli-rs/gimli/pull/527)
|
|
[#529](https://github.com/gimli-rs/gimli/pull/529)
|
|
|
|
* Added `read::Dwarf::attr_address`.
|
|
[#524](https://github.com/gimli-rs/gimli/pull/524)
|
|
|
|
* Added read support for `DW_AT_GNU_addr_base` and `DW_AT_GNU_ranges_base`.
|
|
[#525](https://github.com/gimli-rs/gimli/pull/525)
|
|
|
|
* dwarfdump: Display index values for attributes.
|
|
[#526](https://github.com/gimli-rs/gimli/pull/526)
|
|
|
|
* Added `name_to_register`.
|
|
[#532](https://github.com/gimli-rs/gimli/pull/532)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.22.0
|
|
|
|
Released 2020/07/03.
|
|
|
|
### Breaking changes
|
|
|
|
* Fixed `UnitHeader::size_of_header` for DWARF 5 units.
|
|
[#518](https://github.com/gimli-rs/gimli/pull/518)
|
|
|
|
### Added
|
|
|
|
* Added fuzz targets in CI.
|
|
[#512](https://github.com/gimli-rs/gimli/pull/512)
|
|
|
|
* Added read support for `DW_OP_GNU_addr_index` and `DW_OP_GNU_const_index`.
|
|
[#516](https://github.com/gimli-rs/gimli/pull/516)
|
|
|
|
* Added `.dwo` support to dwarfdump.
|
|
[#516](https://github.com/gimli-rs/gimli/pull/516)
|
|
|
|
* Added `SectionId::dwo_name` and `Section::dwo_section_name`.
|
|
[#517](https://github.com/gimli-rs/gimli/pull/517)
|
|
|
|
### Fixed
|
|
|
|
* Fixed panic when reading `DW_FORM_indirect` combined with `DW_FORM_implicit_const`.
|
|
[#502](https://github.com/gimli-rs/gimli/pull/502)
|
|
|
|
* Fixed panic for `read::Abbreviations::get(0)`.
|
|
[#505](https://github.com/gimli-rs/gimli/pull/505)
|
|
|
|
* Fixed arithmetic overflow when reading `.debug_line`.
|
|
[#508](https://github.com/gimli-rs/gimli/pull/508)
|
|
|
|
* Fixed arithmetic overflow when reading CFI.
|
|
[#509](https://github.com/gimli-rs/gimli/pull/509)
|
|
|
|
* Fixed arithmetic overflow and division by zero when reading `.debug_aranges`.
|
|
[#510](https://github.com/gimli-rs/gimli/pull/510)
|
|
|
|
* Don't return error from `read::Unit::new` when `DW_AT_name` or `DW_AT_comp_dir` is missing.
|
|
[#515](https://github.com/gimli-rs/gimli/pull/515)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.21.0
|
|
|
|
Released 2020/05/12.
|
|
|
|
### Breaking changes
|
|
|
|
* Minimum Rust version increased to 1.38.0.
|
|
|
|
* Replaced `read::Operation::Literal` with `Operation::UnsignedConstant` and `Operation::SignedConstant`.
|
|
Changed `read::Operation::Bra` and `read::Operation::Skip` to contain the target offset instead of the bytecode.
|
|
[#479](https://github.com/gimli-rs/gimli/pull/479)
|
|
|
|
* Changed `write::Expression` to support references. Existing users can convert to use `Expression::raw`.
|
|
[#479](https://github.com/gimli-rs/gimli/pull/479)
|
|
|
|
* Replaced `write::AttributeValue::AnyUnitEntryRef` with `DebugInfoRef`.
|
|
Renamed `write::AttributeValue::ThisUnitEntryRef` to `UnitRef`.
|
|
[#479](https://github.com/gimli-rs/gimli/pull/479)
|
|
|
|
* Added more optional features: `endian-reader` and `fallible-iterator`.
|
|
[#495](https://github.com/gimli-rs/gimli/pull/495)
|
|
[#498](https://github.com/gimli-rs/gimli/pull/498)
|
|
|
|
### Added
|
|
|
|
* Added `read::Expression::operations`
|
|
[#479](https://github.com/gimli-rs/gimli/pull/479)
|
|
|
|
### Fixed
|
|
|
|
* Fixed newlines in `dwarfdump` example.
|
|
[#470](https://github.com/gimli-rs/gimli/pull/470)
|
|
|
|
* Ignore zero terminators when reading `.debug_frame` sections.
|
|
[#486](https://github.com/gimli-rs/gimli/pull/486)
|
|
|
|
* Increase the number of CFI register rules supported by `read::UnwindContext`.
|
|
[#487](https://github.com/gimli-rs/gimli/pull/487)
|
|
|
|
* Fixed version handling and return register encoding when reading `.eh_frame` sections.
|
|
[#493](https://github.com/gimli-rs/gimli/pull/493)
|
|
|
|
### Changed
|
|
|
|
* Added `EhFrame` and `DebugFrame` to `write::Sections`.
|
|
[#492](https://github.com/gimli-rs/gimli/pull/492)
|
|
|
|
* Improved performance of `write::LineProgram::generate_row`.
|
|
[#476](https://github.com/gimli-rs/gimli/pull/476)
|
|
|
|
* Removed use of the `byteorder`, `arrayvec` and `smallvec` crates.
|
|
[#494](https://github.com/gimli-rs/gimli/pull/494)
|
|
[#496](https://github.com/gimli-rs/gimli/pull/496)
|
|
[#497](https://github.com/gimli-rs/gimli/pull/497)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.20.0
|
|
|
|
Released 2020/01/11.
|
|
|
|
### Breaking changes
|
|
|
|
* Changed type of `DwTag`, `DwAt`, and `DwForm` constants.
|
|
[#451](https://github.com/gimli-rs/gimli/pull/451)
|
|
|
|
* Added `read/write::AttributeValue::DebugMacroRef`, and returned where
|
|
required in `read::Attribute::value`. Added `SectionId::DebugMacro`.
|
|
[#454](https://github.com/gimli-rs/gimli/pull/454)
|
|
|
|
* Deleted `alloc` feature, and fixed `no-std` builds with stable rust.
|
|
[#459](https://github.com/gimli-rs/gimli/pull/459)
|
|
|
|
* Deleted `read::Error::description`, and changed `<read::Error as Display>`
|
|
to display what was previously the description.
|
|
[#462](https://github.com/gimli-rs/gimli/pull/462)
|
|
|
|
### Added
|
|
|
|
* Added GNU view constants.
|
|
[#434](https://github.com/gimli-rs/gimli/pull/434)
|
|
|
|
* Added `read::EntriesRaw` for low level DIE parsing.
|
|
[#455](https://github.com/gimli-rs/gimli/pull/455)
|
|
|
|
* Added `examples/simple-line.rs`.
|
|
[#460](https://github.com/gimli-rs/gimli/pull/460)
|
|
|
|
### Fixed
|
|
|
|
* Fixed handling of CFI augmentations without data.
|
|
[#438](https://github.com/gimli-rs/gimli/pull/438)
|
|
|
|
* dwarfdump: fix panic for malformed expressions.
|
|
[#447](https://github.com/gimli-rs/gimli/pull/447)
|
|
|
|
* dwarfdump: fix handling of Mach-O relocations.
|
|
[#449](https://github.com/gimli-rs/gimli/pull/449)
|
|
|
|
### Changed
|
|
|
|
* Improved abbreviation parsing performance.
|
|
[#451](https://github.com/gimli-rs/gimli/pull/451)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.19.0
|
|
|
|
Released 2019/07/08.
|
|
|
|
### Breaking changes
|
|
|
|
* Small API changes related to `.debug_loc` and `.debug_loclists`:
|
|
added `read::RawLocListEntry::AddressOrOffsetPair` enum variant,
|
|
added `write::Sections::debug_loc/debug_loclists` public members,
|
|
and replaced `write::AttributeValue::LocationListsRef` with `LocationListRef`.
|
|
[#425](https://github.com/gimli-rs/gimli/pull/425)
|
|
|
|
### Added
|
|
|
|
* Added `read::Attribute::exprloc_value` and `read::AttributeValue::exprloc_value`.
|
|
[#422](https://github.com/gimli-rs/gimli/pull/422)
|
|
|
|
* Added support for writing `.debug_loc` and `.debug_loclists` sections.
|
|
[#425](https://github.com/gimli-rs/gimli/pull/425)
|
|
|
|
* Added `-G` flag to `dwarfdump` example to display global offsets.
|
|
[#427](https://github.com/gimli-rs/gimli/pull/427)
|
|
|
|
* Added `examples/simple.rs`.
|
|
[#429](https://github.com/gimli-rs/gimli/pull/429)
|
|
|
|
### Fixed
|
|
|
|
* `write::LineProgram::from` no longer requires `DW_AT_name` or `DW_AT_comp_dir`
|
|
attributes to be present in the unit DIE.
|
|
[#430](https://github.com/gimli-rs/gimli/pull/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 default `Offset`
|
|
has changed from `usize` to `R::Offset`.
|
|
[#392](https://github.com/gimli-rs/gimli/pull/392)
|
|
|
|
* Added an `Offset` type parameter to the `read::Unit` type to allow variance.
|
|
[#393](https://github.com/gimli-rs/gimli/pull/393)
|
|
|
|
* Changed the `UninitializedUnwindContext::initialize` method to borrow `self`,
|
|
and return `&mut UnwindContext`. Deleted the `InitializedUnwindContext` type.
|
|
[#395](https://github.com/gimli-rs/gimli/pull/395)
|
|
|
|
* Deleted the `UnwindSection` type parameters from the `CommonInformationEntry`,
|
|
`FrameDescriptionEntry`, `UninitializedUnwindContext`,
|
|
`UnwindContext`, and `UnwindTable` types.
|
|
[#399](https://github.com/gimli-rs/gimli/pull/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](https://github.com/gimli-rs/gimli/pull/400)
|
|
|
|
* Reduced the number of lifetime parameters for the `UnwindTable` type.
|
|
[#400](https://github.com/gimli-rs/gimli/pull/400)
|
|
|
|
* Updated `fallible-iterator` to version 0.2.0.
|
|
[#407](https://github.com/gimli-rs/gimli/pull/407)
|
|
|
|
* Added a parameter to the `Error::UnexpectedEof` enum variant.
|
|
[#408](https://github.com/gimli-rs/gimli/pull/408)
|
|
|
|
### Added
|
|
|
|
* Update to 2018 edition.
|
|
[#391](https://github.com/gimli-rs/gimli/pull/391)
|
|
|
|
* Added the `FrameDescriptionEntry::unwind_info_for_address` method.
|
|
[#396](https://github.com/gimli-rs/gimli/pull/396)
|
|
|
|
* Added the `FrameDescriptionEntry::rows` method.
|
|
[#396](https://github.com/gimli-rs/gimli/pull/396)
|
|
|
|
* Added the `EhHdrTable::unwind_info_for_address` method.
|
|
[#400](https://github.com/gimli-rs/gimli/pull/400)
|
|
|
|
* Added the `EhHdrTable::fde_for_address` method and deprecated the
|
|
`EhHdrTable::lookup_and_parse` method.
|
|
[#400](https://github.com/gimli-rs/gimli/pull/400)
|
|
|
|
* Added the `EhHdrTable::pointer_to_offset` method.
|
|
[#400](https://github.com/gimli-rs/gimli/pull/400)
|
|
|
|
* Added the `UnwindSection::fde_for_address` method.
|
|
[#396](https://github.com/gimli-rs/gimli/pull/396)
|
|
|
|
* Added the `UnwindSection::fde_from_offset` method.
|
|
[#400](https://github.com/gimli-rs/gimli/pull/400)
|
|
|
|
* Added the `UnwindSection::partial_fde_from_offset` method.
|
|
[#400](https://github.com/gimli-rs/gimli/pull/400)
|
|
|
|
* Added the `Section::id` method.
|
|
[#406](https://github.com/gimli-rs/gimli/pull/406)
|
|
|
|
* Added the `Dwarf::load` method, and corresponding methods for individual sections.
|
|
[#406](https://github.com/gimli-rs/gimli/pull/406)
|
|
|
|
* Added the `Dwarf::borrow` method, and corresponding methods for individual sections.
|
|
[#406](https://github.com/gimli-rs/gimli/pull/406)
|
|
|
|
* Added the `Dwarf::format_error` method.
|
|
[#408](https://github.com/gimli-rs/gimli/pull/408)
|
|
|
|
* Added the `Dwarf::die_ranges` method.
|
|
[#417](https://github.com/gimli-rs/gimli/pull/417)
|
|
|
|
* Added the `Dwarf::unit_ranges` method.
|
|
[#417](https://github.com/gimli-rs/gimli/pull/417)
|
|
|
|
* Added support for writing `.debug_frame` and `.eh_frame` sections.
|
|
[#412](https://github.com/gimli-rs/gimli/pull/412)
|
|
[#419](https://github.com/gimli-rs/gimli/pull/419)
|
|
|
|
### Fixed
|
|
|
|
* The `code_alignment_factor` is now used when evaluating CFI instructions
|
|
that advance the location.
|
|
[#401](https://github.com/gimli-rs/gimli/pull/401)
|
|
|
|
* Fixed parsing of pointers encoded with `DW_EH_PE_funcrel`.
|
|
[#402](https://github.com/gimli-rs/gimli/pull/402)
|
|
|
|
* Use the FDE address encoding from the augmentation when parsing `DW_CFA_set_loc`.
|
|
[#403](https://github.com/gimli-rs/gimli/pull/403)
|
|
|
|
* Fixed setting of `.eh_frame` base addresses in dwarfdump.
|
|
[#410](https://github.com/gimli-rs/gimli/pull/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 of `u8`/`u64`.
|
|
[#328](https://github.com/gimli-rs/gimli/pull/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](https://github.com/gimli-rs/gimli/pull/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](https://github.com/gimli-rs/gimli/pull/359)
|
|
|
|
* Added `Offset` type parameter to `AttributeValue`, `LineProgram`,
|
|
`IncompleteLineProgram`, `CompleteLineProgram`, `LineRows`, `LineInstruction`,
|
|
and `FileEntry`.
|
|
[#324](https://github.com/gimli-rs/gimli/pull/324)
|
|
|
|
* Changed `FileEntry::path_name`, `FileEntry::directory`, and
|
|
`LineProgramHeader::directory` to return an `AttributeValue` instead
|
|
of a `Reader`.
|
|
[#366](https://github.com/gimli-rs/gimli/pull/366)
|
|
|
|
* Renamed `FileEntry::last_modification` to `FileEntry::timestamp`
|
|
and renamed `FileEntry::length` to `FileEntry::size`.
|
|
[#366](https://github.com/gimli-rs/gimli/pull/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](https://github.com/gimli-rs/gimli/pull/364)
|
|
|
|
* Changed return type of `LocationLists::new` and `RangeLists::new`.
|
|
[#370](https://github.com/gimli-rs/gimli/pull/370)
|
|
|
|
* Added parameters to `LocationsLists::locations` and `RangeLists::ranges`
|
|
to support `.debug_addr`.
|
|
[#358](https://github.com/gimli-rs/gimli/pull/358)
|
|
|
|
* Added more `AttributeValue` variants: `DebugAddrBase`, `DebugAddrIndex`,
|
|
`DebugLocListsBase`, `DebugLocListsIndex`, `DebugRngListsBase`, `DebugRngListsIndex`,
|
|
`DebugStrOffsetsBase`, `DebugStrOffsetsIndex`, `DebugLineStrRef`.
|
|
[#358](https://github.com/gimli-rs/gimli/pull/358)
|
|
|
|
* Changed `AttributeValue::Data*` attributes to native endian integers instead
|
|
of byte arrays.
|
|
[#365](https://github.com/gimli-rs/gimli/pull/365)
|
|
|
|
* Replaced `EvaluationResult::TextBase` with
|
|
`EvaluationResult::RequiresRelocatedAddress`. The handling of `TextBase`
|
|
was incorrect.
|
|
[#335](https://github.com/gimli-rs/gimli/pull/335)
|
|
|
|
* Added `EvaluationResult::IndexedAddress` for operations that require an
|
|
address from `.debug_addr`.
|
|
[#358](https://github.com/gimli-rs/gimli/pull/358)
|
|
|
|
* Added `Reader::read_slice`. Added a default implementation of
|
|
`Reader::read_u8_array` which uses this.
|
|
[#358](https://github.com/gimli-rs/gimli/pull/358)
|
|
|
|
### Added
|
|
|
|
* Added initial support for writing DWARF. This is targeted at supporting
|
|
line number information only.
|
|
[#340](https://github.com/gimli-rs/gimli/pull/340)
|
|
[#344](https://github.com/gimli-rs/gimli/pull/344)
|
|
[#346](https://github.com/gimli-rs/gimli/pull/346)
|
|
[#361](https://github.com/gimli-rs/gimli/pull/361)
|
|
[#362](https://github.com/gimli-rs/gimli/pull/362)
|
|
[#365](https://github.com/gimli-rs/gimli/pull/365)
|
|
[#368](https://github.com/gimli-rs/gimli/pull/368)
|
|
[#382](https://github.com/gimli-rs/gimli/pull/382)
|
|
|
|
* Added `read` and `write` Cargo features. Both are enabled by default.
|
|
[#343](https://github.com/gimli-rs/gimli/pull/343)
|
|
|
|
* Added support for reading DWARF 5 `.debug_line` and `.debug_line_str` sections.
|
|
[#366](https://github.com/gimli-rs/gimli/pull/366)
|
|
|
|
* Added support for reading DWARF 5 `.debug_str_offsets` sections, including
|
|
parsing `DW_FORM_strx*` attributes.
|
|
[#358](https://github.com/gimli-rs/gimli/pull/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](https://github.com/gimli-rs/gimli/pull/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](https://github.com/gimli-rs/gimli/pull/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](https://github.com/gimli-rs/gimli/pull/352)
|
|
[#380](https://github.com/gimli-rs/gimli/pull/380)
|
|
[#381](https://github.com/gimli-rs/gimli/pull/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](https://github.com/gimli-rs/gimli/pull/325)
|
|
|
|
* Added architecture specific definitions for `Register` values and names.
|
|
Changed dwarfdump to print them.
|
|
[#328](https://github.com/gimli-rs/gimli/pull/328)
|
|
|
|
* Added support for reading relocatable DWARF sections.
|
|
[#337](https://github.com/gimli-rs/gimli/pull/337)
|
|
|
|
* Added parsing of `DW_FORM_data16`.
|
|
[#366](https://github.com/gimli-rs/gimli/pull/366)
|
|
|
|
### Fixed
|
|
|
|
* Fixed parsing DWARF 5 ranges with `start == end == 0`.
|
|
[#323](https://github.com/gimli-rs/gimli/pull/323)
|
|
|
|
* Changed `LineRows` to be covariant in its `Reader` type parameter.
|
|
[#324](https://github.com/gimli-rs/gimli/pull/324)
|
|
|
|
* Fixed handling of empty units in dwarfdump.
|
|
[#330](https://github.com/gimli-rs/gimli/pull/330)
|
|
|
|
* Fixed `UnitHeader::length_including_self` for `Dwarf64`.
|
|
[#342](https://github.com/gimli-rs/gimli/pull/342)
|
|
|
|
* Fixed parsing of `DW_CFA_set_loc`.
|
|
[#355](https://github.com/gimli-rs/gimli/pull/355)
|
|
|
|
* Fixed handling of multiple headers in `.debug_loclists` and `.debug_rnglists`.
|
|
[#370](https://github.com/gimli-rs/gimli/pull/370)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.16.1
|
|
|
|
Released 2018/08/28.
|
|
|
|
### Added
|
|
|
|
* Added `EhFrameHdr::lookup_and_parse`. [#316][]
|
|
* Added support for `DW_CFA_GNU_args_size`. [#319][]
|
|
|
|
### Fixed
|
|
|
|
* Implement `Send`/`Sync` for `SubRange`. [#305][]
|
|
* Fixed `alloc` support on nightly. [#306][] [#310][]
|
|
|
|
[#305]: https://github.com/gimli-rs/gimli/pull/305
|
|
[#306]: https://github.com/gimli-rs/gimli/pull/306
|
|
[#310]: https://github.com/gimli-rs/gimli/pull/310
|
|
[#316]: https://github.com/gimli-rs/gimli/pull/316
|
|
[#319]: https://github.com/gimli-rs/gimli/pull/319
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.16.0
|
|
|
|
Released 2018/06/01.
|
|
|
|
### Added
|
|
|
|
* Added support for building in `#![no_std]` environments, when the `alloc`
|
|
crate is available. Disable the "std" feature and enable the "alloc"
|
|
feature. [#138][] [#271][]
|
|
|
|
* Added support for DWARF 5 `.debug_rnglists` and `.debug_loclists`
|
|
sections. [#272][]
|
|
|
|
* Added support for DWARF 5 `DW_FORM_ref_sup` and `DW_FORM_strp_sup` attribute
|
|
forms. [#288][]
|
|
|
|
* Added support for DWARF 5 operations on typed values. [#293][]
|
|
|
|
* A `dwarf-validate` example program that checks the integrity of the given
|
|
DWARF and its references between sections. [#290][]
|
|
|
|
* Added the `EndianReader<T>` type, an easy way to define a custom `Reader`
|
|
implementation with a reference to a generic buffer of bytes and an associated
|
|
endianity. [#298][] [#302][]
|
|
|
|
### Changed
|
|
|
|
* Various speed improvements for evaluating `.debug_line` line number
|
|
programs. [#276][]
|
|
|
|
* The example `dwarfdump` clone is a [whole lot faster
|
|
now][dwarfdump-faster]. [#282][] [#284][] [#285][]
|
|
|
|
### Deprecated
|
|
|
|
* `EndianBuf` has been renamed to `EndianSlice`, use that name instead. [#295][]
|
|
|
|
### Fixed
|
|
|
|
* Evaluating the `DW_CFA_restore_state` opcode properly maintains the current
|
|
location. Previously it would incorrectly restore the old location when
|
|
popping from evaluation stack. [#274][]
|
|
|
|
[#271]: https://github.com/gimli-rs/gimli/issues/271
|
|
[#138]: https://github.com/gimli-rs/gimli/issues/138
|
|
[#274]: https://github.com/gimli-rs/gimli/issues/274
|
|
[#272]: https://github.com/gimli-rs/gimli/issues/272
|
|
[#276]: https://github.com/gimli-rs/gimli/issues/276
|
|
[#282]: https://github.com/gimli-rs/gimli/issues/282
|
|
[#285]: https://github.com/gimli-rs/gimli/issues/285
|
|
[#284]: https://github.com/gimli-rs/gimli/issues/284
|
|
[#288]: https://github.com/gimli-rs/gimli/issues/288
|
|
[#290]: https://github.com/gimli-rs/gimli/issues/290
|
|
[#293]: https://github.com/gimli-rs/gimli/issues/293
|
|
[#295]: https://github.com/gimli-rs/gimli/issues/295
|
|
[#298]: https://github.com/gimli-rs/gimli/issues/298
|
|
[#302]: https://github.com/gimli-rs/gimli/issues/302
|
|
[dwarfdump-faster]: https://robert.ocallahan.org/2018/03/speeding-up-dwarfdump-with-rust.html
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 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 example `dwarfdump`
|
|
clone. [#241][]
|
|
|
|
* Added support for parsing the `.eh_frame_hdr` section. On Linux, the
|
|
`.eh_frame_hdr` section provides a pointer to the already-mapped-in-memory
|
|
`.eh_frame` data, so that it doesn't need to be duplicated, and a binary
|
|
search table of its entries for faster unwinding information lookups. [#250][]
|
|
|
|
* Added support for parsing DWARF 5 compilation unit headers. [#257][]
|
|
|
|
* Added support for DWARF 5's `DW_FORM_implicit_const`. [#257][]
|
|
|
|
### Changed
|
|
|
|
* Unwinding methods now give ownership of the unwinding context back to the
|
|
caller if errors are encountered, not just on the success path. This allows
|
|
recovering from errors in signal-safe code, where constructing a new unwinding
|
|
context is not an option because it requires allocation. This is a **breaking
|
|
change** affecting `UnwindSection::unwind_info_for_address` and
|
|
`UninitializedUnwindContext::initialize`. [#241][]
|
|
|
|
* `CfaRule` and `RegisterRule` now expose their `DW_OP` expressions as
|
|
`Expression`. This is a minor **breaking change**. [#241][]
|
|
|
|
* The `Error::UnknownVersion` variant now contains the unknown version
|
|
number. This is a minor **breaking change**. [#245][]
|
|
|
|
* `EvaluationResult::RequiresEntryValue` requires an `Expression` instead of a
|
|
`Reader` now. This is a minor **breaking change**. [#256][]
|
|
|
|
|
|
[#233]: https://github.com/gimli-rs/gimli/pull/233
|
|
[#234]: https://github.com/gimli-rs/gimli/pull/234
|
|
[#237]: https://github.com/gimli-rs/gimli/pull/237
|
|
[#241]: https://github.com/gimli-rs/gimli/pull/241
|
|
[#245]: https://github.com/gimli-rs/gimli/pull/245
|
|
[#250]: https://github.com/gimli-rs/gimli/pull/250
|
|
[#256]: https://github.com/gimli-rs/gimli/pull/256
|
|
[#257]: https://github.com/gimli-rs/gimli/pull/257
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## 0.14.0
|
|
|
|
Released 2017/08/08.
|
|
|
|
### Added
|
|
|
|
* All `pub` types now `derive(Hash)`. [#192][]
|
|
|
|
* All the constants from DWARF 5 are now defined. [#193][]
|
|
|
|
* Added support for the `DW_OP_GNU_parameter_ref` GNU extension to parsing and
|
|
evaluation DWARF opcodes. [#208][]
|
|
|
|
* Improved LEB128 parsing performance. [#216][]
|
|
|
|
* Improved `.debug_{aranges,pubnames,pubtypes}` parsing performance. [#218][]
|
|
|
|
* Added the ability to choose endianity dynamically at run time, rather than
|
|
only statically at compile time. [#219][]
|
|
|
|
### Changed
|
|
|
|
* The biggest change of this release is that `gimli` no longer requires the
|
|
object file's section be fully loaded into memory. This enables using `gimli`
|
|
on 32 bit platforms where there often isn't enough contiguous virtual memory
|
|
address space to load debugging information into. The default behavior is
|
|
still geared for 64 bit platforms, where address space overfloweth, and you
|
|
can still load the whole sections of the object file (or the entire object
|
|
file) into memory. This is abstracted over with the `gimli::Reader`
|
|
trait. This manifests as small (but many) breaking changes to much of the
|
|
public API. [#182][]
|
|
|
|
### Fixed
|
|
|
|
* The `DW_END_*` constants for defining endianity of a compilation unit were
|
|
previously incorrect. [#193][]
|
|
|
|
* The `DW_OP_addr` opcode is relative to the base address of the `.text` section
|
|
of the binary, but we were incorrectly treating it as an absolute value. [#210][]
|
|
|
|
[GitHub]: https://github.com/gimli-rs/gimli
|
|
[crates.io]: https://crates.io/crates/gimli
|
|
[contributing]: https://github.com/gimli-rs/gimli/blob/master/CONTRIBUTING.md
|
|
[easy]: https://github.com/gimli-rs/gimli/issues?q=is%3Aopen+is%3Aissue+label%3Aeasy
|
|
[#192]: https://github.com/gimli-rs/gimli/pull/192
|
|
[#193]: https://github.com/gimli-rs/gimli/pull/193
|
|
[#182]: https://github.com/gimli-rs/gimli/issues/182
|
|
[#208]: https://github.com/gimli-rs/gimli/pull/208
|
|
[#210]: https://github.com/gimli-rs/gimli/pull/210
|
|
[#216]: https://github.com/gimli-rs/gimli/pull/216
|
|
[#218]: https://github.com/gimli-rs/gimli/pull/218
|
|
[#219]: https://github.com/gimli-rs/gimli/pull/219
|