diff options
| author | qmuntal <quimmuntal@gmail.com> | 2023-11-29 11:15:54 +0100 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2023-11-29 16:01:37 +0000 |
| commit | b9a4eaa62b043fdb91f1f4a1e4b5ccfd3bdca36f (patch) | |
| tree | a445781c9a3d7094e304b1b723a65a4d1eb4cd4a /src/cmd/cgo/internal | |
| parent | 1908d4354b5b1cb02edd9f93d024551fe812eb22 (diff) | |
| download | go-b9a4eaa62b043fdb91f1f4a1e4b5ccfd3bdca36f.tar.xz | |
cmd/cgo/internal/test: only test specific frames in testCallbackCallersSEH
testCallbackCallersSEH will break if anything in this call chain is
refactored to have a different number of function calls.
This change makes the test more robust by only testing the frames
that are actually relevant to the test.
Change-Id: Idb51514d7079f55da6e6ddc52ad43b1ffe32c8c8
Reviewed-on: https://go-review.googlesource.com/c/go/+/545755
Run-TryBot: Quim Muntal <quimmuntal@gmail.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Than McIntosh <thanm@google.com>
Auto-Submit: Quim Muntal <quimmuntal@gmail.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Diffstat (limited to 'src/cmd/cgo/internal')
| -rw-r--r-- | src/cmd/cgo/internal/test/callback_windows.go | 38 |
1 files changed, 7 insertions, 31 deletions
diff --git a/src/cmd/cgo/internal/test/callback_windows.go b/src/cmd/cgo/internal/test/callback_windows.go index 95e97c9af9..77bdfa4dd3 100644 --- a/src/cmd/cgo/internal/test/callback_windows.go +++ b/src/cmd/cgo/internal/test/callback_windows.go @@ -29,7 +29,7 @@ USHORT backtrace(ULONG FramesToCapture, PVOID *BackTrace) { } ControlPc = context.Rip; - // Check if we left the user range. + // Check if we left the user range. if (ControlPc < 0x10000) { break; } @@ -65,32 +65,17 @@ func testCallbackCallersSEH(t *testing.T) { // TODO: support SEH on other architectures. t.Skip("skipping on non-amd64") } - const cgoexpPrefix = "_cgoexp_" + // Only frames in the test package are checked. want := []string{ - "runtime.asmcgocall_landingpad", - "runtime.asmcgocall", - "runtime.cgocall", "test._Cfunc_backtrace", "test.testCallbackCallersSEH.func1.1", "test.testCallbackCallersSEH.func1", "test.goCallback", - cgoexpPrefix + "goCallback", - "runtime.cgocallbackg1", - "runtime.cgocallbackg", - "runtime.cgocallbackg", - "runtime.cgocallback", - "crosscall2", - "runtime.asmcgocall_landingpad", - "runtime.asmcgocall", - "runtime.cgocall", "test._Cfunc_callback", "test.nestedCall.func1", "test.nestedCall", "test.testCallbackCallersSEH", "test.TestCallbackCallersSEH", - "testing.tRunner", - "testing.(*T).Run.gowrap1", - "runtime.goexit", } pc := make([]uintptr, 100) n := 0 @@ -105,26 +90,17 @@ func testCallbackCallersSEH(t *testing.T) { } fname := f.Name() switch fname { - case "goCallback", "callback": - // TODO(qmuntal): investigate why these functions don't appear + case "goCallback": + // TODO(qmuntal): investigate why this function doesn't appear // when using the external linker. continue } - // Skip cgo-generated functions, the runtime might not know about them, - // depending on the link mode. - if strings.HasPrefix(fname, "_cgo_") { - continue - } - // Remove the cgo-generated random prefix. - if strings.HasPrefix(fname, cgoexpPrefix) { - idx := strings.Index(fname[len(cgoexpPrefix):], "_") - if idx >= 0 { - fname = cgoexpPrefix + fname[len(cgoexpPrefix)+idx+1:] - } - } // In module mode, this package has a fully-qualified import path. // Remove it if present. fname = strings.TrimPrefix(fname, "cmd/cgo/internal/") + if !strings.HasPrefix(fname, "test.") { + continue + } got = append(got, fname) } if !reflect.DeepEqual(want, got) { |
