From ec9dc45b75deb82a60e9be2711e40e3c14195a4c Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 7 Mar 2011 22:39:45 +0000 Subject: [PATCH] Use _nuname on 32-bit Solaris 2/x86. From-SVN: r170761 --- libgo/Makefile.am | 13 +++++++++++++ libgo/Makefile.in | 7 +++++++ libgo/syscalls/syscall_solaris_386.go | 3 +++ libgo/syscalls/syscall_uname.go | 7 +++++++ libgo/syscalls/syscall_unix.go | 2 -- 5 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 libgo/syscalls/syscall_uname.go diff --git a/libgo/Makefile.am b/libgo/Makefile.am index 814d7ed6132..ca3de1d1633 100644 --- a/libgo/Makefile.am +++ b/libgo/Makefile.am @@ -1201,6 +1201,18 @@ else syscall_socket_epoll_file = endif +# Support for uname. +if LIBGO_IS_SOLARIS +if LIBGO_IS_386 +# 32-bit Solaris 2/x86 needs _nuname, handled in syscall_solaris_386.go. +syscall_uname_file = +else # !LIBGO_IS_386 && LIBGO_IS_SOLARIS +syscall_uname_file = syscalls/syscall_uname.go +endif +else # !LIBGO_IS_SOLARIS +syscall_uname_file = syscalls/syscall_uname.go +endif + syscall_arch.go: s-syscall_arch; @true s-syscall_arch: Makefile rm -f syscall_arch.go.tmp @@ -1222,6 +1234,7 @@ go_syscall_files = \ $(syscall_socket_os_file) \ $(syscall_socket_epoll_file) \ $(syscall_syscall_file) \ + $(syscall_uname_file) \ syscalls/syscall_unix.go \ syscalls/stringbyte.go \ syscalls/syscall_$(GOOS).go \ diff --git a/libgo/Makefile.in b/libgo/Makefile.in index 11352cf93d9..edc40b4be2a 100644 --- a/libgo/Makefile.in +++ b/libgo/Makefile.in @@ -1563,6 +1563,12 @@ go_testing_script_files = \ # Support for epoll. @LIBGO_IS_LINUX_TRUE@syscall_socket_epoll_file = syscalls/socket_epoll.go +@LIBGO_IS_386_FALSE@@LIBGO_IS_SOLARIS_TRUE@syscall_uname_file = syscalls/syscall_uname.go + +# Support for uname. +# 32-bit Solaris 2/x86 needs _nuname, handled in syscall_solaris_386.go. +@LIBGO_IS_386_TRUE@@LIBGO_IS_SOLARIS_TRUE@syscall_uname_file = +@LIBGO_IS_SOLARIS_FALSE@syscall_uname_file = syscalls/syscall_uname.go go_syscall_files = \ $(syscall_errstr_file) \ $(syscall_errstr_decl_file) \ @@ -1575,6 +1581,7 @@ go_syscall_files = \ $(syscall_socket_os_file) \ $(syscall_socket_epoll_file) \ $(syscall_syscall_file) \ + $(syscall_uname_file) \ syscalls/syscall_unix.go \ syscalls/stringbyte.go \ syscalls/syscall_$(GOOS).go \ diff --git a/libgo/syscalls/syscall_solaris_386.go b/libgo/syscalls/syscall_solaris_386.go index 687722ddc1d..7ff8f5b0740 100644 --- a/libgo/syscalls/syscall_solaris_386.go +++ b/libgo/syscalls/syscall_solaris_386.go @@ -15,3 +15,6 @@ func libc_ptrace(request int, pid Pid_t, addr uintptr, data *byte) int __asm__ ( var dummy *byte const sizeofPtr uintptr = uintptr(unsafe.Sizeof(dummy)) + +// 32-bit Solaris 2/x86 needs to use _nuname internally, cf. . +func libc_uname(buf *Utsname) (errno int) __asm__("_nuname") diff --git a/libgo/syscalls/syscall_uname.go b/libgo/syscalls/syscall_uname.go new file mode 100644 index 00000000000..955866c89f1 --- /dev/null +++ b/libgo/syscalls/syscall_uname.go @@ -0,0 +1,7 @@ +// 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 + +func libc_uname(buf *Utsname) (errno int) __asm__("uname") diff --git a/libgo/syscalls/syscall_unix.go b/libgo/syscalls/syscall_unix.go index 408d0b8b7aa..a29b6b54bfb 100644 --- a/libgo/syscalls/syscall_unix.go +++ b/libgo/syscalls/syscall_unix.go @@ -15,8 +15,6 @@ const ENONE = 0 func GetErrno() int func SetErrno(int) -func libc_uname(buf *Utsname) (errno int) __asm__("uname") - func Uname(buf *Utsname) (errno int) { r := libc_uname(buf) if r < 0 {