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 <tobias.klauser@gmail.com>
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Joel Sing <joel@sing.id.au>
This commit is contained in:
Tobias Klauser
2020-10-18 12:10:11 +00:00
committed by Tobias Klauser
parent b09fb700fb
commit 98379d014c
+4 -1
View File
@@ -39,7 +39,7 @@ func initOptions() {
func archInit() { func archInit() {
switch runtime.GOOS { 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. // Android and iOS don't seem to allow reading these registers.
// //
// NetBSD: // NetBSD:
@@ -47,6 +47,9 @@ func archInit() {
// It can be read via sysctl(3). Example for future implementers: // It can be read via sysctl(3). Example for future implementers:
// https://nxr.netbsd.org/xref/src/usr.sbin/cpuctl/arch/aarch64.c // 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 // Fake the minimal features expected by
// TestARM64minimalFeatures. // TestARM64minimalFeatures.
ARM64.HasASIMD = true ARM64.HasASIMD = true