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`.
|
|
|
|
|
2022-05-31 16:39:16 +00:00
|
|
|
## 0.4.6
|
|
|
|
|
|
|
|
- Upgrade to `package:lints` 2.0.
|
|
|
|
- Populate the pubspec `repository` field.
|
|
|
|
|
2022-01-03 13:04:25 +00:00
|
|
|
## 0.4.5
|
|
|
|
|
|
|
|
- Handle stack traces larger than 100 entries.
|
|
|
|
|
2021-10-14 07:35:43 +00:00
|
|
|
## 0.4.5-dev
|
2020-01-23 10:14:17 +00:00
|
|
|
|
2021-10-14 07:35:43 +00:00
|
|
|
- Require Dart >= 2.14
|
|
|
|
|
2021-09-28 17:23:32 +00:00
|
|
|
## 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.
|
|
|
|
|
2021-04-27 23:31:02 +00:00
|
|
|
## 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.
|
|
|
|
|
2021-04-22 15:27:38 +00:00
|
|
|
## 0.4.1
|
|
|
|
|
|
|
|
- Exported some ELF utilities in lib/elf.dart for use in Dart tests.
|
|
|
|
|
2021-02-23 10:27:39 +00:00
|
|
|
## 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.
|
|
|
|
|
2020-06-16 12:46:24 +00:00
|
|
|
## 0.3.7
|
|
|
|
|
|
|
|
- Added buildId accessor for retrieving GNU build IDs from DWARF files that
|
|
|
|
include them.
|
|
|
|
|
2020-05-20 08:14:52 +00:00
|
|
|
## 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.
|
|
|
|
|
2020-05-11 08:41:17 +00:00
|
|
|
## 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.
|
|
|
|
|
2020-04-23 09:31:08 +00:00
|
|
|
## 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.
|
|
|
|
|
2020-04-15 14:23:23 +00:00
|
|
|
## 0.3.3
|
|
|
|
|
|
|
|
- No externally visible changes.
|
|
|
|
|
2020-04-06 13:11:41 +00:00
|
|
|
## 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.
|
|
|
|
|
2020-03-25 12:02:55 +00:00
|
|
|
## 0.3.1
|
|
|
|
|
|
|
|
- Uses dynamic symbol information embedded in stack frame lines when available.
|
|
|
|
|
2020-03-20 11:26:02 +00:00
|
|
|
## 0.3.0
|
|
|
|
|
|
|
|
- Adds handling of virtual addresses within stub code payloads.
|
|
|
|
|
2020-02-07 11:34:59 +00:00
|
|
|
## 0.2.2
|
|
|
|
|
|
|
|
- Finds instruction sections by the dynamic symbols the Dart VM creates instead
|
|
|
|
of assuming there are two text sections.
|
|
|
|
|
2020-02-07 11:34:59 +00:00
|
|
|
## 0.2.1
|
|
|
|
|
2020-04-06 13:11:41 +00:00
|
|
|
- Added static method `Dwarf.fromBuffer`.
|
2020-02-07 11:34:59 +00:00
|
|
|
|
2020-01-24 11:40:59 +00:00
|
|
|
## 0.2.0
|
|
|
|
|
|
|
|
- API and documentation cleanups
|
|
|
|
|
2020-01-23 10:14:17 +00:00
|
|
|
## 0.1.0
|
|
|
|
|
|
|
|
- Initial release
|