Ian Lance Taylor <i...@google.com> writes:

> There is a decent change that this will break something on non-x86
> systems.  I will do what testing I am able to do after the commit.

As expected, it did break the Solaris libgo build:

* udpsock_posix.go lacked definitions of joinIPv4Group, joinIPv6Group,
  setIPv6MulticastInterface, setIPv6MulticastLoopback.  It turned out
  that sockoptip_solaris.go isn't needed any longer, but
  sockoptip_posix.go can be used instead.

* Solaris lacked some stat_atim*.go in go/archive/tar initially.  With
  stat_atim.go used, it didn't build initially.  Since Stat_t.[AC]tim
  are Timestruc, we need a corresponding Unix(), now provided in
  syscall_solaris.go.

With those changes, libgo builds again, and Solaris/x86 testsuite
results are reasonable:

FAIL: net

--- FAIL: TestMulticastListener (0.03 seconds)
multicast_posix_test.go:72:     "224.0.0.254:12345" not found in RIB

FAIL: syscall

creds_test.go:22:41: error: reference to undefined identifier 'syscall.AF_LOCAL'
  fds, err := syscall.Socketpair(syscall.AF_LOCAL, syscall.SOCK_STREAM, 0)
                                         ^
creds_test.go:29:66: error: reference to undefined identifier 
'syscall.SO_PASSCRED'
  err = syscall.SetsockoptInt(fds[0], syscall.SOL_SOCKET, syscall.SO_PASSCRED, 
1)
                                                                  ^
creds_test.go:48:12: error: reference to undefined identifier 'syscall.Ucred'
  var ucred syscall.Ucred
            ^
creds_test.go:53:18: error: reference to undefined identifier 
'syscall.UnixCredentials'
   oob := syscall.UnixCredentials(&ucred)
                  ^
creds_test.go:63:17: error: reference to undefined identifier 
'syscall.UnixCredentials'
  oob := syscall.UnixCredentials(&ucred)
                 ^
creds_test.go:102:27: error: reference to undefined identifier 
'syscall.ParseUnixCredentials'
  newUcred, err := syscall.ParseUnixCredentials(&scm[0])
                           ^
passfd_test.go:40:41: error: reference to undefined identifier 
'syscall.AF_LOCAL'
  fds, err := syscall.Socketpair(syscall.AF_LOCAL, syscall.SOCK_STREAM, 0)
                                         ^

Needs some porting work, it seems.

FAIL: net/http

unexpected fault address unexpected fault address 0x7f079d14be59unexpected 
fault address 0x7ffffd140410
0x7f079bb4bed9unexpected fault address unexpected fault address Illegal 
Instruction

0x7ffffd140410
0x7f079d54be59



goroutine 1 [chan receive]:
main.main
        
/var/gcc/regression/trunk/10-gcc/build/i386-pc-solaris2.10/amd64/libgo/gotest29238/test/_testmain.go:159

and many more goroutine stacks...

FAIL: runtime/pprof

Reported as PR go/54873 already.

On the other hand, many Solaris/SPARC tests are failing:

unexpected fault address 0xfcb70dec
throw: fault
[signal 0xa code=0x1 addr=0xfcb70dec]

goroutine 4 [running]:
unexpected fault address 0xfcb71864
panic during panic
FAIL: log

Still have to investigate what's going on.

        Rainer


2012-10-23  Rainer Orth  <r...@cebitec.uni-bielefeld.de>

        * Makefile.am [LIBGO_IS_SOLARIS] (go_net_sockoptip_file): Replace
        go/net/sockoptip_solaris.go by go/net/sockoptip_posix.go.
        [LIBGO_IS_SOLARIS] (archive_tar_atim_file): Use
        go/archive/tar/stat_atim.go.
        * Makefile.in: Regenerate.
        * go/net/sockoptip_solaris.go: Remove.
        * go/syscall/syscall_solaris.go: New file.

# HG changeset patch
# Parent e8a7c94c7461ab7d5fc572468b69feddbb338069
Restore Solaris bootstrap

diff --git a/libgo/Makefile.am b/libgo/Makefile.am
--- a/libgo/Makefile.am
+++ b/libgo/Makefile.am
@@ -704,7 +704,7 @@ if LIBGO_IS_SOLARIS
 go_net_cgo_file = go/net/cgo_linux.go
 go_net_sock_file = go/net/sock_solaris.go
 go_net_sockopt_file = go/net/sockopt_bsd.go
-go_net_sockoptip_file = go/net/sockoptip_bsd.go go/net/sockoptip_solaris.go
+go_net_sockoptip_file = go/net/sockoptip_bsd.go go/net/sockoptip_posix.go
 else
 if LIBGO_IS_FREEBSD
 go_net_cgo_file = go/net/cgo_bsd.go
@@ -968,6 +968,9 @@ endif
 if LIBGO_IS_OPENBSD
 archive_tar_atim_file = go/archive/tar/stat_atim.go
 endif
+if LIBGO_IS_SOLARIS
+archive_tar_atim_file = go/archive/tar/stat_atim.go
+endif
 if LIBGO_IS_DARWIN
 archive_tar_atim_file = go/archive/tar/stat_atimespec.go
 endif
diff --git a/libgo/go/syscall/syscall_solaris.go b/libgo/go/syscall/syscall_solaris.go
new file mode 100644
--- /dev/null
+++ b/libgo/go/syscall/syscall_solaris.go
@@ -0,0 +1,13 @@
+// Copyright 2012 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 (ts *Timestruc) Unix() (sec int64, nsec int64) {
+	return int64(ts.Sec), int64(ts.Nsec)
+}
+
+func (ts *Timestruc) Nano() int64 {
+	return int64(ts.Sec)*1e9 + int64(ts.Nsec)
+}

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University

Reply via email to