runtime: fix asan wrapper for riscv64

Make sure we keep the M in X21. The instruction at line 87
needs to be loading from the M, not from the gsignal.

Fixes #73979, maybe?

Change-Id: I3aba1c35454636138b305bca26e20dbc8e6b1d6e
Reviewed-on: https://go-review.googlesource.com/c/go/+/688975
Reviewed-by: Joel Sing <joel@sing.id.au>
Reviewed-by: Michael Pratt <mpratt@google.com>
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: Meng Zhuo <mengzhuo1203@gmail.com>
Reviewed-by: Mark Ryan <markdryan@rivosinc.com>
Auto-Submit: Keith Randall <khr@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
Keith Randall 2025-07-19 09:34:04 -07:00 committed by Gopher Robot
parent e5502e0959
commit 5dac42363b

View file

@ -81,13 +81,13 @@ TEXT asancall<>(SB), NOSPLIT, $0-0
MOV g_m(g), X21
// Switch to g0 stack if we aren't already on g0 or gsignal.
MOV m_gsignal(X21), X21
BEQ X21, g, call
MOV m_gsignal(X21), X22
BEQ X22, g, call
MOV m_g0(X21), X21
BEQ X21, g, call
MOV m_g0(X21), X22
BEQ X22, g, call
MOV (g_sched+gobuf_sp)(X21), X2
MOV (g_sched+gobuf_sp)(X22), X2
call:
JALR RA, X14