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