mirror of https://github.com/golang/go.git
syscall: use correct type for TIOCSPGRP/TIOCGPGRP
These ioctls take a pid_t (generally a C integer aka int32) and not an int64 - we currently get away with this on little endian 64 bit platforms, since the bytes fall into the correct place, however this breaks on big endian 64 bit platforms (like openbsd/mips64). This is the same fix as CL 267605, however for libc based exec. Updates #36435 Change-Id: I01ae4905cba5e1f8725fa6cb8c35403c511534b2 Reviewed-on: https://go-review.googlesource.com/c/go/+/334881 Trust: Joel Sing <joel@sing.id.au> Reviewed-by: Cherry Mui <cherryyz@google.com>
This commit is contained in:
parent
fcdc3c098c
commit
3d679c6554
|
|
@ -117,14 +117,15 @@ func forkAndExecInChild(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr
|
||||||
}
|
}
|
||||||
|
|
||||||
if sys.Foreground {
|
if sys.Foreground {
|
||||||
pgrp := sys.Pgid
|
// This should really be pid_t, however _C_int (aka int32) is
|
||||||
|
// generally equivalent.
|
||||||
|
pgrp := _C_int(sys.Pgid)
|
||||||
if pgrp == 0 {
|
if pgrp == 0 {
|
||||||
r1, _, err1 = rawSyscall(abi.FuncPCABI0(libc_getpid_trampoline), 0, 0, 0)
|
r1, _, err1 = rawSyscall(abi.FuncPCABI0(libc_getpid_trampoline), 0, 0, 0)
|
||||||
if err1 != 0 {
|
if err1 != 0 {
|
||||||
goto childerror
|
goto childerror
|
||||||
}
|
}
|
||||||
|
pgrp = _C_int(r1)
|
||||||
pgrp = int(r1)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Place process group in foreground.
|
// Place process group in foreground.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue