Commit ca70c918 authored by Russ Cox's avatar Russ Cox

[release-branch.go1.3] runtime: hide cgocallback_gofunc calling cgocallbackg from linker

The linker error at
http://build.golang.org/log/42c57ff6b57ab36f6622417108bb5697e4d36fa7
is a false positive: cgocallback_gofunc is invoked on the g0 stack,
as explained in its comments, and then it switches to the m->curg
stack to invoke cgocallbackg. Checking the stacksplit sequence
on the g0 stack doesn't make sense, nor does carrying a check
that starts on the g0 stack over to the curg stack.
Change the code to use an indirect call so that the linker
stacksplit check does not follow through it.

LGTM=bradfitz, adg
R=golang-codereviews, bradfitz, adg
CC=golang-codereviews, iant, r
https://golang.org/cl/146510043
parent 3fa6b988
......@@ -784,7 +784,8 @@ havem:
MOVQ BP, -8(DI)
LEAQ -(8+8)(DI), SP
MOVQ R8, 0(SP)
CALL runtime·cgocallbackg(SB)
MOVQ $runtime·cgocallbackg(SB), AX // hide function call from linker
CALL AX
MOVQ 0(SP), R8
// Restore g->sched (== m->curg->sched) from saved values.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment