mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/link/internal/ld: disable execute-only for external linking on openbsd/arm64
The Go arm64 assembler places constants into the text section of a binary. OpenBSD 7.3 enabled xonly by default on OpenBSD/arm64. This means that any externally linked Go binary now segfaults. Disable execute-only when invoking the external linker on openbsd/arm64, in order to work around this issue. Updates #59615 Change-Id: I1a291293da3c6e4409b21873d066ea15e9bfe280 Reviewed-on: https://go-review.googlesource.com/c/go/+/484555 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@google.com> Reviewed-by: Aaron Bieber <deftly@gmail.com> Run-TryBot: Joel Sing <joel@sing.id.au> Reviewed-by: Than McIntosh <thanm@google.com>
This commit is contained in:
parent
35ec948de7
commit
dd53a43920
1 changed files with 6 additions and 0 deletions
|
|
@ -1407,6 +1407,12 @@ func (ctxt *Link) hostlink() {
|
|||
case objabi.Hopenbsd:
|
||||
argv = append(argv, "-Wl,-nopie")
|
||||
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.
|
||||
// See issue #59615.
|
||||
argv = append(argv, "-Wl,--no-execute-only")
|
||||
}
|
||||
case objabi.Hwindows:
|
||||
if windowsgui {
|
||||
argv = append(argv, "-mwindows")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue