Avoid varargs in socket syscall layer. NFC (#27153)

Passing a small number of integer arguments may be cheaper than
marshalling varargs on wasm64.

Split out from #19559.
diff --git a/src/lib/libsigs.js b/src/lib/libsigs.js
index ae52c8e..3159fcf 100644
--- a/src/lib/libsigs.js
+++ b/src/lib/libsigs.js
@@ -269,7 +269,7 @@
   __syscall_recvmsg__sig: 'iipiiii',
   __syscall_renameat__sig: 'iipip',
   __syscall_rmdir__sig: 'ip',
-  __syscall_sendmsg__sig: 'iipippi',
+  __syscall_sendmsg__sig: 'iipiiii',
   __syscall_sendto__sig: 'iippipi',
   __syscall_shutdown__sig: 'iiiiiii',
   __syscall_socket__sig: 'iiiiiii',
diff --git a/src/lib/libsyscall.js b/src/lib/libsyscall.js
index 6f0e5c0..afcec47 100644
--- a/src/lib/libsyscall.js
+++ b/src/lib/libsyscall.js
@@ -351,7 +351,7 @@
     return info;
   },
   __syscall_socket__deps: ['$SOCKFS'],
-  __syscall_socket: (domain, type, protocol) => {
+  __syscall_socket: (domain, type, protocol, u1, u2, u3) => {
     var sock = SOCKFS.createSocket(domain, type, protocol);
 #if ASSERTIONS
     assert(sock.stream.fd < 64); // XXX ? select() assumes socket fd values are in 0..63
@@ -359,45 +359,45 @@
     return sock.stream.fd;
   },
   __syscall_getsockname__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
-  __syscall_getsockname: (fd, addr, addrlen, d1, d2, d3) => {
+  __syscall_getsockname: (fd, addr, len, u1, u2, u3) => {
     var sock = getSocketFromFD(fd);
     // TODO: sock.saddr should never be undefined, see TODO in websocket_sock_ops.getname
-    var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(sock.saddr || '0.0.0.0'), sock.sport, addrlen);
+    var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(sock.saddr || '0.0.0.0'), sock.sport, len);
 #if ASSERTIONS
     assert(!errno);
 #endif
     return 0;
   },
   __syscall_getpeername__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
-  __syscall_getpeername: (fd, addr, addrlen, d1, d2, d3) => {
+  __syscall_getpeername: (fd, addr, len, u1, u2, u3) => {
     var sock = getSocketFromFD(fd);
     if (!sock.daddr) {
       return -{{{ cDefs.ENOTCONN }}}; // The socket is not connected.
     }
-    var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(sock.daddr), sock.dport, addrlen);
+    var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(sock.daddr), sock.dport, len);
 #if ASSERTIONS
     assert(!errno);
 #endif
     return 0;
   },
   __syscall_connect__deps: ['$getSocketFromFD', '$getSocketAddress'],
-  __syscall_connect: (fd, addr, addrlen, d1, d2, d3) => {
+  __syscall_connect: (fd, addr, len, u1, u2, u3) => {
     var sock = getSocketFromFD(fd);
-    var info = getSocketAddress(addr, addrlen);
+    var info = getSocketAddress(addr, len);
     sock.sock_ops.connect(sock, info.addr, info.port);
     return 0;
   },
   __syscall_shutdown__deps: ['$getSocketFromFD'],
-  __syscall_shutdown: (fd, how) => {
+  __syscall_shutdown: (fd, how, u1, u2, u3, u4) => {
     getSocketFromFD(fd);
     return -{{{ cDefs.ENOSYS }}}; // unsupported feature
   },
   __syscall_accept4__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
-  __syscall_accept4: (fd, addr, addrlen, flags, d1, d2) => {
+  __syscall_accept4: (fd, addr, len, flags, u1, u2) => {
     var sock = getSocketFromFD(fd);
     var newsock = sock.sock_ops.accept(sock);
     if (addr) {
-      var errno = writeSockaddr(addr, newsock.family, DNS.lookup_name(newsock.daddr), newsock.dport, addrlen);
+      var errno = writeSockaddr(addr, newsock.family, DNS.lookup_name(newsock.daddr), newsock.dport, len);
 #if ASSERTIONS
       assert(!errno);
 #endif
@@ -405,25 +405,25 @@
     return newsock.stream.fd;
   },
   __syscall_bind__deps: ['$getSocketFromFD', '$getSocketAddress'],
-  __syscall_bind: (fd, addr, addrlen, d1, d2, d3) => {
+  __syscall_bind: (fd, addr, len, u1, u2, u3) => {
     var sock = getSocketFromFD(fd);
-    var info = getSocketAddress(addr, addrlen);
+    var info = getSocketAddress(addr, len);
     sock.sock_ops.bind(sock, info.addr, info.port);
     return 0;
   },
   __syscall_listen__deps: ['$getSocketFromFD'],
-  __syscall_listen: (fd, backlog) => {
+  __syscall_listen: (fd, backlog, u1, u2, u3, u4) => {
     var sock = getSocketFromFD(fd);
     sock.sock_ops.listen(sock, backlog);
     return 0;
   },
   __syscall_recvfrom__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
-  __syscall_recvfrom: (fd, buf, len, flags, addr, addrlen) => {
+  __syscall_recvfrom: (fd, buf, len, flags, addr, alen) => {
     var sock = getSocketFromFD(fd);
     var msg = sock.sock_ops.recvmsg(sock, len);
     if (!msg) return 0; // socket is closed
     if (addr) {
-      var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(msg.addr), msg.port, addrlen);
+      var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(msg.addr), msg.port, alen);
 #if ASSERTIONS
       assert(!errno);
 #endif
@@ -432,18 +432,18 @@
     return msg.buffer.byteLength;
   },
   __syscall_sendto__deps: ['$getSocketFromFD', '$getSocketAddress'],
-  __syscall_sendto: (fd, message, length, flags, addr, addr_len) => {
+  __syscall_sendto: (fd, buf, len, flags, addr, alen) => {
     var sock = getSocketFromFD(fd);
     if (!addr) {
       // send, no address provided
-      return FS.write(sock.stream, HEAP8, message, length);
+      return FS.write(sock.stream, HEAP8, buf, len);
     }
-    var dest = getSocketAddress(addr, addr_len);
+    var dest = getSocketAddress(addr, alen);
     // sendto an address
-    return sock.sock_ops.sendmsg(sock, HEAP8, message, length, dest.addr, dest.port);
+    return sock.sock_ops.sendmsg(sock, HEAP8, buf, len, dest.addr, dest.port);
   },
   __syscall_getsockopt__deps: ['$getSocketFromFD'],
-  __syscall_getsockopt: (fd, level, optname, optval, optlen, d1) => {
+  __syscall_getsockopt: (fd, level, optname, optval, optlen, unused) => {
     var sock = getSocketFromFD(fd);
     // Minimal getsockopt aimed at resolving https://github.com/emscripten-core/emscripten/issues/2211
     // so only supports SOL_SOCKET with SO_ERROR.
@@ -458,7 +458,7 @@
     return -{{{ cDefs.ENOPROTOOPT }}}; // The option is unknown at the level indicated.
   },
   __syscall_sendmsg__deps: ['$getSocketFromFD', '$getSocketAddress'],
-  __syscall_sendmsg: (fd, message, flags, d1, d2, d3) => {
+  __syscall_sendmsg: (fd, message, flags, u1, u2, u3) => {
     var sock = getSocketFromFD(fd);
     var iov = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iov, '*') }}};
     var num = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iovlen, 'i32') }}};
@@ -489,7 +489,7 @@
     return sock.sock_ops.sendmsg(sock, view, 0, total, addr, port);
   },
   __syscall_recvmsg__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
-  __syscall_recvmsg: (fd, message, flags, d1, d2, d3) => {
+  __syscall_recvmsg: (fd, message, flags, u1, u2, u3) => {
     var sock = getSocketFromFD(fd);
     var iov = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iov, '*') }}};
     var num = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iovlen, 'i32') }}};
diff --git a/system/include/emscripten/syscalls.h b/system/include/emscripten/syscalls.h
index d23bc4e..3cce3d2 100644
--- a/system/include/emscripten/syscalls.h
+++ b/system/include/emscripten/syscalls.h
@@ -98,24 +98,24 @@
 int __syscall_fallocate(int fd, int mode, off_t offset, off_t len);
 int __syscall_dup3(int fd, int suggestfd, int flags);
 int __syscall_pipe2(intptr_t fds, int flags);
-int __syscall_recvmmsg(int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags, ...);
+int __syscall_recvmmsg(int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags, intptr_t timeout);
 int __syscall_prlimit64(pid_t pid, int resource, intptr_t new_limit, intptr_t old_limit);
-int __syscall_sendmmsg(int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags, ...);
-int __syscall_socket(int domain, int type, int protocol, int dummy1, int dummy2, int dummy3);
-int __syscall_socketpair(int domain, int type, int protocol, intptr_t fds, int dummy, int dummy2);
-int __syscall_bind(int sockfd, intptr_t addr, socklen_t alen, int dummy, int dummy2, int dummy3);
-int __syscall_connect(int sockfd, intptr_t addr, socklen_t len, int dummy, int dummy2, int dummy3);
-int __syscall_listen(int sockfd, int backlog, int dummy1, int dummy2, int dummy3, int dummy4);
-int __syscall_accept4(int sockfd, intptr_t addr, intptr_t addrlen, int flags, int dummy1, int dummy2);
-int __syscall_getsockopt(int sockfd, int level, int optname, intptr_t optval, intptr_t optlen, int dummy);
-int __syscall_setsockopt(int sockfd, int level, int optname, intptr_t optval, socklen_t optlen, int dummy);
-int __syscall_getsockname(int sockfd, intptr_t addr, intptr_t len, int dummy, int dummy2, int dummy3);
-int __syscall_getpeername(int sockfd, intptr_t addr, intptr_t len, int dummy, int dummy2, int dummy3);
-int __syscall_sendto(int sockfd, intptr_t msg, size_t len, int flags, intptr_t addr, socklen_t alen);
-int __syscall_sendmsg(int sockfd, intptr_t msg , int flags, intptr_t addr, size_t alen, int dummy);
-int __syscall_recvfrom(int sockfd, intptr_t msg, size_t len, int flags, intptr_t addr, intptr_t alen);
-int __syscall_recvmsg(int sockfd, intptr_t msg, int flags, int dummy, int dummy2, int dummy3);
-int __syscall_shutdown(int sockfd, int how, int dummy, int dummy2, int dummy3, int dummy4);
+int __syscall_sendmmsg(int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags);
+int __syscall_socket(int domain, int type, int protocol, int unused1, int unused2, int unused3);
+int __syscall_socketpair(int domain, int type, int protocol, intptr_t fds, int unused1, int unused2);
+int __syscall_bind(int sockfd, intptr_t addr, socklen_t len, int unused1, int unused2, int unused3);
+int __syscall_connect(int sockfd, intptr_t addr, socklen_t len, int unused1, int unused2, int unused3);
+int __syscall_listen(int sockfd, int backlog, int unused1, int unused2, int unused3, int unused4);
+int __syscall_accept4(int sockfd, intptr_t addr, intptr_t len, int flags, int unused1, int unused2);
+int __syscall_getsockopt(int sockfd, int level, int optname, intptr_t optval, intptr_t optlen, int unused);
+int __syscall_setsockopt(int sockfd, int level, int optname, intptr_t optval, socklen_t optlen, int unused);
+int __syscall_getsockname(int sockfd, intptr_t addr, intptr_t len, int unused1, int unused2, int unused3);
+int __syscall_getpeername(int sockfd, intptr_t addr, intptr_t len, int unused1, int unused2, int unused3);
+int __syscall_sendto(int sockfd, intptr_t buf, size_t len, int flags, intptr_t addr, socklen_t alen);
+int __syscall_sendmsg(int sockfd, intptr_t msg, int flags, int unused1, int unused2, int unused3);
+int __syscall_recvfrom(int sockfd, intptr_t buf, size_t len, int flags, intptr_t addr, intptr_t alen);
+int __syscall_recvmsg(int sockfd, intptr_t msg, int flags, int unused1, int unused2, int unused3);
+int __syscall_shutdown(int sockfd, int how, int unused1, int unused2, int unused3, int unused4);
 
 #ifdef __cplusplus
 }
diff --git a/system/lib/libc/emscripten_syscall_stubs.c b/system/lib/libc/emscripten_syscall_stubs.c
index 7ebc009..cf94229 100644
--- a/system/lib/libc/emscripten_syscall_stubs.c
+++ b/system/lib/libc/emscripten_syscall_stubs.c
@@ -248,7 +248,7 @@
   return 0;
 }
 
