aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal
diff options
context:
space:
mode:
authorThan McIntosh <thanm@google.com>2022-10-04 09:00:31 -0400
committerThan McIntosh <thanm@google.com>2022-10-04 18:08:15 +0000
commit8bd803fd4ea3a549a9124f5a4e18af9596ef35df (patch)
tree078970e7e27d0f3d48e0dfae4d7a5ba49bb3c01c /src/cmd/internal
parentdfd8aa461be982533e01867ab002fb83ba3cc943 (diff)
downloadgo-8bd803fd4ea3a549a9124f5a4e18af9596ef35df.tar.xz
cmd/internal/sys: migrate support.go functions to new internal pkg
Separate out the functions from cmd/internal/sys/support.go and migrate them to a new package internal/platform, so that functions such as "RaceDetectorSupported" can be called from tests in std as well as in cmd. This isn't a complete move of everything in cmd/internal/sys; there are still many functions left. The original version of this CL (patch set 1) called the new package "internal/sys", but for packages that needed both "internal/sys" and "cmd/internal/sys" the import of the former had to be done with a different name, which was confusing and also required a hack in cmd/dist. Updates #56006. Change-Id: I866d62e75adbf3a640a06e2c7386a6e9e2a18d91 Reviewed-on: https://go-review.googlesource.com/c/go/+/438475 Reviewed-by: Bryan Mills <bcmills@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com> Run-TryBot: Than McIntosh <thanm@google.com>
Diffstat (limited to 'src/cmd/internal')
-rw-r--r--src/cmd/internal/sys/supported.go167
-rw-r--r--src/cmd/internal/sys/supported_test.go18
2 files changed, 0 insertions, 185 deletions
diff --git a/src/cmd/internal/sys/supported.go b/src/cmd/internal/sys/supported.go
deleted file mode 100644
index ee98d0548e..0000000000
--- a/src/cmd/internal/sys/supported.go
+++ /dev/null
@@ -1,167 +0,0 @@
-// Copyright 2018 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.
-
-package sys
-
-// RaceDetectorSupported reports whether goos/goarch supports the race
-// detector. There is a copy of this function in cmd/dist/test.go.
-// Race detector only supports 48-bit VMA on arm64. But it will always
-// return true for arm64, because we don't have VMA size information during
-// the compile time.
-func RaceDetectorSupported(goos, goarch string) bool {
- switch goos {
- case "linux":
- return goarch == "amd64" || goarch == "ppc64le" || goarch == "arm64" || goarch == "s390x"
- case "darwin":
- return goarch == "amd64" || goarch == "arm64"
- case "freebsd", "netbsd", "openbsd", "windows":
- return goarch == "amd64"
- default:
- return false
- }
-}
-
-// MSanSupported reports whether goos/goarch supports the memory
-// sanitizer option.
-// There is a copy of this function in misc/cgo/testsanitizers/cc_test.go.
-func MSanSupported(goos, goarch string) bool {
- switch goos {
- case "linux":
- return goarch == "amd64" || goarch == "arm64"
- default:
- return false
- }
-}
-
-// ASanSupported reports whether goos/goarch supports the address
-// sanitizer option.
-// There is a copy of this function in misc/cgo/testsanitizers/cc_test.go.
-func ASanSupported(goos, goarch string) bool {
- switch goos {
- case "linux":
- return goarch == "arm64" || goarch == "amd64" || goarch == "riscv64" || goarch == "ppc64le"
- default:
- return false
- }
-}
-
-// FuzzSupported reports whether goos/goarch supports fuzzing
-// ('go test -fuzz=.').
-func FuzzSupported(goos, goarch string) bool {
- switch goos {
- case "darwin", "freebsd", "linux", "windows":
- return true
- default:
- return false
- }
-}
-
-// FuzzInstrumented reports whether fuzzing on goos/goarch uses coverage
-// instrumentation. (FuzzInstrumented implies FuzzSupported.)
-func FuzzInstrumented(goos, goarch string) bool {
- switch goarch {
- case "amd64", "arm64":
- // TODO(#14565): support more architectures.
- return FuzzSupported(goos, goarch)
- default:
- return false
- }
-}
-
-// MustLinkExternal reports whether goos/goarch requires external linking.
-// (This is the opposite of internal/testenv.CanInternalLink. Keep them in sync.)
-func MustLinkExternal(goos, goarch string) bool {
- switch goos {
- case "android":
- if goarch != "arm64" {
- return true
- }
- case "ios":
- if goarch == "arm64" {
- return true
- }
- }
- return false
-}
-
-// BuildModeSupported reports whether goos/goarch supports the given build mode
-// using the given compiler.
-func BuildModeSupported(compiler, buildmode, goos, goarch string) bool {
- if compiler == "gccgo" {
- return true
- }
-
- platform := goos + "/" + goarch
-
- switch buildmode {
- case "archive":
- return true
-
- case "c-archive":
- // TODO(bcmills): This seems dubious.
- // Do we really support c-archive mode on js/wasm‽
- return platform != "linux/ppc64"
-
- case "c-shared":
- switch platform {
- case "linux/amd64", "linux/arm", "linux/arm64", "linux/386", "linux/ppc64le", "linux/riscv64", "linux/s390x",
- "android/amd64", "android/arm", "android/arm64", "android/386",
- "freebsd/amd64",
- "darwin/amd64", "darwin/arm64",
- "windows/amd64", "windows/386", "windows/arm64":
- return true
- }
- return false
-
- case "default":
- return true
-
- case "exe":
- return true
-
- case "pie":
- switch platform {
- case "linux/386", "linux/amd64", "linux/arm", "linux/arm64", "linux/ppc64le", "linux/riscv64", "linux/s390x",
- "android/amd64", "android/arm", "android/arm64", "android/386",
- "freebsd/amd64",
- "darwin/amd64", "darwin/arm64",
- "ios/amd64", "ios/arm64",
- "aix/ppc64",
- "windows/386", "windows/amd64", "windows/arm":
- return true
- }
- return false
-
- case "shared":
- switch platform {
- case "linux/386", "linux/amd64", "linux/arm", "linux/arm64", "linux/ppc64le", "linux/s390x":
- return true
- }
- return false
-
- case "plugin":
- switch platform {
- case "linux/amd64", "linux/arm", "linux/arm64", "linux/386", "linux/s390x", "linux/ppc64le",
- "android/amd64", "android/arm", "android/arm64", "android/386",
- "darwin/amd64", "darwin/arm64",
- "freebsd/amd64":
- return true
- }
- return false
-
- default:
- return false
- }
-}
-
-func InternalLinkPIESupported(goos, goarch string) bool {
- switch goos + "/" + goarch {
- case "darwin/amd64", "darwin/arm64",
- "linux/amd64", "linux/arm64", "linux/ppc64le",
- "android/arm64",
- "windows-amd64", "windows-386", "windows-arm":
- return true
- }
- return false
-}
diff --git a/src/cmd/internal/sys/supported_test.go b/src/cmd/internal/sys/supported_test.go
deleted file mode 100644
index 1217814af5..0000000000
--- a/src/cmd/internal/sys/supported_test.go
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2020 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.
-
-package sys
-
-import (
- "internal/testenv"
- "runtime"
- "testing"
-)
-
-func TestMustLinkExternalMatchesTestenv(t *testing.T) {
- // MustLinkExternal and testenv.CanInternalLink are the exact opposite.
- if b := MustLinkExternal(runtime.GOOS, runtime.GOARCH); b != !testenv.CanInternalLink() {
- t.Fatalf("MustLinkExternal() == %v, testenv.CanInternalLink() == %v, don't match", b, testenv.CanInternalLink())
- }
-}