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:
parent
dfe781e1eb
commit
6ec291f495
@ -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 {
|
||||
|
@ -11,6 +11,8 @@
|
||||
//go:linkname Cas64
|
||||
//go:linkname Load64
|
||||
//go:linkname Store64
|
||||
//go:linkname Or64
|
||||
//go:linkname And64
|
||||
|
||||
package atomic
|
||||
|
||||
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user