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