@@ -660,6 +660,9 @@
if LIBGO_IS_LINUX
go_os_sys_file = go/os/sys_linux.go
else
+if LIBGO_IS_IRIX
+go_os_sys_file = go/os/sys_uname.go
+else
if LIBGO_IS_SOLARIS
go_os_sys_file = go/os/sys_uname.go
else
@@ -670,6 +673,7 @@
endif
endif
endif
+endif
go_os_files = \
go/os/dir.go \
@@ -114,6 +114,7 @@
is_darwin=no
is_freebsd=no
+is_irix=no
is_linux=no
is_rtems=no
is_solaris=no
@@ -121,12 +122,14 @@
case ${host} in
*-*-darwin*) is_darwin=yes; GOOS=darwin ;;
*-*-freebsd*) is_freebsd=yes; GOOS=freebsd ;;
+ *-*-irix6*) is_irix=yes; GOOS=irix ;;
*-*-linux*) is_linux=yes; GOOS=linux ;;
*-*-rtems*) is_rtems=yes; GOOS=rtems ;;
*-*-solaris2*) is_solaris=yes; GOOS=solaris ;;
esac
AM_CONDITIONAL(LIBGO_IS_DARWIN, test $is_darwin = yes)
AM_CONDITIONAL(LIBGO_IS_FREEBSD, test $is_freebsd = yes)
+AM_CONDITIONAL(LIBGO_IS_IRIX, test $is_irix = yes)
AM_CONDITIONAL(LIBGO_IS_LINUX, test $is_linux = yes)
AM_CONDITIONAL(LIBGO_IS_RTEMS, test $is_rtems = yes)
AM_CONDITIONAL(LIBGO_IS_SOLARIS, test $is_solaris = yes)
@@ -0,0 +1,17 @@
+// Copyright 2011 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.
+
+package proc
+
+import "os"
+
+// Process tracing is not supported on IRIX yet.
+
+func Attach(pid int) (Process, os.Error) {
+ return nil, os.NewError("debug/proc not implemented on IRIX")
+}
+
+func ForkExec(argv0 string, argv []string, envv []string, dir string, fd []*os.File) (Process, os.Error) {
+ return Attach(0)
+}
@@ -26,6 +26,11 @@
#include "config.h"
#define _GNU_SOURCE
+#if defined(__sgi__)
+/* IRIX 6 needs _XOPEN_SOURCE=500 for the XPG5 version of struct msghdr in
+ <sys/socket.h>. */
+#define _XOPEN_SOURCE 500
+#endif
#if defined(__sun__) && defined(__svr4__)
/* Needed by Solaris header files. */
#define _XOPEN_SOURCE 600
@@ -37,6 +42,12 @@
#include <errno.h>
#include <fcntl.h>
#include <netinet/in.h>
+/* <netinet/tcp.h> needs u_char/u_short, but <sys/bsd_types> is only
+ included by <netinet/in.h> if _SGIAPI (i.e. _SGI_SOURCE
+ && !_XOPEN_SOURCE. */
+#ifdef __sgi__
+#include <sys/bsd_types.h>
+#endif
#include <netinet/tcp.h>
#include <signal.h>
#if defined(HAVE_SYSCALL_H)
@@ -76,12 +87,13 @@
grep -v '^func' | \
grep -v '^type _timeval ' | \
grep -v '^type _timespec ' | \
+ grep -v '^type _timespec\(_t\)\? ' | \
grep -v '^type _timestruc_t ' | \
grep -v '^type _epoll_' | \
grep -v 'in6_addr' | \
grep -v 'sockaddr_in6' | \
sed -e 's/\([^a-zA-Z0-9_]\)_timeval\([^a-zA-Z0-9_]\)/\1Timeval\2/g' \
- -e 's/\([^a-zA-Z0-9_]\)_timespec\([^a-zA-Z0-9_]\)/\1Timespec\2/g' \
+ -e 's/\([^a-zA-Z0-9_]\)_timespec\(_t\)\?\([^a-zA-Z0-9_]\)/\1Timespec\3/g' \
-e 's/\([^a-zA-Z0-9_]\)_timestruc_t\([^a-zA-Z0-9_]\)/\1Timestruc\2/g' \
>> ${OUT}
@@ -283,13 +295,17 @@
sed -e 's/type _timeval /type Timeval /' \
-e 's/tv_sec *[a-zA-Z0-9_]*/Sec Timeval_sec_t/' \
-e 's/tv_usec *[a-zA-Z0-9_]*/Usec Timeval_usec_t/' >> ${OUT}
-timespec=`grep '^type _timespec ' gen-sysinfo.go`
+timespec=`grep '^type _timespec ' gen-sysinfo.go || true`
+if test "$timespec" = ""; then
+ # IRIX 6.5 has __timespec instead.
+ timespec=`grep '^type ___timespec ' gen-sysinfo.go || true`
+fi
timespec_sec=`echo $timespec | sed -n -e 's/^.*tv_sec \([^ ]*\);.*$/\1/p'`
timespec_nsec=`echo $timespec | sed -n -e 's/^.*tv_nsec \([^ ]*\);.*$/\1/p'`
echo "type Timespec_sec_t $timespec_sec" >> ${OUT}
echo "type Timespec_nsec_t $timespec_nsec" >> ${OUT}
echo $timespec | \
- sed -e 's/^type _timespec /type Timespec /' \
+ sed -e 's/^type \(__\)\?_timespec /type Timespec /' \
-e 's/tv_sec *[a-zA-Z0-9_]*/Sec Timespec_sec_t/' \
-e 's/tv_nsec *[a-zA-Z0-9_]*/Nsec Timespec_nsec_t/' >> ${OUT}
@@ -322,7 +338,7 @@
-e 's/st_mtim/Mtime/' \
-e 's/st_ctim/Ctime/' \
-e 's/\([^a-zA-Z0-9_]\)_timeval\([^a-zA-Z0-9_]\)/\1Timeval\2/g' \
- -e 's/\([^a-zA-Z0-9_]\)_timespec\([^a-zA-Z0-9_]\)/\1Timespec\2/g' \
+ -e 's/\([^a-zA-Z0-9_]\)_timespec\(_t\)\?\([^a-zA-Z0-9_]\)/\1Timespec\3/g' \
-e 's/\([^a-zA-Z0-9_]\)_timestruc_t\([^a-zA-Z0-9_]\)/\1Timestruc\2/g' \
>> ${OUT}
@@ -0,0 +1,17 @@
+// syscall_irix.go -- IRIX 6 specific syscall interface.
+
+// Copyright 2011 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.
+
+package syscall
+
+import "unsafe"
+
+// FIXME: ptrace(3C) has this, but exec.go expects the next.
+//func libc_ptrace(request int, pid Pid_t, addr int, data int) int __asm__ ("ptrace")
+
+func libc_ptrace(request int, pid Pid_t, addr uintptr, data *byte) int __asm__ ("ptrace")
+
+var dummy *byte
+const sizeofPtr uintptr = uintptr(unsafe.Sizeof(dummy))