diff options
| author | Clément Chigot <clement.chigot@atos.net> | 2019-02-21 10:14:46 +0100 |
|---|---|---|
| committer | Ian Lance Taylor <iant@golang.org> | 2019-03-19 04:18:48 +0000 |
| commit | 205d62d58b16afbb4e6232a0591e3e8f4153a591 (patch) | |
| tree | a0d514aebb7dd56cfed95104d018d5d76c939cbd /src | |
| parent | 6f7bb2cab6c9ac6b6ec530a87ffc854d19335a15 (diff) | |
| download | go-205d62d58b16afbb4e6232a0591e3e8f4153a591.tar.xz | |
runtime: disable pprof test with cgo on aix/ppc64
This commit disables new cgo pprof tests and adds an handler in sigtramp
to refuse SIGPROF signal.
Updates #28555
Change-Id: I152a871f8636e93328d411329104c6f023bd1691
Reviewed-on: https://go-review.googlesource.com/c/go/+/164013
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src')
| -rw-r--r-- | src/runtime/crash_cgo_test.go | 3 | ||||
| -rw-r--r-- | src/runtime/pprof/proto_test.go | 4 | ||||
| -rw-r--r-- | src/runtime/sys_aix_ppc64.s | 17 |
3 files changed, 24 insertions, 0 deletions
diff --git a/src/runtime/crash_cgo_test.go b/src/runtime/crash_cgo_test.go index c1dd757797..e0c8955e7d 100644 --- a/src/runtime/crash_cgo_test.go +++ b/src/runtime/crash_cgo_test.go @@ -229,6 +229,9 @@ func TestCgoPanicDeadlock(t *testing.T) { } func TestCgoCCodeSIGPROF(t *testing.T) { + if runtime.GOOS == "aix" { + t.Skip("pprof not yet available on AIX (see golang.org/issue/28555)") + } t.Parallel() got := runTestProg(t, "testprogcgo", "CgoCCodeSIGPROF") want := "OK\n" diff --git a/src/runtime/pprof/proto_test.go b/src/runtime/pprof/proto_test.go index 4452d51231..cb38150da8 100644 --- a/src/runtime/pprof/proto_test.go +++ b/src/runtime/pprof/proto_test.go @@ -312,6 +312,10 @@ func TestMapping(t *testing.T) { testenv.MustHaveGoRun(t) testenv.MustHaveCGO(t) + if runtime.GOOS == "aix" { + t.Skip("pprof not yet available on AIX (see golang.org/issue/28555)") + } + prog := "./testdata/mappingtest/main.go" // GoOnly includes only Go symbols that runtime will symbolize. diff --git a/src/runtime/sys_aix_ppc64.s b/src/runtime/sys_aix_ppc64.s index d691b76cc7..d9e97ac8b7 100644 --- a/src/runtime/sys_aix_ppc64.s +++ b/src/runtime/sys_aix_ppc64.s @@ -109,6 +109,9 @@ TEXT runtime·_sigtramp(SB),NOSPLIT|NOFRAME,$0 BL runtime·load_g(SB) + CMP $0, g + BEQ sigtrampnog // g == nil + // Save m->libcall. We need to do this because we // might get interrupted by a signal in runtime·asmcgocall. @@ -155,6 +158,7 @@ TEXT runtime·_sigtramp(SB),NOSPLIT|NOFRAME,$0 MOVD 120(R1), R8 MOVD R8, 0(R7) +exit: // restore registers MOVD 56(R1),R31 MOVD 64(R1),g @@ -166,6 +170,19 @@ TEXT runtime·_sigtramp(SB),NOSPLIT|NOFRAME,$0 MOVD R0, LR BR (LR) +sigtrampnog: + // Signal arrived on a non-Go thread. + // SIGPROF handler is not yet available so simply call badsignal, + // after having created *sigctxt. + MOVD R4, 80(R1) + MOVD R5, 88(R1) + MOVD R1, R4 + ADD $80, R4 + MOVD R4, FIXED_FRAME+8(R1) + MOVD R3, FIXED_FRAME+0(R1) + BL runtime·badsignal(SB) + JMP exit + // runtime.tstart is a function descriptor to the real tstart. DATA runtime·tstart+0(SB)/8, $runtime·_tstart(SB) DATA runtime·tstart+8(SB)/8, $TOC(SB) |
