diff --git a/arch/wasm32/bits/syscall.h b/arch/wasm32/bits/syscall.h index a4ee355d..2c734578 100644 --- a/arch/wasm32/bits/syscall.h +++ b/arch/wasm32/bits/syscall.h @@ -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 */ diff --git a/arch/wasm32/wasm.js b/arch/wasm32/wasm.js index dbcd509f..b4b50a98 100644 --- a/arch/wasm32/wasm.js +++ b/arch/wasm32/wasm.js @@ -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; } };