gocore: update for Go 1.24

This change drops support for old versions of Go and adds numerous
updates to support Go 1.24.

- Correct DWARF variable parsing via location lists and complete
  interpretation of DWARF expressions (with the help of a couple
  Delve packages).
- Fixed handling of sigtrampgo and unwinding out of the signal handler.
- Improved handling of frames that aren't in safe points by
  conservatively finding live pointers through DWARF types of live
  local variables.
- Partial support for values live in registers (much more to do here,
  and composites are not supported).
- Completely overhauled Process initialization to better track
  dependencies.
- Clean up of "page table" data structure to be better encapsulated and
  more explicitly about the heap.
- Fix for a field in a runtime.special moving from a uint16 to a
  uintptr.
- Overhaul of gocore.Stats -> gocore.Statistic.
- Update go.mod to go1.23 for iterators.
- Update some dependencies.
- Adds TestObject from go.dev/cl/634756 (thanks aktau@!).

The main milestone this CL reaches is that the main.Large value in the
core test is consistently found and correctly typed.

There is still a lot left to do.

- Anything interpreting map structure is completely wrong with
  the change to Swiss Tables.
- Full support for roots that are in registers. (This matters, because
  otherwise values that are only in a register in the crash context are
  completely missed.)
- Full support for values that are partially in registers (composites).
- Tons of cleanup.
- A better abstraction over arches (so much stuff is hard-coded for
  amd64).

Change-Id: I9c671c15128b72ee118b3623aa403477b91f5ce6
Reviewed-on: https://go-review.googlesource.com/c/debug/+/635227
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Nicolas Hillegeer <aktau@google.com>
Auto-Submit: Nicolas Hillegeer <aktau@google.com>
Commit-Queue: Nicolas Hillegeer <aktau@google.com>
32 files changed
tree: 64b770770bf2caf56921973a65f5cc5263d43dff
  1. cmd/
  2. dwtest/
  3. internal/
  4. codereview.cfg
  5. CONTRIBUTING.md
  6. go.mod
  7. go.sum
  8. LICENSE
  9. README.md
README.md

Go Debug

Go Reference

This repository holds utilities and libraries for debugging Go programs.

WARNING! Please expect breaking changes and unstable APIs. Most of them are currently are at an early, experimental stage.

Report Issues / Send Patches

This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see https://go.dev/doc/contribute.

The git repository is https://go.googlesource.com/debug.

The main issue tracker for the debug repository is located at https://go.dev/issues. Prefix your issue with “x/debug:” in the subject line, so it is easy to find.