This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug go/56171] syscall FAILs on Solaris


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56171

--- Comment #9 from Rainer Orth <ro at gcc dot gnu.org> 2013-02-14 10:11:11 UTC ---
Created attachment 29448
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29448
proposed patch for __xnet_ socket functions

This works fine in the 32-bit case, but for 64-bit (both sparc and x86) needed
one further adjustment: the 64-bit tests were failing like this:

  amd64:

--- FAIL: TestPassFD (0.09 seconds)
:0:     child process ReadAll: "", <nil>; want "Hello from child process!\n"
FAIL
FAIL: syscall

  sparcv9:

--- FAIL: TestPassFD (0.28 seconds)
passfd_test.go:102:     child process ReadAll: "", <nil>; want "Hello from
child process!\n"
FAIL
FAIL: syscall

(Btw., need to check why filename and line number aren't detected on x86...)

It turned out that as on Darwin, we always need 32-bit alignment.  The attached
patch does just that and allows the syscall to pass on both 32- and 64-bit
Solaris/SPARC and x86.

  Rainer

2013-02-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

    PR go/5617
    * go/syscall/sockcmsg_unix.go: Import "runtime".
    (cmsgAlignOf): Enforce 32-bit alignment on Solaris.
    * go/syscall/socket.go (bind, connect, socket, socketpair)
    (getsockopt, sendto, recvmsg, sendmsg): Move ...
    * go/syscall/socket_posix.go: ... here.
    New file.
    * go/syscall/socket_xnet.go: New file.
    * Makefile.am (syscall_socket_os_file): New variable.
    (go_base_syscall_files): Use it.
    * Makefile.in: Regenerate.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]