This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: libgo patch committed: Update to weekly.2012-01-20
- From: Rainer Orth <ro at CeBiTec dot Uni-Bielefeld dot DE>
- To: Ian Lance Taylor <iant at google dot com>
- Cc: gcc-patches at gcc dot gnu dot org, gofrontend-dev at googlegroups dot com
- Date: Fri, 27 Jan 2012 11:56:29 +0100
- Subject: Re: libgo patch committed: Update to weekly.2012-01-20
- References: <mcr1uqntpm7.fsf@dhcp-172-18-216-180.mtv.corp.google.com>
Ian Lance Taylor <iant@google.com> writes:
> I have committed a patch to libgo to update to the weekly.2012-01-20
> release. As usual this e-mail message only includes changes to files
> specific to gccgo. Bootstrapped and ran Go testsuite on
> x86_64-unknown-linux-gnu. Committed to mainline.
This patch (or the previous one, I haven't checked in detail) caused a
couple of problems on Solaris:
/vol/gcc/src/hg/trunk/local/libgo/go/syscall/exec_bsd.go:10:9: error: imported and not used: runtime
Even after fixing all subsequent errors, runtime isn't used.
/vol/gcc/src/hg/trunk/local/libgo/go/syscall/exec_bsd.go:61:10: error: reference to undefined name 'raw_trace'
// Enable tracing if requested.
if sys.Ptrace {
err1 = raw_trace(_PTRACE_TRACEME, 0, nil, nil)
This needs to be raw_ptrace instead, it seems.
/vol/gcc/src/hg/trunk/local/libgo/go/syscall/exec_bsd.go:156:31: error: reference to undefined name 'F_CLOEXEC'
raw_fcntl(nextfd, F_SETFD, F_CLOEXEC)
This is rather spelled FD_CLOEXEC.
/vol/gcc/src/hg/trunk/local/libgo/go/syscall/exec_bsd.go:199:26: error: reference to undefined name 'IOTCNOTTY'
_, err1 = raw_ioctl(0, IOTCNOTTY, 0)
Doesn't exist either, typo for TIOCNOTTY, it seems.
/vol/gcc/src/hg/trunk/local/libgo/go/syscall/exec_bsd.go:207:13: error: not enough arguments
_, err1 = raw_ioctl(TIOCSCTTY, 0)
Missing 0 arg.
/vol/gcc/src/hg/trunk/local/libgo/go/os/sys_uname.go:11:1: error: redefinition of 'Hostname'
Need hostname() here
/vol/gcc/src/hg/trunk/local/libgo/go/os/doc.go:15:1: note: previous definition of 'Hostname' was here
/vol/gcc/src/hg/trunk/local/libgo/go/os/doc.go:16:9: error: reference to undefined name 'hostname'
After those fixes, libgo builds again on Solaris 10/x86 and 11/SPARC.
On Solaris 8/x86, there's more:
/vol/gcc/src/hg/trunk/local/libgo/runtime/go-print.c: In function '__go_print_do
uble':
/vol/gcc/src/hg/trunk/local/libgo/runtime/go-print.c:61:3: error: implicit decla
ration of function 'isinf' [-Werror=implicit-function-declaration]
cc1: all warnings being treated as errors
There's no isinf in system headers, I've chosen to use __builtin_isinf
instead.
Undefined first referenced
symbol in file
runtime_goenvs /var/gcc/regression/trunk/10-gcc/build/i386-pc-solaris2.10/libgo/.libs/libgo.so
Currently defined in runtime/thread-linux.c only, need to add to
thread-sema.c, too.
/vol/gcc/src/hg/trunk/local/libgo/go/net/sockoptip_linux.go:95:69: error: refere
nce to undefined identifier 'syscall.IP_PKTINFO'
make[4]: *** [net/net.lo] Error 1
Provide fallback definition via mksysinfo.sh.
With those changes, libgo also builds on Solaris 8/x86 again, but lots
of undefined references to C99 math functions remain, so the result is
pretty useless.
I'm also checking IRIX 6.5 right now.
This patch is what I'm using for Solaris.
Rainer
diff --git a/libgo/go/os/sys_uname.go b/libgo/go/os/sys_uname.go
--- a/libgo/go/os/sys_uname.go
+++ b/libgo/go/os/sys_uname.go
@@ -8,7 +8,7 @@ package os
import "syscall"
-func Hostname() (name string, err error) {
+func hostname() (name string, err error) {
var u syscall.Utsname
if errno := syscall.Uname(&u); errno != nil {
return "", NewSyscallError("uname", errno)
diff --git a/libgo/go/syscall/exec_bsd.go b/libgo/go/syscall/exec_bsd.go
--- a/libgo/go/syscall/exec_bsd.go
+++ b/libgo/go/syscall/exec_bsd.go
@@ -7,7 +7,6 @@
package syscall
import (
- "runtime"
"unsafe"
)
@@ -58,7 +57,7 @@ func forkAndExecInChild(argv0 *byte, arg
// Enable tracing if requested.
if sys.Ptrace {
- err1 = raw_trace(_PTRACE_TRACEME, 0, nil, nil)
+ err1 = raw_ptrace(_PTRACE_TRACEME, 0, nil, nil)
if err1 != 0 {
goto childerror
}
@@ -153,7 +152,7 @@ func forkAndExecInChild(argv0 *byte, arg
err1 = err2.(Errno)
goto childerror
}
- raw_fcntl(nextfd, F_SETFD, F_CLOEXEC)
+ raw_fcntl(nextfd, F_SETFD, FD_CLOEXEC)
fd[i] = nextfd
nextfd++
if nextfd == pipe { // don't stomp on pipe
@@ -196,7 +195,7 @@ func forkAndExecInChild(argv0 *byte, arg
// Detach fd 0 from tty
if sys.Noctty {
- _, err1 = raw_ioctl(0, IOTCNOTTY, 0)
+ _, err1 = raw_ioctl(0, TIOCNOTTY, 0)
if err1 != 0 {
goto childerror
}
@@ -204,7 +203,7 @@ func forkAndExecInChild(argv0 *byte, arg
// Make fd 0 the tty
if sys.Setctty {
- _, err1 = raw_ioctl(TIOCSCTTY, 0)
+ _, err1 = raw_ioctl(0, TIOCSCTTY, 0)
if err1 != 0 {
goto childerror
}
diff --git a/libgo/mksysinfo.sh b/libgo/mksysinfo.sh
--- a/libgo/mksysinfo.sh
+++ b/libgo/mksysinfo.sh
@@ -192,7 +192,7 @@ grep '^const _SHUT_' gen-sysinfo.go |
sed -e 's/^\(const \)_\(SHUT[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}
# The net package requires some const definitions.
-for m in IPV6_V6ONLY IPPROTO_IPV6 IPV6_JOIN_GROUP IPV6_LEAVE_GROUP IPV6_TCLASS; do
+for m in IP_PKTINFO IPV6_V6ONLY IPPROTO_IPV6 IPV6_JOIN_GROUP IPV6_LEAVE_GROUP IPV6_TCLASS; do
if ! grep "^const $m " ${OUT} >/dev/null 2>&1; then
echo "const $m = 0" >> ${OUT}
fi
diff --git a/libgo/runtime/go-print.c b/libgo/runtime/go-print.c
--- a/libgo/runtime/go-print.c
+++ b/libgo/runtime/go-print.c
@@ -58,7 +58,7 @@ __go_print_double (double v)
fputs ("NaN", stderr);
return;
}
- if (isinf (v))
+ if (__builtin_isinf (v))
{
putc (v < 0 ? '-' : '+', stderr);
fputs ("Inf", stderr);
diff --git a/libgo/runtime/thread-sema.c b/libgo/runtime/thread-sema.c
--- a/libgo/runtime/thread-sema.c
+++ b/libgo/runtime/thread-sema.c
@@ -136,6 +136,12 @@ runtime_semawakeup (M *mp)
}
void
-runtime_osinit(void)
+runtime_osinit (void)
{
}
+
+void
+runtime_goenvs (void)
+{
+ runtime_goenvs_unix ();
+}
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University