Skip to content

Commit 49e81d1

Browse files
committed
Use correct types for syscalls (2)
1 parent 8ee08ed commit 49e81d1

File tree

10 files changed

+272
-297
lines changed

10 files changed

+272
-297
lines changed

src/lib/libsigs.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -230,11 +230,11 @@ sigs = {
230230
__pthread_create_js__sig: 'ipppp',
231231
__resumeException__sig: 'vp',
232232
__syscall__newselect__sig: 'iipppp',
233-
__syscall_accept4__sig: 'iippiii',
234-
__syscall_bind__sig: 'iippiii',
233+
__syscall_accept4__sig: 'iippip',
234+
__syscall_bind__sig: 'iipip',
235235
__syscall_chdir__sig: 'ip',
236236
__syscall_chmod__sig: 'ipi',
237-
__syscall_connect__sig: 'iippiii',
237+
__syscall_connect__sig: 'iipip',
238238
__syscall_dup__sig: 'ii',
239239
__syscall_dup3__sig: 'iiii',
240240
__syscall_faccessat__sig: 'iipii',
@@ -252,27 +252,27 @@ sigs = {
252252
__syscall_ftruncate64__sig: 'iij',
253253
__syscall_getcwd__sig: 'ipp',
254254
__syscall_getdents64__sig: 'iipp',
255-
__syscall_getpeername__sig: 'iippiii',
256-
__syscall_getsockname__sig: 'iippiii',
257-
__syscall_getsockopt__sig: 'iiiippi',
255+
__syscall_getpeername__sig: 'iippp',
256+
__syscall_getsockname__sig: 'iippp',
257+
__syscall_getsockopt__sig: 'iiiippp',
258258
__syscall_ioctl__sig: 'iiip',
259-
__syscall_listen__sig: 'iiiiiii',
259+
__syscall_listen__sig: 'iiip',
260260
__syscall_lstat64__sig: 'ipp',
261261
__syscall_mkdirat__sig: 'iipi',
262262
__syscall_mknodat__sig: 'iipii',
263263
__syscall_newfstatat__sig: 'iippi',
264264
__syscall_openat__sig: 'iipip',
265265
__syscall_pipe__sig: 'ip',
266-
__syscall_poll__sig: 'ipii',
266+
__syscall_poll__sig: 'ippi',
267267
__syscall_readlinkat__sig: 'iippp',
268-
__syscall_recvfrom__sig: 'iippipp',
269-
__syscall_recvmsg__sig: 'iipiiii',
268+
__syscall_recvfrom__sig: 'pippipp',
269+
__syscall_recvmsg__sig: 'pipip',
270270
__syscall_renameat__sig: 'iipip',
271271
__syscall_rmdir__sig: 'ip',
272-
__syscall_sendmsg__sig: 'iipippi',
273-
__syscall_sendto__sig: 'iippipp',
274-
__syscall_shutdown__sig: 'iiiiiii',
275-
__syscall_socket__sig: 'iiiiiii',
272+
__syscall_sendmsg__sig: 'pipip',
273+
__syscall_sendto__sig: 'pippipi',
274+
__syscall_shutdown__sig: 'iiip',
275+
__syscall_socket__sig: 'iiiip',
276276
__syscall_stat64__sig: 'ipp',
277277
__syscall_statfs64__sig: 'ippp',
278278
__syscall_symlinkat__sig: 'ipip',

src/lib/libsyscall.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -345,15 +345,15 @@ var SyscallsLibrary = {
345345
return info;
346346
},
347347
__syscall_socket__deps: ['$SOCKFS'],
348-
__syscall_socket: (domain, type, protocol) => {
348+
__syscall_socket: (domain, type, protocol, varargs) => {
349349
var sock = SOCKFS.createSocket(domain, type, protocol);
350350
#if ASSERTIONS
351351
assert(sock.stream.fd < 64); // XXX ? select() assumes socket fd values are in 0..63
352352
#endif
353353
return sock.stream.fd;
354354
},
355355
__syscall_getsockname__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
356-
__syscall_getsockname: (fd, addr, addrlen, d1, d2, d3) => {
356+
__syscall_getsockname: (fd, addr, addrlen, varargs) => {
357357
var sock = getSocketFromFD(fd);
358358
// TODO: sock.saddr should never be undefined, see TODO in websocket_sock_ops.getname
359359
var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(sock.saddr || '0.0.0.0'), sock.sport, addrlen);
@@ -363,7 +363,7 @@ var SyscallsLibrary = {
363363
return 0;
364364
},
365365
__syscall_getpeername__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
366-
__syscall_getpeername: (fd, addr, addrlen, d1, d2, d3) => {
366+
__syscall_getpeername: (fd, addr, addrlen, varargs) => {
367367
var sock = getSocketFromFD(fd);
368368
if (!sock.daddr) {
369369
return -{{{ cDefs.ENOTCONN }}}; // The socket is not connected.
@@ -375,19 +375,19 @@ var SyscallsLibrary = {
375375
return 0;
376376
},
377377
__syscall_connect__deps: ['$getSocketFromFD', '$getSocketAddress'],
378-
__syscall_connect: (fd, addr, addrlen, d1, d2, d3) => {
378+
__syscall_connect: (fd, addr, addrlen, varargs) => {
379379
var sock = getSocketFromFD(fd);
380380
var info = getSocketAddress(addr, addrlen);
381381
sock.sock_ops.connect(sock, info.addr, info.port);
382382
return 0;
383383
},
384384
__syscall_shutdown__deps: ['$getSocketFromFD'],
385-
__syscall_shutdown: (fd, how) => {
385+
__syscall_shutdown: (fd, how, varargs) => {
386386
getSocketFromFD(fd);
387387
return -{{{ cDefs.ENOSYS }}}; // unsupported feature
388388
},
389389
__syscall_accept4__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
390-
__syscall_accept4: (fd, addr, addrlen, flags, d1, d2) => {
390+
__syscall_accept4: (fd, addr, addrlen, flags, varargs) => {
391391
var sock = getSocketFromFD(fd);
392392
var newsock = sock.sock_ops.accept(sock);
393393
if (addr) {
@@ -399,14 +399,14 @@ var SyscallsLibrary = {
399399
return newsock.stream.fd;
400400
},
401401
__syscall_bind__deps: ['$getSocketFromFD', '$getSocketAddress'],
402-
__syscall_bind: (fd, addr, addrlen, d1, d2, d3) => {
402+
__syscall_bind: (fd, addr, addrlen, varargs) => {
403403
var sock = getSocketFromFD(fd);
404404
var info = getSocketAddress(addr, addrlen);
405405
sock.sock_ops.bind(sock, info.addr, info.port);
406406
return 0;
407407
},
408408
__syscall_listen__deps: ['$getSocketFromFD'],
409-
__syscall_listen: (fd, backlog) => {
409+
__syscall_listen: (fd, backlog, varargs) => {
410410
var sock = getSocketFromFD(fd);
411411
sock.sock_ops.listen(sock, backlog);
412412
return 0;
@@ -437,7 +437,7 @@ var SyscallsLibrary = {
437437
return sock.sock_ops.sendmsg(sock, HEAP8, message, length, dest.addr, dest.port);
438438
},
439439
__syscall_getsockopt__deps: ['$getSocketFromFD'],
440-
__syscall_getsockopt: (fd, level, optname, optval, optlen, d1) => {
440+
__syscall_getsockopt: (fd, level, optname, optval, optlen, varargs) => {
441441
var sock = getSocketFromFD(fd);
442442
// Minimal getsockopt aimed at resolving https://github.com/emscripten-core/emscripten/issues/2211
443443
// so only supports SOL_SOCKET with SO_ERROR.
@@ -452,7 +452,7 @@ var SyscallsLibrary = {
452452
return -{{{ cDefs.ENOPROTOOPT }}}; // The option is unknown at the level indicated.
453453
},
454454
__syscall_sendmsg__deps: ['$getSocketFromFD', '$getSocketAddress'],
455-
__syscall_sendmsg: (fd, message, flags, d1, d2, d3) => {
455+
__syscall_sendmsg: (fd, message, flags, varargs) => {
456456
var sock = getSocketFromFD(fd);
457457
var iov = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iov, '*') }}};
458458
var num = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iovlen, 'i32') }}};
@@ -483,7 +483,7 @@ var SyscallsLibrary = {
483483
return sock.sock_ops.sendmsg(sock, view, 0, total, addr, port);
484484
},
485485
__syscall_recvmsg__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
486-
__syscall_recvmsg: (fd, message, flags, d1, d2, d3) => {
486+
__syscall_recvmsg: (fd, message, flags, varargs) => {
487487
var sock = getSocketFromFD(fd);
488488
var iov = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iov, '*') }}};
489489
var num = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iovlen, 'i32') }}};

system/lib/libc/emscripten_internal.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@ int _mmap_js(size_t length,
7676
int* allocated,
7777
void** addr);
7878
int _munmap_js(
79-
intptr_t addr, size_t length, int prot, int flags, int fd, off_t offset);
79+
void *addr, size_t length, int prot, int flags, int fd, off_t offset);
8080
int _msync_js(
81-
intptr_t addr, size_t length, int prot, int flags, int fd, off_t offset);
81+
void *addr, size_t length, int prot, int flags, int fd, off_t offset);
8282

8383
struct dso;
8484

system/lib/libc/emscripten_mmap.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ struct map {
3535
static volatile int lock[1];
3636
static struct map* mappings;
3737

38-
static struct map* find_mapping(intptr_t addr, struct map** prev) {
38+
static struct map* find_mapping(void *addr, struct map** prev) {
3939
struct map* map = mappings;
4040
while (map) {
41-
if (map->addr == (void*)addr) {
41+
if (map->addr == addr) {
4242
return map;
4343
}
4444
if (prev) {
@@ -49,7 +49,7 @@ static struct map* find_mapping(intptr_t addr, struct map** prev) {
4949
return map;
5050
}
5151

52-
int __syscall_munmap(intptr_t addr, size_t length) {
52+
int __syscall_munmap(void *addr, size_t length) {
5353
LOCK(lock);
5454
struct map* prev = NULL;
5555
struct map* map = find_mapping(addr, &prev);
@@ -89,7 +89,7 @@ int __syscall_munmap(intptr_t addr, size_t length) {
8989
return 0;
9090
}
9191

92-
int __syscall_msync(intptr_t addr, size_t len, int flags) {
92+
int __syscall_msync(void *addr, size_t len, int flags) {
9393
LOCK(lock);
9494
struct map* map = find_mapping(addr, NULL);
9595
UNLOCK(lock);
@@ -102,7 +102,7 @@ int __syscall_msync(intptr_t addr, size_t len, int flags) {
102102
return _msync_js(addr, len, map->prot, map->flags, map->fd, map->offset);
103103
}
104104

105-
intptr_t __syscall_mmap2(intptr_t addr, size_t len, int prot, int flags, int fd, off_t offset) {
105+
intptr_t __syscall_mmap2(void *addr, size_t len, int prot, int flags, int fd, off_t offset) {
106106
if (addr != 0) {
107107
// We don't currently support location hints for the address of the mapping
108108
return -EINVAL;

system/lib/libc/emscripten_syscall_stubs.c

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ static mode_t g_umask = S_IWGRP | S_IWOTH;
4747
#define STRINGIFY(s) #s
4848
#define STR(s) STRINGIFY(s)
4949

50-
weak int __syscall_uname(intptr_t buf) {
50+
weak int __syscall_uname(void *buf) {
5151
if (!buf) {
5252
return -EFAULT;
5353
}
@@ -105,15 +105,15 @@ weak pid_t __syscall_getppid() {
105105
return g_ppid;
106106
}
107107

108-
weak int __syscall_linkat(int olddirfd, intptr_t oldpath, int newdirfd, intptr_t newpath, int flags) {
108+
weak int __syscall_linkat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath, int flags) {
109109
return -EMLINK; // no hardlinks for us
110110
}
111111

112-
weak int __syscall_getgroups32(int count, intptr_t list) {
112+
weak int __syscall_getgroups32(int count, gid_t list[]) {
113113
if (count < 1) {
114114
return -EINVAL;
115115
}
116-
((gid_t*)list)[0] = 0;
116+
list[0] = 0;
117117
return 1;
118118
}
119119

@@ -127,7 +127,7 @@ weak mode_t __syscall_umask(mode_t mask) {
127127
return old;
128128
}
129129

130-
weak int __syscall_getrusage(int who, intptr_t usage) {
130+
weak int __syscall_getrusage(int who, void *usage) {
131131
REPORT(getrusage);
132132
struct rusage *u = (struct rusage *)usage;
133133
memset(u, 0, sizeof(*u));
@@ -146,7 +146,7 @@ weak int __syscall_setpriority(int which, id_t who, int prio) {
146146
return -EPERM;
147147
}
148148

149-
weak int __syscall_setdomainname(intptr_t name, size_t size) {
149+
weak int __syscall_setdomainname(const char *name, size_t len) {
150150
return -EPERM;
151151
}
152152

@@ -166,18 +166,18 @@ weak gid_t __syscall_getegid32(void) {
166166
return 0;
167167
}
168168

169-
weak int __syscall_getresuid32(intptr_t ruid, intptr_t euid, intptr_t suid) {
170-
*((uid_t *)ruid) = 0;
171-
*((uid_t *)euid) = 0;
172-
*((uid_t *)suid) = 0;
169+
weak int __syscall_getresuid32(uid_t *ruid, uid_t *euid, uid_t *suid) {
170+
*ruid = 0;
171+
*euid = 0;
172+
*suid = 0;
173173
return 0;
174174
}
175175

176-
weak int __syscall_getresgid32(intptr_t ruid, intptr_t euid, intptr_t suid) {
176+
weak int __syscall_getresgid32(gid_t *rgid, gid_t *egid, gid_t *sgid) {
177177
REPORT(getresgid32);
178-
*((uid_t *)ruid) = 0;
179-
*((uid_t *)euid) = 0;
180-
*((uid_t *)suid) = 0;
178+
*rgid = 0;
179+
*egid = 0;
180+
*sgid = 0;
181181
return 0;
182182
}
183183

@@ -186,28 +186,28 @@ weak int __syscall_pause() {
186186
return -EINTR; // we can't pause
187187
}
188188

189-
weak int __syscall_madvise(intptr_t addr, size_t length, int advice) {
189+
weak int __syscall_madvise(void *addr, size_t length, int advice) {
190190
REPORT(madvise);
191191
// advice is welcome, but ignored
192192
return 0;
193193
}
194194

195-
weak int __syscall_mlock(intptr_t addr, size_t len) {
195+
weak int __syscall_mlock(const void *addr, size_t len) {
196196
REPORT(mlock);
197197
return 0;
198198
}
199199

200-
weak int __syscall_munlock(intptr_t addr, size_t len) {
200+
weak int __syscall_munlock(const void *addr, size_t len) {
201201
REPORT(munlock);
202202
return 0;
203203
}
204204

205-
weak int __syscall_mprotect(size_t addr, size_t len, int prot) {
205+
weak int __syscall_mprotect(size_t start, size_t len, int prot) {
206206
REPORT(mprotect);
207207
return 0; // let's not and say we did
208208
}
209209

210-
weak int __syscall_mremap(intptr_t old_addr, size_t old_size, size_t new_size, int flags, intptr_t new_addr) {
210+
weak int __syscall_mremap(void *old_addr, size_t old_size, size_t new_size, int flags, void *new_addr) {
211211
REPORT(mremap);
212212
return -ENOMEM; // never succeed
213213
}
@@ -222,7 +222,7 @@ weak int __syscall_munlockall() {
222222
return 0;
223223
}
224224

225-
weak int __syscall_prlimit64(pid_t pid, int resource, intptr_t new_limit, intptr_t old_limit) {
225+
weak int __syscall_prlimit64(pid_t pid, int resource, const void *new_limit, void *old_limit) {
226226
REPORT(prlimit64);
227227
struct rlimit *old = (struct rlimit *)old_limit;
228228
if (new_limit) {
@@ -249,17 +249,18 @@ weak int __syscall_prlimit64(pid_t pid, int resource, intptr_t new_limit, intptr
249249
return 0;
250250
}
251251

252-
weak int __syscall_setsockopt(int sockfd, int level, int optname, intptr_t optval, size_t optlen, int dummy) {
252+
weak int __syscall_setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen, ...) {
253253
REPORT(setsockopt);
254254
return -ENOPROTOOPT; // The option is unknown at the level indicated.
255255
}
256256

257-
UNIMPLEMENTED(acct, (intptr_t filename))
258-
UNIMPLEMENTED(mincore, (intptr_t addr, size_t length, intptr_t vec))
259-
UNIMPLEMENTED(pipe2, (intptr_t fds, int flags))
260-
UNIMPLEMENTED(pselect6, (int nfds, intptr_t readfds, intptr_t writefds, intptr_t exceptfds, intptr_t timeout, intptr_t sigmaks))
261-
UNIMPLEMENTED(recvmmsg, (int sockfd, intptr_t msgvec, size_t vlen, int flags, ...))
262-
UNIMPLEMENTED(sendmmsg, (int sockfd, intptr_t msgvec, size_t vlen, int flags, ...))
263-
UNIMPLEMENTED(shutdown, (int sockfd, int how, int dummy, int dummy2, int dummy3, int dummy4))
264-
UNIMPLEMENTED(socketpair, (int domain, int type, int protocol, intptr_t fds, int dummy, int dummy2))
265-
UNIMPLEMENTED(wait4,(pid_t pid, intptr_t wstatus, int options, int rusage))
257+
UNIMPLEMENTED(acct, (const char *filename))
258+
UNIMPLEMENTED(mincore, (void *addr, size_t length, unsigned char *vec))
259+
UNIMPLEMENTED(pipe2, (int pipefd[2], int flags))
260+
UNIMPLEMENTED(pselect6, (int nfds, void *rfds, void *wfds, void *efds, void *ts, const void *mask))
261+
UNIMPLEMENTED(recvmmsg, (int sockfd, void *msgvec, unsigned int vlen, int flags, struct timespec *timeout))
262+
UNIMPLEMENTED(sendmmsg, (int sockfd, void *msgvec, unsigned int vlen, int flags))
263+
UNIMPLEMENTED(shutdown, (int sockfd, int how, ...))
264+
UNIMPLEMENTED(socketpair, (int domain, int type, int protocol, int fd[2], ...))
265+
UNIMPLEMENTED(socketcall, (int call, long args[6]))
266+
UNIMPLEMENTED(wait4, (pid_t pid, int *wstatus, int options, void *rusage))

0 commit comments

Comments
 (0)