aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/dist/test.go
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2023-01-28 20:05:53 -0800
committerGopher Robot <gobot@golang.org>2023-01-31 16:53:53 +0000
commit43115ff094be30b7a3c45eaf82ee6d257f3aa6c6 (patch)
tree9465ee671ee41ef4f6fe5dacacf3884b30cbde7b /src/cmd/dist/test.go
parent5c6d7322004330b58ea40ca9335dd9fb81f51f50 (diff)
downloadgo-43115ff094be30b7a3c45eaf82ee6d257f3aa6c6.tar.gz
go-43115ff094be30b7a3c45eaf82ee6d257f3aa6c6.zip
cmd/link, cmd/dist, internal/platform: consolidate c-archive support
Make all the tests for whether -buildmode=c-archive is supported consistent. Base this on the historical code, on whether cmd/compile supports -shared, and whether cmd/link permits the mode. Change-Id: Ib996546906f698ade4c32b8e6c705838e4ad4b90 Reviewed-on: https://go-review.googlesource.com/c/go/+/463984 Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Bryan Mills <bcmills@google.com> Auto-Submit: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org>
Diffstat (limited to 'src/cmd/dist/test.go')
-rw-r--r--src/cmd/dist/test.go24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/cmd/dist/test.go b/src/cmd/dist/test.go
index 10bca33c68..d8c5983127 100644
--- a/src/cmd/dist/test.go
+++ b/src/cmd/dist/test.go
@@ -1141,6 +1141,7 @@ func (t *tester) internalLinkPIE() bool {
return false
}
+// supportedBuildMode reports whether the given build mode is supported.
func (t *tester) supportedBuildmode(mode string) bool {
pair := goos + "-" + goarch
switch mode {
@@ -1148,13 +1149,24 @@ func (t *tester) supportedBuildmode(mode string) bool {
if !t.extLink() {
return false
}
- switch pair {
- case "aix-ppc64",
- "darwin-amd64", "darwin-arm64", "ios-arm64",
- "linux-amd64", "linux-386", "linux-ppc64le", "linux-riscv64", "linux-s390x",
- "freebsd-amd64",
- "windows-amd64", "windows-386":
+ switch goos {
+ case "aix", "darwin", "ios", "windows":
return true
+ case "linux":
+ switch goarch {
+ case "386", "amd64", "arm", "armbe", "arm64", "arm64be", "ppc64", "ppc64le", "riscv64", "s390x":
+ return true
+ default:
+ // Other targets do not support -shared,
+ // per ParseFlags in
+ // cmd/compile/internal/base/flag.go.
+ // For c-archive the Go tool passes -shared,
+ // so that the result is suitable for inclusion
+ // in a PIE or shared library.
+ return false
+ }
+ case "freebsd":
+ return goarch == "amd64"
}
return false
case "c-shared":