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