This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug go/56171] syscall FAILs on Solaris
- From: "ro at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 14 Feb 2013 10:11:11 +0000
- Subject: [Bug go/56171] syscall FAILs on Solaris
- Auto-submitted: auto-generated
- References: <bug-56171-4@http.gcc.gnu.org/bugzilla/>
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.