delve/Documentation/backend_test_health.md
Derek Parker 6c77c35586
pkg/proc: add inline function support for stripped binaries (#3549)
This patch adds support for listing and setting breakpoints on inlined functions within stripped binaries. It uses a forked version of `debug/gosym` copied from golang.org/x/vuln/internal/vulncheck/internal/gosym which adds support for parsing the inline tree of the pclntab section. Parsing this section requires knowing the offset of the "go:func.*" symbol, which is not present in stripped binaries via the ``.symtab` section so instead, we search the `.noptrdata` section which contains `runtime.moduledatap` which contains the value of that missing symbol, which we then can use to find the inline tree for a given function.

Given all this we parse the inline tree for each function we find, and then add that information the the appropriate `Function` contained in `bi.Functions`, using a relatively empty `Function` struct as what would be the abstract origin.
2023-11-03 10:00:49 +01:00

1.2 KiB

Tests skipped by each supported backend:

  • 386 skipped = 6
    • 3 broken - cgo stacktraces
    • 3 not implemented
  • arm64 skipped = 1
    • 1 broken - global variable symbolication
  • darwin skipped = 3
    • 2 follow exec not implemented on macOS
    • 1 waitfor implementation is delegated to debugserver
  • darwin/arm64 skipped = 2
    • 2 broken - cgo stacktraces
  • darwin/lldb skipped = 1
    • 1 upstream issue
  • freebsd skipped = 9
    • 2 flaky
    • 2 follow exec not implemented on freebsd
    • 4 not implemented
    • 1 not working on freebsd
  • linux/386 skipped = 1
    • 1 not working on linux/386
  • linux/386/pie skipped = 1
    • 1 broken
  • linux/ppc64le skipped = 2
    • 1 broken - cgo stacktraces
    • 1 not working on linux/ppc64le when -gcflags=-N -l is passed
  • linux/ppc64le/native skipped = 1
    • 1 broken in linux ppc64le
  • linux/ppc64le/native/pie skipped = 3
    • 3 broken - pie mode
  • pie skipped = 2
  • ppc64le skipped = 11
    • 6 broken
    • 1 broken - global variable symbolication
    • 4 not implemented
  • windows skipped = 5
  • windows/arm64 skipped = 5
    • 3 broken
    • 1 broken - cgo stacktraces
    • 1 broken - step concurrent