From 0067d814b6a45b16af6f9c36b8898bcbf38d0e99 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 30 Jan 2023 15:43:25 -0800 Subject: [PATCH] cmd/link: rewrite (*BuildMode).Set to use platform.BuildModeSupported Change-Id: I7aa2bb4560198a7d9d9e4321f60dec38f6834bdc Reviewed-on: https://go-review.googlesource.com/c/go/+/463745 Reviewed-by: Than McIntosh Run-TryBot: Ian Lance Taylor Auto-Submit: Ian Lance Taylor TryBot-Result: Gopher Robot Reviewed-by: Bryan Mills Reviewed-by: Cherry Mui --- src/cmd/link/internal/ld/config.go | 73 ++---------------------------- 1 file changed, 5 insertions(+), 68 deletions(-) diff --git a/src/cmd/link/internal/ld/config.go b/src/cmd/link/internal/ld/config.go index b1774f8fd2..f2dfa1c1cd 100644 --- a/src/cmd/link/internal/ld/config.go +++ b/src/cmd/link/internal/ld/config.go @@ -30,9 +30,6 @@ const ( // Set implements flag.Value to set the build mode based on the argument // to the -buildmode flag. func (mode *BuildMode) Set(s string) error { - badmode := func() error { - return fmt.Errorf("buildmode %s not supported on %s/%s", s, buildcfg.GOOS, buildcfg.GOARCH) - } switch s { default: return fmt.Errorf("invalid buildmode: %q", s) @@ -44,81 +41,21 @@ func (mode *BuildMode) Set(s string) error { *mode = BuildModeExe } case "pie": - switch buildcfg.GOOS { - case "aix", "android", "linux", "windows", "darwin", "ios": - case "freebsd": - switch buildcfg.GOARCH { - case "amd64": - default: - return badmode() - } - default: - return badmode() - } *mode = BuildModePIE case "c-archive": - switch buildcfg.GOOS { - case "aix", "darwin", "ios", "linux": - case "freebsd": - switch buildcfg.GOARCH { - case "amd64": - default: - return badmode() - } - case "windows": - switch buildcfg.GOARCH { - case "amd64", "386", "arm", "arm64": - default: - return badmode() - } - default: - return badmode() - } *mode = BuildModeCArchive case "c-shared": - switch buildcfg.GOARCH { - case "386", "amd64", "arm", "arm64", "ppc64le", "riscv64", "s390x": - default: - return badmode() - } *mode = BuildModeCShared case "shared": - switch buildcfg.GOOS { - case "linux": - switch buildcfg.GOARCH { - case "386", "amd64", "arm", "arm64", "ppc64le", "s390x": - default: - return badmode() - } - default: - return badmode() - } *mode = BuildModeShared case "plugin": - switch buildcfg.GOOS { - case "linux": - switch buildcfg.GOARCH { - case "386", "amd64", "arm", "arm64", "s390x", "ppc64le": - default: - return badmode() - } - case "darwin": - switch buildcfg.GOARCH { - case "amd64", "arm64": - default: - return badmode() - } - case "freebsd": - switch buildcfg.GOARCH { - case "amd64": - default: - return badmode() - } - default: - return badmode() - } *mode = BuildModePlugin } + + if !platform.BuildModeSupported("gc", s, buildcfg.GOOS, buildcfg.GOARCH) { + return fmt.Errorf("buildmode %s not supported on %s/%s", s, buildcfg.GOOS, buildcfg.GOARCH) + } + return nil } -- 2.48.1