On Fri, Aug 12, 2016 at 2:15 AM, Rainer Orth <r...@cebitec.uni-bielefeld.de> wrote: > >>> 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.
The file syscall/exec_solaris_test.go is verifying that the somewhat unusual way that Solaris support is implemented in the gc toolchain works correctly. It is meaningless and unnecessary for gccgo. I removed it. Patch bootstrapped and tested on x86_64-pc-linux-gnu, which I admit means nothing. Committed to mainline. Ian
Index: gcc/go/gofrontend/MERGE =================================================================== --- gcc/go/gofrontend/MERGE (revision 239393) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -fe1e77f843220503f1f8d5ea7dd5e307580e1d38 +cf91720c650f2cdbd8153a5a5f048793cfab3966 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: libgo/go/syscall/exec_solaris_test.go =================================================================== --- libgo/go/syscall/exec_solaris_test.go (revision 238653) +++ libgo/go/syscall/exec_solaris_test.go (working copy) @@ -1,37 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build solaris - -package syscall - -import "unsafe" - -//go:cgo_import_dynamic libc_Getpgid getpgid "libc.so" -//go:cgo_import_dynamic libc_Getpgrp getpgrp "libc.so" - -//go:linkname libc_Getpgid libc_Getpgid -//go:linkname libc_Getpgrp libc_Getpgrp - -var ( - libc_Getpgid, - libc_Getpgrp libcFunc -) - -func Getpgid(pid int) (pgid int, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&libc_Getpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0) - pgid = int(r0) - if e1 != 0 { - err = e1 - } - return -} - -func Getpgrp() (pgrp int) { - r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&libc_Getpgrp)), 0, 0, 0, 0, 0, 0, 0) - pgrp = int(r0) - return -} - -var Ioctl = ioctl