Skip to content

Commit 001f36c

Browse files
committed
Use correct types for syscalls (2)
1 parent 8bea29e commit 001f36c

File tree

16 files changed

+416
-416
lines changed

16 files changed

+416
-416
lines changed

src/library_sigs.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -230,11 +230,11 @@ sigs = {
230230
__pthread_kill_js__sig: 'ipi',
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_symlink__sig: 'ipp',

src/library_syscall.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -338,15 +338,15 @@ var SyscallsLibrary = {
338338
return info;
339339
},
340340
__syscall_socket__deps: ['$SOCKFS'],
341-
__syscall_socket: (domain, type, protocol) => {
341+
__syscall_socket: (domain, type, protocol, varargs) => {
342342
var sock = SOCKFS.createSocket(domain, type, protocol);
343343
#if ASSERTIONS
344344
assert(sock.stream.fd < 64); // XXX ? select() assumes socket fd values are in 0..63
345345
#endif
346346
return sock.stream.fd;
347347
},
348348
__syscall_getsockname__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
349-
__syscall_getsockname: (fd, addr, addrlen, d1, d2, d3) => {
349+
__syscall_getsockname: (fd, addr, addrlen, varargs) => {
350350
var sock = getSocketFromFD(fd);
351351
// TODO: sock.saddr should never be undefined, see TODO in websocket_sock_ops.getname
352352
var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(sock.saddr || '0.0.0.0'), sock.sport, addrlen);
@@ -356,7 +356,7 @@ var SyscallsLibrary = {
356356
return 0;
357357
},
358358
__syscall_getpeername__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
359-
__syscall_getpeername: (fd, addr, addrlen, d1, d2, d3) => {
359+
__syscall_getpeername: (fd, addr, addrlen, varargs) => {
360360
var sock = getSocketFromFD(fd);
361361
if (!sock.daddr) {
362362
return -{{{ cDefs.ENOTCONN }}}; // The socket is not connected.
@@ -368,19 +368,19 @@ var SyscallsLibrary = {
368368
return 0;
369369
},
370370
__syscall_connect__deps: ['$getSocketFromFD', '$getSocketAddress'],
371-
__syscall_connect: (fd, addr, addrlen, d1, d2, d3) => {
371+
__syscall_connect: (fd, addr, addrlen, varargs) => {
372372
var sock = getSocketFromFD(fd);
373373
var info = getSocketAddress(addr, addrlen);
374374
sock.sock_ops.connect(sock, info.addr, info.port);
375375
return 0;
376376
},
377377
__syscall_shutdown__deps: ['$getSocketFromFD'],
378-
__syscall_shutdown: (fd, how) => {
378+
__syscall_shutdown: (fd, how, varargs) => {
379379
getSocketFromFD(fd);
380380
return -{{{ cDefs.ENOSYS }}}; // unsupported feature
381381
},
382382
__syscall_accept4__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
383-
__syscall_accept4: (fd, addr, addrlen, flags, d1, d2) => {
383+
__syscall_accept4: (fd, addr, addrlen, flags, varargs) => {
384384
var sock = getSocketFromFD(fd);
385385
var newsock = sock.sock_ops.accept(sock);
386386
if (addr) {
@@ -392,14 +392,14 @@ var SyscallsLibrary = {
392392
return newsock.stream.fd;
393393
},
394394
__syscall_bind__deps: ['$getSocketFromFD', '$getSocketAddress'],
395-
__syscall_bind: (fd, addr, addrlen, d1, d2, d3) => {
395+
__syscall_bind: (fd, addr, addrlen, varargs) => {
396396
var sock = getSocketFromFD(fd);
397397
var info = getSocketAddress(addr, addrlen);
398398
sock.sock_ops.bind(sock, info.addr, info.port);
399399
return 0;
400400
},
401401
__syscall_listen__deps: ['$getSocketFromFD'],
402-
__syscall_listen: (fd, backlog) => {
402+
__syscall_listen: (fd, backlog, varargs) => {
403403
var sock = getSocketFromFD(fd);
404404
sock.sock_ops.listen(sock, backlog);
405405
return 0;
@@ -430,7 +430,7 @@ var SyscallsLibrary = {
430430
return sock.sock_ops.sendmsg(sock, HEAP8, message, length, dest.addr, dest.port);
431431
},
432432
__syscall_getsockopt__deps: ['$getSocketFromFD'],
433-
__syscall_getsockopt: (fd, level, optname, optval, optlen, d1) => {
433+
__syscall_getsockopt: (fd, level, optname, optval, optlen, varargs) => {
434434
var sock = getSocketFromFD(fd);
435435
// Minimal getsockopt aimed at resolving https://github.com/emscripten-core/emscripten/issues/2211
436436
// so only supports SOL_SOCKET with SO_ERROR.
@@ -445,7 +445,7 @@ var SyscallsLibrary = {
445445
return -{{{ cDefs.ENOPROTOOPT }}}; // The option is unknown at the level indicated.
446446
},
447447
__syscall_sendmsg__deps: ['$getSocketFromFD', '$readSockaddr', '$DNS'],
448-
__syscall_sendmsg: (fd, message, flags, d1, d2, d3) => {
448+
__syscall_sendmsg: (fd, message, flags, varargs) => {
449449
var sock = getSocketFromFD(fd);
450450
var iov = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iov, '*') }}};
451451
var num = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iovlen, 'i32') }}};
@@ -477,7 +477,7 @@ var SyscallsLibrary = {
477477
return sock.sock_ops.sendmsg(sock, view, 0, total, addr, port);
478478
},
479479
__syscall_recvmsg__deps: ['$getSocketFromFD', '$writeSockaddr', '$DNS'],
480-
__syscall_recvmsg: (fd, message, flags, d1, d2, d3) => {
480+
__syscall_recvmsg: (fd, message, flags, varargs) => {
481481
var sock = getSocketFromFD(fd);
482482
var iov = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iov, POINTER_TYPE) }}};
483483
var num = {{{ makeGetValue('message', C_STRUCTS.msghdr.msg_iovlen, 'i32') }}};

system/include/emscripten/wasmfs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ int wasmfs_create_directory(const char* path __attribute__((nonnull)), mode_t mo
3636

3737
// Unmounts the directory (Which must be a valid mountpoint) at a specific path.
3838
// Returns 0 on success, or a negative value on error.
39-
int wasmfs_unmount(intptr_t path);
39+
int wasmfs_unmount(char* path);
4040

4141
// Backend creation
4242

system/lib/compiler-rt/lib/sanitizer_common/sanitizer_emscripten.cpp

Lines changed: 95 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,25 @@
1414
//===----------------------------------------------------------------------===//
1515

1616
#include "sanitizer_platform.h"
17+
#include "sanitizer_platform_limits_posix.h"
1718
#include "sanitizer_common.h"
1819
#include "sanitizer_stoptheworld.h"
1920

21+
#include <fcntl.h>
2022
#include <signal.h>
2123
#include <time.h>
24+
#include <unistd.h>
25+
#include <math.h>
2226

2327
#if SANITIZER_EMSCRIPTEN
2428

29+
#include <sys/stat.h>
30+
#include <sys/types.h>
31+
2532
#include <emscripten.h>
2633
#include <emscripten/stack.h>
27-
#include <sys/types.h>
34+
#include <wasi/api.h>
35+
#include <wasi/wasi-helpers.h>
2836

2937
#include "emscripten_internal.h"
3038

@@ -129,6 +137,92 @@ u64 MonotonicNanoTime() {
129137

130138
void GetMemoryProfile(fill_profile_f cb, uptr *stats) {}
131139

140+
int internal_madvise(uptr addr, uptr length, int advice) {
141+
return 0; // madvice is currently ignored
142+
}
143+
144+
uptr internal_close(fd_t fd) {
145+
return __wasi_fd_close(fd);
146+
}
147+
148+
uptr internal_open(const char *filename, int flags) {
149+
return open(filename, flags);
150+
}
151+
152+
uptr internal_open(const char *filename, int flags, u32 mode) {
153+
return open(filename, flags, mode);
154+
}
155+
156+
uptr internal_read(fd_t fd, void *buf, uptr count) {
157+
__wasi_iovec_t iov = { (uint8_t*)buf, count };
158+
size_t num;
159+
if (__wasi_syscall_ret(__wasi_fd_read(fd, &iov, 1, &num))) {
160+
return -1;
161+
}
162+
return num;
163+
}
164+
165+
uptr internal_write(fd_t fd, const void *buf, uptr count) {
166+
__wasi_ciovec_t iov = { (const uint8_t*)buf, count };
167+
size_t num;
168+
if (__wasi_syscall_ret(__wasi_fd_write(fd, &iov, 1, &num))) {
169+
return -1;
170+
}
171+
return num;
172+
}
173+
174+
uptr internal_stat(const char *path, void *buf) {
175+
return stat(path, (struct stat *)buf);
176+
}
177+
178+
uptr internal_fstat(fd_t fd, void *buf) {
179+
return fstat(fd, (struct stat *)buf);
180+
}
181+
182+
uptr internal_filesize(fd_t fd) {
183+
struct stat st;
184+
if (internal_fstat(fd, &st))
185+
return -1;
186+
return (uptr)st.st_size;
187+
}
188+
189+
uptr internal_dup(int oldfd) {
190+
return dup(oldfd);
191+
}
192+
193+
uptr internal_getpid() {
194+
return 42;
195+
}
196+
197+
uptr internal_sched_yield() {
198+
return sched_yield();
199+
}
200+
201+
void internal_sigfillset(__sanitizer_sigset_t *set) {
202+
sigfillset(set);
203+
}
204+
205+
uptr internal_sigprocmask(int how, __sanitizer_sigset_t *set,
206+
__sanitizer_sigset_t *oldset) {
207+
return sigprocmask(how, set, oldset);
208+
}
209+
210+
void internal_usleep(u64 useconds) {
211+
usleep(useconds);
212+
}
213+
214+
void internal__exit(int exitcode) {
215+
__wasi_proc_exit(exitcode);
216+
}
217+
218+
tid_t GetTid() {
219+
return gettid();
220+
}
221+
222+
uptr internal_clock_gettime(__sanitizer_clockid_t clk_id, void *tp) {
223+
return clock_gettime(clk_id, (struct timespec *)tp);
224+
}
225+
132226
} // namespace __sanitizer
133227

134228
#endif

0 commit comments

Comments
 (0)