CL 544455, which added atomic And/Or APIs, raced with CL 585556, which
enabled stricter linkname checking. This caused linkname-related
failures on ARM and MIPS. Fix this by adding the necessary linknames.
We fix one other linkname that got overlooked in CL 585556.
Updates #61395.
Change-Id: I454f0767ce28188e550a61bc39b7e398239bc10e
Reviewed-on: https://go-review.googlesource.com/c/go/+/586516
Reviewed-by: Mauri de Souza Meneguzzo <mauri870@gmail.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: David Chase <drchase@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Austin Clements <austin@google.com>
//go:build arm || wasm
+// Export some functions via linkname to assembly in sync/atomic.
+//
+//go:linkname And32
+//go:linkname Or32
+//go:linkname And64
+//go:linkname Or64
+//go:linkname Anduintptr
+//go:linkname Oruintptr
+
package atomic
+import _ "unsafe" // For linkname
+
//go:nosplit
func And32(ptr *uint32, val uint32) uint32 {
for {
//go:linkname Cas64
//go:linkname Load64
//go:linkname Store64
+//go:linkname Or64
+//go:linkname And64
package atomic
timerpMask pMask
)
+// goarmsoftfp is used by runtime/cgo assembly.
+//
+//go:linkname goarmsoftfp
+
var (
// Pool of GC parked background workers. Entries are type
// *gcBgMarkWorkerNode.