From 98379d014ca70c367705a7beb759a0c2dce6172e Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sat, 17 Oct 2020 20:37:20 +0200 Subject: [PATCH] cpu: avoid illegal instruction on openbsd/arm64 On OpenBSD, this package tries to read a privileged register, which results in a SIGILL. Use the same workaround as Android, iOS and NetBSD. Update golang/go#31746 Change-Id: I981249310169bc30b018c1a157529a4e46597d81 Reviewed-on: https://go-review.googlesource.com/c/sys/+/263337 Trust: Tobias Klauser Run-TryBot: Tobias Klauser TryBot-Result: Go Bot Reviewed-by: Ian Lance Taylor Reviewed-by: Joel Sing --- cpu/cpu_arm64.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cpu/cpu_arm64.go b/cpu/cpu_arm64.go index 951078f2..2f64d3b3 100644 --- a/cpu/cpu_arm64.go +++ b/cpu/cpu_arm64.go @@ -39,7 +39,7 @@ func initOptions() { func archInit() { switch runtime.GOOS { - case "android", "darwin", "ios", "netbsd": + case "android", "darwin", "ios", "netbsd", "openbsd": // Android and iOS don't seem to allow reading these registers. // // NetBSD: @@ -47,6 +47,9 @@ func archInit() { // It can be read via sysctl(3). Example for future implementers: // https://nxr.netbsd.org/xref/src/usr.sbin/cpuctl/arch/aarch64.c // + // OpenBSD: + // See https://golang.org/issue/31746 + // // Fake the minimal features expected by // TestARM64minimalFeatures. ARM64.HasASIMD = true