-weak int __syscall_setsockopt(int sockfd, int level, int optname, intptr_t optval, socklen_t optlen, int dummy) {
+weak int __syscall_setsockopt(int sockfd, int level, int optname, intptr_t optval, socklen_t optlen, int unused) {
   REPORT(setsockopt);
   return -ENOPROTOOPT; // The option is unknown at the level indicated.
 }
@@ -260,7 +260,7 @@
 
 UNIMPLEMENTED(acct, (intptr_t filename))
 UNIMPLEMENTED(mincore, (intptr_t addr, size_t length, intptr_t vec))
-UNIMPLEMENTED(recvmmsg, (int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags, ...))
-UNIMPLEMENTED(sendmmsg, (int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags, ...))
-UNIMPLEMENTED(shutdown, (int sockfd, int how, int dummy, int dummy2, int dummy3, int dummy4))
-UNIMPLEMENTED(socketpair, (int domain, int type, int protocol, intptr_t fds, int dummy, int dummy2))
+UNIMPLEMENTED(recvmmsg, (int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags, intptr_t timeout))
+UNIMPLEMENTED(sendmmsg, (int sockfd, intptr_t msgvec, unsigned int vlen, unsigned int flags))
+UNIMPLEMENTED(shutdown, (int sockfd, int how, int unused1, int unused2, int unused3, int unused4))
+UNIMPLEMENTED(socketpair, (int domain, int type, int protocol, intptr_t fds, int unused1, int unused2))
diff --git a/system/lib/wasmfs/syscalls.cpp b/system/lib/wasmfs/syscalls.cpp
index 8ab0dc2..373b8ac 100644
--- a/system/lib/wasmfs/syscalls.cpp
+++ b/system/lib/wasmfs/syscalls.cpp
@@ -1723,30 +1723,38 @@
 
 int __syscall_accept4(int sockfd,
                       intptr_t addr,
-                      intptr_t addrlen,
+                      intptr_t len,
                       int flags,
-                      int dummy1,
-                      int dummy2) {
+                      int unused1,
+                      int unused2) {
   return -ENOSYS;
 }
 
-int __syscall_bind(
-  int sockfd, intptr_t addr, socklen_t alen, int dummy, int dummy2, int dummy3) {
+int __syscall_bind(int sockfd,
+                   intptr_t addr,
+                   socklen_t alen,
+                   int unused1,
+                   int unused2,
+                   int unused3) {
   return -ENOSYS;
 }
 
-int __syscall_connect(
-  int sockfd, intptr_t addr, socklen_t len, int dummy, int dummy2, int dummy3) {
+int __syscall_connect(int sockfd,
+                      intptr_t addr,
+                      socklen_t len,
+                      int unused1,
+                      int unused2,
+                      int unused3) {
   return -ENOSYS;
 }
 
 int __syscall_socket(
-  int domain, int type, int protocol, int dummy1, int dummy2, int dummy3) {
+  int domain, int type, int protocol, int unused1, int unused2, int unused3) {
   return -ENOSYS;
 }
 
 int __syscall_listen(
-  int sockfd, int backlog, int dummy1, int dummy2, int dummy3, int dummy4) {
+  int sockfd, int backlog, int unused1, int unused2, int unused3, int unused4) {
   return -ENOSYS;
 }
 
@@ -1755,22 +1763,30 @@
                          int optname,
                          intptr_t optval,
                          intptr_t optlen,
-                         int dummy) {
+                         int unused) {
   return -ENOSYS;
 }
 
-int __syscall_getsockname(
-  int sockfd, intptr_t addr, intptr_t len, int dummy, int dummy2, int dummy3) {
+int __syscall_getsockname(int sockfd,
+                          intptr_t addr,
+                          intptr_t len,
+                          int unused1,
+                          int unused2,
+                          int unused3) {
   return -ENOSYS;
 }
 
-int __syscall_getpeername(
-  int sockfd, intptr_t addr, intptr_t len, int dummy, int dummy2, int dummy3) {
+int __syscall_getpeername(int sockfd,
+                          intptr_t addr,
+                          intptr_t len,
+                          int unused1,
+                          int unused2,
+                          int unused3) {
   return -ENOSYS;
 }
 
 int __syscall_sendto(int sockfd,
-                     intptr_t msg,
+                     intptr_t buf,
                      size_t len,
                      int flags,
                      intptr_t addr,
@@ -1779,12 +1795,12 @@
 }
 
 int __syscall_sendmsg(
-  int sockfd, intptr_t msg, int flags, intptr_t addr, size_t alen, int dummy) {
+  int sockfd, intptr_t msg, int flags, int unused1, int unused2, int unused3) {
   return -ENOSYS;
 }
 
 int __syscall_recvfrom(int sockfd,
-                       intptr_t msg,
+                       intptr_t buf,
                        size_t len,
                        int flags,
                        intptr_t addr,
@@ -1793,7 +1809,7 @@
 }
 
 int __syscall_recvmsg(
-  int sockfd, intptr_t msg, int flags, int dummy, int dummy2, int dummy3) {
+  int sockfd, intptr_t msg, int flags, int unused1, int unused2, int unused3) {
   return -ENOSYS;
 }
 
diff --git a/test/codesize/test_codesize_hello_dylink_all.json b/test/codesize/test_codesize_hello_dylink_all.json
index 380af5a..bce01c3 100644
--- a/test/codesize/test_codesize_hello_dylink_all.json
+++ b/test/codesize/test_codesize_hello_dylink_all.json
@@ -1,7 +1,7 @@
 {
   "a.out.js": 268255,
-  "a.out.nodebug.wasm": 587588,
-  "total": 855843,
+  "a.out.nodebug.wasm": 587563,
+  "total": 855818,
   "sent": [
     "IMG_Init",
     "IMG_Load",
@@ -4092,6 +4092,7 @@
     "$__syscall_munmap",
     "$__syscall_prlimit64",
     "$__syscall_recvmmsg",
+    "$__syscall_sendmmsg",
     "$__syscall_setdomainname",
     "$__syscall_setpgid",
     "$__syscall_setpriority",