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