mirror of
https://github.com/golang/go
synced 2024-11-26 02:07:57 -07:00
[dev.regabi] runtime: zero X15 in racecall
racecall can be called in ABIInternal context (e.g. raceread calling racecalladdr calling racecall) without wrapper. racecall calls C code, which doesn't preserve our special registers. Set them explicitly in racecall upon returning from C. Change-Id: Ic990479c1fca6bb8a3b151325c7a89be8331a530 Reviewed-on: https://go-review.googlesource.com/c/go/+/289709 Trust: Cherry Zhang <cherryyz@google.com> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Michael Knyszek <mknyszek@google.com> Reviewed-by: Jeremy Faller <jeremy@golang.org>
This commit is contained in:
parent
397a46a10a
commit
946351d5a2
@ -412,6 +412,9 @@ call:
|
||||
ANDQ $~15, SP // alignment for gcc ABI
|
||||
CALL AX
|
||||
MOVQ R12, SP
|
||||
// Back to Go world, set special registers.
|
||||
// The g register (R14) is preserved in C.
|
||||
XORPS X15, X15
|
||||
RET
|
||||
|
||||
// C->Go callback thunk that allows to call runtime·racesymbolize from C code.
|
||||
|
Loading…
Reference in New Issue
Block a user