This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]