From 8bd803fd4ea3a549a9124f5a4e18af9596ef35df Mon Sep 17 00:00:00 2001 From: Than McIntosh Date: Tue, 4 Oct 2022 09:00:31 -0400 Subject: 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 TryBot-Result: Gopher Robot Reviewed-by: Cherry Mui Run-TryBot: Than McIntosh --- src/cmd/internal/sys/supported.go | 167 --------------------------------- src/cmd/internal/sys/supported_test.go | 18 ---- 2 files changed, 185 deletions(-) delete mode 100644 src/cmd/internal/sys/supported.go delete mode 100644 src/cmd/internal/sys/supported_test.go (limited to 'src/cmd/internal') 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()) - } -} -- cgit v1.3