Skip to content

Use correct types for syscalls #19559

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 14 additions & 14 deletions src/lib/libsigs.js
Original file line number Diff line number Diff line change
Expand Up @@ -230,11 +230,11 @@ sigs = {
__pthread_create_js__sig: 'ipppp',
__resumeException__sig: 'vp',
__syscall__newselect__sig: 'iipppp',
__syscall_accept4__sig: 'iippiii',
__syscall_bind__sig: 'iippiii',
__syscall_accept4__sig: 'iippip',
__syscall_bind__sig: 'iipip',
__syscall_chdir__sig: 'ip',
__syscall_chmod__sig: 'ipi',
__syscall_connect__sig: 'iippiii',
__syscall_connect__sig: 'iipip',
__syscall_dup__sig: 'ii',
__syscall_dup3__sig: 'iiii',
__syscall_faccessat__sig: 'iipii',
Expand All @@ -252,27 +252,27 @@ sigs = {
__syscall_ftruncate64__sig: 'iij',
__syscall_getcwd__sig: 'ipp',
__syscall_getdents64__sig: 'iipp',
__syscall_getpeername__sig: 'iippiii',
__syscall_getsockname__sig: 'iippiii',
__syscall_getsockopt__sig: 'iiiippi',
__syscall_getpeername__sig: 'iippp',
__syscall_getsockname__sig: 'iippp',
__syscall_getsockopt__sig: 'iiiippp',
__syscall_ioctl__sig: 'iiip',
__syscall_listen__sig: 'iiiiiii',
__syscall_listen__sig: 'iiip',
__syscall_lstat64__sig: 'ipp',
__syscall_mkdirat__sig: 'iipi',
__syscall_mknodat__sig: 'iipii',
__syscall_newfstatat__sig: 'iippi',
__syscall_openat__sig: 'iipip',
__syscall_pipe__sig: 'ip',
__syscall_poll__sig: 'ipii',
__syscall_poll__sig: 'ippi',
__syscall_readlinkat__sig: 'iippp',
__syscall_recvfrom__sig: 'iippipp',
__syscall_recvmsg__sig: 'iipiiii',
__syscall_recvfrom__sig: 'pippipp',
__syscall_recvmsg__sig: 'pipip',
__syscall_renameat__sig: 'iipip',
__syscall_rmdir__sig: 'ip',
__syscall_sendmsg__sig: 'iipippi',
__syscall_sendto__sig: 'iippipp',
__syscall_shutdown__sig: 'iiiiiii',
__syscall_socket__sig: 'iiiiiii',
__syscall_sendmsg__sig: 'pipip',
__syscall_sendto__sig: 'pippipi',
__syscall_shutdown__sig: 'iiip',
__syscall_socket__sig: 'iiiip',
__syscall_stat64__sig: 'ipp',
__syscall_statfs64__sig: 'ippp',
__syscall_symlinkat__sig: 'ipip',
Expand Down
22 changes: 11 additions & 11 deletions src/lib/libsyscall.js
Original file line number Diff line number Diff line change
Expand Up @@ -345,15 +345,15 @@ var SyscallsLibrary = {
return info;
},
__syscall_socket__deps: ['$SOCKFS'],
__syscall_socket: (domain, type, protocol) => {
__syscall_socket: (domain, type, protocol, varargs) => {
var sock = SOCKFS.createSocket(domain, type, protocol);
#if ASSERTIONS
assert(sock.stream.fd < 64); // XXX ? select() assumes socket fd values are in 0..63
#endif
return sock.stream.fd;
},
__syscall_getsockname__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
__syscall_getsockname: (fd, addr, addrlen, d1, d2, d3) => {
__syscall_getsockname: (fd, addr, addrlen, varargs) => {
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);
Expand All @@ -363,7 +363,7 @@ var SyscallsLibrary = {
return 0;
},
__syscall_getpeername__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
__syscall_getpeername: (fd, addr, addrlen, d1, d2, d3) => {
__syscall_getpeername: (fd, addr, addrlen, varargs) => {
var sock = getSocketFromFD(fd);
if (!sock.daddr) {
return -{{{ cDefs.ENOTCONN }}}; // The socket is not connected.
Expand All @@ -375,19 +375,19 @@ var SyscallsLibrary = {
return 0;
},
__syscall_connect__deps: ['$getSocketFromFD', '$getSocketAddress'],
__syscall_connect: (fd, addr, addrlen, d1, d2, d3) => {
__syscall_connect: (fd, addr, addrlen, varargs) => {
var sock = getSocketFromFD(fd);
var info = getSocketAddress(addr, addrlen);
sock.sock_ops.connect(sock, info.addr, info.port);
return 0;
},
__syscall_shutdown__deps: ['$getSocketFromFD'],
__syscall_shutdown: (fd, how) => {
__syscall_shutdown: (fd, how, varargs) => {
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, addrlen, flags, varargs) => {
var sock = getSocketFromFD(fd);
var newsock = sock.sock_ops.accept(sock);
if (addr) {
Expand All @@ -399,14 +399,14 @@ var SyscallsLibrary = {
return newsock.stream.fd;
},
__syscall_bind__deps: ['$getSocketFromFD', '$getSocketAddress'],
__syscall_bind: (fd, addr, addrlen, d1, d2, d3) => {
__syscall_bind: (fd, addr, addrlen, varargs) => {
var sock = getSocketFromFD(fd);
var info = getSocketAddress(addr, addrlen);
sock.sock_ops.bind(sock, info.addr, info.port);
return 0;
},
__syscall_listen__deps: ['$getSocketFromFD'],
__syscall_listen: (fd, backlog) => {
__syscall_listen: (fd, backlog, varargs) => {
var sock = getSocketFromFD(fd);
sock.sock_ops.listen(sock, backlog);
return 0;
Expand Down Expand Up @@ -437,7 +437,7 @@ var SyscallsLibrary = {
return sock.sock_ops.sendmsg(sock, HEAP8, message, length, dest.addr, dest.port);
},
__syscall_getsockopt__deps: ['$getSocketFromFD'],
__syscall_getsockopt: (fd, level, optname, optval, optlen, d1) => {
__syscall_getsockopt: (fd, level, optname, optval, optlen, varargs) => {
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.
Expand All @@ -452,7 +452,7 @@ var SyscallsLibrary = {
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, varargs) => {
var sock = getSocketFromFD(fd);
var iov = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iov, '*') }}};
var num = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iovlen, 'i32') }}};
Expand Down Expand Up @@ -483,7 +483,7 @@ var SyscallsLibrary = {
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, varargs) => {
var sock = getSocketFromFD(fd);
var iov = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iov, '*') }}};
var num = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iovlen, 'i32') }}};
Expand Down
4 changes: 2 additions & 2 deletions system/lib/libc/emscripten_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,9 @@ int _mmap_js(size_t length,
int* allocated,
void** addr);
int _munmap_js(
intptr_t addr, size_t length, int prot, int flags, int fd, off_t offset);
void *addr, size_t length, int prot, int flags, int fd, off_t offset);
int _msync_js(
intptr_t addr, size_t length, int prot, int flags, int fd, off_t offset);
void *addr, size_t length, int prot, int flags, int fd, off_t offset);

