This libgo patch passe the correct pointer to the system call in
recvmsgRaw. The code in recvmsgRaw, introduced in CL 384695
(https://gcc.gnu.org/pipermail/gcc-patches/2022-February/590289.html),
incorrectly passed &rsa to the recvmsg system call. But in recvmsgRaw
rsa is already a pointer passed by the caller. This change passes the
correct pointer.

I'm guessing that this didn't show up in the testsuite because we run
the tests in short mode.

Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline.

Ian
284e13279e8c8067f7a0046a7ca8ff7a16398feb
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index b6fdf72dcec..64eb27e5e8d 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-f5c453aa726ebb509e7b8cb20df7734f0e411404
+8aab4c94f039132b270ab03968f74d24d315e141
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
diff --git a/libgo/go/syscall/socket.go b/libgo/go/syscall/socket.go
index 54a4a9940c6..35665d50723 100644
--- a/libgo/go/syscall/socket.go
+++ b/libgo/go/syscall/socket.go
@@ -467,7 +467,7 @@ func Sendto(fd int, p []byte, flags int, to Sockaddr) (err 
error) {
 
 func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, 
oobn int, recvflags int, err error) {
        var msg Msghdr
-       msg.Name = (*byte)(unsafe.Pointer(&rsa))
+       msg.Name = (*byte)(unsafe.Pointer(rsa))
        msg.Namelen = uint32(SizeofSockaddrAny)
        var iov Iovec
        if len(p) > 0 {

Reply via email to