Files
sdk/pkg/native_stack_traces/CHANGELOG.md
T
Tess Strickland 6f83a5ff9b [vm/aot] Add a GNU build ID to direct-to-ELF snapshots.
For proper crashpad integration, we need to generate a build ID, as the
build ID generated by crashpad if there is not one will be a simple XOR
of the first text page, which rarely changes for Dart snapshots.
Assembly snapshots already have a build ID included by the assembler, so
we currently only do this for ELF snapshots.

Currently the build ID is a 128-bit hash value that is four separate
32-bit hash values concatenated together. Those hash values come from
the contents of the VM and isolate .text and .rodata sections.

This change also contains work to separate out the concepts of sections
and segments in the ELF builder. Now, consecutive allocated sections
with the same write and execute flags are combined into a single PT_LOAD
segment when possible, which reduces the padding needed to ensure that
segments start on page boundaries in ELF snapshots.

Bug: https://github.com/dart-lang/sdk/issues/42020
Change-Id: I42a837dae665a3902d881b8d151b49ede87d6c67
Cq-Include-Trybots: luci.dart.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
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/150625
Commit-Queue: Tess Strickland <sstrickl@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2020-06-16 12:46:24 +00:00

1.8 KiB

Changelog

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