struct dso;

Expand Down
12 changes: 6 additions & 6 deletions system/lib/libc/emscripten_mmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ struct map {
static volatile int lock[1];
static struct map* mappings;

static struct map* find_mapping(intptr_t addr, struct map** prev) {
static struct map* find_mapping(void *addr, struct map** prev) {
struct map* map = mappings;
while (map) {
if (map->addr == (void*)addr) {
if (map->addr == addr) {
return map;
}
if (prev) {
Expand All @@ -49,7 +49,7 @@ static struct map* find_mapping(intptr_t addr, struct map** prev) {
return map;
}

int __syscall_munmap(intptr_t addr, size_t length) {
int __syscall_munmap(void *addr, size_t length) {
LOCK(lock);
struct map* prev = NULL;
struct map* map = find_mapping(addr, &prev);
Expand Down Expand Up @@ -89,7 +89,7 @@ int __syscall_munmap(intptr_t addr, size_t length) {
return 0;
}

int __syscall_msync(intptr_t addr, size_t len, int flags) {
int __syscall_msync(void *addr, size_t len, int flags) {
LOCK(lock);
struct map* map = find_mapping(addr, NULL);
UNLOCK(lock);
Expand All @@ -102,7 +102,7 @@ int __syscall_msync(intptr_t addr, size_t len, int flags) {
return _msync_js(addr, len, map->prot, map->flags, map->fd, map->offset);
}

intptr_t __syscall_mmap2(intptr_t addr, size_t len, int prot, int flags, int fd, off_t offset) {
intptr_t __syscall_mmap2(void *addr, size_t len, int prot, int flags, int fd, off_t offset) {
if (addr != 0) {
// We don't currently support location hints for the address of the mapping
return -EINVAL;
Expand Down Expand Up @@ -147,5 +147,5 @@ intptr_t __syscall_mmap2(intptr_t addr, size_t len, int prot, int flags, int fd,
mappings = new_map;
UNLOCK(lock);

return (long)new_map->addr;
return (intptr_t)new_map->addr;
}
Loading
Loading