]> git.feebdaed.xyz Git - 0xmirror/go.git/commit
runtime/race: set missing argument frame for ppc64x atomic And/Or wrappers
authorJayanth Krishnamurthy jayanth.krishnamurthy@ibm.com <jayanth.krishnamurthy@ibm.com>
Thu, 6 Nov 2025 19:43:45 +0000 (13:43 -0600)
committerKeith Randall <khr@golang.org>
Fri, 5 Dec 2025 19:22:36 +0000 (11:22 -0800)
commit44cb82449e7f24530fe0fe0bf8261ba9e0e4e7d8
tree5c41205dc1088eefdcf9261b6ceb2294edf14c8e
parent435e61c80141653c22e29d81447e4c6e4033f768
runtime/race: set missing argument frame for ppc64x atomic And/Or wrappers

The ppc64x TSAN wrappers for atomic And/Or did not initialize R6 with the Go argument frame before calling racecallatomic. Since racecallatomic expects R6 to point to the argument list and dereferences it unconditionally, this led to a nil-pointer dereference under -race.

Other atomic TSAN wrappers (Load/Store/Add/Swap/CAS) already set up R6 in the expected way. This change aligns the And/Or wrappers with the rest by adding the missing R6 initialisation.

This keeps the behavior consistent across all atomic operations on ppc64x.

Fixes #76051.
Change-Id: Iaf578449a6171a0c6f7c33ec6f64c1251297ae6d
Cq-Include-Trybots: luci.golang.try:gotip-linux-ppc64_power10,gotip-linux-ppc64_power8,gotip-linux-ppc64le_power8,gotip-linux-ppc64le_power9,gotip-linux-ppc64le_power10
Reviewed-on: https://go-review.googlesource.com/c/go/+/718560
Reviewed-by: Mark Freeman <markfreeman@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Paul Murphy <paumurph@redhat.com>
src/runtime/race_ppc64le.s