aboutsummaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
authorDaniel Morsing <daniel.morsing@gmail.com>2025-11-27 06:45:20 +0000
committerGopher Robot <gobot@golang.org>2025-11-27 05:54:25 -0800
commitc079dd13c0b0e977d607cf2775bc2f16dd3d106e (patch)
treec02ac63f56d23c8b4a60527c55de41b58e03f188 /src/runtime
parent2947cb0469aa89aac70cc6e3968f00f4c625671a (diff)
downloadgo-c079dd13c0b0e977d607cf2775bc2f16dd3d106e.tar.xz
runtime/secret: reorganize tests to fix -buildmode=shared
The testing assembly methods had a linkname that was implicitly satisfied during the regular build but not there during the shared build. Fix by moving the testing routine into the package itself. For good measure, section off the assembly files from the non-experiment build. Should prevent further build failures as we work on this. Cq-Include-Trybots: luci.golang.try:gotip-linux-amd64-longtest,gotip-linux-arm64-longtest Change-Id: I2b45668e44641ae7880ff14f6402d982c7eaedd7 Reviewed-on: https://go-review.googlesource.com/c/go/+/724001 Reviewed-by: David Chase <drchase@google.com> Auto-Submit: Filippo Valsorda <filippo@golang.org> Reviewed-by: Filippo Valsorda <filippo@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/secret/asm_amd64.s4
-rw-r--r--src/runtime/secret/asm_arm64.s2
-rw-r--r--src/runtime/secret/stubs.go13
-rw-r--r--src/runtime/secret/testdata/crash.go7
4 files changed, 17 insertions, 9 deletions
diff --git a/src/runtime/secret/asm_amd64.s b/src/runtime/secret/asm_amd64.s
index 7011afc5eb..0f2a4747b4 100644
--- a/src/runtime/secret/asm_amd64.s
+++ b/src/runtime/secret/asm_amd64.s
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+//go:build goexperiment.runtimesecret
+
// Note: this assembly file is used for testing only.
// We need to access registers directly to properly test
// that secrets are erased and go test doesn't like to conditionally
@@ -208,6 +210,6 @@ noavx512:
// registers contain secrets.
// It also tests the path from G stack to M stack
// to scheduler and back.
- CALL ·delay(SB)
+ CALL runtime∕secret·delay(SB)
RET
diff --git a/src/runtime/secret/asm_arm64.s b/src/runtime/secret/asm_arm64.s
index 1d7f7c1c92..6fa625adf6 100644
--- a/src/runtime/secret/asm_arm64.s
+++ b/src/runtime/secret/asm_arm64.s
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+//go:build goexperiment.runtimesecret
+
// Note: this assembly file is used for testing only.
// We need to access registers directly to properly test
// that secrets are erased and go test doesn't like to conditionally
diff --git a/src/runtime/secret/stubs.go b/src/runtime/secret/stubs.go
index ec66ef2729..dd9ed04df3 100644
--- a/src/runtime/secret/stubs.go
+++ b/src/runtime/secret/stubs.go
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build arm64 || amd64
+//go:build goexperiment.runtimesecret && (arm64 || amd64)
// testing stubs, these are implemented in assembly in
// asm_$GOARCH.s
@@ -30,3 +30,14 @@ func spillRegisters(p unsafe.Pointer) uintptr
//
//go:noescape
func useSecret(secret []byte)
+
+// callback from assembly
+func delay() {
+ sleep(1_000_000)
+}
+
+// linknamed to avoid package importing time
+// for just testing code
+//
+//go:linkname sleep time.Sleep
+func sleep(int64)
diff --git a/src/runtime/secret/testdata/crash.go b/src/runtime/secret/testdata/crash.go
index cf48fb7d44..1ee1ea6b8e 100644
--- a/src/runtime/secret/testdata/crash.go
+++ b/src/runtime/secret/testdata/crash.go
@@ -18,13 +18,6 @@ import (
"weak"
)
-// callback from assembly
-//
-//go:linkname delay main.delay
-func delay() {
- time.Sleep(1 * time.Millisecond)
-}
-
// Same secret as in ../../crash_test.go
var secretStore = [8]byte{
0x00,