1# `gimli` Change Log 2 3-------------------------------------------------------------------------------- 4 5## 0.26.1 6 7Released 2021/11/02. 8 9### Changed 10 11* Fixed segmentation fault in `ArrayVec<Vec<T>>::into_vec`, which may be used by 12 `read::Evaluation::result`. This regression was introduced in 0.26.0. 13 [#601](https://github.com/gimli-rs/gimli/pull/601) 14 15-------------------------------------------------------------------------------- 16 17## 0.26.0 18 19Released 2021/10/24. 20 21### Breaking changes 22 23* Removed `read::UninitializedUnwindContext`. Use `Box<UnwindContext>` instead. 24 [#593](https://github.com/gimli-rs/gimli/pull/593) 25 26* Renamed `read::Error::CfiStackFull` to `StackFull`. 27 [#595](https://github.com/gimli-rs/gimli/pull/595) 28 29* Added `UnwindContextStorage` type parameter to `read::UnwindContext`, `read::UnwindTable`, 30 `read::UnwindTableRow`, and `read::RegisterRuleMap`. 31 [#595](https://github.com/gimli-rs/gimli/pull/595) 32 33* Added `EvaluationStorage` type parameter to `read::Evaluation`. 34 [#595](https://github.com/gimli-rs/gimli/pull/595) 35 36* Added `read::SectionId::DebugCuIndex` and `read::SectionId::DebugTuIndex`. 37 [#588](https://github.com/gimli-rs/gimli/pull/588) 38 39### Changed 40 41* Fixed `DW_EH_PE_pcrel` handling in default `write::Writer::write_eh_pointer` implementation. 42 [#576](https://github.com/gimli-rs/gimli/pull/576) 43 44* Fixed `read::AttributeSpecification::size` for some forms. 45 [#597](https://github.com/gimli-rs/gimli/pull/597) 46 47* Display more unit details in dwarfdump. 48 [#584](https://github.com/gimli-rs/gimli/pull/584) 49 50### Added 51 52* Added `write::DebuggingInformationEntry::delete_child`. 53 [#570](https://github.com/gimli-rs/gimli/pull/570) 54 55* Added ARM and AArch64 register definitions. 56 [#574](https://github.com/gimli-rs/gimli/pull/574) 57 [#577](https://github.com/gimli-rs/gimli/pull/577) 58 59* Added RISC-V register definitions. 60 [#579](https://github.com/gimli-rs/gimli/pull/579) 61 62* Added `read::DwarfPackage`, `read::DebugCuIndex`, and `read::DebugTuIndex`. 63 [#588](https://github.com/gimli-rs/gimli/pull/588) 64 65* Added `read-core` feature to allow building without `liballoc`. 66 [#596](https://github.com/gimli-rs/gimli/pull/596) 67 68* Added `read::EntriesRaw::skip_attributes`. 69 [#597](https://github.com/gimli-rs/gimli/pull/597) 70 71-------------------------------------------------------------------------------- 72 73## 0.25.0 74 75Released 2021/07/26. 76 77### Breaking changes 78 79* `read::FrameDescriptionEntry::unwind_info_for_address` now returns a reference 80 instead of cloning. 81 [#557](https://github.com/gimli-rs/gimli/pull/557) 82 83* `read::AttributeValue::RangeListsRef` now contains a `RawRangeListsOffset` 84 to allow handling of GNU split DWARF extensions. 85 Use `read::Dwarf::ranges_offset_from_raw` to handle it. 86 [#568](https://github.com/gimli-rs/gimli/pull/568) 87 [#569](https://github.com/gimli-rs/gimli/pull/569) 88 89* Added `read::Unit::dwo_id`. 90 [#569](https://github.com/gimli-rs/gimli/pull/569) 91 92### Changed 93 94* `.debug_aranges` parsing now accepts version 3. 95 [#560](https://github.com/gimli-rs/gimli/pull/560) 96 97* `read::Dwarf::attr_ranges_offset` and its callers now handle GNU split DWARF extensions. 98 [#568](https://github.com/gimli-rs/gimli/pull/568) 99 [#569](https://github.com/gimli-rs/gimli/pull/569) 100 101### Added 102 103* Added `read::DebugLineStr::new`. 104 [#556](https://github.com/gimli-rs/gimli/pull/556) 105 106* Added `read::UnwindTable::into_current_row`. 107 [#557](https://github.com/gimli-rs/gimli/pull/557) 108 109* Added more `DW_LANG` constants. 110 [#565](https://github.com/gimli-rs/gimli/pull/565) 111 112* dwarfdump: added DWO parent support. 113 [#568](https://github.com/gimli-rs/gimli/pull/568) 114 115* Added `read::Dwarf` methods: `ranges_offset_from_raw`, `raw_ranges`, and `raw_locations`. 116 [#568](https://github.com/gimli-rs/gimli/pull/568) 117 [#569](https://github.com/gimli-rs/gimli/pull/569) 118 119-------------------------------------------------------------------------------- 120 121## 0.24.0 122 123Released 2021/05/01. 124 125### Breaking changes 126 127* Minimum Rust version increased to 1.42.0. 128 129* Added `read::Dwarf::debug_aranges`. 130 [#539](https://github.com/gimli-rs/gimli/pull/539) 131 132* Replaced `read::DebugAranges::items` with `read::DebugAranges::headers`. 133 [#539](https://github.com/gimli-rs/gimli/pull/539) 134 135* Added `read::Operation::Wasm*`. 136 [#546](https://github.com/gimli-rs/gimli/pull/546) 137 138* `read::LineRow::line` now returns `Option<NonZeroU64>`. 139 The `read::ColumnType::Column` variant now contains a `NonZeroU64`. 140 [#551](https://github.com/gimli-rs/gimli/pull/551) 141 142* Replaced `read::Dwarf::debug_str_sup` with `read::Dwarf::sup`. 143 Deleted `sup` parameter of `read::Dwarf::load`. 144 Added `read::Dwarf::load_sup`. 145 [#554](https://github.com/gimli-rs/gimli/pull/554) 146 147### Added 148 149* dwarfdump: Supplementary object file support. 150 [#552](https://github.com/gimli-rs/gimli/pull/552) 151 152### Changed 153 154* Support `DW_FORM_addrx*` for `DW_AT_low_pc`/`DW_AT_high_pc` in `read::Dwarf`. 155 [#541](https://github.com/gimli-rs/gimli/pull/541) 156 157* Performance improvement in `EndianReader`. 158 [#549](https://github.com/gimli-rs/gimli/pull/549) 159 160-------------------------------------------------------------------------------- 161 162## 0.23.0 163 164Released 2020/10/27. 165 166### Breaking changes 167 168* Added more variants to `read::UnitType`. 169 Added `read::AttributeValue::DwoId` 170 [#521](https://github.com/gimli-rs/gimli/pull/521) 171 172* Replaced `CompilationUnitHeader` and `TypeUnitHeader` with `UnitHeader`. 173 Replaced `CompilationUnitHeadersIter` with `DebugInfoUnitHeadersIter`. 174 Replaced `TypeUnitHeadersIter` with `DebugTypesUnitHeadersIter`. 175 [#523](https://github.com/gimli-rs/gimli/pull/523) 176 177 178### Added 179 180* Added read support for split DWARF. 181 [#527](https://github.com/gimli-rs/gimli/pull/527) 182 [#529](https://github.com/gimli-rs/gimli/pull/529) 183 184* Added `read::Dwarf::attr_address`. 185 [#524](https://github.com/gimli-rs/gimli/pull/524) 186 187* Added read support for `DW_AT_GNU_addr_base` and `DW_AT_GNU_ranges_base`. 188 [#525](https://github.com/gimli-rs/gimli/pull/525) 189 190* dwarfdump: Display index values for attributes. 191 [#526](https://github.com/gimli-rs/gimli/pull/526) 192 193* Added `name_to_register`. 194 [#532](https://github.com/gimli-rs/gimli/pull/532) 195 196-------------------------------------------------------------------------------- 197 198## 0.22.0 199 200Released 2020/07/03. 201 202### Breaking changes 203 204* Fixed `UnitHeader::size_of_header` for DWARF 5 units. 205 [#518](https://github.com/gimli-rs/gimli/pull/518) 206 207### Added 208 209* Added fuzz targets in CI. 210 [#512](https://github.com/gimli-rs/gimli/pull/512) 211 212* Added read support for `DW_OP_GNU_addr_index` and `DW_OP_GNU_const_index`. 213 [#516](https://github.com/gimli-rs/gimli/pull/516) 214 215* Added `.dwo` support to dwarfdump. 216 [#516](https://github.com/gimli-rs/gimli/pull/516) 217 218* Added `SectionId::dwo_name` and `Section::dwo_section_name`. 219 [#517](https://github.com/gimli-rs/gimli/pull/517) 220 221### Fixed 222 223* Fixed panic when reading `DW_FORM_indirect` combined with `DW_FORM_implicit_const`. 224 [#502](https://github.com/gimli-rs/gimli/pull/502) 225 226* Fixed panic for `read::Abbreviations::get(0)`. 227 [#505](https://github.com/gimli-rs/gimli/pull/505) 228 229* Fixed arithmetic overflow when reading `.debug_line`. 230 [#508](https://github.com/gimli-rs/gimli/pull/508) 231 232* Fixed arithmetic overflow when reading CFI. 233 [#509](https://github.com/gimli-rs/gimli/pull/509) 234 235* Fixed arithmetic overflow and division by zero when reading `.debug_aranges`. 236 [#510](https://github.com/gimli-rs/gimli/pull/510) 237 238* Don't return error from `read::Unit::new` when `DW_AT_name` or `DW_AT_comp_dir` is missing. 239 [#515](https://github.com/gimli-rs/gimli/pull/515) 240 241-------------------------------------------------------------------------------- 242 243## 0.21.0 244 245Released 2020/05/12. 246 247### Breaking changes 248 249* Minimum Rust version increased to 1.38.0. 250 251* Replaced `read::Operation::Literal` with `Operation::UnsignedConstant` and `Operation::SignedConstant`. 252 Changed `read::Operation::Bra` and `read::Operation::Skip` to contain the target offset instead of the bytecode. 253 [#479](https://github.com/gimli-rs/gimli/pull/479) 254 255* Changed `write::Expression` to support references. Existing users can convert to use `Expression::raw`. 256 [#479](https://github.com/gimli-rs/gimli/pull/479) 257 258* Replaced `write::AttributeValue::AnyUnitEntryRef` with `DebugInfoRef`. 259 Renamed `write::AttributeValue::ThisUnitEntryRef` to `UnitRef`. 260 [#479](https://github.com/gimli-rs/gimli/pull/479) 261 262* Added more optional features: `endian-reader` and `fallible-iterator`. 263 [#495](https://github.com/gimli-rs/gimli/pull/495) 264 [#498](https://github.com/gimli-rs/gimli/pull/498) 265 266### Added 267 268* Added `read::Expression::operations` 269 [#479](https://github.com/gimli-rs/gimli/pull/479) 270 271### Fixed 272 273* Fixed newlines in `dwarfdump` example. 274 [#470](https://github.com/gimli-rs/gimli/pull/470) 275 276* Ignore zero terminators when reading `.debug_frame` sections. 277 [#486](https://github.com/gimli-rs/gimli/pull/486) 278 279* Increase the number of CFI register rules supported by `read::UnwindContext`. 280 [#487](https://github.com/gimli-rs/gimli/pull/487) 281 282* Fixed version handling and return register encoding when reading `.eh_frame` sections. 283 [#493](https://github.com/gimli-rs/gimli/pull/493) 284 285### Changed 286 287* Added `EhFrame` and `DebugFrame` to `write::Sections`. 288 [#492](https://github.com/gimli-rs/gimli/pull/492) 289 290* Improved performance of `write::LineProgram::generate_row`. 291 [#476](https://github.com/gimli-rs/gimli/pull/476) 292 293* Removed use of the `byteorder`, `arrayvec` and `smallvec` crates. 294 [#494](https://github.com/gimli-rs/gimli/pull/494) 295 [#496](https://github.com/gimli-rs/gimli/pull/496) 296 [#497](https://github.com/gimli-rs/gimli/pull/497) 297 298-------------------------------------------------------------------------------- 299 300## 0.20.0 301 302Released 2020/01/11. 303 304### Breaking changes 305 306* Changed type of `DwTag`, `DwAt`, and `DwForm` constants. 307 [#451](https://github.com/gimli-rs/gimli/pull/451) 308 309* Added `read/write::AttributeValue::DebugMacroRef`, and returned where 310 required in `read::Attribute::value`. Added `SectionId::DebugMacro`. 311 [#454](https://github.com/gimli-rs/gimli/pull/454) 312 313* Deleted `alloc` feature, and fixed `no-std` builds with stable rust. 314 [#459](https://github.com/gimli-rs/gimli/pull/459) 315 316* Deleted `read::Error::description`, and changed `<read::Error as Display>` 317 to display what was previously the description. 318 [#462](https://github.com/gimli-rs/gimli/pull/462) 319 320### Added 321 322* Added GNU view constants. 323 [#434](https://github.com/gimli-rs/gimli/pull/434) 324 325* Added `read::EntriesRaw` for low level DIE parsing. 326 [#455](https://github.com/gimli-rs/gimli/pull/455) 327 328* Added `examples/simple-line.rs`. 329 [#460](https://github.com/gimli-rs/gimli/pull/460) 330 331### Fixed 332 333* Fixed handling of CFI augmentations without data. 334 [#438](https://github.com/gimli-rs/gimli/pull/438) 335 336* dwarfdump: fix panic for malformed expressions. 337 [#447](https://github.com/gimli-rs/gimli/pull/447) 338 339* dwarfdump: fix handling of Mach-O relocations. 340 [#449](https://github.com/gimli-rs/gimli/pull/449) 341 342### Changed 343 344* Improved abbreviation parsing performance. 345 [#451](https://github.com/gimli-rs/gimli/pull/451) 346 347-------------------------------------------------------------------------------- 348 349## 0.19.0 350 351Released 2019/07/08. 352 353### Breaking changes 354 355* Small API changes related to `.debug_loc` and `.debug_loclists`: 356 added `read::RawLocListEntry::AddressOrOffsetPair` enum variant, 357 added `write::Sections::debug_loc/debug_loclists` public members, 358 and replaced `write::AttributeValue::LocationListsRef` with `LocationListRef`. 359 [#425](https://github.com/gimli-rs/gimli/pull/425) 360 361### Added 362 363* Added `read::Attribute::exprloc_value` and `read::AttributeValue::exprloc_value`. 364 [#422](https://github.com/gimli-rs/gimli/pull/422) 365 366* Added support for writing `.debug_loc` and `.debug_loclists` sections. 367 [#425](https://github.com/gimli-rs/gimli/pull/425) 368 369* Added `-G` flag to `dwarfdump` example to display global offsets. 370 [#427](https://github.com/gimli-rs/gimli/pull/427) 371 372* Added `examples/simple.rs`. 373 [#429](https://github.com/gimli-rs/gimli/pull/429) 374 375### Fixed 376 377* `write::LineProgram::from` no longer requires `DW_AT_name` or `DW_AT_comp_dir` 378 attributes to be present in the unit DIE. 379 [#430](https://github.com/gimli-rs/gimli/pull/430) 380 381-------------------------------------------------------------------------------- 382 383## 0.18.0 384 385Released 2019/04/25. 386 387The focus of this release has been on improving support for reading CFI, 388and adding support for writing CFI. 389 390### Breaking changes 391 392* For types which have an `Offset` type parameter, the default `Offset` 393 has changed from `usize` to `R::Offset`. 394 [#392](https://github.com/gimli-rs/gimli/pull/392) 395 396* Added an `Offset` type parameter to the `read::Unit` type to allow variance. 397 [#393](https://github.com/gimli-rs/gimli/pull/393) 398 399* Changed the `UninitializedUnwindContext::initialize` method to borrow `self`, 400 and return `&mut UnwindContext`. Deleted the `InitializedUnwindContext` type. 401 [#395](https://github.com/gimli-rs/gimli/pull/395) 402 403* Deleted the `UnwindSection` type parameters from the `CommonInformationEntry`, 404 `FrameDescriptionEntry`, `UninitializedUnwindContext`, 405 `UnwindContext`, and `UnwindTable` types. 406 [#399](https://github.com/gimli-rs/gimli/pull/399) 407 408* Changed the signature of the `get_cie` callback parameter for various functions. 409 The signature now matches the `UnwindSection::cie_from_offset` method, so 410 that method can be used as the parameter. 411 [#400](https://github.com/gimli-rs/gimli/pull/400) 412 413* Reduced the number of lifetime parameters for the `UnwindTable` type. 414 [#400](https://github.com/gimli-rs/gimli/pull/400) 415 416* Updated `fallible-iterator` to version 0.2.0. 417 [#407](https://github.com/gimli-rs/gimli/pull/407) 418 419* Added a parameter to the `Error::UnexpectedEof` enum variant. 420 [#408](https://github.com/gimli-rs/gimli/pull/408) 421 422### Added 423 424* Update to 2018 edition. 425 [#391](https://github.com/gimli-rs/gimli/pull/391) 426 427* Added the `FrameDescriptionEntry::unwind_info_for_address` method. 428 [#396](https://github.com/gimli-rs/gimli/pull/396) 429 430* Added the `FrameDescriptionEntry::rows` method. 431 [#396](https://github.com/gimli-rs/gimli/pull/396) 432 433* Added the `EhHdrTable::unwind_info_for_address` method. 434 [#400](https://github.com/gimli-rs/gimli/pull/400) 435 436* Added the `EhHdrTable::fde_for_address` method and deprecated the 437 `EhHdrTable::lookup_and_parse` method. 438 [#400](https://github.com/gimli-rs/gimli/pull/400) 439 440* Added the `EhHdrTable::pointer_to_offset` method. 441 [#400](https://github.com/gimli-rs/gimli/pull/400) 442 443* Added the `UnwindSection::fde_for_address` method. 444 [#396](https://github.com/gimli-rs/gimli/pull/396) 445 446* Added the `UnwindSection::fde_from_offset` method. 447 [#400](https://github.com/gimli-rs/gimli/pull/400) 448 449* Added the `UnwindSection::partial_fde_from_offset` method. 450 [#400](https://github.com/gimli-rs/gimli/pull/400) 451 452* Added the `Section::id` method. 453 [#406](https://github.com/gimli-rs/gimli/pull/406) 454 455* Added the `Dwarf::load` method, and corresponding methods for individual sections. 456 [#406](https://github.com/gimli-rs/gimli/pull/406) 457 458* Added the `Dwarf::borrow` method, and corresponding methods for individual sections. 459 [#406](https://github.com/gimli-rs/gimli/pull/406) 460 461* Added the `Dwarf::format_error` method. 462 [#408](https://github.com/gimli-rs/gimli/pull/408) 463 464* Added the `Dwarf::die_ranges` method. 465 [#417](https://github.com/gimli-rs/gimli/pull/417) 466 467* Added the `Dwarf::unit_ranges` method. 468 [#417](https://github.com/gimli-rs/gimli/pull/417) 469 470* Added support for writing `.debug_frame` and `.eh_frame` sections. 471 [#412](https://github.com/gimli-rs/gimli/pull/412) 472 [#419](https://github.com/gimli-rs/gimli/pull/419) 473 474### Fixed 475 476* The `code_alignment_factor` is now used when evaluting CFI instructions 477 that advance the location. 478 [#401](https://github.com/gimli-rs/gimli/pull/401) 479 480* Fixed parsing of pointers encoded with `DW_EH_PE_funcrel`. 481 [#402](https://github.com/gimli-rs/gimli/pull/402) 482 483* Use the FDE address encoding from the augmentation when parsing `DW_CFA_set_loc`. 484 [#403](https://github.com/gimli-rs/gimli/pull/403) 485 486* Fixed setting of `.eh_frame` base addresses in dwarfdump. 487 [#410](https://github.com/gimli-rs/gimli/pull/410) 488 489## 0.17.0 490 491Released 2019/02/21. 492 493The focus of this release has been on improving DWARF 5 support, and 494adding support for writing DWARF. 495 496### Breaking changes 497 498* Changed register values to a `Register` type instead of `u8`/`u64`. 499 [#328](https://github.com/gimli-rs/gimli/pull/328) 500 501* Replaced `BaseAddresses::set_cfi` with `set_eh_frame_hdr` and `set_eh_frame`. 502 Replaced `BaseAddresses::set_data` with `set_got`. 503 You should now use the same `BaseAddresses` value for parsing both 504 `.eh_frame` and `.eh_frame_hdr`. 505 [#351](https://github.com/gimli-rs/gimli/pull/351) 506 507* Renamed many types and functions related to `.debug_line`. 508 Renamed `LineNumberProgram` to `LineProgram`. 509 Renamed `IncompleteLineNumberProgram` to `IncompleteLineProgram`. 510 Renamed `CompleteLineNumberProgram` to `CompleteLineProgram`. 511 Renamed `LineNumberProgramHeader` to `LineProgramHeader`. 512 Renamed `LineNumberRow` to `LineRow`. 513 Renamed `StateMachine` to `LineRows`. 514 Renamed `Opcode` to `LineInstruction`. 515 Renamed `OpcodesIter` to `LineInstructions`. 516 Renamed `LineNumberSequence` to `LineSequence`. 517 [#359](https://github.com/gimli-rs/gimli/pull/359) 518 519* Added `Offset` type parameter to `AttributeValue`, `LineProgram`, 520 `IncompleteLineProgram`, `CompleteLineProgram`, `LineRows`, `LineInstruction`, 521 and `FileEntry`. 522 [#324](https://github.com/gimli-rs/gimli/pull/324) 523 524* Changed `FileEntry::path_name`, `FileEntry::directory`, and 525 `LineProgramHeader::directory` to return an `AttributeValue` instead 526 of a `Reader`. 527 [#366](https://github.com/gimli-rs/gimli/pull/366) 528 529* Renamed `FileEntry::last_modification` to `FileEntry::timestamp` 530 and renamed `FileEntry::length` to `FileEntry::size`. 531 [#366](https://github.com/gimli-rs/gimli/pull/366) 532 533* Added an `Encoding` type. Changed many functions that previously accepted 534 `Format`, version or address size parameters to accept an `Encoding` 535 parameter instead. 536 Notable changes are `LocationLists::locations`, `RangeLists::ranges`, 537 and `Expression::evaluation`. 538 [#364](https://github.com/gimli-rs/gimli/pull/364) 539 540* Changed return type of `LocationLists::new` and `RangeLists::new`. 541 [#370](https://github.com/gimli-rs/gimli/pull/370) 542 543* Added parameters to `LocationsLists::locations` and `RangeLists::ranges` 544 to support `.debug_addr`. 545 [#358](https://github.com/gimli-rs/gimli/pull/358) 546 547* Added more `AttributeValue` variants: `DebugAddrBase`, `DebugAddrIndex`, 548 `DebugLocListsBase`, `DebugLocListsIndex`, `DebugRngListsBase`, `DebugRngListsIndex`, 549 `DebugStrOffsetsBase`, `DebugStrOffsetsIndex`, `DebugLineStrRef`. 550 [#358](https://github.com/gimli-rs/gimli/pull/358) 551 552* Changed `AttributeValue::Data*` attributes to native endian integers instead 553 of byte arrays. 554 [#365](https://github.com/gimli-rs/gimli/pull/365) 555 556* Replaced `EvaluationResult::TextBase` with 557 `EvaluationResult::RequiresRelocatedAddress`. The handling of `TextBase` 558 was incorrect. 559 [#335](https://github.com/gimli-rs/gimli/pull/335) 560 561* Added `EvaluationResult::IndexedAddress` for operations that require an 562 address from `.debug_addr`. 563 [#358](https://github.com/gimli-rs/gimli/pull/358) 564 565* Added `Reader::read_slice`. Added a default implementation of 566 `Reader::read_u8_array` which uses this. 567 [#358](https://github.com/gimli-rs/gimli/pull/358) 568 569### Added 570 571* Added initial support for writing DWARF. This is targeted at supporting 572 line number information only. 573 [#340](https://github.com/gimli-rs/gimli/pull/340) 574 [#344](https://github.com/gimli-rs/gimli/pull/344) 575 [#346](https://github.com/gimli-rs/gimli/pull/346) 576 [#361](https://github.com/gimli-rs/gimli/pull/361) 577 [#362](https://github.com/gimli-rs/gimli/pull/362) 578 [#365](https://github.com/gimli-rs/gimli/pull/365) 579 [#368](https://github.com/gimli-rs/gimli/pull/368) 580 [#382](https://github.com/gimli-rs/gimli/pull/382) 581 582* Added `read` and `write` Cargo features. Both are enabled by default. 583 [#343](https://github.com/gimli-rs/gimli/pull/343) 584 585* Added support for reading DWARF 5 `.debug_line` and `.debug_line_str` sections. 586 [#366](https://github.com/gimli-rs/gimli/pull/366) 587 588* Added support for reading DWARF 5 `.debug_str_offsets` sections, including 589 parsing `DW_FORM_strx*` attributes. 590 [#358](https://github.com/gimli-rs/gimli/pull/358) 591 592* Added support for reading DWARF 5 `.debug_addr` sections, including parsing 593 `DW_FORM_addrx*` attributes and evaluating `DW_OP_addrx` and `DW_OP_constx` 594 operations. 595 [#358](https://github.com/gimli-rs/gimli/pull/358) 596 597* Added support for reading DWARF 5 indexed addresses and offsets in 598 `.debug_loclists` and `.debug_rnglists`, including parsing `DW_FORM_rnglistx` 599 and `DW_FORM_loclistx` attributes. 600 [#358](https://github.com/gimli-rs/gimli/pull/358) 601 602* Added high level `Dwarf` and `Unit` types. Existing code does not need to 603 switch to using these types, but doing so will make DWARF 5 support simpler. 604 [#352](https://github.com/gimli-rs/gimli/pull/352) 605 [#380](https://github.com/gimli-rs/gimli/pull/380) 606 [#381](https://github.com/gimli-rs/gimli/pull/381) 607 608* Added `EhFrame::set_address_size` and `DebugFrame::set_address_size` methods 609 to allow parsing non-native CFI sections. The default address size is still 610 the native size. 611 [#325](https://github.com/gimli-rs/gimli/pull/325) 612 613* Added architecture specific definitions for `Register` values and names. 614 Changed dwarfdump to print them. 615 [#328](https://github.com/gimli-rs/gimli/pull/328) 616 617* Added support for reading relocatable DWARF sections. 618 [#337](https://github.com/gimli-rs/gimli/pull/337) 619 620* Added parsing of `DW_FORM_data16`. 621 [#366](https://github.com/gimli-rs/gimli/pull/366) 622 623### Fixed 624 625* Fixed parsing DWARF 5 ranges with `start == end == 0`. 626 [#323](https://github.com/gimli-rs/gimli/pull/323) 627 628* Changed `LineRows` to be covariant in its `Reader` type parameter. 629 [#324](https://github.com/gimli-rs/gimli/pull/324) 630 631* Fixed handling of empty units in dwarfdump. 632 [#330](https://github.com/gimli-rs/gimli/pull/330) 633 634* Fixed `UnitHeader::length_including_self` for `Dwarf64`. 635 [#342](https://github.com/gimli-rs/gimli/pull/342) 636 637* Fixed parsing of `DW_CFA_set_loc`. 638 [#355](https://github.com/gimli-rs/gimli/pull/355) 639 640* Fixed handling of multiple headers in `.debug_loclists` and `.debug_rnglists`. 641 [#370](https://github.com/gimli-rs/gimli/pull/370) 642 643-------------------------------------------------------------------------------- 644 645## 0.16.1 646 647Released 2018/08/28. 648 649### Added 650 651* Added `EhFrameHdr::lookup_and_parse`. [#316][] 652* Added support for `DW_CFA_GNU_args_size`. [#319][] 653 654### Fixed 655 656* Implement `Send`/`Sync` for `SubRange`. [#305][] 657* Fixed `alloc` support on nightly. [#306][] [#310][] 658 659[#305]: https://github.com/gimli-rs/gimli/pull/305 660[#306]: https://github.com/gimli-rs/gimli/pull/306 661[#310]: https://github.com/gimli-rs/gimli/pull/310 662[#316]: https://github.com/gimli-rs/gimli/pull/316 663[#319]: https://github.com/gimli-rs/gimli/pull/319 664 665-------------------------------------------------------------------------------- 666 667## 0.16.0 668 669Released 2018/06/01. 670 671### Added 672 673* Added support for building in `#![no_std]` environments, when the `alloc` 674 crate is available. Disable the "std" feature and enable the "alloc" 675 feature. [#138][] [#271][] 676 677* Added support for DWARF 5 `.debug_rnglists` and `.debug_loclists` 678 sections. [#272][] 679 680* Added support for DWARF 5 `DW_FORM_ref_sup` and `DW_FORM_strp_sup` attribute 681 forms. [#288][] 682 683* Added support for DWARF 5 operations on typed values. [#293][] 684 685* A `dwarf-validate` example program that checks the integrity of the given 686 DWARF and its references between sections. [#290][] 687 688* Added the `EndianReader<T>` type, an easy way to define a custom `Reader` 689 implementation with a reference to a generic buffer of bytes and an associated 690 endianity. [#298][] [#302][] 691 692### Changed 693 694* Various speed improvements for evaluating `.debug_line` line number 695 programs. [#276][] 696 697* The example `dwarfdump` clone is a [whole lot faster 698 now][dwarfdump-faster]. [#282][] [#284][] [#285][] 699 700### Deprecated 701 702* `EndianBuf` has been renamed to `EndianSlice`, use that name instead. [#295][] 703 704### Fixed 705 706* Evaluating the `DW_CFA_restore_state` opcode properly maintains the current 707 location. Previously it would incorrectly restore the old location when 708 popping from evaluation stack. [#274][] 709 710[#271]: https://github.com/gimli-rs/gimli/issues/271 711[#138]: https://github.com/gimli-rs/gimli/issues/138 712[#274]: https://github.com/gimli-rs/gimli/issues/274 713[#272]: https://github.com/gimli-rs/gimli/issues/272 714[#276]: https://github.com/gimli-rs/gimli/issues/276 715[#282]: https://github.com/gimli-rs/gimli/issues/282 716[#285]: https://github.com/gimli-rs/gimli/issues/285 717[#284]: https://github.com/gimli-rs/gimli/issues/284 718[#288]: https://github.com/gimli-rs/gimli/issues/288 719[#290]: https://github.com/gimli-rs/gimli/issues/290 720[#293]: https://github.com/gimli-rs/gimli/issues/293 721[#295]: https://github.com/gimli-rs/gimli/issues/295 722[#298]: https://github.com/gimli-rs/gimli/issues/298 723[#302]: https://github.com/gimli-rs/gimli/issues/302 724[dwarfdump-faster]: https://robert.ocallahan.org/2018/03/speeding-up-dwarfdump-with-rust.html 725 726-------------------------------------------------------------------------------- 727 728## 0.15.0 729 730Released 2017/12/01. 731 732### Added 733 734* Added the `EndianBuf::to_string()` method. [#233][] 735 736* Added more robust error handling in our example `dwarfdump` clone. [#234][] 737 738* Added `FrameDescriptionEntry::initial_address` method. [#237][] 739 740* Added `FrameDescriptionEntry::len` method. [#237][] 741 742* Added the `FrameDescriptionEntry::entry_len` method. [#241][] 743 744* Added the `CommonInformationEntry::offset` method. [#241][] 745 746* Added the `CommonInformationEntry::entry_len` method. [#241][] 747 748* Added the `CommonInformationEntry::version` method. [#241][] 749 750* Added the `CommonInformationEntry::augmentation` method. [#241][] 751 752* Added the `CommonInformationEntry::code_alignment_factor` method. [#241][] 753 754* Added the `CommonInformationEntry::data_alignment_factor` method. [#241][] 755 756* Added the `CommonInformationEntry::return_address_register` method. [#241][] 757 758* Added support for printing `.eh_frame` sections to our example `dwarfdump` 759 clone. [#241][] 760 761* Added support for parsing the `.eh_frame_hdr` section. On Linux, the 762 `.eh_frame_hdr` section provides a pointer to the already-mapped-in-memory 763 `.eh_frame` data, so that it doesn't need to be duplicated, and a binary 764 search table of its entries for faster unwinding information lookups. [#250][] 765 766* Added support for parsing DWARF 5 compilation unit headers. [#257][] 767 768* Added support for DWARF 5's `DW_FORM_implicit_const`. [#257][] 769 770### Changed 771 772* Unwinding methods now give ownership of the unwinding context back to the 773 caller if errors are encountered, not just on the success path. This allows 774 recovering from errors in signal-safe code, where constructing a new unwinding 775 context is not an option because it requires allocation. This is a **breaking 776 change** affecting `UnwindSection::unwind_info_for_address` and 777 `UninitializedUnwindContext::initialize`. [#241][] 778 779* `CfaRule` and `RegisterRule` now expose their `DW_OP` expressions as 780 `Expression`. This is a minor **breaking change**. [#241][] 781 782* The `Error::UnknownVersion` variant now contains the unknown version 783 number. This is a minor **breaking change**. [#245][] 784 785* `EvaluationResult::RequiresEntryValue` requires an `Expression` instead of a 786 `Reader` now. This is a minor **breaking change**. [#256][] 787 788 789[#233]: https://github.com/gimli-rs/gimli/pull/233 790[#234]: https://github.com/gimli-rs/gimli/pull/234 791[#237]: https://github.com/gimli-rs/gimli/pull/237 792[#241]: https://github.com/gimli-rs/gimli/pull/241 793[#245]: https://github.com/gimli-rs/gimli/pull/245 794[#250]: https://github.com/gimli-rs/gimli/pull/250 795[#256]: https://github.com/gimli-rs/gimli/pull/256 796[#257]: https://github.com/gimli-rs/gimli/pull/257 797 798-------------------------------------------------------------------------------- 799 800## 0.14.0 801 802Released 2017/08/08. 803 804### Added 805 806* All `pub` types now `derive(Hash)`. [#192][] 807 808* All the constants from DWARF 5 are now defined. [#193][] 809 810* Added support for the `DW_OP_GNU_parameter_ref` GNU extension to parsing and 811 evaluation DWARF opcodes. [#208][] 812 813* Improved LEB128 parsing performance. [#216][] 814 815* Improved `.debug_{aranges,pubnames,pubtypes}` parsing performance. [#218][] 816 817* Added the ability to choose endianity dynamically at run time, rather than 818 only statically at compile time. [#219][] 819 820### Changed 821 822* The biggest change of this release is that `gimli` no longer requires the 823 object file's section be fully loaded into memory. This enables using `gimli` 824 on 32 bit platforms where there often isn't enough contiguous virtual memory 825 address space to load debugging information into. The default behavior is 826 still geared for 64 bit platforms, where address space overfloweth, and you 827 can still load the whole sections of the object file (or the entire object 828 file) into memory. This is abstracted over with the `gimli::Reader` 829 trait. This manifests as small (but many) breaking changes to much of the 830 public API. [#182][] 831 832### Fixed 833 834* The `DW_END_*` constants for defining endianity of a compilation unit were 835 previously incorrect. [#193][] 836 837* The `DW_OP_addr` opcode is relative to the base address of the `.text` section 838 of the binary, but we were incorrectly treating it as an absolute value. [#210][] 839 840[GitHub]: https://github.com/gimli-rs/gimli 841[crates.io]: https://crates.io/crates/gimli 842[contributing]: https://github.com/gimli-rs/gimli/blob/master/CONTRIBUTING.md 843[easy]: https://github.com/gimli-rs/gimli/issues?q=is%3Aopen+is%3Aissue+label%3Aeasy 844[#192]: https://github.com/gimli-rs/gimli/pull/192 845[#193]: https://github.com/gimli-rs/gimli/pull/193 846[#182]: https://github.com/gimli-rs/gimli/issues/182 847[#208]: https://github.com/gimli-rs/gimli/pull/208 848[#210]: https://github.com/gimli-rs/gimli/pull/210 849[#216]: https://github.com/gimli-rs/gimli/pull/216 850[#218]: https://github.com/gimli-rs/gimli/pull/218 851[#219]: https://github.com/gimli-rs/gimli/pull/219 852