mirror of
https://github.com/golang/go
synced 2024-11-17 03:04:44 -07:00
runtime: call cgocallbackg indirectly on PPC64
This is CL 312669, for PPC64. cgocallback calls cgocallbackg after switching the stack. Call it indirectly to bypass the linker's nosplit check. The nosplit check fails after CL 351271, which removes ABI aliases. It would have been failing before but the linker's nosplit check didn't resolve ABI alias (it should) so it didn't catch that. Removing the ABI aliases exposes it. For this partuclar case it is benign as there is actually a stack switch in between. Should fix PPC64 build. Change-Id: I49617aea55270663a9ee4692c54c070c5ab85470 Reviewed-on: https://go-review.googlesource.com/c/go/+/351469 Trust: Cherry Mui <cherryyz@google.com> Run-TryBot: Cherry Mui <cherryyz@google.com> Reviewed-by: Than McIntosh <thanm@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com>
This commit is contained in:
parent
dc5b1d31c8
commit
91c2318e67
@ -688,7 +688,10 @@ havem:
|
||||
MOVD R5, FIXED_FRAME+0(R1)
|
||||
MOVD R6, FIXED_FRAME+8(R1)
|
||||
MOVD R7, FIXED_FRAME+16(R1)
|
||||
BL runtime·cgocallbackg(SB)
|
||||
|
||||
MOVD $runtime·cgocallbackg(SB), R12
|
||||
MOVD R12, CTR
|
||||
CALL (CTR) // indirect call to bypass nosplit check. We're on a different stack now.
|
||||
|
||||
// Restore g->sched (== m->curg->sched) from saved values.
|
||||
MOVD 0(R1), R5
|
||||
|
Loading…
Reference in New Issue
Block a user