1
0
mirror of https://github.com/golang/go synced 2024-11-15 02:40:32 -07:00

internal/runtime/atomic: fix missing linknames

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>
This commit is contained in:
Austin Clements 2024-05-17 15:32:13 -04:00 committed by Gopher Robot
parent dfe781e1eb
commit 6ec291f495
3 changed files with 17 additions and 0 deletions

View File

@ -4,8 +4,19 @@
//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 {

View File

@ -11,6 +11,8 @@
//go:linkname Cas64
//go:linkname Load64
//go:linkname Store64
//go:linkname Or64
//go:linkname And64
package atomic

View File

@ -1232,6 +1232,10 @@ var (
timerpMask pMask
)
// goarmsoftfp is used by runtime/cgo assembly.
//
//go:linkname goarmsoftfp
var (
// Pool of GC parked background workers. Entries are type
// *gcBgMarkWorkerNode.