mirror of
https://github.com/golang/go
synced 2024-09-30 14:38:33 -06:00
syscall: mark forkAndExecInChild1 noinline
This certainly won't get inlined right now, but in the spirit of making this more robust, we have to disable inlining because inlining would defeat the purpose of separating forkAndExecInChild1 into a separate function. Updates #20732. Change-Id: I736c3f909cc42c5f5783740c2e19ba4827c7c2ec Reviewed-on: https://go-review.googlesource.com/46174 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
67e537541c
commit
87adaf4c08
@ -90,6 +90,15 @@ func forkAndExecInChild(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr
|
|||||||
return pid, 0
|
return pid, 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// forkAndExecInChild1 implements the body of forkAndExecInChild up to
|
||||||
|
// the parent's post-fork path. This is a separate function so we can
|
||||||
|
// separate the child's and parent's stack frames if we're using
|
||||||
|
// vfork.
|
||||||
|
//
|
||||||
|
// This is go:noinline because the point is to keep the stack frames
|
||||||
|
// of this and forkAndExecInChild separate.
|
||||||
|
//
|
||||||
|
//go:noinline
|
||||||
//go:norace
|
//go:norace
|
||||||
func forkAndExecInChild1(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr *ProcAttr, sys *SysProcAttr, pipe int) (r1 uintptr, err1 Errno, p [2]int, locked bool) {
|
func forkAndExecInChild1(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr *ProcAttr, sys *SysProcAttr, pipe int) (r1 uintptr, err1 Errno, p [2]int, locked bool) {
|
||||||
// vfork requires that the child not touch any of the parent's
|
// vfork requires that the child not touch any of the parent's
|
||||||
|
Loading…
Reference in New Issue
Block a user