mirror of
https://github.com/golang/go
synced 2024-11-07 09:36:11 -07:00
runtime: open up space for callee's arg spill slot in mcall (regabi version)
mcall calls fn with an argument. Currently, in the regabi version of mcall it does not reserve space for that argument's spill slot. If the callee spills its argument, it may clobber things on the g0 stack at 0(SP) (e.g. the old SP saved in cgocallback). Reserve the space. Change-Id: I85a314273cd996c7fac8fd0b03cd9033faae9c5a Reviewed-on: https://go-review.googlesource.com/c/go/+/311489 Trust: Cherry Zhang <cherryyz@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com>
This commit is contained in:
parent
5780ab4f60
commit
f8892147bd
@ -302,8 +302,10 @@ goodm:
|
||||
get_tls(CX) // Set G in TLS
|
||||
MOVQ R14, g(CX)
|
||||
MOVQ (g_sched+gobuf_sp)(R14), SP // sp = g0.sched.sp
|
||||
PUSHQ AX // open up space for fn's arg spill slot
|
||||
MOVQ 0(DX), R12
|
||||
CALL R12 // fn(g)
|
||||
POPQ AX
|
||||
JMP runtime·badmcall2(SB)
|
||||
RET
|
||||
#else
|
||||
|
Loading…
Reference in New Issue
Block a user