Message ID | CAOyqgcXsgcSEHmUuL1eLJN3Rj6N1_qpPpzUto5RiEAVnZemDDw@mail.gmail.com |
---|---|
State | New |
Headers | show |
Hi Ian, >> this patch broke i386-pc-solaris2.12 and sparc-sun-solaris2.12 >> bootstrap, however: in both cases, the 64-bit build of os.lo fails like this: >> >> /vol/gcc/src/hg/trunk/local/libgo/go/os/dir.go:82:8: error: reference to undefined name 'libc_readdir_r' >> i := libc_readdir_r(file.dirinfo.dir, entryDirent, pr) >> ^ >> >> Neither dir_largefile.go (which is correctly omitted, being 32-bit only) >> nor dir_regfile.go (which is needed here) is included in the >> compilation. > > Sorry, I don't know what I messed up in my testing. I committed the > appended patch, which should fix the problem. I had found a different one to the same effect, but running match.sh with yours looked right, too. There's now one new failure, 32 and 64-bit, sparc and x86: +FAIL: syscall libgo.log shows libcalls.go:825:1: error: redefinition of 'Getpgid' func Getpgid(pid int) (pgid int, err error) { ^ exec_solaris_test.go:22:1: note: previous definition of 'Getpgid' was here func Getpgid(pid int) (pgid int, err error) { ^ libcalls.go:843:1: error: redefinition of 'Getpgrp' func Getpgrp() (pid int) { ^ exec_solaris_test.go:31:1: note: previous definition of 'Getpgrp' was here func Getpgrp() (pgrp int) { ^ exec_solaris_test.go:14:3: error: libc_Getpgid is not a function; //go:linkname is only supported for functions //go:linkname libc_Getpgid libc_Getpgid ^ exec_solaris_test.go:15:3: error: libc_Getpgrp is not a function; //go:linkname is only supported for functions //go:linkname libc_Getpgrp libc_Getpgrp ^ exec_solaris_test.go:23:15: error: reference to undefined name 'sysvicall6' r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&libc_Getpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0) ^ exec_solaris_test.go:32:14: error: reference to undefined name 'sysvicall6' r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&libc_Getpgrp)), 0, 0, 0, 0, 0, 0, 0) ^ exec_solaris_test.go:37:13: error: reference to undefined name 'ioctl' var Ioctl = ioctl ^ exec_solaris_test.go:19:15: error: use of undefined type 'libcFunc' libc_Getpgrp libcFunc ^ I've no idea what exec_solaris_test.go is about: e.g.I couldn't find any other reference to sysvicall6 elsewhere in the gcc tree. Rainer
Hi Ian, >>> this patch broke i386-pc-solaris2.12 and sparc-sun-solaris2.12 >>> bootstrap, however: in both cases, the 64-bit build of os.lo fails like this: >>> >>> /vol/gcc/src/hg/trunk/local/libgo/go/os/dir.go:82:8: error: reference to undefined name 'libc_readdir_r' >>> i := libc_readdir_r(file.dirinfo.dir, entryDirent, pr) >>> ^ >>> >>> Neither dir_largefile.go (which is correctly omitted, being 32-bit only) >>> nor dir_regfile.go (which is needed here) is included in the >>> compilation. >> >> Sorry, I don't know what I messed up in my testing. I committed the >> appended patch, which should fix the problem. > > I had found a different one to the same effect, but running match.sh > with yours looked right, too. here's another issue found during wider testing: on Solaris 10 with /bin/ksh as CONFIG_SHELL, the build aborts like this: objcopy: 'bufio.o': No such file Makefile:5072: recipe for target 'bufio.gox' failed make[4]: *** [bufio.gox] Error 1 It turns out that no bufio.o is created indeed: /vol/gcc/src/hg/trunk/local/libgo/../install-sh -c -d .; files=`echo | sed -e 's/[^ ]*\.gox//g' -e 's/[^ ]*\.dep//'`; /bin/ksh ./libtool --tag GO --mode=compile /var/gcc/regression/trunk/10-gcc/build/./gcc/gccgo -B/var/gcc/regression/trunk/10-gcc/build/./gcc/ -B/vol/gcc/i386-pc-solaris2.10/bin/ -B/vol/gcc/i386-pc-solaris2.10/lib/ -isystem /vol/gcc/i386-pc-solaris2.10/include -isystem /vol/gcc/i386-pc-solaris2.10/sys-include -minline-all-stringops -g -O2 -I . -c -fgo-pkgpath=`echo bufio.lo | sed -e 's/.lo$//' -e 's/-go$//'` -o bufio.lo $files The list of input files, output from the likes of /bin/ksh /vol/gcc/src/hg/trunk/local/libgo/match.sh --goarch=386 --goos=solaris --srcdir=/vol/gcc/src/hg/trunk/local/libgo/go/bufio --extrafiles="" is empty. Running match.sh with /bin/ksh -x reveals + set -e + unset LANG where the script aborts. It turns out that /bin/ksh errors out on an unset of a variable that isn't set. Maybe one could explicitly set LANG=C here, or use the `portable unset' used in configure? Thanks. Rainer
Index: gcc/go/gofrontend/MERGE =================================================================== --- gcc/go/gofrontend/MERGE (revision 239332) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -5e05b7bc947231b4d5a8327bf63e2fa648e51dc7 +fe1e77f843220503f1f8d5ea7dd5e307580e1d38 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: libgo/go/os/dir_regfile.go =================================================================== --- libgo/go/os/dir_regfile.go (revision 239189) +++ libgo/go/os/dir_regfile.go (working copy) @@ -6,8 +6,8 @@ // license that can be found in the LICENSE file. // +build !linux -// +build !solaris,386 -// +build !solaris,sparc +// +build !solaris !386 +// +build !solaris !sparc package os