1
0
mirror of https://github.com/golang/go synced 2024-11-22 21:00:04 -07:00

runtime: fix windows/arm CONTEXT_CONTROL

The constant was wrong, and the “right” constant doesn't work either.
But with the actually-right constant (and possibly earlier fixes in this
stack as well), profiling now works.

Change-Id: If8caff1da556826db40961fb9bcfe2b1f31ea9f9
Reviewed-on: https://go-review.googlesource.com/c/go/+/288808
Trust: Russ Cox <rsc@golang.org>
Trust: Jason A. Donenfeld <Jason@zx2c4.com>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
Russ Cox 2021-01-27 11:02:33 -05:00
parent 76ab626bfc
commit 75e273fc2c
2 changed files with 7 additions and 5 deletions

View File

@ -4,7 +4,13 @@
package runtime package runtime
const _CONTEXT_CONTROL = 0x10001 // NOTE(rsc): _CONTEXT_CONTROL is actually 0x200001 and should include PC, SP, and LR.
// However, empirically, LR doesn't come along on Windows 10
// unless you also set _CONTEXT_INTEGER (0x200002).
// Without LR, we skip over the next-to-bottom function in profiles
// when the bottom function is frameless.
// So we set both here, to make a working _CONTEXT_CONTROL.
const _CONTEXT_CONTROL = 0x200003
type neon128 struct { type neon128 struct {
low uint64 low uint64

View File

@ -285,10 +285,6 @@ func testCPUProfile(t *testing.T, matches matchFunc, need []string, avoid []stri
if runtime.GOARCH == "arm" || runtime.GOARCH == "arm64" { if runtime.GOARCH == "arm" || runtime.GOARCH == "arm64" {
broken = true broken = true
} }
case "windows":
if runtime.GOARCH == "arm" {
broken = true // See https://golang.org/issues/42862
}
} }
maxDuration := 5 * time.Second maxDuration := 5 * time.Second