diff options
author | Ian Lance Taylor <iant@golang.org> | 2023-01-28 20:05:53 -0800 |
---|---|---|
committer | Gopher Robot <gobot@golang.org> | 2023-01-31 16:53:53 +0000 |
commit | 43115ff094be30b7a3c45eaf82ee6d257f3aa6c6 (patch) | |
tree | 9465ee671ee41ef4f6fe5dacacf3884b30cbde7b /src/cmd/dist/test.go | |
parent | 5c6d7322004330b58ea40ca9335dd9fb81f51f50 (diff) | |
download | go-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.go | 24 |
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": |