dart-sdk/pkg/native_stack_traces/CHANGELOG.md

117 lines
2.9 KiB
Markdown
Raw Normal View History

Reland "[pkg/native_stack_traces] Support Mach-O dSYM debugging information." This is a reland of commit 08c13f173c3715fd768d768566eeccf1f9f14c3b Fixes test failures on non-x64 architectures, both in the test harness and due to DWARF5 line number program headers having a non-backwards compatible format. (We generate DWARF2 in the ELF snapshot writer, but the assembler used for assembly snapshots may generate DWARF5.) TEST=vm/dart{,_2}/use_dwarf_stack_traces_flag Original change's description: > [pkg/native_stack_traces] Support Mach-O dSYM debugging information. > > TEST=vm/dart{,_2}/use_dwarf_stack_traces_flag > > Bug: https://github.com/dart-lang/sdk/issues/43612 > Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-dwarf-linux-product-x64-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-mac-product-x64-try,pkg-mac-release-arm64-try,vm-kernel-mac-release-arm64-try,vm-kernel-precomp-nnbd-mac-release-arm64-try > Change-Id: Icda21bb14dcc0cf4784cea118e6ba7dd4edd35aa > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/250381 > Commit-Queue: Tess Strickland <sstrickl@google.com> > Reviewed-by: Slava Egorov <vegorov@google.com> Bug: https://github.com/dart-lang/sdk/issues/43612 Change-Id: I8a9cb70e78bc8594bcae004809c5a1be778d691d Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-dwarf-linux-product-x64-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-mac-product-x64-try,pkg-mac-release-arm64-try,vm-kernel-mac-release-arm64-try,vm-kernel-precomp-nnbd-mac-release-arm64-try,vm-kernel-precomp-linux-debug-x64c-try,vm-kernel-nnbd-linux-release-simarm64-try,vm-kernel-precomp-linux-release-simarm_x64-try,vm-kernel-precomp-nnbd-mac-release-simarm64-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/251464 Reviewed-by: Martin Kustermann <kustermann@google.com> Commit-Queue: Tess Strickland <sstrickl@google.com>
2022-07-22 07:05:26 +00:00
## 0.5.0
- Require Dart >= 2.17 (enhanced enum support)
- Add support for parsing DWARF in Mach-O files and dSYM directories.
- Add some support for DWARF5.
- Add `dump` command to replace the old `--dump_debug_file_contents`
flag to `find` and `translate`.
## 0.4.6
- Upgrade to `package:lints` 2.0.
- Populate the pubspec `repository` field.
## 0.4.5
- Handle stack traces larger than 100 entries.
## 0.4.5-dev
- Require Dart >= 2.14
## 0.4.4
- Added handling of dynamic tables for testing.
[vm] Fix handling of WeakSerializationReferences in v8 profile. Instead of trying to lazily create artificial nodes when needed for WeakSerializationReference (WSR) targets in all cases, create them eagerly for targets in reachable WSRs, since those are guaranteed to be needed. Those for unreachable WSRs are still lazily created as needed, since the WSR won't even be accessed by the clustered snapshot writer unless the unreachable WSR is part of another unreachable object that has an artificial node created. This rework avoids some issues seen on upcoming CLs where the artificial nodes for WSR targets weren't getting correctly generated. ----- Also extend the v8 snapshot profile writer tests to check the sizes of the text and data sections in ELF snapshots. That means the v8 snapshot profile writer tests check up to three different measures, from most precise to least precise, depending on the output mode: * If writing an ELF snapshot directly: the sum of the sizes attributed to the text and data section symbols are checked to be exactly the same as the sum of the sizes of the objects in the profile. * If writing an ELF snapshot either directly or via assembly: the sum of the sizes of the text and data sections are checked to be the same as the sum of the sizes of the objects in the profile. If using an assembler that merges text and data sections, then account for the padding between the sections using an approximate check. * For all: Check that the size of the snapshot as a whole is approximately equal to the sum of the sizes of the objects in the profile, accounting both for possible padding and for the global header information and non-data/non-text sections like the dynamic symbol section. TEST=vm/data{,_2}/v8_snapshot_profile_writer_test Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-debug-x64c-try,vm-kernel-precomp-nnbd-linux-debug-x64-try,vm-kernel-precomp-mac-release-simarm64-try Change-Id: I66e0e7fdb5bb98045621bf516f150a4723e08147 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/198942 Commit-Queue: Tess Strickland <sstrickl@google.com> Reviewed-by: Clement Skau <cskau@google.com> Reviewed-by: Daco Harkes <dacoharkes@google.com>
2021-05-11 11:21:44 +00:00
## 0.4.3
- Exported some more of the ELF utilities for use in Dart tests.
## 0.4.2
- When decoding a stack trace, frames corresponding to the functions
with DW_AT_artificial DWARF attribute are now omitted from the symbolized
stack traces. This is needed because Dart VM no longer omits invisible
functions from binary stack traces in certain cases.
## 0.4.1
- Exported some ELF utilities in lib/elf.dart for use in Dart tests.
## 0.4.0
- Stable null safe version of package.
## 0.4.0-nullsafety
- Unstable null safe version of package.
[vm/aot] Reland "Keep column information when possible for precompiled mode." Changes: Doing this always in precompiled mode meant increased data segment sizes when CodeSourceMaps are stored, since encoded line/column information is larger in the LEB-like encoding used. Now we only store column information when we produce non-symbolic stacks, since the increased space needed to store the columns is instead in DWARF sections and can be stripped or elided. Original description: Previously, we passed line number information to the stack trace printer and to DWARF by changing the non-special positions in the CodeSourceMap to line numbers in precompiled mode. However, doing this lost column information. We get the column information back in the majority of cases by encoding the line number and column information when neither is too large to pack together into 30 bits. (Here, 20 bits for line and 10 bits for column.) Otherwise, we just store the line information as before, though due to using a bit to encode whether column info exists, it's reduced to 30 bits. If the line info is too big for that, we just return kNoSourcePos. Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-nnbd-linux-release-x64-try,vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-release-simarm_x64-try Change-Id: Ia8baee71468da6100a170fa305d03059ffd17f78 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/151822 Commit-Queue: Tess Strickland <sstrickl@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com>
2020-06-19 13:50:03 +00:00
## 0.3.8
- Support columns when present in line number programs.
## 0.3.7
- Added buildId accessor for retrieving GNU build IDs from DWARF files that
include them.
## 0.3.6
- Adjusts RegExp for stack trace header line to be more flexible in what it
permits to allow additional information to be added in the Dart VM.
## 0.3.5
- Use virtual addresses in non-symbolic stack frames as a fallback if we cannot
retrieve an appropriate offset from the instructions section otherwise.
## 0.3.4
- Decoded Dart calls are now never considered internal, only VM stub calls.
This is due to a concurrent change in the Dart VM that no longer prints
non-symbolic frames for functions considered invisible, which matches the
symbolic frame printer and removes the need for the decoder to guess which
frames should be hidden.
This package still works on earlier versions of Dart, so the dependencies have
not changed. However, it may print more frame information than expected when
decoding stack frames from a Dart VM that does not include this change to
non-symbolic stack printing.
## 0.3.3
- No externally visible changes.
## 0.3.2
- The `find` command can now look up addresses given as offsets from static
symbols, not just hexadecimal virtual or absolute addresses.
- Integer inputs (addresses or offsets) without an '0x' prefix or hexadecimal
digits will now be parsed as decimal unless the `-x`/`--force_hexadecimal`
flag is used.
## 0.3.1
- Uses dynamic symbol information embedded in stack frame lines when available.
## 0.3.0
- Adds handling of virtual addresses within stub code payloads.
## 0.2.2
- Finds instruction sections by the dynamic symbols the Dart VM creates instead
of assuming there are two text sections.
## 0.2.1
- Added static method `Dwarf.fromBuffer`.
## 0.2.0
- API and documentation cleanups
## 0.1.0
- Initial release