Backport a patch just committed to gc tip.  There is a bug report on
the golang-dev mailing list
(https://groups.google.com/d/msg/golang-dev/sDg-t1_DPw0/-AJmLxgPBQAJ)
in which waitid running on MIPS returns EFAULT, and this patch may fix
the problem.  Bootstrapped and ran Go tests on x86_64-pc-linux-gnu.
Committed to mainline and GCC 7 branch.

Ian
Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE     (revision 249595)
+++ gcc/go/gofrontend/MERGE     (working copy)
@@ -1,4 +1,4 @@
-f107cc8bced1939b0083231fc1ea24669ca4832c
+c49ba1ca392b3c23a4b3934e0a95a908b1dc2f1d
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
Index: libgo/go/os/wait_waitid.go
===================================================================
--- libgo/go/os/wait_waitid.go  (revision 249205)
+++ libgo/go/os/wait_waitid.go  (working copy)
@@ -23,7 +23,7 @@ func (p *Process) blockUntilWaitable() (
        // On Darwin, it requires greater than or equal to 64 bytes
        // for darwin/{386,arm} and 104 bytes for darwin/amd64.
        // We don't care about the values it returns.
-       var siginfo [128]byte
+       var siginfo [16]uint64
        psig := &siginfo[0]
        _, _, e := syscall.Syscall6(syscall.SYS_WAITID, _P_PID, uintptr(p.Pid), 
uintptr(unsafe.Pointer(psig)), syscall.WEXITED|syscall.WNOWAIT, 0, 0)
        runtime.KeepAlive(p)

Reply via email to