diff options
author | Joel Sing <joel@sing.id.au> | 2024-03-02 19:53:20 +1100 |
---|---|---|
committer | Joel Sing <joel@sing.id.au> | 2024-03-16 02:25:22 +0000 |
commit | 68d3a9e417344c11426f158c7a6f3197a0890ff1 (patch) | |
tree | 66a6480ff3b4f2613ceb65deb36c291ff1ceda9b | |
parent | b822f098c557ea3d9200fd2d8a2e2b4d641e83e4 (diff) | |
download | go-68d3a9e417344c11426f158c7a6f3197a0890ff1.tar.gz go-68d3a9e417344c11426f158c7a6f3197a0890ff1.zip |
cmd/dist,cmd/link: enable PIE buildmode on openbsd/arm64
The PIE buildmode works correctly on openbsd/arm64, hence enable it.
Updates #59866
Change-Id: I2f3c2839893659391539fafa12891d64f867e189
Reviewed-on: https://go-review.googlesource.com/c/go/+/570375
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Run-TryBot: Joel Sing <joel@sing.id.au>
-rw-r--r-- | src/cmd/dist/test.go | 1 | ||||
-rw-r--r-- | src/cmd/link/internal/ld/lib.go | 6 | ||||
-rw-r--r-- | src/internal/platform/supported.go | 1 |
3 files changed, 6 insertions, 2 deletions
diff --git a/src/cmd/dist/test.go b/src/cmd/dist/test.go index 8f4b081ad1..95d9cab816 100644 --- a/src/cmd/dist/test.go +++ b/src/cmd/dist/test.go @@ -1637,6 +1637,7 @@ func buildModeSupported(compiler, buildmode, goos, goarch string) bool { "darwin/amd64", "darwin/arm64", "ios/amd64", "ios/arm64", "aix/ppc64", + "openbsd/arm64", "windows/386", "windows/amd64", "windows/arm", "windows/arm64": return true } diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index c68da4070b..35b9ca01d2 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -1436,13 +1436,15 @@ func (ctxt *Link) hostlink() { } } case objabi.Hopenbsd: - argv = append(argv, "-Wl,-nopie") + argv = append(argv, "-pthread") + if ctxt.BuildMode != BuildModePIE { + argv = append(argv, "-Wl,-nopie") + } if linkerFlagSupported(ctxt.Arch, argv[0], "", "-Wl,-z,nobtcfi") { // -Wl,-z,nobtcfi is only supported on OpenBSD 7.4+, remove guard // when OpenBSD 7.5 is released and 7.3 is no longer supported. argv = append(argv, "-Wl,-z,nobtcfi") } - argv = append(argv, "-pthread") if ctxt.Arch.InFamily(sys.ARM64) { // Disable execute-only on openbsd/arm64 - the Go arm64 assembler // currently stores constants in the text section rather than in rodata. diff --git a/src/internal/platform/supported.go b/src/internal/platform/supported.go index 82c66e2195..8f43cbf25f 100644 --- a/src/internal/platform/supported.go +++ b/src/internal/platform/supported.go @@ -192,6 +192,7 @@ func BuildModeSupported(compiler, buildmode, goos, goarch string) bool { "darwin/amd64", "darwin/arm64", "ios/amd64", "ios/arm64", "aix/ppc64", + "openbsd/arm64", "windows/386", "windows/amd64", "windows/arm", "windows/arm64": return true } |