Open
Description
The Go assembler for arm64 generates code that is not execute-only compatible, since it stores constants in the text section rather than in rodata, which it then reads during execution.
OpenBSD 7.3 has enabled xonly by default on OpenBSD/arm64 - this means that externally linked Go binaries segfault on execution. This can be worked around in the interim by disabling execute-only when the external linker is invoked.
Longer term, the assembler should store constants in rodata and/or load them via instructions, such that the text section can be marked as execute-only.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Todo