From 57009d45040e92124fb4aefd59825d3525fd7d3a Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Fri, 12 May 2023 15:19:23 -0400 Subject: [PATCH] cmd/cgo/internal/testsanitizers: build on all platforms This test package uses the Pdeathsig field of syscall.SysProcAttr, which is only available on a few platforms. Currently, dist test checks for compatible platforms and only registers it as part of all.bash on platforms where it can build. But this doesn't help if you're just trying to type check everything in cmd. Make this package pass type checking by moving the condition from dist into build tags on the test package itself. For #60164. Updates #37486. Change-Id: I58b12d547c323cec895320baa5fca1b82e99d1b5 Reviewed-on: https://go-review.googlesource.com/c/go/+/494658 Auto-Submit: Austin Clements Reviewed-by: Dmitri Shuralyov Reviewed-by: Bryan Mills TryBot-Result: Gopher Robot Run-TryBot: Austin Clements --- src/cmd/cgo/internal/testsanitizers/asan_test.go | 2 ++ src/cmd/cgo/internal/testsanitizers/cc_test.go | 5 +++++ src/cmd/cgo/internal/testsanitizers/cshared_test.go | 2 ++ src/cmd/cgo/internal/testsanitizers/empty_test.go | 8 ++++++++ src/cmd/cgo/internal/testsanitizers/libfuzzer_test.go | 2 ++ src/cmd/cgo/internal/testsanitizers/msan_test.go | 2 ++ src/cmd/cgo/internal/testsanitizers/tsan_test.go | 2 ++ src/cmd/dist/test.go | 6 +----- 8 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 src/cmd/cgo/internal/testsanitizers/empty_test.go diff --git a/src/cmd/cgo/internal/testsanitizers/asan_test.go b/src/cmd/cgo/internal/testsanitizers/asan_test.go index 1e85a5dda0e58..9bf48915e24c1 100644 --- a/src/cmd/cgo/internal/testsanitizers/asan_test.go +++ b/src/cmd/cgo/internal/testsanitizers/asan_test.go @@ -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 linux || (freebsd && amd64) + package sanitizers_test import ( diff --git a/src/cmd/cgo/internal/testsanitizers/cc_test.go b/src/cmd/cgo/internal/testsanitizers/cc_test.go index 67d281a8c5018..5facb37e68a51 100644 --- a/src/cmd/cgo/internal/testsanitizers/cc_test.go +++ b/src/cmd/cgo/internal/testsanitizers/cc_test.go @@ -2,6 +2,11 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// This test uses the Pdeathsig field of syscall.SysProcAttr, so it only works +// on platforms that support that. + +//go:build linux || (freebsd && amd64) + // sanitizers_test checks the use of Go with sanitizers like msan, asan, etc. // See https://github.com/google/sanitizers. package sanitizers_test diff --git a/src/cmd/cgo/internal/testsanitizers/cshared_test.go b/src/cmd/cgo/internal/testsanitizers/cshared_test.go index 21b13ce4ed0dc..5a8e93d101ca8 100644 --- a/src/cmd/cgo/internal/testsanitizers/cshared_test.go +++ b/src/cmd/cgo/internal/testsanitizers/cshared_test.go @@ -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 linux || (freebsd && amd64) + package sanitizers_test import ( diff --git a/src/cmd/cgo/internal/testsanitizers/empty_test.go b/src/cmd/cgo/internal/testsanitizers/empty_test.go new file mode 100644 index 0000000000000..e7fed99551187 --- /dev/null +++ b/src/cmd/cgo/internal/testsanitizers/empty_test.go @@ -0,0 +1,8 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// All of the actual test files have limited build constraints. This file +// ensures there's at least one test file on every platform. + +package sanitizers_test diff --git a/src/cmd/cgo/internal/testsanitizers/libfuzzer_test.go b/src/cmd/cgo/internal/testsanitizers/libfuzzer_test.go index 345751b9c761f..f84c9f37ae82f 100644 --- a/src/cmd/cgo/internal/testsanitizers/libfuzzer_test.go +++ b/src/cmd/cgo/internal/testsanitizers/libfuzzer_test.go @@ -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 linux || (freebsd && amd64) + package sanitizers_test import ( diff --git a/src/cmd/cgo/internal/testsanitizers/msan_test.go b/src/cmd/cgo/internal/testsanitizers/msan_test.go index 96397e0a876a3..a05c545d2afda 100644 --- a/src/cmd/cgo/internal/testsanitizers/msan_test.go +++ b/src/cmd/cgo/internal/testsanitizers/msan_test.go @@ -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 linux || (freebsd && amd64) + package sanitizers_test import ( diff --git a/src/cmd/cgo/internal/testsanitizers/tsan_test.go b/src/cmd/cgo/internal/testsanitizers/tsan_test.go index f65d842363242..cb63f873f9013 100644 --- a/src/cmd/cgo/internal/testsanitizers/tsan_test.go +++ b/src/cmd/cgo/internal/testsanitizers/tsan_test.go @@ -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 linux || (freebsd && amd64) + package sanitizers_test import ( diff --git a/src/cmd/dist/test.go b/src/cmd/dist/test.go index 8cd8abc19ec17..1d8125c51d0b4 100644 --- a/src/cmd/dist/test.go +++ b/src/cmd/dist/test.go @@ -832,11 +832,7 @@ func (t *tester) registerTests() { if t.supportedBuildmode("plugin") { t.registerTest("cgo_testplugin", "", &goTest{pkg: "cmd/cgo/internal/testplugin", timeout: 600 * time.Second}) } - if goos == "linux" || (goos == "freebsd" && goarch == "amd64") { - // because Pdeathsig of syscall.SysProcAttr struct used in cmd/cgo/internal/testsanitizers is only - // supported on Linux and FreeBSD. - t.registerTest("cgo_testsanitizers", "", &goTest{pkg: "cmd/cgo/internal/testsanitizers", timeout: 5 * time.Minute}) - } + t.registerTest("cgo_testsanitizers", "", &goTest{pkg: "cmd/cgo/internal/testsanitizers", timeout: 5 * time.Minute}) if t.hasBash() && goos != "android" && !t.iOS() && gohostos != "windows" { t.registerTest("cgo_errors", "", &goTest{pkg: "cmd/cgo/internal/testerrors", timeout: 5 * time.Minute}) }