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