[WebAssembly] Add syscall numbers of wasm.js (#23)

I verified that this change doesn't change the list
of failing tests on the wasm waterfall.
This commit is contained in:
Sam Clegg 2017-11-16 12:28:18 -08:00 committed by GitHub
parent 9f20a8a3c2
commit 0f2a7be58e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 368 additions and 15 deletions

View File

@ -629,11 +629,11 @@
#define SYS_get_mempolicy 275
#define SYS_set_mempolicy 276
#define SYS_mq_open 277
#define SYS_mq_unlink (SYS_mq_open+1)
#define SYS_mq_timedsend (SYS_mq_open+2)
#define SYS_mq_timedreceive (SYS_mq_open+3)
#define SYS_mq_notify (SYS_mq_open+4)
#define SYS_mq_getsetattr (SYS_mq_open+5)
#define SYS_mq_unlink 278
#define SYS_mq_timedsend 279
#define SYS_mq_timedreceive 280
#define SYS_mq_notify 281
#define SYS_mq_getsetattr 282
#define SYS_kexec_load 283
#define SYS_waitid 284
/* #define SYS_sys_setaltroot 285 */

View File

@ -897,37 +897,390 @@ var musl_hack = (function() {
};
})();
syscall_names = {
// Generted using the following command:
// grep "^#define SYS_" arch/wasm32/bits/syscall.h | awk '{print $3 ": \"" $2 // "\'," }'
0: "SYS_restart_syscall",
1: "SYS_exit",
2: "SYS_fork",
3: "SYS_read",
4: "SYS_write",
5: "SYS_open",
6: "SYS_close",
7: "SYS_waitpid",
8: "SYS_creat",
9: "SYS_link",
10: "SYS_unlink",
11: "SYS_execve",
12: "SYS_chdir",
13: "SYS_time",
14: "SYS_mknod",
15: "SYS_chmod",
16: "SYS_lchown",
17: "SYS_break",
18: "SYS_oldstat",
19: "SYS_lseek",
20: "SYS_getpid",
21: "SYS_mount",
22: "SYS_umount",
23: "SYS_setuid",
24: "SYS_getuid",
25: "SYS_stime",
26: "SYS_ptrace",
27: "SYS_alarm",
28: "SYS_oldfstat",
29: "SYS_pause",
30: "SYS_utime",
31: "SYS_stty",
32: "SYS_gtty",
33: "SYS_access",
34: "SYS_nice",
35: "SYS_ftime",
36: "SYS_sync",
37: "SYS_kill",
38: "SYS_rename",
39: "SYS_mkdir",
40: "SYS_rmdir",
41: "SYS_dup",
42: "SYS_pipe",
43: "SYS_times",
44: "SYS_prof",
45: "SYS_brk",
46: "SYS_setgid",
47: "SYS_getgid",
48: "SYS_signal",
49: "SYS_geteuid",
50: "SYS_getegid",
51: "SYS_acct",
52: "SYS_umount2",
53: "SYS_lock",
54: "SYS_ioctl",
55: "SYS_fcntl",
56: "SYS_mpx",
57: "SYS_setpgid",
58: "SYS_ulimit",
59: "SYS_oldolduname",
60: "SYS_umask",
61: "SYS_chroot",
62: "SYS_ustat",
63: "SYS_dup2",
64: "SYS_getppid",
65: "SYS_getpgrp",
66: "SYS_setsid",
67: "SYS_sigaction",
68: "SYS_sgetmask",
69: "SYS_ssetmask",
70: "SYS_setreuid",
71: "SYS_setregid",
72: "SYS_sigsuspend",
73: "SYS_sigpending",
74: "SYS_sethostname",
75: "SYS_setrlimit",
76: "SYS_getrlimit",
77: "SYS_getrusage",
78: "SYS_gettimeofday",
79: "SYS_settimeofday",
80: "SYS_getgroups",
81: "SYS_setgroups",
82: "SYS_select",
83: "SYS_symlink",
84: "SYS_oldlstat",
85: "SYS_readlink",
86: "SYS_uselib",
87: "SYS_swapon",
88: "SYS_reboot",
89: "SYS_readdir",
90: "SYS_mmap",
91: "SYS_munmap",
92: "SYS_truncate",
93: "SYS_ftruncate",
94: "SYS_fchmod",
95: "SYS_fchown",
96: "SYS_getpriority",
97: "SYS_setpriority",
98: "SYS_profil",
99: "SYS_statfs",
100: "SYS_fstatfs",
101: "SYS_ioperm",
102: "SYS_socketcall",
103: "SYS_syslog",
104: "SYS_setitimer",
105: "SYS_getitimer",
106: "SYS_stat",
107: "SYS_lstat",
108: "SYS_fstat",
109: "SYS_olduname",
110: "SYS_iopl",
111: "SYS_vhangup",
112: "SYS_idle",
113: "SYS_vm86old",
114: "SYS_wait4",
115: "SYS_swapoff",
116: "SYS_sysinfo",
117: "SYS_ipc",
118: "SYS_fsync",
119: "SYS_sigreturn",
120: "SYS_clone",
121: "SYS_setdomainname",
122: "SYS_uname",
123: "SYS_modify_ldt",
124: "SYS_adjtimex",
125: "SYS_mprotect",
126: "SYS_sigprocmask",
127: "SYS_create_module",
128: "SYS_init_module",
129: "SYS_delete_module",
130: "SYS_get_kernel_syms",
131: "SYS_quotactl",
132: "SYS_getpgid",
133: "SYS_fchdir",
134: "SYS_bdflush",
135: "SYS_sysfs",
136: "SYS_personality",
137: "SYS_afs_syscall",
138: "SYS_setfsuid",
139: "SYS_setfsgid",
140: "SYS__llseek",
141: "SYS_getdents",
142: "SYS__newselect",
143: "SYS_flock",
144: "SYS_msync",
145: "SYS_readv",
146: "SYS_writev",
147: "SYS_getsid",
148: "SYS_fdatasync",
149: "SYS__sysctl",
150: "SYS_mlock",
151: "SYS_munlock",
152: "SYS_mlockall",
153: "SYS_munlockall",
154: "SYS_sched_setparam",
155: "SYS_sched_getparam",
156: "SYS_sched_setscheduler",
157: "SYS_sched_getscheduler",
158: "SYS_sched_yield",
159: "SYS_sched_get_priority_max",
160: "SYS_sched_get_priority_min",
161: "SYS_sched_rr_get_interval",
162: "SYS_nanosleep",
163: "SYS_mremap",
164: "SYS_setresuid",
165: "SYS_getresuid",
166: "SYS_vm86",
167: "SYS_query_module",
168: "SYS_poll",
169: "SYS_nfsservctl",
170: "SYS_setresgid",
171: "SYS_getresgid",
172: "SYS_prctl",
173: "SYS_rt_sigreturn",
174: "SYS_rt_sigaction",
175: "SYS_rt_sigprocmask",
176: "SYS_rt_sigpending",
177: "SYS_rt_sigtimedwait",
178: "SYS_rt_sigqueueinfo",
179: "SYS_rt_sigsuspend",
180: "SYS_pread64",
181: "SYS_pwrite64",
182: "SYS_chown",
183: "SYS_getcwd",
184: "SYS_capget",
185: "SYS_capset",
186: "SYS_sigaltstack",
187: "SYS_sendfile",
188: "SYS_getpmsg",
189: "SYS_putpmsg",
190: "SYS_vfork",
191: "SYS_ugetrlimit",
192: "SYS_mmap2",
193: "SYS_truncate64",
194: "SYS_ftruncate64",
195: "SYS_stat64",
196: "SYS_lstat64",
197: "SYS_fstat64",
198: "SYS_lchown32",
199: "SYS_getuid32",
200: "SYS_getgid32",
201: "SYS_geteuid32",
202: "SYS_getegid32",
203: "SYS_setreuid32",
204: "SYS_setregid32",
205: "SYS_getgroups32",
206: "SYS_setgroups32",
207: "SYS_fchown32",
208: "SYS_setresuid32",
209: "SYS_getresuid32",
210: "SYS_setresgid32",
211: "SYS_getresgid32",
212: "SYS_chown32",
213: "SYS_setuid32",
214: "SYS_setgid32",
215: "SYS_setfsuid32",
216: "SYS_setfsgid32",
217: "SYS_pivot_root",
218: "SYS_mincore",
219: "SYS_madvise",
219: "SYS_madvise1",
220: "SYS_getdents64",
221: "SYS_fcntl64",
224: "SYS_gettid",
225: "SYS_readahead",
226: "SYS_setxattr",
227: "SYS_lsetxattr",
228: "SYS_fsetxattr",
229: "SYS_getxattr",
230: "SYS_lgetxattr",
231: "SYS_fgetxattr",
232: "SYS_listxattr",
233: "SYS_llistxattr",
234: "SYS_flistxattr",
235: "SYS_removexattr",
236: "SYS_lremovexattr",
237: "SYS_fremovexattr",
238: "SYS_tkill",
239: "SYS_sendfile64",
240: "SYS_futex",
241: "SYS_sched_setaffinity",
242: "SYS_sched_getaffinity",
243: "SYS_set_thread_area",
244: "SYS_get_thread_area",
245: "SYS_io_setup",
246: "SYS_io_destroy",
247: "SYS_io_getevents",
248: "SYS_io_submit",
249: "SYS_io_cancel",
250: "SYS_fadvise64",
252: "SYS_exit_group",
253: "SYS_lookup_dcookie",
254: "SYS_epoll_create",
255: "SYS_epoll_ctl",
256: "SYS_epoll_wait",
257: "SYS_remap_file_pages",
258: "SYS_set_tid_address",
259: "SYS_timer_create",
260: "SYS_timer_settime",
261: "SYS_timer_gettime",
262: "SYS_timer_getoverrun",
263: "SYS_timer_delete",
264: "SYS_clock_settime",
265: "SYS_clock_gettime",
266: "SYS_clock_getres",
267: "SYS_clock_nanosleep",
268: "SYS_statfs64",
269: "SYS_fstatfs64",
270: "SYS_tgkill",
271: "SYS_utimes",
272: "SYS_fadvise64_64",
273: "SYS_vserver",
274: "SYS_mbind",
275: "SYS_get_mempolicy",
276: "SYS_set_mempolicy",
277: "SYS_mq_open",
278: "SYS_mq_unlink",
279: "SYS_mq_timedsend",
280: "SYS_mq_timedreceive",
281: "SYS_mq_notify",
282: "SYS_mq_getsetattr",
283: "SYS_kexec_load",
284: "SYS_waitid",
286: "SYS_add_key",
287: "SYS_request_key",
288: "SYS_keyctl",
289: "SYS_ioprio_set",
290: "SYS_ioprio_get",
291: "SYS_inotify_init",
292: "SYS_inotify_add_watch",
293: "SYS_inotify_rm_watch",
294: "SYS_migrate_pages",
295: "SYS_openat",
296: "SYS_mkdirat",
297: "SYS_mknodat",
298: "SYS_fchownat",
299: "SYS_futimesat",
300: "SYS_fstatat64",
301: "SYS_unlinkat",
302: "SYS_renameat",
303: "SYS_linkat",
304: "SYS_symlinkat",
305: "SYS_readlinkat",
306: "SYS_fchmodat",
307: "SYS_faccessat",
308: "SYS_pselect6",
309: "SYS_ppoll",
310: "SYS_unshare",
311: "SYS_set_robust_list",
312: "SYS_get_robust_list",
313: "SYS_splice",
314: "SYS_sync_file_range",
315: "SYS_tee",
316: "SYS_vmsplice",
317: "SYS_move_pages",
318: "SYS_getcpu",
319: "SYS_epoll_pwait",
320: "SYS_utimensat",
321: "SYS_signalfd",
322: "SYS_timerfd_create",
323: "SYS_eventfd",
324: "SYS_fallocate",
325: "SYS_timerfd_settime",
326: "SYS_timerfd_gettime",
327: "SYS_signalfd4",
328: "SYS_eventfd2",
329: "SYS_epoll_create1",
330: "SYS_dup3",
331: "SYS_pipe2",
332: "SYS_inotify_init1",
333: "SYS_preadv",
334: "SYS_pwritev",
340: "SYS_prlimit64",
341: "SYS_name_to_handle_at",
342: "SYS_open_by_handle_at",
343: "SYS_clock_adjtime",
344: "SYS_syncfs",
345: "SYS_sendmmsg",
346: "SYS_setns",
347: "SYS_process_vm_readv",
348: "SYS_process_vm_writev",
349: "SYS_kcmp",
350: "SYS_finit_module",
357: "SYS_recvmmsg",
367: "SYS_fanotify_init",
368: "SYS_fanotify_mark",
375: "SYS_membarrier"
}
// Syscall API with C libraries. In theory this is the only JavaScript
// implementation we need.
var syscall = (function() {
// TODO auto-generate syscall number from the header.
return {
__syscall: function(n, args) {
print('syscall(' + n + ', ' + args + ')');
print('syscall(' + syscall_names[n] + ', ' + args + ')');
return -1; },
__syscall0: function(n) {
print('syscall0(' + syscall_names[n] + ')');
return -1; },
__syscall0: function(n) { print('syscall(' + n + ')'); return -1; },
__syscall1: function(n, a) {
print('syscall(' + n + ', ' + a + ')');
print('syscall1(' + syscall_names[n] + ', ' + a + ')');
return -1; },
__syscall2: function(n, a, b) {
print('syscall(' + n + ', ' + a + ', ' + b + ')');
print('syscall2(' + syscall_names[n] + ', ' + a + ', ' + b + ')');
return -1; },
__syscall3: function(n, a, b, c) {
print('syscall(' + n + ', ' + a + ', ' + b + ', ' + c + ')');
print('syscall3(' + syscall_names[n] + ', ' + a + ', ' + b + ', ' + c + ')');
return -1; },
__syscall4: function(n, a, b, c, d) {
print('syscall(' + n + ', ' + a + ', ' + b + ', ' + c + ', ' + d + ')');
print('syscall4(' + syscall_names[n] + ', ' + a + ', ' + b + ', ' + c + ', ' + d + ')');
return -1; },
__syscall5: function(n, a, b, c, d, e) {
print('syscall(' + n + ', ' + a + ', ' + b + ', ' + c + ', ' + d + ', ' +
print('syscall4(' + syscall_names[n] + ', ' + a + ', ' + b + ', ' + c + ', ' + d + ', ' +
e + ')');
return -1; },
__syscall6: function(n, a, b, c, d, e, f) {
print('syscall(' + n + ', ' + a + ', ' + b + ', ' + c + ', ' + d + ', ' +
print('syscall6(' + syscall_names[n] + ', ' + a + ', ' + b + ', ' + c + ', ' + d + ', ' +
e + ', ' + f + ')');
return -1; },
__syscall_cp: function(n, a, b, c, d, e, f) {
print('syscall(' + n + ', ' + a + ', ' + b + ', ' + c + ', ' + d + ', ' +
print('syscall_cp(' + syscall_names[n] + ', ' + a + ', ' + b + ', ' + c + ', ' + d + ', ' +
e + ', ' + f + ')');
return -1; }
};