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