This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: libgo patch committed: Upgrade to Go 1.9 release
On Fri, Sep 15, 2017 at 5:03 AM, Rainer Orth
<ro@cebitec.uni-bielefeld.de> wrote:
>
>>>> the patch broke Solaris bootstrap:
>>>>
>>>> /vol/gcc/src/hg/trunk/local/libgo/go/syscall/exec_unix.go:240:11: error: reference to undefined name 'forkExecPipe'
>>>> if err = forkExecPipe(p[:]); err != nil {
>>>> ^
>>>>
>>>> libgo/go/syscall/forkpipe_bsd.go is needed on Solaris, too.
>>>>
>>>> /vol/gcc/src/hg/trunk/local/libgo/go/golang_org/x/net/lif/link.go:73:10: error: use of undefined type 'lifnum'
>>>> lifn := lifnum{Flags: sysLIFC_NOXMIT | sysLIFC_TEMPORARY | sysLIFC_ALLZONES | sysLIFC_UNDER_IPMP}
>>>> ^
>>>> make[8]: *** [Makefile:3349: golang_org/x/net/lif.lo] Error 1
>>>>
>>>> The Go 1.9 upgrade patch has
>>>>
>>>> @@ -70,7 +70,7 @@ func Links(af int, name string) ([]Link,
>>>>
>>>> func links(eps []endpoint, name string) ([]Link, error) {
>>>> var lls []Link
>>>> - lifn := sysLifnum{Flags: sysLIFC_NOXMIT | sysLIFC_TEMPORARY | sysLIFC_AL
>>>> LZONES | sysLIFC_UNDER_IPMP}
>>>> + lifn := lifnum{Flags: sysLIFC_NOXMIT | sysLIFC_TEMPORARY | sysLIFC_ALLZO
>>>> NES | sysLIFC_UNDER_IPMP}
>>>>
>>>> Reverting that allows link.go to compile.
>>>>
>>>> /vol/gcc/src/hg/trunk/local/libgo/go/internal/poll/fd_unix.go:366:21: error: reference to undefined identifier 'syscall.ReadDirent'
>>>> n, err := syscall.ReadDirent(fd.Sysfd, buf)
>>>> ^
>>>>
>>>> I don't yet see where this comes from on non-Linux systems...
>>>
>>> It's in forkpipe_bsd.go. Does this patch fix the problem?
>>
>> that's true for forkExecPipe and I had this change in the patch I'd
>> attached. But what about syscall.ReadDirent? I couldn't find that
>> one...
>
> I've had success with this patch on sparc-sun-solaris2.11 and
> i386-pc-solaris2.11.
>
> I've no idea what's behind upstream's src/syscall/syscall_solaris.go:
>
> func ReadDirent(fd int, buf []byte) (n int, err error) {
> // Final argument is (basep *uintptr) and the syscall doesn't take nil.
> // TODO(rsc): Can we use a single global basep for all calls?
> return Getdents(fd, buf, new(uintptr))
> }
>
> I could find no hint that getdents(2) has an additional basep arg,
> neither in OpenSolaris sources nor in Illumos, so I've ignored this
> weirdness.
Thanks for sorting this out. I committed your patch.
Ian