diff options
| author | Than McIntosh <thanm@google.com> | 2022-10-04 09:00:31 -0400 |
|---|---|---|
| committer | Than McIntosh <thanm@google.com> | 2022-10-04 18:08:15 +0000 |
| commit | 8bd803fd4ea3a549a9124f5a4e18af9596ef35df (patch) | |
| tree | 078970e7e27d0f3d48e0dfae4d7a5ba49bb3c01c /src/cmd/internal | |
| parent | dfd8aa461be982533e01867ab002fb83ba3cc943 (diff) | |
| download | go-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.go | 167 | ||||
| -rw-r--r-- | src/cmd/internal/sys/supported_test.go | 18 |
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()) - } -} |
