diff options
author | Paul Moore <paul@paul-moore.com> | 2020-03-22 09:08:03 -0400 |
---|---|---|
committer | Paul Moore <paul@paul-moore.com> | 2020-03-23 11:14:46 -0400 |
commit | 4bd8de391d5920bdbdb639b1d81ddd7bfe4d7549 (patch) | |
tree | fb85edd57934e00b980b89711fa84af5ecd9da02 | |
parent | 9b129c41ac1f43d373742697aa2faf6040b9dfab (diff) | |
download | libseccomp-4bd8de391d5920bdbdb639b1d81ddd7bfe4d7549.tar.gz |
arch: remove the unused, manually generated syscall tables
Since the move to gperf and the automatically generated syscall table
in CSV format, these manually maintained tables are no longer needed.
Reviewed-by: Tom Hromatka <tom.hromatka@gmail.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
-rw-r--r-- | src/arch-aarch64-syscalls.c | 559 | ||||
-rw-r--r-- | src/arch-arm-syscalls.c | 570 | ||||
-rw-r--r-- | src/arch-mips-syscalls.c | 562 | ||||
-rw-r--r-- | src/arch-mips64-syscalls.c | 562 | ||||
-rw-r--r-- | src/arch-mips64n32-syscalls.c | 562 | ||||
-rw-r--r-- | src/arch-parisc-syscalls.c | 542 | ||||
-rw-r--r-- | src/arch-ppc-syscalls.c | 559 | ||||
-rw-r--r-- | src/arch-ppc64-syscalls.c | 559 | ||||
-rw-r--r-- | src/arch-riscv64-syscalls.c | 553 | ||||
-rw-r--r-- | src/arch-s390-syscalls.c | 642 | ||||
-rw-r--r-- | src/arch-s390x-syscalls.c | 642 | ||||
-rw-r--r-- | src/arch-x32-syscalls.c | 558 | ||||
-rw-r--r-- | src/arch-x86-syscalls.c | 692 | ||||
-rw-r--r-- | src/arch-x86_64-syscalls.c | 559 |
14 files changed, 0 insertions, 8121 deletions
diff --git a/src/arch-aarch64-syscalls.c b/src/arch-aarch64-syscalls.c deleted file mode 100644 index 02f25eb..0000000 --- a/src/arch-aarch64-syscalls.c +++ /dev/null @@ -1,559 +0,0 @@ -/** - * Enhanced Seccomp AArch64 Syscall Table - * - * Copyright (c) 2014 Red Hat <mjuszkiewicz@redhat.com> - * Author: Marcin Juszkiewicz <mjuszkiewicz@redhat.com> - */ - -/* - * This library is free software; you can redistribute it and/or modify it - * under the terms of version 2.1 of the GNU Lesser General Public License as - * published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, see <http://www.gnu.org/licenses>. - */ - -#include <string.h> - -#include <seccomp.h> - -#include "arch.h" -#include "arch-aarch64.h" - -/* NOTE: based on Linux v5.4-rc4 */ -const struct arch_syscall_def aarch64_syscall_table[] = { \ - { "_llseek", __PNR__llseek }, - { "_newselect", __PNR__newselect }, - { "_sysctl", __PNR__sysctl }, - { "accept", 202 }, - { "accept4", 242 }, - { "access", __PNR_access }, - { "acct", 89 }, - { "add_key", 217 }, - { "adjtimex", 171 }, - { "afs_syscall", __PNR_afs_syscall }, - { "alarm", __PNR_alarm }, - { "arm_fadvise64_64", __PNR_arm_fadvise64_64 }, - { "arm_sync_file_range", __PNR_arm_sync_file_range }, - { "arch_prctl", __PNR_arch_prctl }, - { "bdflush", __PNR_bdflush }, - { "bind", 200 }, - { "bpf", 280 }, - { "break", __PNR_break }, - { "breakpoint", __PNR_breakpoint }, - { "brk", 214 }, - { "cachectl", __PNR_cachectl }, - { "cacheflush", __PNR_cacheflush }, - { "capget", 90 }, - { "capset", 91 }, - { "chdir", 49 }, - { "chmod", __PNR_chmod }, - { "chown", __PNR_chown }, - { "chown32", __PNR_chown32 }, - { "chroot", 51 }, - { "clock_adjtime", 266 }, - { "clock_adjtime64", __PNR_clock_adjtime64 }, - { "clock_getres", 114 }, - { "clock_getres_time64", __PNR_clock_getres_time64 }, - { "clock_gettime", 113 }, - { "clock_gettime64", __PNR_clock_gettime64 }, - { "clock_nanosleep", 115 }, - { "clock_nanosleep_time64", __PNR_clock_nanosleep_time64 }, - { "clock_settime", 112 }, - { "clock_settime64", __PNR_clock_settime64 }, - { "clone", 220 }, - { "clone3", __PNR_clone3 }, - { "close", 57 }, - { "connect", 203 }, - { "copy_file_range", 285 }, - { "creat", __PNR_creat }, - { "create_module", __PNR_create_module }, - { "delete_module", 106 }, - { "dup", 23 }, - { "dup2", __PNR_dup2 }, - { "dup3", 24 }, - { "epoll_create", __PNR_epoll_create }, - { "epoll_create1", 20 }, - { "epoll_ctl", 21 }, - { "epoll_ctl_old", __PNR_epoll_ctl_old }, - { "epoll_pwait", 22 }, - { "epoll_wait", __PNR_epoll_wait }, - { "epoll_wait_old", __PNR_epoll_wait_old }, - { "eventfd", __PNR_eventfd }, - { "eventfd2", 19 }, - { "execve", 221 }, - { "execveat", 281 }, - { "exit", 93 }, - { "exit_group", 94 }, - { "faccessat", 48 }, - { "fadvise64", 223 }, - { "fadvise64_64", __PNR_fadvise64_64 }, - { "fallocate", 47 }, - { "fanotify_init", 262 }, - { "fanotify_mark", 263 }, - { "fchdir", 50 }, - { "fchmod", 52 }, - { "fchmodat", 53 }, - { "fchown", 55 }, - { "fchown32", __PNR_fchown32 }, - { "fchownat", 54 }, - { "fcntl", 25 }, - { "fcntl64", __PNR_fcntl64 }, - { "fdatasync", 83 }, - { "fgetxattr", 10 }, - { "finit_module", 273 }, - { "flistxattr", 13 }, - { "flock", 32 }, - { "fork", __PNR_fork }, - { "fremovexattr", 16 }, - { "fsconfig", 431 }, - { "fsetxattr", 7 }, - { "fsmount", 432 }, - { "fsopen", 430 }, - { "fspick", 433 }, - { "fstat", 80 }, - { "fstat64", __PNR_fstat64 }, - { "fstatat64", __PNR_fstatat64 }, - { "fstatfs", 44 }, - { "fstatfs64", __PNR_fstatfs64 }, - { "fsync", 82 }, - { "ftime", __PNR_ftime }, - { "ftruncate", 46 }, - { "ftruncate64", __PNR_ftruncate64 }, - { "futex", 98 }, - { "futex_time64", __PNR_futex_time64 }, - { "futimesat", __PNR_futimesat }, - { "get_kernel_syms", __PNR_get_kernel_syms }, - { "get_mempolicy", 236 }, - { "get_robust_list", 100 }, - { "get_thread_area", __PNR_get_thread_area }, - { "get_tls", __PNR_get_tls }, - { "getcpu", 168 }, - { "getcwd", 17 }, - { "getdents", __PNR_getdents }, - { "getdents64", 61 }, - { "getegid", 177 }, - { "getegid32", __PNR_getegid32 }, - { "geteuid", 175 }, - { "geteuid32", __PNR_geteuid32 }, - { "getgid", 176 }, - { "getgid32", __PNR_getgid32 }, - { "getgroups", 158 }, - { "getgroups32", __PNR_getgroups32 }, - { "getitimer", 102 }, - { "getpeername", 205 }, - { "getpgid", 155 }, - { "getpgrp", __PNR_getpgrp }, - { "getpid", 172 }, - { "getpmsg", __PNR_getpmsg }, - { "getppid", 173 }, - { "getpriority", 141 }, - { "getrandom", 278 }, - { "getresgid", 150 }, - { "getresgid32", __PNR_getresgid32 }, - { "getresuid", 148 }, - { "getresuid32", __PNR_getresuid32 }, - { "getrlimit", __PNR_getrlimit }, - { "getrusage", 165 }, - { "getsid", 156 }, - { "getsockname", 204 }, - { "getsockopt", 209 }, - { "gettid", 178 }, - { "gettimeofday", 169 }, - { "getuid", 174 }, - { "getuid32", __PNR_getuid32 }, - { "getxattr", 8 }, - { "gtty", __PNR_gtty }, - { "idle", __PNR_idle }, - { "init_module", 105 }, - { "inotify_add_watch", 27 }, - { "inotify_init", __PNR_inotify_init }, - { "inotify_init1", 26 }, - { "inotify_rm_watch", 28 }, - { "io_cancel", 3 }, - { "io_destroy", 1 }, - { "io_getevents", 4 }, - { "io_pgetevents", 292 }, - { "io_pgetevents_time64", __PNR_io_pgetevents_time64 }, - { "io_setup", 0 }, - { "io_submit", 2 }, - { "io_uring_setup", 425 }, - { "io_uring_enter", 426 }, - { "io_uring_register", 427 }, - { "ioctl", 29 }, - { "ioperm", __PNR_ioperm }, - { "iopl", __PNR_iopl }, - { "ioprio_get", 31 }, - { "ioprio_set", 30 }, - { "ipc", __PNR_ipc }, - { "kcmp", 272 }, - { "kexec_file_load", 294 }, - { "kexec_load", 104 }, - { "keyctl", 219 }, - { "kill", 129 }, - { "lchown", __PNR_lchown }, - { "lchown32", __PNR_lchown32 }, - { "lgetxattr", 9 }, - { "link", __PNR_link }, - { "linkat", 37 }, - { "listen", 201 }, - { "listxattr", 11 }, - { "llistxattr", 12 }, - { "lock", __PNR_lock }, - { "lookup_dcookie", 18 }, - { "lremovexattr", 15 }, - { "lseek", 62 }, - { "lsetxattr", 6 }, - { "lstat", __PNR_lstat }, - { "lstat64", __PNR_lstat64 }, - { "madvise", 233 }, - { "mbind", 235 }, - { "membarrier", 283 }, - { "memfd_create", 279 }, - { "migrate_pages", 238 }, - { "mincore", 232 }, - { "mkdir", __PNR_mkdir }, - { "mkdirat", 34 }, - { "mknod", __PNR_mknod }, - { "mknodat", 33 }, - { "mlock", 228 }, - { "mlock2", 284 }, - { "mlockall", 230 }, - { "mmap", 222 }, - { "mmap2", __PNR_mmap2 }, - { "modify_ldt", __PNR_modify_ldt }, - { "mount", 40 }, - { "move_mount", 429 }, - { "move_pages", 239 }, - { "mprotect", 226 }, - { "mpx", __PNR_mpx }, - { "mq_getsetattr", 185 }, - { "mq_notify", 184 }, - { "mq_open", 180 }, - { "mq_timedreceive", 183 }, - { "mq_timedreceive_time64", __PNR_mq_timedreceive_time64 }, - { "mq_timedsend", 182 }, - { "mq_timedsend_time64", __PNR_mq_timedsend_time64 }, - { "mq_unlink", 181 }, - { "mremap", 216 }, - { "msgctl", 187 }, - { "msgget", 186 }, - { "msgrcv", 188 }, - { "msgsnd", 189 }, - { "msync", 227 }, - { "multiplexer", __PNR_multiplexer }, - { "munlock", 229 }, - { "munlockall", 231 }, - { "munmap", 215 }, - { "name_to_handle_at", 264 }, - { "nanosleep", 101 }, - { "newfstatat", 79 }, - { "nfsservctl", 42 }, - { "nice", __PNR_nice }, - { "oldfstat", __PNR_oldfstat }, - { "oldlstat", __PNR_oldlstat }, - { "oldolduname", __PNR_oldolduname }, - { "oldstat", __PNR_oldstat }, - { "olduname", __PNR_olduname }, - { "oldwait4", __PNR_oldwait4 }, - { "open", __PNR_open }, - { "open_by_handle_at", 265 }, - { "open_tree", 428 }, - { "openat", 56 }, - { "pause", __PNR_pause }, - { "pciconfig_iobase", __PNR_pciconfig_iobase }, - { "pciconfig_read", __PNR_pciconfig_read }, - { "pciconfig_write", __PNR_pciconfig_write }, - { "perf_event_open", 241 }, - { "personality", 92 }, - { "pidfd_open", 434 }, - { "pidfd_send_signal", 424 }, - { "pipe", __PNR_pipe }, - { "pipe2", 59 }, - { "pivot_root", 41 }, - { "pkey_alloc", 289 }, - { "pkey_free", 290 }, - { "pkey_mprotect", 288 }, - { "poll", __PNR_poll }, - { "ppoll", 73 }, - { "ppoll_time64", __PNR_ppoll_time64 }, - { "prctl", 167 }, - { "pread64", 67 }, - { "preadv", 69 }, - { "preadv2", 286 }, - { "prlimit64", 261 }, - { "process_vm_readv", 270 }, - { "process_vm_writev", 271 }, - { "prof", __PNR_prof }, - { "profil", __PNR_profil }, - { "pselect6", 72 }, - { "pselect6_time64", __PNR_pselect6_time64 }, - { "ptrace", 117 }, - { "putpmsg", __PNR_putpmsg }, - { "pwrite64", 68 }, - { "pwritev", 70 }, - { "pwritev2", 287 }, - { "query_module", __PNR_query_module }, - { "quotactl", 60 }, - { "read", 63 }, - { "readahead", 213 }, - { "readdir", __PNR_readdir }, - { "readlink", __PNR_readlink }, - { "readlinkat", 78 }, - { "readv", 65 }, - { "reboot", 142 }, - { "recv", __PNR_recv }, - { "recvfrom", 207 }, - { "recvmmsg", 243 }, - { "recvmmsg_time64", __PNR_recvmmsg_time64 }, - { "recvmsg", 212 }, - { "remap_file_pages", 234 }, - { "removexattr", 14 }, - { "rename", __PNR_rename }, - { "renameat", 38 }, - { "renameat2", 276 }, - { "request_key", 218 }, - { "restart_syscall", 128 }, - { "rmdir", __PNR_rmdir }, - { "rseq", 293 }, - { "rt_sigaction", 134 }, - { "rt_sigpending", 136 }, - { "rt_sigprocmask", 135 }, - { "rt_sigqueueinfo", 138 }, - { "rt_sigreturn", 139 }, - { "rt_sigsuspend", 133 }, - { "rt_sigtimedwait", 137 }, - { "rt_sigtimedwait_time64", __PNR_rt_sigtimedwait_time64 }, - { "rt_tgsigqueueinfo", 240 }, - { "rtas", __PNR_rtas }, - { "s390_guarded_storage", __PNR_s390_guarded_storage }, - { "s390_pci_mmio_read", __PNR_s390_pci_mmio_read }, - { "s390_pci_mmio_write", __PNR_s390_pci_mmio_write }, - { "s390_runtime_instr", __PNR_s390_runtime_instr }, - { "s390_sthyi", __PNR_s390_sthyi }, - { "sched_get_priority_max", 125 }, - { "sched_get_priority_min", 126 }, - { "sched_getaffinity", 123 }, - { "sched_getattr", 275 }, - { "sched_getparam", 121 }, - { "sched_getscheduler", 120 }, - { "sched_rr_get_interval", 127 }, - { "sched_rr_get_interval_time64", __PNR_sched_rr_get_interval_time64 }, - { "sched_setaffinity", 122 }, - { "sched_setattr", 274 }, - { "sched_setparam", 118 }, - { "sched_setscheduler", 119 }, - { "sched_yield", 124 }, - { "seccomp", 277 }, - { "security", __PNR_security }, - { "select", __PNR_select }, - { "semctl", 191 }, - { "semget", 190 }, - { "semop", 193 }, - { "semtimedop", 192 }, - { "semtimedop_time64", __PNR_semtimedop_time64 }, - { "send", __PNR_send }, - { "sendfile", 71 }, - { "sendfile64", __PNR_sendfile64 }, - { "sendmmsg", 269 }, - { "sendmsg", 211 }, - { "sendto", 206 }, - { "set_mempolicy", 237 }, - { "set_robust_list", 99 }, - { "set_thread_area", __PNR_set_thread_area }, - { "set_tid_address", 96 }, - { "set_tls", __PNR_set_tls }, - { "setdomainname", 162 }, - { "setfsgid", 152 }, - { "setfsgid32", __PNR_setfsgid32 }, - { "setfsuid", 151 }, - { "setfsuid32", __PNR_setfsuid32 }, - { "setgid", 144 }, - { "setgid32", __PNR_setgid32 }, - { "setgroups", 159 }, - { "setgroups32", __PNR_setgroups32 }, - { "sethostname", 161 }, - { "setitimer", 103 }, - { "setns", 268 }, - { "setpgid", 154 }, - { "setpriority", 140 }, - { "setregid", 143 }, - { "setregid32", __PNR_setregid32 }, - { "setresgid", 149 }, - { "setresgid32", __PNR_setresgid32 }, - { "setresuid", 147 }, - { "setresuid32", __PNR_setresuid32 }, - { "setreuid", 145 }, - { "setreuid32", __PNR_setreuid32 }, - { "setrlimit", __PNR_setrlimit }, - { "setsid", 157 }, - { "setsockopt", 208 }, - { "settimeofday", 170 }, - { "setuid", 146 }, - { "setuid32", __PNR_setuid32 }, - { "setxattr", 5 }, - { "sgetmask", __PNR_sgetmask }, - { "shmat", 196 }, - { "shmctl", 195 }, - { "shmdt", 197 }, - { "shmget", 194 }, - { "shutdown", 210 }, - { "sigaction", __PNR_sigaction }, - { "sigaltstack", 132 }, - { "signal", __PNR_signal }, - { "signalfd", __PNR_signalfd }, - { "signalfd4", 74 }, - { "sigpending", __PNR_sigpending }, - { "sigprocmask", __PNR_sigprocmask }, - { "sigreturn", __PNR_sigreturn }, - { "sigsuspend", __PNR_sigsuspend }, - { "socket", 198 }, - { "socketcall", __PNR_socketcall }, - { "socketpair", 199 }, - { "splice", 76 }, - { "spu_create", __PNR_spu_create }, - { "spu_run", __PNR_spu_run }, - { "ssetmask", __PNR_ssetmask }, - { "stat", __PNR_stat }, - { "stat64", __PNR_stat64 }, - { "statfs", 43 }, - { "statfs64", __PNR_statfs64 }, - { "statx", 291 }, - { "stime", __PNR_stime }, - { "stty", __PNR_stty }, - { "subpage_prot", __PNR_subpage_prot }, - { "swapcontext", __PNR_swapcontext }, - { "swapoff", 225 }, - { "swapon", 224 }, - { "switch_endian", __PNR_switch_endian }, - { "symlink", __PNR_symlink }, - { "symlinkat", 36 }, - { "sync", 81 }, - { "sync_file_range", 84 }, - { "sync_file_range2", __PNR_sync_file_range2 }, - { "syncfs", 267 }, - { "syscall", __PNR_syscall }, - { "sys_debug_setcontext", __PNR_sys_debug_setcontext }, - { "sysfs", __PNR_sysfs }, - { "sysinfo", 179 }, - { "syslog", 116 }, - { "sysmips", __PNR_sysmips }, - { "tee", 77 }, - { "tgkill", 131 }, - { "time", __PNR_time }, - { "timer_create", 107 }, - { "timer_delete", 111 }, - { "timer_getoverrun", 109 }, - { "timer_gettime", 108 }, - { "timer_gettime64", __PNR_timer_gettime64 }, - { "timer_settime", 110 }, - { "timer_settime64", __PNR_timer_settime64 }, - { "timerfd", __PNR_timerfd }, - { "timerfd_create", 85 }, - { "timerfd_gettime", 87 }, - { "timerfd_gettime64", __PNR_timerfd_gettime64 }, - { "timerfd_settime", 86 }, - { "timerfd_settime64", __PNR_timerfd_settime64 }, - { "times", 153 }, - { "tkill", 130 }, - { "truncate", 45 }, - { "truncate64", __PNR_truncate64 }, - { "tuxcall", __PNR_tuxcall }, - { "ugetrlimit", __PNR_ugetrlimit }, - { "ulimit", __PNR_ulimit }, - { "umask", 166 }, - { "umount", __PNR_umount }, - { "umount2", 39 }, - { "uname", 160 }, - { "unlink", __PNR_unlink }, - { "unlinkat", 35 }, - { "unshare", 97 }, - { "uselib", __PNR_uselib }, - { "userfaultfd", 282 }, - { "usr26", __PNR_usr26 }, - { "usr32", __PNR_usr32 }, - { "ustat", __PNR_ustat }, - { "utime", __PNR_utime }, - { "utimensat", 88 }, - { "utimensat_time64", __PNR_utimensat_time64 }, - { "utimes", __PNR_utimes }, - { "vfork", __PNR_vfork }, - { "vhangup", 58 }, - { "vm86", __PNR_vm86 }, - { "vm86old", __PNR_vm86old }, - { "vmsplice", 75 }, - { "vserver", __PNR_vserver }, - { "wait4", 260 }, - { "waitid", 95 }, - { "waitpid", __PNR_waitpid }, - { "write", 64 }, - { "writev", 66 }, - { NULL, __NR_SCMP_ERROR }, -}; - -/** - * Resolve a syscall name to a number - * @param name the syscall name - * - * Resolve the given syscall name to the syscall number using the syscall table. - * Returns the syscall number on success, including negative pseudo syscall - * numbers; returns __NR_SCMP_ERROR on failure. - * - */ -int aarch64_syscall_resolve_name(const char *name) -{ - unsigned int iter; - const struct arch_syscall_def *table = aarch64_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].name != NULL; iter++) { - if (strcmp(name, table[iter].name) == 0) - return table[iter].num; - } - - return __NR_SCMP_ERROR; -} - -/** - * Resolve a syscall number to a name - * @param num the syscall number - * - * Resolve the given syscall number to the syscall name using the syscall table. - * Returns a pointer to the syscall name string on success, including pseudo - * syscall names; returns NULL on failure. - * - */ -const char *aarch64_syscall_resolve_num(int num) -{ - unsigned int iter; - const struct arch_syscall_def *table = aarch64_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].num != __NR_SCMP_ERROR; iter++) { - if (num == table[iter].num) - return table[iter].name; - } - - return NULL; -} - - -/** - * Iterate through the syscall table and return the syscall mapping - * @param spot the offset into the syscall table - * - * Return the syscall mapping at position @spot or NULL on failure. This - * function should only ever be used internally by libseccomp. - * - */ -const struct arch_syscall_def *aarch64_syscall_iterate(unsigned int spot) -{ - /* XXX - no safety checks here */ - return &aarch64_syscall_table[spot]; -} diff --git a/src/arch-arm-syscalls.c b/src/arch-arm-syscalls.c deleted file mode 100644 index 923aae9..0000000 --- a/src/arch-arm-syscalls.c +++ /dev/null @@ -1,570 +0,0 @@ -/** - * Enhanced Seccomp ARM Syscall Table - * - * Copyright (c) 2013 Red Hat <pmoore@redhat.com> - * Author: Paul Moore <paul@paul-moore.com> - */ - -/* - * This library is free software; you can redistribute it and/or modify it - * under the terms of version 2.1 of the GNU Lesser General Public License as - * published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, see <http://www.gnu.org/licenses>. - */ - -#include <string.h> - -#include <seccomp.h> - -#include "arch.h" -#include "arch-arm.h" - -#define __SCMP_NR_OABI_SYSCALL_BASE 0x900000 -#define __SCMP_ARM_NR_BASE 0x0f0000 - -/* NOTE: we currently only support the ARM EABI, more info at the URL below: - * -> http://wiki.embeddedarm.com/wiki/EABI_vs_OABI */ -#if 1 -#define __SCMP_NR_BASE 0 -#else -#define __SCMP_NR_BASE __SCMP_NR_OABI_SYSCALL_BASE -#endif - -/* NOTE: based on Linux v5.4-rc4 */ -const struct arch_syscall_def arm_syscall_table[] = { \ - /* NOTE: arm_sync_file_range() and sync_file_range2() share values */ - { "_llseek", (__SCMP_NR_BASE + 140) }, - { "_newselect", (__SCMP_NR_BASE + 142) }, - { "_sysctl", (__SCMP_NR_BASE + 149) }, - { "accept", (__SCMP_NR_BASE + 285) }, - { "accept4", (__SCMP_NR_BASE + 366) }, - { "access", (__SCMP_NR_BASE + 33) }, - { "acct", (__SCMP_NR_BASE + 51) }, - { "add_key", (__SCMP_NR_BASE + 309) }, - { "adjtimex", (__SCMP_NR_BASE + 124) }, - { "afs_syscall", __PNR_afs_syscall }, - { "alarm", __PNR_alarm }, - { "arm_fadvise64_64", (__SCMP_NR_BASE + 270) }, - { "arm_sync_file_range", (__SCMP_NR_BASE + 341) }, - { "arch_prctl", __PNR_arch_prctl }, - { "bdflush", (__SCMP_NR_BASE + 134) }, - { "bind", (__SCMP_NR_BASE + 282) }, - { "bpf", (__SCMP_NR_BASE + 386) }, - { "break", __PNR_break }, - { "breakpoint", (__SCMP_NR_BASE + (__SCMP_ARM_NR_BASE + 1)) }, - { "brk", (__SCMP_NR_BASE + 45) }, - { "cachectl", __PNR_cachectl }, - { "cacheflush", (__SCMP_NR_BASE + (__SCMP_ARM_NR_BASE + 2)) }, - { "capget", (__SCMP_NR_BASE + 184) }, - { "capset", (__SCMP_NR_BASE + 185) }, - { "chdir", (__SCMP_NR_BASE + 12) }, - { "chmod", (__SCMP_NR_BASE + 15) }, - { "chown", (__SCMP_NR_BASE + 182) }, - { "chown32", (__SCMP_NR_BASE + 212) }, - { "chroot", (__SCMP_NR_BASE + 61) }, - { "clock_adjtime", (__SCMP_NR_BASE + 372) }, - { "clock_adjtime64", (__SCMP_NR_BASE + 405) }, - { "clock_getres", (__SCMP_NR_BASE + 264) }, - { "clock_getres_time64", (__SCMP_NR_BASE + 406) }, - { "clock_gettime", (__SCMP_NR_BASE + 263) }, - { "clock_gettime64", (__SCMP_NR_BASE + 403) }, - { "clock_nanosleep", (__SCMP_NR_BASE + 265) }, - { "clock_nanosleep_time64", (__SCMP_NR_BASE + 407) }, - { "clock_settime", (__SCMP_NR_BASE + 262) }, - { "clock_settime64", (__SCMP_NR_BASE + 404) }, - { "clone", (__SCMP_NR_BASE + 120) }, - { "clone3", (__SCMP_NR_BASE + 435) }, - { "close", (__SCMP_NR_BASE + 6) }, - { "connect", (__SCMP_NR_BASE + 283) }, - { "copy_file_range", (__SCMP_NR_BASE + 391) }, - { "creat", (__SCMP_NR_BASE + 8) }, - { "create_module", __PNR_create_module }, - { "delete_module", (__SCMP_NR_BASE + 129) }, - { "dup", (__SCMP_NR_BASE + 41) }, - { "dup2", (__SCMP_NR_BASE + 63) }, - { "dup3", (__SCMP_NR_BASE + 358) }, - { "epoll_create", (__SCMP_NR_BASE + 250) }, - { "epoll_create1", (__SCMP_NR_BASE + 357) }, - { "epoll_ctl", (__SCMP_NR_BASE + 251) }, - { "epoll_ctl_old", __PNR_epoll_ctl_old }, - { "epoll_pwait", (__SCMP_NR_BASE + 346) }, - { "epoll_wait", (__SCMP_NR_BASE + 252) }, - { "epoll_wait_old", __PNR_epoll_wait_old }, - { "eventfd", (__SCMP_NR_BASE + 351) }, - { "eventfd2", (__SCMP_NR_BASE + 356) }, - { "execve", (__SCMP_NR_BASE + 11) }, - { "execveat", (__SCMP_NR_BASE + 387) }, - { "exit", (__SCMP_NR_BASE + 1) }, - { "exit_group", (__SCMP_NR_BASE + 248) }, - { "faccessat", (__SCMP_NR_BASE + 334) }, - { "fadvise64", __PNR_fadvise64 }, - { "fadvise64_64", __PNR_fadvise64_64 }, - { "fallocate", (__SCMP_NR_BASE + 352) }, - { "fanotify_init", (__SCMP_NR_BASE + 367) }, - { "fanotify_mark", (__SCMP_NR_BASE + 368) }, - { "fchdir", (__SCMP_NR_BASE + 133) }, - { "fchmod", (__SCMP_NR_BASE + 94) }, - { "fchmodat", (__SCMP_NR_BASE + 333) }, - { "fchown", (__SCMP_NR_BASE + 95) }, - { "fchown32", (__SCMP_NR_BASE + 207) }, - { "fchownat", (__SCMP_NR_BASE + 325) }, - { "fcntl", (__SCMP_NR_BASE + 55) }, - { "fcntl64", (__SCMP_NR_BASE + 221) }, - { "fdatasync", (__SCMP_NR_BASE + 148) }, - { "fgetxattr", (__SCMP_NR_BASE + 231) }, - { "finit_module", (__SCMP_NR_BASE + 379) }, - { "flistxattr", (__SCMP_NR_BASE + 234) }, - { "flock", (__SCMP_NR_BASE + 143) }, - { "fork", (__SCMP_NR_BASE + 2) }, - { "fremovexattr", (__SCMP_NR_BASE + 237) }, - { "fsconfig", (__SCMP_NR_BASE + 431) }, - { "fsetxattr", (__SCMP_NR_BASE + 228) }, - { "fsmount", (__SCMP_NR_BASE + 432) }, - { "fsopen", (__SCMP_NR_BASE + 430) }, - { "fspick", (__SCMP_NR_BASE + 433) }, - { "fstat", (__SCMP_NR_BASE + 108) }, - { "fstat64", (__SCMP_NR_BASE + 197) }, - { "fstatat64", (__SCMP_NR_BASE + 327) }, - { "fstatfs", (__SCMP_NR_BASE + 100) }, - { "fstatfs64", (__SCMP_NR_BASE + 267) }, - { "fsync", (__SCMP_NR_BASE + 118) }, - { "ftime", __PNR_ftime }, - { "ftruncate", (__SCMP_NR_BASE + 93) }, - { "ftruncate64", (__SCMP_NR_BASE + 194) }, - { "futex", (__SCMP_NR_BASE + 240) }, - { "futex_time64", (__SCMP_NR_BASE + 422) }, - { "futimesat", (__SCMP_NR_BASE + 326) }, - { "get_kernel_syms", __PNR_get_kernel_syms }, - { "get_mempolicy", (__SCMP_NR_BASE + 320) }, - { "get_robust_list", (__SCMP_NR_BASE + 339) }, - { "get_thread_area", __PNR_get_thread_area }, - { "get_tls", (__SCMP_NR_BASE + (__SCMP_ARM_NR_BASE + 6)) }, - { "getcpu", (__SCMP_NR_BASE + 345) }, - { "getcwd", (__SCMP_NR_BASE + 183) }, - { "getdents", (__SCMP_NR_BASE + 141) }, - { "getdents64", (__SCMP_NR_BASE + 217) }, - { "getegid", (__SCMP_NR_BASE + 50) }, - { "getegid32", (__SCMP_NR_BASE + 202) }, - { "geteuid", (__SCMP_NR_BASE + 49) }, - { "geteuid32", (__SCMP_NR_BASE + 201) }, - { "getgid", (__SCMP_NR_BASE + 47) }, - { "getgid32", (__SCMP_NR_BASE + 200) }, - { "getgroups", (__SCMP_NR_BASE + 80) }, - { "getgroups32", (__SCMP_NR_BASE + 205) }, - { "getitimer", (__SCMP_NR_BASE + 105) }, - { "getpeername", (__SCMP_NR_BASE + 287) }, - { "getpgid", (__SCMP_NR_BASE + 132) }, - { "getpgrp", (__SCMP_NR_BASE + 65) }, - { "getpid", (__SCMP_NR_BASE + 20) }, - { "getpmsg", __PNR_getpmsg }, - { "getppid", (__SCMP_NR_BASE + 64) }, - { "getpriority", (__SCMP_NR_BASE + 96) }, - { "getrandom", (__SCMP_NR_BASE + 384) }, - { "getresgid", (__SCMP_NR_BASE + 171) }, - { "getresgid32", (__SCMP_NR_BASE + 211) }, - { "getresuid", (__SCMP_NR_BASE + 165) }, - { "getresuid32", (__SCMP_NR_BASE + 209) }, - { "getrlimit", __PNR_getrlimit }, - { "getrusage", (__SCMP_NR_BASE + 77) }, - { "getsid", (__SCMP_NR_BASE + 147) }, - { "getsockname", (__SCMP_NR_BASE + 286) }, - { "getsockopt", (__SCMP_NR_BASE + 295) }, - { "gettid", (__SCMP_NR_BASE + 224) }, - { "gettimeofday", (__SCMP_NR_BASE + 78) }, - { "getuid", (__SCMP_NR_BASE + 24) }, - { "getuid32", (__SCMP_NR_BASE + 199) }, - { "getxattr", (__SCMP_NR_BASE + 229) }, - { "gtty", __PNR_gtty }, - { "idle", __PNR_idle }, - { "init_module", (__SCMP_NR_BASE + 128) }, - { "inotify_add_watch", (__SCMP_NR_BASE + 317) }, - { "inotify_init", (__SCMP_NR_BASE + 316) }, - { "inotify_init1", (__SCMP_NR_BASE + 360) }, - { "inotify_rm_watch", (__SCMP_NR_BASE + 318) }, - { "io_cancel", (__SCMP_NR_BASE + 247) }, - { "io_destroy", (__SCMP_NR_BASE + 244) }, - { "io_getevents", (__SCMP_NR_BASE + 245) }, - { "io_pgetevents", (__SCMP_NR_BASE + 399) }, - { "io_pgetevents_time64", (__SCMP_NR_BASE + 416) }, - { "io_setup", (__SCMP_NR_BASE + 243) }, - { "io_submit", (__SCMP_NR_BASE + 246) }, - { "io_uring_setup", (__SCMP_NR_BASE + 425) }, - { "io_uring_enter", (__SCMP_NR_BASE + 426) }, - { "io_uring_register", (__SCMP_NR_BASE + 427) }, - { "ioctl", (__SCMP_NR_BASE + 54) }, - { "ioperm", __PNR_ioperm }, - { "iopl", __PNR_iopl }, - { "ioprio_get", (__SCMP_NR_BASE + 315) }, - { "ioprio_set", (__SCMP_NR_BASE + 314) }, - { "ipc", __PNR_ipc }, - { "kcmp", (__SCMP_NR_BASE + 378) }, - { "kexec_file_load", (__SCMP_NR_BASE + 401) }, - { "kexec_load", (__SCMP_NR_BASE + 347) }, - { "keyctl", (__SCMP_NR_BASE + 311) }, - { "kill", (__SCMP_NR_BASE + 37) }, - { "lchown", (__SCMP_NR_BASE + 16) }, - { "lchown32", (__SCMP_NR_BASE + 198) }, - { "lgetxattr", (__SCMP_NR_BASE + 230) }, - { "link", (__SCMP_NR_BASE + 9) }, - { "linkat", (__SCMP_NR_BASE + 330) }, - { "listen", (__SCMP_NR_BASE + 284) }, - { "listxattr", (__SCMP_NR_BASE + 232) }, - { "llistxattr", (__SCMP_NR_BASE + 233) }, - { "lock", __PNR_lock }, - { "lookup_dcookie", (__SCMP_NR_BASE + 249) }, - { "lremovexattr", (__SCMP_NR_BASE + 236) }, - { "lseek", (__SCMP_NR_BASE + 19) }, - { "lsetxattr", (__SCMP_NR_BASE + 227) }, - { "lstat", (__SCMP_NR_BASE + 107) }, - { "lstat64", (__SCMP_NR_BASE + 196) }, - { "madvise", (__SCMP_NR_BASE + 220) }, - { "mbind", (__SCMP_NR_BASE + 319) }, - { "membarrier", (__SCMP_NR_BASE + 389) }, - { "memfd_create", (__SCMP_NR_BASE + 385) }, - { "migrate_pages", (__SCMP_NR_BASE + 400) }, - { "mincore", (__SCMP_NR_BASE + 219) }, - { "mkdir", (__SCMP_NR_BASE + 39) }, - { "mkdirat", (__SCMP_NR_BASE + 323) }, - { "mknod", (__SCMP_NR_BASE + 14) }, - { "mknodat", (__SCMP_NR_BASE + 324) }, - { "mlock", (__SCMP_NR_BASE + 150) }, - { "mlock2", (__SCMP_NR_BASE + 390) }, - { "mlockall", (__SCMP_NR_BASE + 152) }, - { "mmap", __PNR_mmap }, - { "mmap2", (__SCMP_NR_BASE + 192) }, - { "modify_ldt", __PNR_modify_ldt }, - { "mount", (__SCMP_NR_BASE + 21) }, - { "move_mount", (__SCMP_NR_BASE + 429) }, - { "move_pages", (__SCMP_NR_BASE + 344) }, - { "mprotect", (__SCMP_NR_BASE + 125) }, - { "mpx", __PNR_mpx }, - { "mq_getsetattr", (__SCMP_NR_BASE + 279) }, - { "mq_notify", (__SCMP_NR_BASE + 278) }, - { "mq_open", (__SCMP_NR_BASE + 274) }, - { "mq_timedreceive", (__SCMP_NR_BASE + 277) }, - { "mq_timedreceive_time64", (__SCMP_NR_BASE + 419) }, - { "mq_timedsend", (__SCMP_NR_BASE + 276) }, - { "mq_timedsend_time64", (__SCMP_NR_BASE + 418) }, - { "mq_unlink", (__SCMP_NR_BASE + 275) }, - { "mremap", (__SCMP_NR_BASE + 163) }, - { "msgctl", (__SCMP_NR_BASE + 304) }, - { "msgget", (__SCMP_NR_BASE + 303) }, - { "msgrcv", (__SCMP_NR_BASE + 302) }, - { "msgsnd", (__SCMP_NR_BASE + 301) }, - { "msync", (__SCMP_NR_BASE + 144) }, - { "multiplexer", __PNR_multiplexer }, - { "munlock", (__SCMP_NR_BASE + 151) }, - { "munlockall", (__SCMP_NR_BASE + 153) }, - { "munmap", (__SCMP_NR_BASE + 91) }, - { "name_to_handle_at", (__SCMP_NR_BASE + 370) }, - { "nanosleep", (__SCMP_NR_BASE + 162) }, - { "newfstatat", __PNR_newfstatat }, - { "nfsservctl", (__SCMP_NR_BASE + 169) }, - { "nice", (__SCMP_NR_BASE + 34) }, - { "oldfstat", __PNR_oldfstat }, - { "oldlstat", __PNR_oldlstat }, - { "oldolduname", __PNR_oldolduname }, - { "oldstat", __PNR_oldstat }, - { "olduname", __PNR_olduname }, - { "oldwait4", __PNR_oldwait4 }, - { "open", (__SCMP_NR_BASE + 5) }, - { "open_by_handle_at", (__SCMP_NR_BASE + 371) }, - { "open_tree", (__SCMP_NR_BASE + 428) }, - { "openat", (__SCMP_NR_BASE + 322) }, - { "pause", (__SCMP_NR_BASE + 29) }, - { "pciconfig_iobase", (__SCMP_NR_BASE + 271) }, - { "pciconfig_read", (__SCMP_NR_BASE + 272) }, - { "pciconfig_write", (__SCMP_NR_BASE + 273) }, - { "perf_event_open", (__SCMP_NR_BASE + 364) }, - { "personality", (__SCMP_NR_BASE + 136) }, - { "pidfd_open", (__SCMP_NR_BASE + 434) }, - { "pidfd_send_signal", (__SCMP_NR_BASE + 424) }, - { "pipe", (__SCMP_NR_BASE + 42) }, - { "pipe2", (__SCMP_NR_BASE + 359) }, - { "pivot_root", (__SCMP_NR_BASE + 218) }, - { "pkey_alloc", (__SCMP_NR_BASE + 395) }, - { "pkey_free", (__SCMP_NR_BASE + 396) }, - { "pkey_mprotect", (__SCMP_NR_BASE + 394) }, - { "poll", (__SCMP_NR_BASE + 168) }, - { "ppoll", (__SCMP_NR_BASE + 336) }, - { "ppoll_time64", (__SCMP_NR_BASE + 414) }, - { "prctl", (__SCMP_NR_BASE + 172) }, - { "pread64", (__SCMP_NR_BASE + 180) }, - { "preadv", (__SCMP_NR_BASE + 361) }, - { "preadv2", (__SCMP_NR_BASE + 392) }, - { "prlimit64", (__SCMP_NR_BASE + 369) }, - { "process_vm_readv", (__SCMP_NR_BASE + 376) }, - { "process_vm_writev", (__SCMP_NR_BASE + 377) }, - { "prof", __PNR_prof }, - { "profil", __PNR_profil }, - { "pselect6", (__SCMP_NR_BASE + 335) }, - { "pselect6_time64", (__SCMP_NR_BASE + 413) }, - { "ptrace", (__SCMP_NR_BASE + 26) }, - { "putpmsg", __PNR_putpmsg }, - { "pwrite64", (__SCMP_NR_BASE + 181) }, - { "pwritev", (__SCMP_NR_BASE + 362) }, - { "pwritev2", (__SCMP_NR_BASE + 393) }, - { "query_module", __PNR_query_module }, - { "quotactl", (__SCMP_NR_BASE + 131) }, - { "read", (__SCMP_NR_BASE + 3) }, - { "readahead", (__SCMP_NR_BASE + 225) }, - { "readdir", __PNR_readdir }, - { "readlink", (__SCMP_NR_BASE + 85) }, - { "readlinkat", (__SCMP_NR_BASE + 332) }, - { "readv", (__SCMP_NR_BASE + 145) }, - { "reboot", (__SCMP_NR_BASE + 88) }, - { "recv", (__SCMP_NR_BASE + 291) }, - { "recvfrom", (__SCMP_NR_BASE + 292) }, - { "recvmmsg", (__SCMP_NR_BASE + 365) }, - { "recvmmsg_time64", (__SCMP_NR_BASE + 417) }, - { "recvmsg", (__SCMP_NR_BASE + 297) }, - { "remap_file_pages", (__SCMP_NR_BASE + 253) }, - { "removexattr", (__SCMP_NR_BASE + 235) }, - { "rename", (__SCMP_NR_BASE + 38) }, - { "renameat", (__SCMP_NR_BASE + 329) }, - { "renameat2", (__SCMP_NR_BASE + 382) }, - { "request_key", (__SCMP_NR_BASE + 310) }, - { "restart_syscall", (__SCMP_NR_BASE + 0) }, - { "rmdir", (__SCMP_NR_BASE + 40) }, - { "rseq", (__SCMP_NR_BASE + 398) }, - { "rt_sigaction", (__SCMP_NR_BASE + 174) }, - { "rt_sigpending", (__SCMP_NR_BASE + 176) }, - { "rt_sigprocmask", (__SCMP_NR_BASE + 175) }, - { "rt_sigqueueinfo", (__SCMP_NR_BASE + 178) }, - { "rt_sigreturn", (__SCMP_NR_BASE + 173) }, - { "rt_sigsuspend", (__SCMP_NR_BASE + 179) }, - { "rt_sigtimedwait", (__SCMP_NR_BASE + 177) }, - { "rt_sigtimedwait_time64", (__SCMP_NR_BASE + 421) }, - { "rt_tgsigqueueinfo", (__SCMP_NR_BASE + 363) }, - { "rtas", __PNR_rtas }, - { "s390_guarded_storage", __PNR_s390_guarded_storage }, - { "s390_pci_mmio_read", __PNR_s390_pci_mmio_read }, - { "s390_pci_mmio_write", __PNR_s390_pci_mmio_write }, - { "s390_runtime_instr", __PNR_s390_runtime_instr }, - { "s390_sthyi", __PNR_s390_sthyi }, - { "sched_get_priority_max", (__SCMP_NR_BASE + 159) }, - { "sched_get_priority_min", (__SCMP_NR_BASE + 160) }, - { "sched_getaffinity", (__SCMP_NR_BASE + 242) }, - { "sched_getattr", (__SCMP_NR_BASE + 381) }, - { "sched_getparam", (__SCMP_NR_BASE + 155) }, - { "sched_getscheduler", (__SCMP_NR_BASE + 157) }, - { "sched_rr_get_interval", (__SCMP_NR_BASE + 161) }, - { "sched_rr_get_interval_time64", (__SCMP_NR_BASE + 423) }, - { "sched_setaffinity", (__SCMP_NR_BASE + 241) }, - { "sched_setattr", (__SCMP_NR_BASE + 380) }, - { "sched_setparam", (__SCMP_NR_BASE + 154) }, - { "sched_setscheduler", (__SCMP_NR_BASE + 156) }, - { "sched_yield", (__SCMP_NR_BASE + 158) }, - { "seccomp", (__SCMP_NR_BASE + 383) }, - { "security", __PNR_security }, - { "select", __PNR_select }, - { "semctl", (__SCMP_NR_BASE + 300) }, - { "semget", (__SCMP_NR_BASE + 299) }, - { "semop", (__SCMP_NR_BASE + 298) }, - { "semtimedop", (__SCMP_NR_BASE + 312) }, - { "semtimedop_time64", (__SCMP_NR_BASE + 420) }, - { "send", (__SCMP_NR_BASE + 289) }, - { "sendfile", (__SCMP_NR_BASE + 187) }, - { "sendfile64", (__SCMP_NR_BASE + 239) }, - { "sendmmsg", (__SCMP_NR_BASE + 374) }, - { "sendmsg", (__SCMP_NR_BASE + 296) }, - { "sendto", (__SCMP_NR_BASE + 290) }, - { "set_mempolicy", (__SCMP_NR_BASE + 321) }, - { "set_robust_list", (__SCMP_NR_BASE + 338) }, - { "set_thread_area", __PNR_set_thread_area }, - { "set_tid_address", (__SCMP_NR_BASE + 256) }, - { "set_tls", (__SCMP_NR_BASE + (__SCMP_ARM_NR_BASE + 5)) }, - { "setdomainname", (__SCMP_NR_BASE + 121) }, - { "setfsgid", (__SCMP_NR_BASE + 139) }, - { "setfsgid32", (__SCMP_NR_BASE + 216) }, - { "setfsuid", (__SCMP_NR_BASE + 138) }, - { "setfsuid32", (__SCMP_NR_BASE + 215) }, - { "setgid", (__SCMP_NR_BASE + 46) }, - { "setgid32", (__SCMP_NR_BASE + 214) }, - { "setgroups", (__SCMP_NR_BASE + 81) }, - { "setgroups32", (__SCMP_NR_BASE + 206) }, - { "sethostname", (__SCMP_NR_BASE + 74) }, - { "setitimer", (__SCMP_NR_BASE + 104) }, - { "setns", (__SCMP_NR_BASE + 375) }, - { "setpgid", (__SCMP_NR_BASE + 57) }, - { "setpriority", (__SCMP_NR_BASE + 97) }, - { "setregid", (__SCMP_NR_BASE + 71) }, - { "setregid32", (__SCMP_NR_BASE + 204) }, - { "setresgid", (__SCMP_NR_BASE + 170) }, - { "setresgid32", (__SCMP_NR_BASE + 210) }, - { "setresuid", (__SCMP_NR_BASE + 164) }, - { "setresuid32", (__SCMP_NR_BASE + 208) }, - { "setreuid", (__SCMP_NR_BASE + 70) }, - { "setreuid32", (__SCMP_NR_BASE + 203) }, - { "setrlimit", (__SCMP_NR_BASE + 75) }, - { "setsid", (__SCMP_NR_BASE + 66) }, - { "setsockopt", (__SCMP_NR_BASE + 294) }, - { "settimeofday", (__SCMP_NR_BASE + 79) }, - { "setuid", (__SCMP_NR_BASE + 23) }, - { "setuid32", (__SCMP_NR_BASE + 213) }, - { "setxattr", (__SCMP_NR_BASE + 226) }, - { "sgetmask", __PNR_sgetmask }, - { "shmat", (__SCMP_NR_BASE + 305) }, - { "shmctl", (__SCMP_NR_BASE + 308) }, - { "shmdt", (__SCMP_NR_BASE + 306) }, - { "shmget", (__SCMP_NR_BASE + 307) }, - { "shutdown", (__SCMP_NR_BASE + 293) }, - { "sigaction", (__SCMP_NR_BASE + 67) }, - { "sigaltstack", (__SCMP_NR_BASE + 186) }, - { "signal", __PNR_signal }, - { "signalfd", (__SCMP_NR_BASE + 349) }, - { "signalfd4", (__SCMP_NR_BASE + 355) }, - { "sigpending", (__SCMP_NR_BASE + 73) }, - { "sigprocmask", (__SCMP_NR_BASE + 126) }, - { "sigreturn", (__SCMP_NR_BASE + 119) }, - { "sigsuspend", (__SCMP_NR_BASE + 72) }, - { "socket", (__SCMP_NR_BASE + 281) }, - { "socketcall", __PNR_socketcall }, - { "socketpair", (__SCMP_NR_BASE + 288) }, - { "splice", (__SCMP_NR_BASE + 340) }, - { "spu_create", __PNR_spu_create }, - { "spu_run", __PNR_spu_run }, - { "ssetmask", __PNR_ssetmask }, - { "stat", (__SCMP_NR_BASE + 106) }, - { "stat64", (__SCMP_NR_BASE + 195) }, - { "statfs", (__SCMP_NR_BASE + 99) }, - { "statfs64", (__SCMP_NR_BASE + 266) }, - { "statx", (__SCMP_NR_BASE + 397) }, - { "stime", __PNR_stime }, - { "stty", __PNR_stty }, - { "subpage_prot", __PNR_subpage_prot }, - { "swapcontext", __PNR_swapcontext }, - { "swapoff", (__SCMP_NR_BASE + 115) }, - { "swapon", (__SCMP_NR_BASE + 87) }, - { "switch_endian", __PNR_switch_endian }, - { "symlink", (__SCMP_NR_BASE + 83) }, - { "symlinkat", (__SCMP_NR_BASE + 331) }, - { "sync", (__SCMP_NR_BASE + 36) }, - { "sync_file_range", __PNR_sync_file_range }, - { "sync_file_range2", (__SCMP_NR_BASE + 341) }, - { "syncfs", (__SCMP_NR_BASE + 373) }, - { "syscall", (__PNR_syscall) }, - { "sys_debug_setcontext", __PNR_sys_debug_setcontext }, - { "sysfs", (__SCMP_NR_BASE + 135) }, - { "sysinfo", (__SCMP_NR_BASE + 116) }, - { "syslog", (__SCMP_NR_BASE + 103) }, - { "sysmips", __PNR_sysmips }, - { "tee", (__SCMP_NR_BASE + 342) }, - { "tgkill", (__SCMP_NR_BASE + 268) }, - { "time", __PNR_time }, - { "timer_create", (__SCMP_NR_BASE + 257) }, - { "timer_delete", (__SCMP_NR_BASE + 261) }, - { "timer_getoverrun", (__SCMP_NR_BASE + 260) }, - { "timer_gettime", (__SCMP_NR_BASE + 259) }, - { "timer_gettime64", (__SCMP_NR_BASE + 408) }, - { "timer_settime", (__SCMP_NR_BASE + 258) }, - { "timer_settime64", (__SCMP_NR_BASE + 409) }, - { "timerfd", __PNR_timerfd }, - { "timerfd_create", (__SCMP_NR_BASE + 350) }, - { "timerfd_gettime", (__SCMP_NR_BASE + 354) }, - { "timerfd_gettime64", (__SCMP_NR_BASE + 410) }, - { "timerfd_settime", (__SCMP_NR_BASE + 353) }, - { "timerfd_settime64", (__SCMP_NR_BASE + 411) }, - { "times", (__SCMP_NR_BASE + 43) }, - { "tkill", (__SCMP_NR_BASE + 238) }, - { "truncate", (__SCMP_NR_BASE + 92) }, - { "truncate64", (__SCMP_NR_BASE + 193) }, - { "tuxcall", __PNR_tuxcall }, - { "ugetrlimit", (__SCMP_NR_BASE + 191) }, - { "ulimit", __PNR_ulimit }, - { "umask", (__SCMP_NR_BASE + 60) }, - { "umount", __PNR_umount }, - { "umount2", (__SCMP_NR_BASE + 52) }, - { "uname", (__SCMP_NR_BASE + 122) }, - { "unlink", (__SCMP_NR_BASE + 10) }, - { "unlinkat", (__SCMP_NR_BASE + 328) }, - { "unshare", (__SCMP_NR_BASE + 337) }, - { "uselib", (__SCMP_NR_BASE + 86) }, - { "userfaultfd", (__SCMP_NR_BASE + 388) }, - { "usr26", (__SCMP_NR_BASE + (__SCMP_ARM_NR_BASE + 3)) }, - { "usr32", (__SCMP_NR_BASE + (__SCMP_ARM_NR_BASE + 4)) }, - { "ustat", (__SCMP_NR_BASE + 62) }, - { "utime", __PNR_utime }, - { "utimensat", (__SCMP_NR_BASE + 348) }, - { "utimensat_time64", (__SCMP_NR_BASE + 412) }, - { "utimes", (__SCMP_NR_BASE + 269) }, - { "vfork", (__SCMP_NR_BASE + 190) }, - { "vhangup", (__SCMP_NR_BASE + 111) }, - { "vm86", __PNR_vm86 }, - { "vm86old", __PNR_vm86old }, - { "vmsplice", (__SCMP_NR_BASE + 343) }, - { "vserver", (__SCMP_NR_BASE + 313) }, - { "wait4", (__SCMP_NR_BASE + 114) }, - { "waitid", (__SCMP_NR_BASE + 280) }, - { "waitpid", __PNR_waitpid }, - { "write", (__SCMP_NR_BASE + 4) }, - { "writev", (__SCMP_NR_BASE + 146) }, - { NULL, __NR_SCMP_ERROR }, -}; - -/** - * Resolve a syscall name to a number - * @param name the syscall name - * - * Resolve the given syscall name to the syscall number using the syscall table. - * Returns the syscall number on success, including negative pseudo syscall - * numbers; returns __NR_SCMP_ERROR on failure. - * - */ -int arm_syscall_resolve_name(const char *name) -{ - unsigned int iter; - const struct arch_syscall_def *table = arm_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].name != NULL; iter++) { - if (strcmp(name, table[iter].name) == 0) - return table[iter].num; - } - - return __NR_SCMP_ERROR; -} - -/** - * Resolve a syscall number to a name - * @param num the syscall number - * - * Resolve the given syscall number to the syscall name using the syscall table. - * Returns a pointer to the syscall name string on success, including pseudo - * syscall names; returns NULL on failure. - * - */ -const char *arm_syscall_resolve_num(int num) -{ - unsigned int iter; - const struct arch_syscall_def *table = arm_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].num != __NR_SCMP_ERROR; iter++) { - if (num == table[iter].num) - return table[iter].name; - } - - return NULL; -} - -/** - * Iterate through the syscall table and return the syscall mapping - * @param spot the offset into the syscall table - * - * Return the syscall mapping at position @spot or NULL on failure. This - * function should only ever be used internally by libseccomp. - * - */ -const struct arch_syscall_def *arm_syscall_iterate(unsigned int spot) -{ - /* XXX - no safety checks here */ - return &arm_syscall_table[spot]; -} diff --git a/src/arch-mips-syscalls.c b/src/arch-mips-syscalls.c deleted file mode 100644 index c0c5d40..0000000 --- a/src/arch-mips-syscalls.c +++ /dev/null @@ -1,562 +0,0 @@ -/** - * Enhanced Seccomp MIPS Specific Code - * - * Copyright (c) 2014 Imagination Technologies Ltd. - * Author: Markos Chandras <markos.chandras@imgtec.com> - * - */ - -/* - * This library is free software; you can redistribute it and/or modify it - * under the terms of version 2.1 of the GNU Lesser General Public License as - * published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, see <http://www.gnu.org/licenses>. - */ - -#include <string.h> - -#include <seccomp.h> - -#include "arch.h" -#include "arch-mips.h" - -/* O32 ABI */ -#define __SCMP_NR_BASE 4000 - -/* NOTE: based on Linux v5.4-rc4 */ -const struct arch_syscall_def mips_syscall_table[] = { \ - { "_llseek", (__SCMP_NR_BASE + 140) }, - { "_newselect", (__SCMP_NR_BASE + 142) }, - { "_sysctl", (__SCMP_NR_BASE + 153) }, - { "accept", (__SCMP_NR_BASE + 168) }, - { "accept4", (__SCMP_NR_BASE + 334) }, - { "access", (__SCMP_NR_BASE + 33) }, - { "acct", (__SCMP_NR_BASE + 51) }, - { "add_key", (__SCMP_NR_BASE + 280) }, - { "adjtimex", (__SCMP_NR_BASE + 124) }, - { "afs_syscall", __SCMP_NR_BASE + 137 }, - { "alarm", (__SCMP_NR_BASE + 27) }, - { "arm_fadvise64_64", __PNR_arm_fadvise64_64 }, - { "arm_sync_file_range", __PNR_arm_sync_file_range }, - { "arch_prctl", __PNR_arch_prctl }, - { "bdflush", (__SCMP_NR_BASE + 134) }, - { "bind", (__SCMP_NR_BASE + 169) }, - { "bpf", (__SCMP_NR_BASE + 355) }, - { "break", __SCMP_NR_BASE + 17 }, - { "breakpoint", __PNR_breakpoint }, - { "brk", (__SCMP_NR_BASE + 45) }, - { "cachectl", (__SCMP_NR_BASE + 148) }, - { "cacheflush", (__SCMP_NR_BASE + 147) }, - { "capget", (__SCMP_NR_BASE + 204) }, - { "capset", (__SCMP_NR_BASE + 205) }, - { "chdir", (__SCMP_NR_BASE + 12) }, - { "chmod", (__SCMP_NR_BASE + 15) }, - { "chown", (__SCMP_NR_BASE + 202) }, - { "chown32", (__PNR_chown32) }, - { "chroot", (__SCMP_NR_BASE + 61) }, - { "clock_adjtime", (__SCMP_NR_BASE + 341) }, - { "clock_adjtime64", (__SCMP_NR_BASE + 405) }, - { "clock_getres", (__SCMP_NR_BASE + 264) }, - { "clock_getres_time64", (__SCMP_NR_BASE + 406) }, - { "clock_gettime", (__SCMP_NR_BASE + 263) }, - { "clock_gettime64", (__SCMP_NR_BASE + 403) }, - { "clock_nanosleep", (__SCMP_NR_BASE + 265) }, - { "clock_nanosleep_time64", (__SCMP_NR_BASE + 407) }, - { "clock_settime", (__SCMP_NR_BASE + 262) }, - { "clock_settime64", (__SCMP_NR_BASE + 404) }, - { "clone", (__SCMP_NR_BASE + 120) }, - { "clone3", (__SCMP_NR_BASE + 435) }, - { "close", (__SCMP_NR_BASE + 6) }, - { "connect", (__SCMP_NR_BASE + 170) }, - { "copy_file_range", (__SCMP_NR_BASE + 360) }, - { "creat", (__SCMP_NR_BASE + 8) }, - { "create_module", __SCMP_NR_BASE + 127 }, - { "delete_module", (__SCMP_NR_BASE + 129) }, - { "dup", (__SCMP_NR_BASE + 41) }, - { "dup2", (__SCMP_NR_BASE + 63) }, - { "dup3", (__SCMP_NR_BASE + 327) }, - { "epoll_create", (__SCMP_NR_BASE + 248) }, - { "epoll_create1", (__SCMP_NR_BASE + 326) }, - { "epoll_ctl", (__SCMP_NR_BASE + 249) }, - { "epoll_ctl_old", __PNR_epoll_ctl_old }, - { "epoll_pwait", (__SCMP_NR_BASE + 313) }, - { "epoll_wait", (__SCMP_NR_BASE + 250) }, - { "epoll_wait_old", __PNR_epoll_wait_old }, - { "eventfd", (__SCMP_NR_BASE + 319) }, - { "eventfd2", (__SCMP_NR_BASE + 325) }, - { "execve", (__SCMP_NR_BASE + 11) }, - { "execveat", (__SCMP_NR_BASE + 356) }, - { "exit", (__SCMP_NR_BASE + 1) }, - { "exit_group", (__SCMP_NR_BASE + 246) }, - { "faccessat", (__SCMP_NR_BASE + 300) }, - { "fadvise64", __SCMP_NR_BASE + 254 }, - { "fadvise64_64", __PNR_fadvise64_64 }, - { "fallocate", (__SCMP_NR_BASE + 320) }, - { "fanotify_init", (__SCMP_NR_BASE + 336) }, - { "fanotify_mark", (__SCMP_NR_BASE + 337) }, - { "fchdir", (__SCMP_NR_BASE + 133) }, - { "fchmod", (__SCMP_NR_BASE + 94) }, - { "fchmodat", (__SCMP_NR_BASE + 299) }, - { "fchown", (__SCMP_NR_BASE + 95) }, - { "fchown32", (__PNR_fchown32) }, - { "fchownat", (__SCMP_NR_BASE + 291) }, - { "fcntl", (__SCMP_NR_BASE + 55) }, - { "fcntl64", (__SCMP_NR_BASE + 220) }, - { "fdatasync", (__SCMP_NR_BASE + 152) }, - { "fgetxattr", (__SCMP_NR_BASE + 229) }, - { "finit_module", (__SCMP_NR_BASE + 348) }, - { "flistxattr", (__SCMP_NR_BASE + 232) }, - { "flock", (__SCMP_NR_BASE + 143) }, - { "fork", (__SCMP_NR_BASE + 2) }, - { "fremovexattr", (__SCMP_NR_BASE + 235) }, - { "fsconfig", (__SCMP_NR_BASE + 431) }, - { "fsetxattr", (__SCMP_NR_BASE + 226) }, - { "fsmount", (__SCMP_NR_BASE + 432) }, - { "fsopen", (__SCMP_NR_BASE + 430) }, - { "fspick", (__SCMP_NR_BASE + 433) }, - { "fstat", (__SCMP_NR_BASE + 108) }, - { "fstat64", (__SCMP_NR_BASE + 215) }, - { "fstatat64", (__SCMP_NR_BASE + 293) }, - { "fstatfs", (__SCMP_NR_BASE + 100) }, - { "fstatfs64", (__SCMP_NR_BASE + 256) }, - { "fsync", (__SCMP_NR_BASE + 118) }, - { "ftime", (__SCMP_NR_BASE + 35) }, - { "ftruncate", (__SCMP_NR_BASE + 93) }, - { "ftruncate64", (__SCMP_NR_BASE + 212) }, - { "futex", (__SCMP_NR_BASE + 238) }, - { "futex_time64", (__SCMP_NR_BASE + 422) }, - { "futimesat", (__SCMP_NR_BASE + 292) }, - { "get_kernel_syms", (__SCMP_NR_BASE + 130) }, - { "get_mempolicy", (__SCMP_NR_BASE + 269) }, - { "get_robust_list", (__SCMP_NR_BASE + 310) }, - { "get_thread_area", __PNR_get_thread_area }, - { "get_tls", __PNR_get_tls }, - { "getcpu", (__SCMP_NR_BASE + 312) }, - { "getcwd", (__SCMP_NR_BASE + 203) }, - { "getdents", (__SCMP_NR_BASE + 141) }, - { "getdents64", (__SCMP_NR_BASE + 219) }, - { "getegid", (__SCMP_NR_BASE + 50) }, - { "getegid32", __PNR_getegid32 }, - { "geteuid", (__SCMP_NR_BASE + 49) }, - { "geteuid32", __PNR_geteuid32 }, - { "getgid", (__SCMP_NR_BASE + 47) }, - { "getgid32", __PNR_getgid32 }, - { "getgroups", (__SCMP_NR_BASE + 80) }, - { "getgroups32", __PNR_getgroups32 }, - { "getitimer", (__SCMP_NR_BASE + 105) }, - { "getpeername", (__SCMP_NR_BASE + 171) }, - { "getpgid", (__SCMP_NR_BASE + 132) }, - { "getpgrp", (__SCMP_NR_BASE + 65) }, - { "getpid", (__SCMP_NR_BASE + 20) }, - { "getpmsg", (__SCMP_NR_BASE + 208) }, - { "getppid", (__SCMP_NR_BASE + 64) }, - { "getpriority", (__SCMP_NR_BASE + 96) }, - { "getrandom", (__SCMP_NR_BASE + 353) }, - { "getresgid", (__SCMP_NR_BASE + 191) }, - { "getresgid32", __PNR_getresgid32 }, - { "getresuid", (__SCMP_NR_BASE + 186) }, - { "getresuid32", __PNR_getresuid32 }, - { "getrlimit", (__SCMP_NR_BASE + 76) }, - { "getrusage", (__SCMP_NR_BASE + 77) }, - { "getsid", (__SCMP_NR_BASE + 151) }, - { "getsockname", (__SCMP_NR_BASE + 172) }, - { "getsockopt", (__SCMP_NR_BASE + 173) }, - { "gettid", (__SCMP_NR_BASE + 222) }, - { "gettimeofday", (__SCMP_NR_BASE + 78) }, - { "getuid", (__SCMP_NR_BASE + 24) }, - { "getuid32", __PNR_getuid32 }, - { "getxattr", (__SCMP_NR_BASE + 227) }, - { "gtty", (__SCMP_NR_BASE + 32) }, - { "idle", (__SCMP_NR_BASE + 112) }, - { "init_module", (__SCMP_NR_BASE + 128) }, - { "inotify_add_watch", (__SCMP_NR_BASE + 285) }, - { "inotify_init", (__SCMP_NR_BASE + 284) }, - { "inotify_init1", (__SCMP_NR_BASE + 329) }, - { "inotify_rm_watch", (__SCMP_NR_BASE + 286) }, - { "io_cancel", (__SCMP_NR_BASE + 245) }, - { "io_destroy", (__SCMP_NR_BASE + 242) }, - { "io_getevents", (__SCMP_NR_BASE + 243) }, - { "io_pgetevents", (__SCMP_NR_BASE + 368) }, - { "io_pgetevents_time64", (__SCMP_NR_BASE + 416) }, - { "io_setup", (__SCMP_NR_BASE + 241) }, - { "io_submit", (__SCMP_NR_BASE + 244) }, - { "io_uring_setup", (__SCMP_NR_BASE + 425) }, - { "io_uring_enter", (__SCMP_NR_BASE + 426) }, - { "io_uring_register", (__SCMP_NR_BASE + 427) }, - { "ioctl", (__SCMP_NR_BASE + 54) }, - { "ioperm", (__SCMP_NR_BASE + 101) }, - { "iopl", (__SCMP_NR_BASE + 110) }, - { "ioprio_get", (__SCMP_NR_BASE + 315) }, - { "ioprio_set", (__SCMP_NR_BASE + 314) }, - { "ipc", (__SCMP_NR_BASE + 117) }, - { "kcmp", (__SCMP_NR_BASE + 347) }, - { "kexec_file_load", __PNR_kexec_file_load }, - { "kexec_load", (__SCMP_NR_BASE + 311) }, - { "keyctl", (__SCMP_NR_BASE + 282) }, - { "kill", (__SCMP_NR_BASE + 37) }, - { "lchown", (__SCMP_NR_BASE + 16) }, - { "lchown32", __PNR_lchown32 }, - { "lgetxattr", (__SCMP_NR_BASE + 228) }, - { "link", (__SCMP_NR_BASE + 9) }, - { "linkat", (__SCMP_NR_BASE + 296) }, - { "listen", (__SCMP_NR_BASE + 174) }, - { "listxattr", (__SCMP_NR_BASE + 230) }, - { "llistxattr", (__SCMP_NR_BASE + 231) }, - { "lock", (__SCMP_NR_BASE + 53) }, - { "lookup_dcookie", (__SCMP_NR_BASE + 247) }, - { "lremovexattr", (__SCMP_NR_BASE + 234) }, - { "lseek", (__SCMP_NR_BASE + 19) }, - { "lsetxattr", (__SCMP_NR_BASE + 225) }, - { "lstat", (__SCMP_NR_BASE + 107) }, - { "lstat64", (__SCMP_NR_BASE + 214) }, - { "madvise", (__SCMP_NR_BASE + 218) }, - { "mbind", (__SCMP_NR_BASE + 268) }, - { "membarrier", (__SCMP_NR_BASE + 358) }, - { "memfd_create", (__SCMP_NR_BASE + 354) }, - { "migrate_pages", (__SCMP_NR_BASE + 287) }, - { "mincore", (__SCMP_NR_BASE + 217) }, - { "mkdir", (__SCMP_NR_BASE + 39) }, - { "mkdirat", (__SCMP_NR_BASE + 289) }, - { "mknod", (__SCMP_NR_BASE + 14) }, - { "mknodat", (__SCMP_NR_BASE + 290) }, - { "mlock", (__SCMP_NR_BASE + 154) }, - { "mlock2", (__SCMP_NR_BASE + 359) }, - { "mlockall", (__SCMP_NR_BASE + 156) }, - { "mmap", (__SCMP_NR_BASE + 90) }, - { "mmap2", (__SCMP_NR_BASE + 210) }, - { "modify_ldt", (__SCMP_NR_BASE + 123) }, - { "mount", (__SCMP_NR_BASE + 21) }, - { "move_mount", (__SCMP_NR_BASE + 429) }, - { "move_pages", (__SCMP_NR_BASE + 308) }, - { "mprotect", (__SCMP_NR_BASE + 125) }, - { "mpx", (__SCMP_NR_BASE + 56) }, - { "mq_getsetattr", (__SCMP_NR_BASE + 276) }, - { "mq_notify", (__SCMP_NR_BASE + 275) }, - { "mq_open", (__SCMP_NR_BASE + 271) }, - { "mq_timedreceive", (__SCMP_NR_BASE + 274) }, - { "mq_timedreceive_time64", (__SCMP_NR_BASE + 419) }, - { "mq_timedsend", (__SCMP_NR_BASE + 273) }, - { "mq_timedsend_time64", (__SCMP_NR_BASE + 418) }, - { "mq_unlink", (__SCMP_NR_BASE + 272) }, - { "mremap", (__SCMP_NR_BASE + 167) }, - { "msgctl", (__SCMP_NR_BASE + 402) }, - { "msgget", (__SCMP_NR_BASE + 399) }, - { "msgrcv", (__SCMP_NR_BASE + 401) }, - { "msgsnd", (__SCMP_NR_BASE + 400) }, - { "msync", (__SCMP_NR_BASE + 144) }, - { "multiplexer", __PNR_multiplexer }, - { "munlock", (__SCMP_NR_BASE + 155) }, - { "munlockall", (__SCMP_NR_BASE + 157) }, - { "munmap", (__SCMP_NR_BASE + 91) }, - { "name_to_handle_at", (__SCMP_NR_BASE + 339) }, - { "nanosleep", (__SCMP_NR_BASE + 166) }, - { "newfstatat", __PNR_newfstatat }, - { "nfsservctl", (__SCMP_NR_BASE + 189) }, - { "nice", (__SCMP_NR_BASE + 34) }, - { "oldfstat", __PNR_oldfstat }, - { "oldlstat", __PNR_oldlstat }, - { "oldolduname", __PNR_oldolduname }, - { "oldstat", __PNR_oldstat }, - { "olduname", __PNR_olduname }, - { "oldwait4", __PNR_oldwait4 }, - { "open", (__SCMP_NR_BASE + 5) }, - { "open_by_handle_at", (__SCMP_NR_BASE + 340) }, - { "open_tree", (__SCMP_NR_BASE + 428) }, - { "openat", (__SCMP_NR_BASE + 288) }, - { "pause", (__SCMP_NR_BASE + 29) }, - { "pciconfig_iobase", __PNR_pciconfig_iobase }, - { "pciconfig_read", __PNR_pciconfig_read }, - { "pciconfig_write", __PNR_pciconfig_write }, - { "perf_event_open", (__SCMP_NR_BASE + 333) }, - { "personality", (__SCMP_NR_BASE + 136) }, - { "pidfd_open", (__SCMP_NR_BASE + 434) }, - { "pidfd_send_signal", (__SCMP_NR_BASE + 424) }, - { "pipe", (__SCMP_NR_BASE + 42) }, - { "pipe2", (__SCMP_NR_BASE + 328) }, - { "pivot_root", (__SCMP_NR_BASE + 216) }, - { "pkey_alloc", (__SCMP_NR_BASE + 364) }, - { "pkey_free", (__SCMP_NR_BASE + 365) }, - { "pkey_mprotect", (__SCMP_NR_BASE + 363) }, - { "poll", (__SCMP_NR_BASE + 188) }, - { "ppoll", (__SCMP_NR_BASE + 302) }, - { "ppoll_time64", (__SCMP_NR_BASE + 414) }, - { "prctl", (__SCMP_NR_BASE + 192) }, - { "pread64", (__SCMP_NR_BASE + 200) }, - { "preadv", (__SCMP_NR_BASE + 330) }, - { "preadv2", (__SCMP_NR_BASE + 361) }, - { "prlimit64", (__SCMP_NR_BASE + 338) }, - { "process_vm_readv", (__SCMP_NR_BASE + 345) }, - { "process_vm_writev", (__SCMP_NR_BASE + 346) }, - { "prof", (__SCMP_NR_BASE + 44) }, - { "profil", (__SCMP_NR_BASE + 98) }, - { "pselect6", (__SCMP_NR_BASE + 301) }, - { "pselect6_time64", (__SCMP_NR_BASE + 413) }, - { "ptrace", (__SCMP_NR_BASE + 26) }, - { "putpmsg", (__SCMP_NR_BASE + 209) }, - { "pwrite64", (__SCMP_NR_BASE + 201) }, - { "pwritev", (__SCMP_NR_BASE + 331) }, - { "pwritev2", (__SCMP_NR_BASE + 362) }, - { "query_module", (__SCMP_NR_BASE + 187) }, - { "quotactl", (__SCMP_NR_BASE + 131) }, - { "read", (__SCMP_NR_BASE + 3) }, - { "readahead", (__SCMP_NR_BASE + 223) }, - { "readdir", (__SCMP_NR_BASE + 89) }, - { "readlink", (__SCMP_NR_BASE + 85) }, - { "readlinkat", (__SCMP_NR_BASE + 298) }, - { "readv", (__SCMP_NR_BASE + 145) }, - { "reboot", (__SCMP_NR_BASE + 88) }, - { "recv", (__SCMP_NR_BASE + 175) }, - { "recvfrom", (__SCMP_NR_BASE + 176) }, - { "recvmmsg", (__SCMP_NR_BASE + 335) }, - { "recvmmsg_time64", (__SCMP_NR_BASE + 417) }, - { "recvmsg", (__SCMP_NR_BASE + 177) }, - { "remap_file_pages", (__SCMP_NR_BASE + 251) }, - { "removexattr", (__SCMP_NR_BASE + 233) }, - { "rename", (__SCMP_NR_BASE + 38) }, - { "renameat", (__SCMP_NR_BASE + 295) }, - { "renameat2", (__SCMP_NR_BASE + 351) }, - { "request_key", (__SCMP_NR_BASE + 281) }, - { "restart_syscall", (__SCMP_NR_BASE + 253) }, - { "rmdir", (__SCMP_NR_BASE + 40) }, - { "rseq", (__SCMP_NR_BASE + 367) }, - { "rt_sigaction", (__SCMP_NR_BASE + 194) }, - { "rt_sigpending", (__SCMP_NR_BASE + 196) }, - { "rt_sigprocmask", (__SCMP_NR_BASE + 195) }, - { "rt_sigqueueinfo", (__SCMP_NR_BASE + 198) }, - { "rt_sigreturn", (__SCMP_NR_BASE + 193) }, - { "rt_sigsuspend", (__SCMP_NR_BASE + 199) }, - { "rt_sigtimedwait", (__SCMP_NR_BASE + 197) }, - { "rt_sigtimedwait_time64", (__SCMP_NR_BASE + 421) }, - { "rt_tgsigqueueinfo", (__SCMP_NR_BASE + 332) }, - { "rtas", __PNR_rtas }, - { "s390_guarded_storage", __PNR_s390_guarded_storage }, - { "s390_pci_mmio_read", __PNR_s390_pci_mmio_read }, - { "s390_pci_mmio_write", __PNR_s390_pci_mmio_write }, - { "s390_runtime_instr", __PNR_s390_runtime_instr }, - { "s390_sthyi", __PNR_s390_sthyi }, - { "sched_get_priority_max", (__SCMP_NR_BASE + 163) }, - { "sched_get_priority_min", (__SCMP_NR_BASE + 164) }, - { "sched_getaffinity", (__SCMP_NR_BASE + 240) }, - { "sched_getattr", (__SCMP_NR_BASE + 350) }, - { "sched_getparam", (__SCMP_NR_BASE + 159) }, - { "sched_getscheduler", (__SCMP_NR_BASE + 161) }, - { "sched_rr_get_interval", (__SCMP_NR_BASE + 165) }, - { "sched_rr_get_interval_time64", (__SCMP_NR_BASE + 423) }, - { "sched_setaffinity", (__SCMP_NR_BASE + 239) }, - { "sched_setattr", (__SCMP_NR_BASE + 349) }, - { "sched_setparam", (__SCMP_NR_BASE + 158) }, - { "sched_setscheduler", (__SCMP_NR_BASE + 160) }, - { "sched_yield", (__SCMP_NR_BASE + 162) }, - { "seccomp", (__SCMP_NR_BASE + 352) }, - { "security", __PNR_security }, - { "select", __PNR_select }, - { "semctl", (__SCMP_NR_BASE + 394) }, - { "semget", (__SCMP_NR_BASE + 393) }, - { "semop", __PNR_semop }, - { "semtimedop", __PNR_semtimedop }, - { "semtimedop_time64", (__SCMP_NR_BASE + 420) }, - { "send", (__SCMP_NR_BASE + 178) }, - { "sendfile", (__SCMP_NR_BASE + 207) }, - { "sendfile64", (__SCMP_NR_BASE + 237) }, - { "sendmmsg", (__SCMP_NR_BASE + 343) }, - { "sendmsg", (__SCMP_NR_BASE + 179) }, - { "sendto", (__SCMP_NR_BASE + 180) }, - { "set_mempolicy", (__SCMP_NR_BASE + 270) }, - { "set_robust_list", (__SCMP_NR_BASE + 309) }, - { "set_thread_area", (__SCMP_NR_BASE + 283) }, - { "set_tid_address", (__SCMP_NR_BASE + 252) }, - { "set_tls", __PNR_set_tls }, - { "setdomainname", (__SCMP_NR_BASE + 121) }, - { "setfsgid", (__SCMP_NR_BASE + 139) }, - { "setfsgid32", __PNR_setfsgid32 }, - { "setfsuid", (__SCMP_NR_BASE + 138) }, - { "setfsuid32", __PNR_setfsuid32 }, - { "setgid", (__SCMP_NR_BASE + 46) }, - { "setgid32", __PNR_setgid32 }, - { "setgroups", (__SCMP_NR_BASE + 81) }, - { "setgroups32", __PNR_setgroups32 }, - { "sethostname", (__SCMP_NR_BASE + 74) }, - { "setitimer", (__SCMP_NR_BASE + 104) }, - { "setns", (__SCMP_NR_BASE + 344) }, - { "setpgid", (__SCMP_NR_BASE + 57) }, - { "setpriority", (__SCMP_NR_BASE + 97) }, - { "setregid", (__SCMP_NR_BASE + 71) }, - { "setregid32", __PNR_setregid32 }, - { "setresgid", (__SCMP_NR_BASE + 190) }, - { "setresgid32", __PNR_setresgid32 }, - { "setresuid", (__SCMP_NR_BASE + 185) }, - { "setresuid32", __PNR_setresuid32 }, - { "setreuid", (__SCMP_NR_BASE + 70) }, - { "setreuid32", __PNR_setreuid32 }, - { "setrlimit", (__SCMP_NR_BASE + 75) }, - { "setsid", (__SCMP_NR_BASE + 66) }, - { "setsockopt", (__SCMP_NR_BASE + 181) }, - { "settimeofday", (__SCMP_NR_BASE + 79) }, - { "setuid", (__SCMP_NR_BASE + 23) }, - { "setuid32", __PNR_setuid32 }, - { "setxattr", (__SCMP_NR_BASE + 224) }, - { "sgetmask", (__SCMP_NR_BASE + 68) }, - { "shmat", (__SCMP_NR_BASE + 397) }, - { "shmctl", (__SCMP_NR_BASE + 396) }, - { "shmdt", (__SCMP_NR_BASE + 398) }, - { "shmget", (__SCMP_NR_BASE + 395) }, - { "shutdown", (__SCMP_NR_BASE + 182) }, - { "sigaction", (__SCMP_NR_BASE + 67) }, - { "sigaltstack", (__SCMP_NR_BASE + 206) }, - { "signal", (__SCMP_NR_BASE + 48) }, - { "signalfd", (__SCMP_NR_BASE + 317) }, - { "signalfd4", (__SCMP_NR_BASE + 324) }, - { "sigpending", (__SCMP_NR_BASE + 73) }, - { "sigprocmask", (__SCMP_NR_BASE + 126) }, - { "sigreturn", (__SCMP_NR_BASE + 119) }, - { "sigsuspend", (__SCMP_NR_BASE + 72) }, - { "socket", (__SCMP_NR_BASE + 183) }, - { "socketcall", (__SCMP_NR_BASE + 102) }, - { "socketpair", (__SCMP_NR_BASE + 184) }, - { "splice", (__SCMP_NR_BASE + 304) }, - { "spu_create", __PNR_spu_create }, - { "spu_run", __PNR_spu_run }, - { "ssetmask", (__SCMP_NR_BASE + 69) }, - { "stat", (__SCMP_NR_BASE + 106) }, - { "stat64", (__SCMP_NR_BASE + 213) }, - { "statfs", (__SCMP_NR_BASE + 99) }, - { "statfs64", (__SCMP_NR_BASE + 255) }, - { "statx", (__SCMP_NR_BASE + 366) }, - { "stime", (__SCMP_NR_BASE + 25) }, - { "stty", (__SCMP_NR_BASE + 31) }, - { "subpage_prot", __PNR_subpage_prot }, - { "swapcontext", __PNR_swapcontext }, - { "swapoff", (__SCMP_NR_BASE + 115) }, - { "swapon", (__SCMP_NR_BASE + 87) }, - { "switch_endian", __PNR_switch_endian }, - { "symlink", (__SCMP_NR_BASE + 83) }, - { "symlinkat", (__SCMP_NR_BASE + 297) }, - { "sync", (__SCMP_NR_BASE + 36) }, - { "sync_file_range", (__SCMP_NR_BASE + 305) }, - { "sync_file_range2", __PNR_sync_file_range2 }, - { "syncfs", (__SCMP_NR_BASE + 342) }, - { "syscall", (__SCMP_NR_BASE + 0) }, - { "sys_debug_setcontext", __PNR_sys_debug_setcontext }, - { "sysfs", (__SCMP_NR_BASE + 135) }, - { "sysinfo", (__SCMP_NR_BASE + 116) }, - { "syslog", (__SCMP_NR_BASE + 103) }, - { "sysmips", (__SCMP_NR_BASE + 149) }, - { "tee", (__SCMP_NR_BASE + 306) }, - { "tgkill", (__SCMP_NR_BASE + 266) }, - { "time", (__SCMP_NR_BASE + 13) }, - { "timer_create", (__SCMP_NR_BASE + 257) }, - { "timer_delete", (__SCMP_NR_BASE + 261) }, - { "timer_getoverrun", (__SCMP_NR_BASE + 260) }, - { "timer_gettime", (__SCMP_NR_BASE + 259) }, - { "timer_gettime64", (__SCMP_NR_BASE + 408) }, - { "timer_settime", (__SCMP_NR_BASE + 258) }, - { "timer_settime64", (__SCMP_NR_BASE + 409) }, - { "timerfd", (__SCMP_NR_BASE + 318) }, - { "timerfd_create", (__SCMP_NR_BASE + 321) }, - { "timerfd_gettime", (__SCMP_NR_BASE + 322) }, - { "timerfd_gettime64", (__SCMP_NR_BASE + 410) }, - { "timerfd_settime", (__SCMP_NR_BASE + 323) }, - { "timerfd_settime64", (__SCMP_NR_BASE + 411) }, - { "times", (__SCMP_NR_BASE + 43) }, - { "tkill", (__SCMP_NR_BASE + 236) }, - { "truncate", (__SCMP_NR_BASE + 92) }, - { "truncate64", (__SCMP_NR_BASE + 211) }, - { "tuxcall", __PNR_tuxcall }, - { "ugetrlimit", __PNR_ugetrlimit }, - { "ulimit", (__SCMP_NR_BASE + 58) }, - { "umask", (__SCMP_NR_BASE + 60) }, - { "umount", (__SCMP_NR_BASE + 22) }, - { "umount2", (__SCMP_NR_BASE + 52) }, - { "uname", (__SCMP_NR_BASE + 122) }, - { "unlink", (__SCMP_NR_BASE + 10) }, - { "unlinkat", (__SCMP_NR_BASE + 294) }, - { "unshare", (__SCMP_NR_BASE + 303) }, - { "uselib", (__SCMP_NR_BASE + 86) }, - { "userfaultfd", (__SCMP_NR_BASE + 357) }, - { "usr26", __PNR_usr26 }, - { "usr32", __PNR_usr32 }, - { "ustat", (__SCMP_NR_BASE + 62) }, - { "utime", (__SCMP_NR_BASE + 30) }, - { "utimensat", (__SCMP_NR_BASE + 316) }, - { "utimensat_time64", (__SCMP_NR_BASE + 412) }, - { "utimes", (__SCMP_NR_BASE + 267) }, - { "vfork", __PNR_vfork }, - { "vhangup", (__SCMP_NR_BASE + 111) }, - { "vm86", (__SCMP_NR_BASE + 113) }, - { "vm86old", __PNR_vm86old }, - { "vmsplice", (__SCMP_NR_BASE + 307) }, - { "vserver", (__SCMP_NR_BASE + 277) }, - { "wait4", (__SCMP_NR_BASE + 114) }, - { "waitid", (__SCMP_NR_BASE + 278) }, - { "waitpid", (__SCMP_NR_BASE + 7) }, - { "write", (__SCMP_NR_BASE + 4) }, - { "writev", (__SCMP_NR_BASE + 146) }, - { NULL, __NR_SCMP_ERROR }, -}; - -/** - * Resolve a syscall name to a number - * @param name the syscall name - * - * Resolve the given syscall name to the syscall number using the syscall table. - * Returns the syscall number on success, including negative pseudo syscall - * numbers; returns __NR_SCMP_ERROR on failure. - * - */ -int mips_syscall_resolve_name(const char *name) -{ - unsigned int iter; - const struct arch_syscall_def *table = mips_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].name != NULL; iter++) { - if (strcmp(name, table[iter].name) == 0) - return table[iter].num; - } - - return __NR_SCMP_ERROR; -} - -/** - * Resolve a syscall number to a name - * @param num the syscall number - * - * Resolve the given syscall number to the syscall name using the syscall table. - * Returns a pointer to the syscall name string on success, including pseudo - * syscall names; returns NULL on failure. - * - */ -const char *mips_syscall_resolve_num(int num) -{ - unsigned int iter; - const struct arch_syscall_def *table = mips_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].num != __NR_SCMP_ERROR; iter++) { - if (num == table[iter].num) - return table[iter].name; - } - - return NULL; -} - -/** - * Iterate through the syscall table and return the syscall mapping - * @param spot the offset into the syscall table - * - * Return the syscall mapping at position @spot or NULL on failure. This - * function should only ever be used internally by libseccomp. - * - */ -const struct arch_syscall_def *mips_syscall_iterate(unsigned int spot) -{ - /* XXX - no safety checks here */ - return &mips_syscall_table[spot]; -} diff --git a/src/arch-mips64-syscalls.c b/src/arch-mips64-syscalls.c deleted file mode 100644 index af23ff4..0000000 --- a/src/arch-mips64-syscalls.c +++ /dev/null @@ -1,562 +0,0 @@ -/** - * Enhanced Seccomp MIPS64 Specific Code - * - * Copyright (c) 2014 Red Hat <pmoore@redhat.com> - * Author: Paul Moore <paul@paul-moore.com> - * - */ - -/* - * This library is free software; you can redistribute it and/or modify it - * under the terms of version 2.1 of the GNU Lesser General Public License as - * published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, see <http://www.gnu.org/licenses>. - */ - -#include <string.h> - -#include <seccomp.h> - -#include "arch.h" -#include "arch-mips64.h" - -/* 64 ABI */ -#define __SCMP_NR_BASE 5000 - -/* NOTE: based on Linux v5.4-rc4 */ -const struct arch_syscall_def mips64_syscall_table[] = { \ - { "_llseek", __PNR__llseek }, - { "_newselect", (__SCMP_NR_BASE + 22) }, - { "_sysctl", (__SCMP_NR_BASE + 152) }, - { "accept", (__SCMP_NR_BASE + 42) }, - { "accept4", (__SCMP_NR_BASE + 293) }, - { "access", (__SCMP_NR_BASE + 20) }, - { "acct", (__SCMP_NR_BASE + 158) }, - { "add_key", (__SCMP_NR_BASE + 239) }, - { "adjtimex", (__SCMP_NR_BASE + 154) }, - { "afs_syscall", (__SCMP_NR_BASE + 176) }, - { "alarm", (__SCMP_NR_BASE + 37) }, - { "arm_fadvise64_64", __PNR_arm_fadvise64_64 }, - { "arm_sync_file_range", __PNR_arm_sync_file_range }, - { "arch_prctl", __PNR_arch_prctl }, - { "bdflush", __PNR_bdflush }, - { "bind", (__SCMP_NR_BASE + 48) }, - { "bpf", (__SCMP_NR_BASE + 315) }, - { "break", __PNR_break }, - { "breakpoint", __PNR_breakpoint }, - { "brk", (__SCMP_NR_BASE + 12) }, - { "cachectl", (__SCMP_NR_BASE + 198) }, - { "cacheflush", (__SCMP_NR_BASE + 197) }, - { "capget", (__SCMP_NR_BASE + 123) }, - { "capset", (__SCMP_NR_BASE + 124) }, - { "chdir", (__SCMP_NR_BASE + 78) }, - { "chmod", (__SCMP_NR_BASE + 88) }, - { "chown", (__SCMP_NR_BASE + 90) }, - { "chown32", __PNR_chown32 }, - { "chroot", (__SCMP_NR_BASE + 156) }, - { "clock_adjtime", (__SCMP_NR_BASE + 300) }, - { "clock_adjtime64", __PNR_clock_adjtime64 }, - { "clock_getres", (__SCMP_NR_BASE + 223) }, - { "clock_getres_time64", __PNR_clock_getres_time64 }, - { "clock_gettime", (__SCMP_NR_BASE + 222) }, - { "clock_gettime64", __PNR_clock_gettime64 }, - { "clock_nanosleep", (__SCMP_NR_BASE + 224) }, - { "clock_nanosleep_time64", __PNR_clock_nanosleep_time64 }, - { "clock_settime", (__SCMP_NR_BASE + 221) }, - { "clock_settime64", __PNR_clock_settime64 }, - { "clone", (__SCMP_NR_BASE + 55) }, - { "clone3", (__SCMP_NR_BASE + 435) }, - { "close", (__SCMP_NR_BASE + 3) }, - { "connect", (__SCMP_NR_BASE + 41) }, - { "copy_file_range", (__SCMP_NR_BASE + 320) }, - { "creat", (__SCMP_NR_BASE + 83) }, - { "create_module", (__SCMP_NR_BASE + 167) }, - { "delete_module", (__SCMP_NR_BASE + 169) }, - { "dup", (__SCMP_NR_BASE + 31) }, - { "dup2", (__SCMP_NR_BASE + 32) }, - { "dup3", (__SCMP_NR_BASE + 286) }, - { "epoll_create", (__SCMP_NR_BASE + 207) }, - { "epoll_create1", (__SCMP_NR_BASE + 285) }, - { "epoll_ctl", (__SCMP_NR_BASE + 208) }, - { "epoll_ctl_old", __PNR_epoll_ctl_old }, - { "epoll_pwait", (__SCMP_NR_BASE + 272) }, - { "epoll_wait", (__SCMP_NR_BASE + 209) }, - { "epoll_wait_old", __PNR_epoll_wait_old }, - { "eventfd", (__SCMP_NR_BASE + 278) }, - { "eventfd2", (__SCMP_NR_BASE + 284) }, - { "execve", (__SCMP_NR_BASE + 57) }, - { "execveat", (__SCMP_NR_BASE + 316) }, - { "exit", (__SCMP_NR_BASE + 58) }, - { "exit_group", (__SCMP_NR_BASE + 205) }, - { "faccessat", (__SCMP_NR_BASE + 259) }, - { "fadvise64", (__SCMP_NR_BASE + 215) }, - { "fadvise64_64", __PNR_fadvise64_64 }, - { "fallocate", (__SCMP_NR_BASE + 279) }, - { "fanotify_init", (__SCMP_NR_BASE + 295) }, - { "fanotify_mark", (__SCMP_NR_BASE + 296) }, - { "fchdir", (__SCMP_NR_BASE + 79) }, - { "fchmod", (__SCMP_NR_BASE + 89) }, - { "fchmodat", (__SCMP_NR_BASE + 258) }, - { "fchown", (__SCMP_NR_BASE + 91) }, - { "fchown32", __PNR_fchown32 }, - { "fchownat", (__SCMP_NR_BASE + 250) }, - { "fcntl", (__SCMP_NR_BASE + 70) }, - { "fcntl64", __PNR_fcntl64 }, - { "fdatasync", (__SCMP_NR_BASE + 73) }, - { "fgetxattr", (__SCMP_NR_BASE + 185) }, - { "finit_module", (__SCMP_NR_BASE + 307) }, - { "flistxattr", (__SCMP_NR_BASE + 188) }, - { "flock", (__SCMP_NR_BASE + 71) }, - { "fork", (__SCMP_NR_BASE + 56) }, - { "fremovexattr", (__SCMP_NR_BASE + 191) }, - { "fsconfig", (__SCMP_NR_BASE + 431) }, - { "fsetxattr", (__SCMP_NR_BASE + 182) }, - { "fsmount", (__SCMP_NR_BASE + 432) }, - { "fsopen", (__SCMP_NR_BASE + 430) }, - { "fspick", (__SCMP_NR_BASE + 433) }, - { "fstat", (__SCMP_NR_BASE + 5) }, - { "fstat64", __PNR_fstat64 }, - { "fstatat64", __PNR_fstat64 }, - { "fstatfs", (__SCMP_NR_BASE + 135) }, - { "fstatfs64", __PNR_fstatfs64 }, - { "fsync", (__SCMP_NR_BASE + 72) }, - { "ftime", __PNR_ftime }, - { "ftruncate", (__SCMP_NR_BASE + 75) }, - { "ftruncate64", __PNR_ftruncate64 }, - { "futex", (__SCMP_NR_BASE + 194) }, - { "futex_time64", __PNR_futex_time64 }, - { "futimesat", (__SCMP_NR_BASE + 251) }, - { "get_kernel_syms", (__SCMP_NR_BASE + 170) }, - { "get_mempolicy", (__SCMP_NR_BASE + 228) }, - { "get_robust_list", (__SCMP_NR_BASE + 269) }, - { "get_thread_area", __PNR_get_thread_area }, - { "get_tls", __PNR_get_tls }, - { "getcpu", (__SCMP_NR_BASE + 271) }, - { "getcwd", (__SCMP_NR_BASE + 77) }, - { "getdents", (__SCMP_NR_BASE + 76) }, - { "getdents64", (__SCMP_NR_BASE + 308) }, - { "getegid", (__SCMP_NR_BASE + 106) }, - { "getegid32", __PNR_getegid32 }, - { "geteuid", (__SCMP_NR_BASE + 105) }, - { "geteuid32", __PNR_geteuid32 }, - { "getgid", (__SCMP_NR_BASE + 102) }, - { "getgid32", __PNR_getgid32 }, - { "getgroups", (__SCMP_NR_BASE + 113) }, - { "getgroups32", __PNR_getgroups32 }, - { "getitimer", (__SCMP_NR_BASE + 35) }, - { "getpeername", (__SCMP_NR_BASE + 51) }, - { "getpgid", (__SCMP_NR_BASE + 119) }, - { "getpgrp", (__SCMP_NR_BASE + 109) }, - { "getpid", (__SCMP_NR_BASE + 38) }, - { "getpmsg", (__SCMP_NR_BASE + 174) }, - { "getppid", (__SCMP_NR_BASE + 108) }, - { "getpriority", (__SCMP_NR_BASE + 137) }, - { "getrandom", (__SCMP_NR_BASE + 313) }, - { "getresgid", (__SCMP_NR_BASE + 118) }, - { "getresgid32", __PNR_getresgid32 }, - { "getresuid", (__SCMP_NR_BASE + 116) }, - { "getresuid32", __PNR_getresuid32 }, - { "getrlimit", (__SCMP_NR_BASE + 95) }, - { "getrusage", (__SCMP_NR_BASE + 96) }, - { "getsid", (__SCMP_NR_BASE + 122) }, - { "getsockname", (__SCMP_NR_BASE + 50) }, - { "getsockopt", (__SCMP_NR_BASE + 54) }, - { "gettid", (__SCMP_NR_BASE + 178) }, - { "gettimeofday", (__SCMP_NR_BASE + 94) }, - { "getuid", (__SCMP_NR_BASE + 100) }, - { "getuid32", __PNR_getuid32 }, - { "getxattr", (__SCMP_NR_BASE + 183) }, - { "gtty", __PNR_gtty }, - { "idle", __PNR_idle }, - { "init_module", (__SCMP_NR_BASE + 168) }, - { "inotify_add_watch", (__SCMP_NR_BASE + 244) }, - { "inotify_init", (__SCMP_NR_BASE + 243) }, - { "inotify_init1", (__SCMP_NR_BASE + 288) }, - { "inotify_rm_watch", (__SCMP_NR_BASE + 245) }, - { "io_cancel", (__SCMP_NR_BASE + 204) }, - { "io_destroy", (__SCMP_NR_BASE + 201) }, - { "io_getevents", (__SCMP_NR_BASE + 202) }, - { "io_pgetevents", (__SCMP_NR_BASE + 328) }, - { "io_pgetevents_time64", __PNR_io_pgetevents_time64 }, - { "io_setup", (__SCMP_NR_BASE + 200) }, - { "io_submit", (__SCMP_NR_BASE + 203) }, - { "io_uring_setup", (__SCMP_NR_BASE + 425) }, - { "io_uring_enter", (__SCMP_NR_BASE + 426) }, - { "io_uring_register", (__SCMP_NR_BASE + 427) }, - { "ioctl", (__SCMP_NR_BASE + 15) }, - { "ioperm", __PNR_ioperm }, - { "iopl", __PNR_iopl }, - { "ioprio_get", (__SCMP_NR_BASE + 274) }, - { "ioprio_set", (__SCMP_NR_BASE + 273) }, - { "ipc", __PNR_ipc }, - { "kcmp", (__SCMP_NR_BASE + 306) }, - { "kexec_file_load", __PNR_kexec_file_load }, - { "kexec_load", (__SCMP_NR_BASE + 270) }, - { "keyctl", (__SCMP_NR_BASE + 241) }, - { "kill", (__SCMP_NR_BASE + 60) }, - { "lchown", (__SCMP_NR_BASE + 92) }, - { "lchown32", __PNR_lchown32 }, - { "lgetxattr", (__SCMP_NR_BASE + 184) }, - { "link", (__SCMP_NR_BASE + 84) }, - { "linkat", (__SCMP_NR_BASE + 255) }, - { "listen", (__SCMP_NR_BASE + 49) }, - { "listxattr", (__SCMP_NR_BASE + 186) }, - { "llistxattr", (__SCMP_NR_BASE + 187) }, - { "lock", __PNR_lock }, - { "lookup_dcookie", (__SCMP_NR_BASE + 206) }, - { "lremovexattr", (__SCMP_NR_BASE + 190) }, - { "lseek", (__SCMP_NR_BASE + 8) }, - { "lsetxattr", (__SCMP_NR_BASE + 181) }, - { "lstat", (__SCMP_NR_BASE + 6) }, - { "lstat64", __PNR_lstat64 }, - { "madvise", (__SCMP_NR_BASE + 27) }, - { "mbind", (__SCMP_NR_BASE + 227) }, - { "membarrier", (__SCMP_NR_BASE + 318) }, - { "memfd_create", (__SCMP_NR_BASE + 314) }, - { "migrate_pages", (__SCMP_NR_BASE + 246) }, - { "mincore", (__SCMP_NR_BASE + 26) }, - { "mkdir", (__SCMP_NR_BASE + 81) }, - { "mkdirat", (__SCMP_NR_BASE + 248) }, - { "mknod", (__SCMP_NR_BASE + 131) }, - { "mknodat", (__SCMP_NR_BASE + 249) }, - { "mlock", (__SCMP_NR_BASE + 146) }, - { "mlock2", (__SCMP_NR_BASE + 319) }, - { "mlockall", (__SCMP_NR_BASE + 148) }, - { "mmap", (__SCMP_NR_BASE + 9) }, - { "mmap2", __PNR_mmap2 }, - { "modify_ldt", __PNR_modify_ldt }, - { "mount", (__SCMP_NR_BASE + 160) }, - { "move_mount", (__SCMP_NR_BASE + 429) }, - { "move_pages", (__SCMP_NR_BASE + 267) }, - { "mprotect", (__SCMP_NR_BASE + 10) }, - { "mpx", __PNR_mpx }, - { "mq_getsetattr", (__SCMP_NR_BASE + 235) }, - { "mq_notify", (__SCMP_NR_BASE + 234) }, - { "mq_open", (__SCMP_NR_BASE + 230) }, - { "mq_timedreceive", (__SCMP_NR_BASE + 233) }, - { "mq_timedreceive_time64", __PNR_mq_timedreceive_time64 }, - { "mq_timedsend", (__SCMP_NR_BASE + 232) }, - { "mq_timedsend_time64", __PNR_mq_timedsend_time64 }, - { "mq_unlink", (__SCMP_NR_BASE + 231) }, - { "mremap", (__SCMP_NR_BASE + 24) }, - { "msgctl", (__SCMP_NR_BASE + 69) }, - { "msgget", (__SCMP_NR_BASE + 66) }, - { "msgrcv", (__SCMP_NR_BASE + 68) }, - { "msgsnd", (__SCMP_NR_BASE + 67) }, - { "msync", (__SCMP_NR_BASE + 25) }, - { "multiplexer", __PNR_multiplexer }, - { "munlock", (__SCMP_NR_BASE + 147) }, - { "munlockall", (__SCMP_NR_BASE + 149) }, - { "munmap", (__SCMP_NR_BASE + 11) }, - { "name_to_handle_at", (__SCMP_NR_BASE + 298) }, - { "nanosleep", (__SCMP_NR_BASE + 34) }, - { "newfstatat", (__SCMP_NR_BASE + 252) }, - { "nfsservctl", (__SCMP_NR_BASE + 173) }, - { "nice", __PNR_nice }, - { "oldfstat", __PNR_oldfstat }, - { "oldlstat", __PNR_oldlstat }, - { "oldolduname", __PNR_oldolduname }, - { "oldstat", __PNR_oldstat }, - { "olduname", __PNR_olduname }, - { "oldwait4", __PNR_oldwait4 }, - { "open", (__SCMP_NR_BASE + 2) }, - { "open_by_handle_at", (__SCMP_NR_BASE + 299) }, - { "open_tree", (__SCMP_NR_BASE + 428) }, - { "openat", (__SCMP_NR_BASE + 247) }, - { "pause", (__SCMP_NR_BASE + 33) }, - { "pciconfig_iobase", __PNR_pciconfig_iobase }, - { "pciconfig_read", __PNR_pciconfig_read }, - { "pciconfig_write", __PNR_pciconfig_write }, - { "perf_event_open", (__SCMP_NR_BASE + 292) }, - { "personality", (__SCMP_NR_BASE + 132) }, - { "pidfd_open", (__SCMP_NR_BASE + 434) }, - { "pidfd_send_signal", (__SCMP_NR_BASE + 424) }, - { "pipe", (__SCMP_NR_BASE + 21) }, - { "pipe2", (__SCMP_NR_BASE + 287) }, - { "pivot_root", (__SCMP_NR_BASE + 151) }, - { "pkey_alloc", (__SCMP_NR_BASE + 324) }, - { "pkey_free", (__SCMP_NR_BASE + 325) }, - { "pkey_mprotect", (__SCMP_NR_BASE + 323) }, - { "poll", (__SCMP_NR_BASE + 7) }, - { "ppoll", (__SCMP_NR_BASE + 261) }, - { "ppoll_time64", __PNR_ppoll_time64 }, - { "prctl", (__SCMP_NR_BASE + 153) }, - { "pread64", (__SCMP_NR_BASE + 16) }, - { "preadv", (__SCMP_NR_BASE + 289) }, - { "preadv2", (__SCMP_NR_BASE + 321) }, - { "prlimit64", (__SCMP_NR_BASE + 297) }, - { "process_vm_readv", (__SCMP_NR_BASE + 304) }, - { "process_vm_writev", (__SCMP_NR_BASE + 305) }, - { "prof", __PNR_prof }, - { "profil", __PNR_profil }, - { "pselect6", (__SCMP_NR_BASE + 260) }, - { "pselect6_time64", __PNR_pselect6_time64 }, - { "ptrace", (__SCMP_NR_BASE + 99) }, - { "putpmsg", (__SCMP_NR_BASE + 175) }, - { "pwrite64", (__SCMP_NR_BASE + 17) }, - { "pwritev", (__SCMP_NR_BASE + 290) }, - { "pwritev2", (__SCMP_NR_BASE + 322) }, - { "query_module", (__SCMP_NR_BASE + 171) }, - { "quotactl", (__SCMP_NR_BASE + 172) }, - { "read", (__SCMP_NR_BASE + 0) }, - { "readahead", (__SCMP_NR_BASE + 179) }, - { "readdir", __PNR_readdir }, - { "readlink", (__SCMP_NR_BASE + 87) }, - { "readlinkat", (__SCMP_NR_BASE + 257) }, - { "readv", (__SCMP_NR_BASE + 18) }, - { "reboot", (__SCMP_NR_BASE + 164) }, - { "recv", __PNR_recv }, - { "recvfrom", (__SCMP_NR_BASE + 44) }, - { "recvmmsg", (__SCMP_NR_BASE + 294) }, - { "recvmmsg_time64", __PNR_recvmmsg_time64 }, - { "recvmsg", (__SCMP_NR_BASE + 46) }, - { "remap_file_pages", (__SCMP_NR_BASE + 210) }, - { "removexattr", (__SCMP_NR_BASE + 189) }, - { "rename", (__SCMP_NR_BASE + 80) }, - { "renameat", (__SCMP_NR_BASE + 254) }, - { "renameat2", (__SCMP_NR_BASE + 311) }, - { "request_key", (__SCMP_NR_BASE + 240) }, - { "restart_syscall", (__SCMP_NR_BASE + 213) }, - { "rmdir", (__SCMP_NR_BASE + 82) }, - { "rseq", (__SCMP_NR_BASE + 327) }, - { "rt_sigaction", (__SCMP_NR_BASE + 13) }, - { "rt_sigpending", (__SCMP_NR_BASE + 125) }, - { "rt_sigprocmask", (__SCMP_NR_BASE + 14) }, - { "rt_sigqueueinfo", (__SCMP_NR_BASE + 127) }, - { "rt_sigreturn", (__SCMP_NR_BASE + 211) }, - { "rt_sigsuspend", (__SCMP_NR_BASE + 128) }, - { "rt_sigtimedwait", (__SCMP_NR_BASE + 126) }, - { "rt_sigtimedwait_time64", __PNR_rt_sigtimedwait_time64 }, - { "rt_tgsigqueueinfo", (__SCMP_NR_BASE + 291) }, - { "rtas", __PNR_rtas }, - { "s390_guarded_storage", __PNR_s390_guarded_storage }, - { "s390_pci_mmio_read", __PNR_s390_pci_mmio_read }, - { "s390_pci_mmio_write", __PNR_s390_pci_mmio_write }, - { "s390_runtime_instr", __PNR_s390_runtime_instr }, - { "s390_sthyi", __PNR_s390_sthyi }, - { "sched_get_priority_max", (__SCMP_NR_BASE + 143) }, - { "sched_get_priority_min", (__SCMP_NR_BASE + 144) }, - { "sched_getaffinity", (__SCMP_NR_BASE + 196) }, - { "sched_getattr", (__SCMP_NR_BASE + 310) }, - { "sched_getparam", (__SCMP_NR_BASE + 140) }, - { "sched_getscheduler", (__SCMP_NR_BASE + 142) }, - { "sched_rr_get_interval", (__SCMP_NR_BASE + 145) }, - { "sched_rr_get_interval_time64", __PNR_sched_rr_get_interval_time64 }, - { "sched_setaffinity", (__SCMP_NR_BASE + 195) }, - { "sched_setattr", (__SCMP_NR_BASE + 309) }, - { "sched_setparam", (__SCMP_NR_BASE + 139) }, - { "sched_setscheduler", (__SCMP_NR_BASE + 141) }, - { "sched_yield", (__SCMP_NR_BASE + 23) }, - { "seccomp", (__SCMP_NR_BASE + 312) }, - { "security", __PNR_security }, - { "select", __PNR_select }, - { "semctl", (__SCMP_NR_BASE + 64) }, - { "semget", (__SCMP_NR_BASE + 62) }, - { "semop", (__SCMP_NR_BASE + 63) }, - { "semtimedop", (__SCMP_NR_BASE + 214) }, - { "semtimedop_time64", __PNR_semtimedop_time64 }, - { "send", __PNR_send }, - { "sendfile", (__SCMP_NR_BASE + 39) }, - { "sendfile64", __PNR_sendfile64 }, - { "sendmmsg", (__SCMP_NR_BASE + 302) }, - { "sendmsg", (__SCMP_NR_BASE + 45) }, - { "sendto", (__SCMP_NR_BASE + 43) }, - { "set_mempolicy", (__SCMP_NR_BASE + 229) }, - { "set_robust_list", (__SCMP_NR_BASE + 268) }, - { "set_thread_area", (__SCMP_NR_BASE + 242) }, - { "set_tid_address", (__SCMP_NR_BASE + 212) }, - { "set_tls", __PNR_set_tls }, - { "setdomainname", (__SCMP_NR_BASE + 166) }, - { "setfsgid", (__SCMP_NR_BASE + 121) }, - { "setfsgid32", __PNR_setfsgid32 }, - { "setfsuid", (__SCMP_NR_BASE + 120) }, - { "setfsuid32", __PNR_setfsuid32 }, - { "setgid", (__SCMP_NR_BASE + 104) }, - { "setgid32", __PNR_setgid32 }, - { "setgroups", (__SCMP_NR_BASE + 114) }, - { "setgroups32", __PNR_setgroups32 }, - { "sethostname", (__SCMP_NR_BASE + 165) }, - { "setitimer", (__SCMP_NR_BASE + 36) }, - { "setns", (__SCMP_NR_BASE + 303) }, - { "setpgid", (__SCMP_NR_BASE + 107) }, - { "setpriority", (__SCMP_NR_BASE + 138) }, - { "setregid", (__SCMP_NR_BASE + 112) }, - { "setregid32", __PNR_setregid32 }, - { "setresgid", (__SCMP_NR_BASE + 117) }, - { "setresgid32", __PNR_setresgid32 }, - { "setresuid", (__SCMP_NR_BASE + 115) }, - { "setresuid32", __PNR_setresuid32 }, - { "setreuid", (__SCMP_NR_BASE + 111) }, - { "setreuid32", __PNR_setreuid32 }, - { "setrlimit", (__SCMP_NR_BASE + 155) }, - { "setsid", (__SCMP_NR_BASE + 110) }, - { "setsockopt", (__SCMP_NR_BASE + 53) }, - { "settimeofday", (__SCMP_NR_BASE + 159) }, - { "setuid", (__SCMP_NR_BASE + 103) }, - { "setuid32", __PNR_setuid32 }, - { "setxattr", (__SCMP_NR_BASE + 180) }, - { "sgetmask", __PNR_sgetmask }, - { "shmat", (__SCMP_NR_BASE + 29) }, - { "shmctl", (__SCMP_NR_BASE + 30) }, - { "shmdt", (__SCMP_NR_BASE + 65) }, - { "shmget", (__SCMP_NR_BASE + 28) }, - { "shutdown", (__SCMP_NR_BASE + 47) }, - { "sigaction", __PNR_sigaction }, - { "sigaltstack", (__SCMP_NR_BASE + 129) }, - { "signal", __PNR_signal }, - { "signalfd", (__SCMP_NR_BASE + 276) }, - { "signalfd4", (__SCMP_NR_BASE + 283) }, - { "sigpending", __PNR_sigpending }, - { "sigprocmask", __PNR_sigprocmask }, - { "sigreturn", __PNR_sigreturn }, - { "sigsuspend", __PNR_sigsuspend }, - { "socket", (__SCMP_NR_BASE + 40) }, - { "socketcall", __PNR_socketcall }, - { "socketpair", (__SCMP_NR_BASE + 52) }, - { "splice", (__SCMP_NR_BASE + 263) }, - { "spu_create", __PNR_spu_create }, - { "spu_run", __PNR_spu_run }, - { "ssetmask", __PNR_ssetmask }, - { "stat", (__SCMP_NR_BASE + 4) }, - { "stat64", __PNR_stat64 }, - { "statfs", (__SCMP_NR_BASE + 134) }, - { "statfs64", __PNR_statfs64 }, - { "statx", (__SCMP_NR_BASE + 326) }, - { "stime", __PNR_stime }, - { "stty", __PNR_stty }, - { "subpage_prot", __PNR_subpage_prot }, - { "swapcontext", __PNR_swapcontext }, - { "swapoff", (__SCMP_NR_BASE + 163) }, - { "swapon", (__SCMP_NR_BASE + 162) }, - { "switch_endian", __PNR_switch_endian }, - { "symlink", (__SCMP_NR_BASE + 86) }, - { "symlinkat", (__SCMP_NR_BASE + 256) }, - { "sync", (__SCMP_NR_BASE + 157) }, - { "sync_file_range", (__SCMP_NR_BASE + 264) }, - { "sync_file_range2", __PNR_sync_file_range2 }, - { "syncfs", (__SCMP_NR_BASE + 301) }, - { "syscall", __PNR_syscall }, - { "sys_debug_setcontext", __PNR_sys_debug_setcontext }, - { "sysfs", (__SCMP_NR_BASE + 136) }, - { "sysinfo", (__SCMP_NR_BASE + 97) }, - { "syslog", (__SCMP_NR_BASE + 101) }, - { "sysmips", (__SCMP_NR_BASE + 199) }, - { "tee", (__SCMP_NR_BASE + 265) }, - { "tgkill", (__SCMP_NR_BASE + 225) }, - { "time", __PNR_time }, - { "timer_create", (__SCMP_NR_BASE + 216) }, - { "timer_delete", (__SCMP_NR_BASE + 220) }, - { "timer_getoverrun", (__SCMP_NR_BASE + 219) }, - { "timer_gettime", (__SCMP_NR_BASE + 218) }, - { "timer_gettime64", __PNR_timer_gettime64 }, - { "timer_settime", (__SCMP_NR_BASE + 217) }, - { "timer_settime64", __PNR_timer_settime64 }, - { "timerfd", (__SCMP_NR_BASE + 277) }, - { "timerfd_create", (__SCMP_NR_BASE + 280) }, - { "timerfd_gettime", (__SCMP_NR_BASE + 281) }, - { "timerfd_gettime64", __PNR_timerfd_gettime64 }, - { "timerfd_settime", (__SCMP_NR_BASE + 282) }, - { "timerfd_settime64", __PNR_timerfd_settime64 }, - { "times", (__SCMP_NR_BASE + 98) }, - { "tkill", (__SCMP_NR_BASE + 192) }, - { "truncate", (__SCMP_NR_BASE + 74) }, - { "truncate64", __PNR_truncate64 }, - { "tuxcall", __PNR_tuxcall }, - { "ugetrlimit", __PNR_ugetrlimit }, - { "ulimit", __PNR_ulimit }, - { "umask", (__SCMP_NR_BASE + 93) }, - { "umount", __PNR_umount }, - { "umount2", (__SCMP_NR_BASE + 161) }, - { "uname", (__SCMP_NR_BASE + 61) }, - { "unlink", (__SCMP_NR_BASE + 85) }, - { "unlinkat", (__SCMP_NR_BASE + 253) }, - { "unshare", (__SCMP_NR_BASE + 262) }, - { "uselib", __PNR_uselib }, - { "userfaultfd", (__SCMP_NR_BASE + 317) }, - { "usr26", __PNR_usr26 }, - { "usr32", __PNR_usr32 }, - { "ustat", (__SCMP_NR_BASE + 133) }, - { "utime", (__SCMP_NR_BASE + 130) }, - { "utimensat", (__SCMP_NR_BASE + 275) }, - { "utimensat_time64", __PNR_utimensat_time64 }, - { "utimes", (__SCMP_NR_BASE + 226) }, - { "vfork", __PNR_vfork }, - { "vhangup", (__SCMP_NR_BASE + 150) }, - { "vm86", __PNR_vm86 }, - { "vm86old", __PNR_vm86old }, - { "vmsplice", (__SCMP_NR_BASE + 266) }, - { "vserver", (__SCMP_NR_BASE + 236) }, - { "wait4", (__SCMP_NR_BASE + 59) }, - { "waitid", (__SCMP_NR_BASE + 237) }, - { "waitpid", __PNR_waitpid }, - { "write", (__SCMP_NR_BASE + 1) }, - { "writev", (__SCMP_NR_BASE + 19) }, - { NULL, __NR_SCMP_ERROR }, -}; - -/** - * Resolve a syscall name to a number - * @param name the syscall name - * - * Resolve the given syscall name to the syscall number using the syscall table. - * Returns the syscall number on success, including negative pseudo syscall - * numbers; returns __NR_SCMP_ERROR on failure. - * - */ -int mips64_syscall_resolve_name(const char *name) -{ - unsigned int iter; - const struct arch_syscall_def *table = mips64_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].name != NULL; iter++) { - if (strcmp(name, table[iter].name) == 0) - return table[iter].num; - } - - return __NR_SCMP_ERROR; -} - -/** - * Resolve a syscall number to a name - * @param num the syscall number - * - * Resolve the given syscall number to the syscall name using the syscall table. - * Returns a pointer to the syscall name string on success, including pseudo - * syscall names; returns NULL on failure. - * - */ -const char *mips64_syscall_resolve_num(int num) -{ - unsigned int iter; - const struct arch_syscall_def *table = mips64_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].num != __NR_SCMP_ERROR; iter++) { - if (num == table[iter].num) - return table[iter].name; - } - - return NULL; -} - -/** - * Iterate through the syscall table and return the syscall mapping - * @param spot the offset into the syscall table - * - * Return the syscall mapping at position @spot or NULL on failure. This - * function should only ever be used internally by libseccomp. - * - */ -const struct arch_syscall_def *mips64_syscall_iterate(unsigned int spot) -{ - /* XXX - no safety checks here */ - return &mips64_syscall_table[spot]; -} diff --git a/src/arch-mips64n32-syscalls.c b/src/arch-mips64n32-syscalls.c deleted file mode 100644 index 2159bcc..0000000 --- a/src/arch-mips64n32-syscalls.c +++ /dev/null @@ -1,562 +0,0 @@ -/** - * Enhanced Seccomp MIPS Specific Code - * - * Copyright (c) 2014 Red Hat <pmoore@redhat.com> - * Author: Paul Moore <paul@paul-moore.com> - * - */ - -/* - * This library is free software; you can redistribute it and/or modify it - * under the terms of version 2.1 of the GNU Lesser General Public License as - * published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, see <http://www.gnu.org/licenses>. - */ - -#include <string.h> - -#include <seccomp.h> - -#include "arch.h" -#include "arch-mips64n32.h" - -/* N32 ABI */ -#define __SCMP_NR_BASE 6000 - -/* NOTE: based on Linux v5.4-rc4 */ -const struct arch_syscall_def mips64n32_syscall_table[] = { \ - { "_llseek", __PNR__llseek }, - { "_newselect", (__SCMP_NR_BASE + 22) }, - { "_sysctl", (__SCMP_NR_BASE + 152) }, - { "accept", (__SCMP_NR_BASE + 42) }, - { "accept4", (__SCMP_NR_BASE + 297) }, - { "access", (__SCMP_NR_BASE + 20) }, - { "acct", (__SCMP_NR_BASE + 158) }, - { "add_key", (__SCMP_NR_BASE + 243) }, - { "adjtimex", (__SCMP_NR_BASE + 154) }, - { "afs_syscall", (__SCMP_NR_BASE + 176) }, - { "alarm", (__SCMP_NR_BASE + 37) }, - { "arm_fadvise64_64", __PNR_arm_fadvise64_64 }, - { "arm_sync_file_range", __PNR_arm_sync_file_range }, - { "arch_prctl", __PNR_arch_prctl }, - { "bdflush", __PNR_bdflush }, - { "bind", (__SCMP_NR_BASE + 48) }, - { "bpf", (__SCMP_NR_BASE + 319) }, - { "break", __PNR_break }, - { "breakpoint", __PNR_breakpoint }, - { "brk", (__SCMP_NR_BASE + 12) }, - { "cachectl", (__SCMP_NR_BASE + 198) }, - { "cacheflush", (__SCMP_NR_BASE + 197) }, - { "capget", (__SCMP_NR_BASE + 123) }, - { "capset", (__SCMP_NR_BASE + 124) }, - { "chdir", (__SCMP_NR_BASE + 78) }, - { "chmod", (__SCMP_NR_BASE + 88) }, - { "chown", (__SCMP_NR_BASE + 90) }, - { "chown32", __PNR_chown32 }, - { "chroot", (__SCMP_NR_BASE + 156) }, - { "clock_adjtime", (__SCMP_NR_BASE + 305) }, - { "clock_adjtime64", (__SCMP_NR_BASE + 405) }, - { "clock_getres", (__SCMP_NR_BASE + 227) }, - { "clock_getres_time64", (__SCMP_NR_BASE + 406) }, - { "clock_gettime", (__SCMP_NR_BASE + 226) }, - { "clock_gettime64", (__SCMP_NR_BASE + 403) }, - { "clock_nanosleep", (__SCMP_NR_BASE + 228) }, - { "clock_nanosleep_time64", (__SCMP_NR_BASE + 407) }, - { "clock_settime", (__SCMP_NR_BASE + 225) }, - { "clock_settime64", (__SCMP_NR_BASE + 404) }, - { "clone", (__SCMP_NR_BASE + 55) }, - { "clone3", (__SCMP_NR_BASE + 435) }, - { "close", (__SCMP_NR_BASE + 3) }, - { "connect", (__SCMP_NR_BASE + 41) }, - { "copy_file_range", (__SCMP_NR_BASE + 324) }, - { "creat", (__SCMP_NR_BASE + 83) }, - { "create_module", (__SCMP_NR_BASE + 167) }, - { "delete_module", (__SCMP_NR_BASE + 169) }, - { "dup", (__SCMP_NR_BASE + 31) }, - { "dup2", (__SCMP_NR_BASE + 32) }, - { "dup3", (__SCMP_NR_BASE + 290) }, - { "epoll_create", (__SCMP_NR_BASE + 207) }, - { "epoll_create1", (__SCMP_NR_BASE + 289) }, - { "epoll_ctl", (__SCMP_NR_BASE + 208) }, - { "epoll_ctl_old", __PNR_epoll_ctl_old }, - { "epoll_pwait", (__SCMP_NR_BASE + 276) }, - { "epoll_wait", (__SCMP_NR_BASE + 209) }, - { "epoll_wait_old", __PNR_epoll_wait_old }, - { "eventfd", (__SCMP_NR_BASE + 282) }, - { "eventfd2", (__SCMP_NR_BASE + 288) }, - { "execve", (__SCMP_NR_BASE + 57) }, - { "execveat", (__SCMP_NR_BASE + 320) }, - { "exit", (__SCMP_NR_BASE + 58) }, - { "exit_group", (__SCMP_NR_BASE + 205) }, - { "faccessat", (__SCMP_NR_BASE + 263) }, - { "fadvise64", (__SCMP_NR_BASE + 216) }, - { "fadvise64_64", __PNR_fadvise64_64 }, - { "fallocate", (__SCMP_NR_BASE + 283) }, - { "fanotify_init", (__SCMP_NR_BASE + 300) }, - { "fanotify_mark", (__SCMP_NR_BASE + 301) }, - { "fchdir", (__SCMP_NR_BASE + 79) }, - { "fchmod", (__SCMP_NR_BASE + 89) }, - { "fchmodat", (__SCMP_NR_BASE + 262) }, - { "fchown", (__SCMP_NR_BASE + 91) }, - { "fchown32", __PNR_fchown32 }, - { "fchownat", (__SCMP_NR_BASE + 254) }, - { "fcntl", (__SCMP_NR_BASE + 70) }, - { "fcntl64", (__SCMP_NR_BASE + 212) }, - { "fdatasync", (__SCMP_NR_BASE + 73) }, - { "fgetxattr", (__SCMP_NR_BASE + 185) }, - { "finit_module", (__SCMP_NR_BASE + 312) }, - { "flistxattr", (__SCMP_NR_BASE + 188) }, - { "flock", (__SCMP_NR_BASE + 71) }, - { "fork", (__SCMP_NR_BASE + 56) }, - { "fremovexattr", (__SCMP_NR_BASE + 191) }, - { "fsconfig", (__SCMP_NR_BASE + 431) }, - { "fsetxattr", (__SCMP_NR_BASE + 182) }, - { "fsmount", (__SCMP_NR_BASE + 432) }, - { "fsopen", (__SCMP_NR_BASE + 430) }, - { "fspick", (__SCMP_NR_BASE + 433) }, - { "fstat", (__SCMP_NR_BASE + 5) }, - { "fstat64", __PNR_fstat64 }, - { "fstatat64", __PNR_fstat64 }, - { "fstatfs", (__SCMP_NR_BASE + 135) }, - { "fstatfs64", (__SCMP_NR_BASE + 218) }, - { "fsync", (__SCMP_NR_BASE + 72) }, - { "ftime", __PNR_ftime }, - { "ftruncate", (__SCMP_NR_BASE + 75) }, - { "ftruncate64", __PNR_ftruncate64 }, - { "futex", (__SCMP_NR_BASE + 194) }, - { "futex_time64", (__SCMP_NR_BASE + 422) }, - { "futimesat", (__SCMP_NR_BASE + 255) }, - { "get_kernel_syms", (__SCMP_NR_BASE + 170) }, - { "get_mempolicy", (__SCMP_NR_BASE + 232) }, - { "get_robust_list", (__SCMP_NR_BASE + 273) }, - { "get_thread_area", __PNR_get_thread_area }, - { "get_tls", __PNR_get_tls }, - { "getcpu", (__SCMP_NR_BASE + 275) }, - { "getcwd", (__SCMP_NR_BASE + 77) }, - { "getdents", (__SCMP_NR_BASE + 76) }, - { "getdents64", (__SCMP_NR_BASE + 299) }, - { "getegid", (__SCMP_NR_BASE + 106) }, - { "getegid32", __PNR_getegid32 }, - { "geteuid", (__SCMP_NR_BASE + 105) }, - { "geteuid32", __PNR_geteuid32 }, - { "getgid", (__SCMP_NR_BASE + 102) }, - { "getgid32", __PNR_getgid32 }, - { "getgroups", (__SCMP_NR_BASE + 113) }, - { "getgroups32", __PNR_getgroups32 }, - { "getitimer", (__SCMP_NR_BASE + 35) }, - { "getpeername", (__SCMP_NR_BASE + 51) }, - { "getpgid", (__SCMP_NR_BASE + 119) }, - { "getpgrp", (__SCMP_NR_BASE + 109) }, - { "getpid", (__SCMP_NR_BASE + 38) }, - { "getpmsg", (__SCMP_NR_BASE + 174) }, - { "getppid", (__SCMP_NR_BASE + 108) }, - { "getpriority", (__SCMP_NR_BASE + 137) }, - { "getrandom", (__SCMP_NR_BASE + 317) }, - { "getresgid", (__SCMP_NR_BASE + 118) }, - { "getresgid32", __PNR_getresgid32 }, - { "getresuid", (__SCMP_NR_BASE + 116) }, - { "getresuid32", __PNR_getresuid32 }, - { "getrlimit", (__SCMP_NR_BASE + 95) }, - { "getrusage", (__SCMP_NR_BASE + 96) }, - { "getsid", (__SCMP_NR_BASE + 122) }, - { "getsockname", (__SCMP_NR_BASE + 50) }, - { "getsockopt", (__SCMP_NR_BASE + 54) }, - { "gettid", (__SCMP_NR_BASE + 178) }, - { "gettimeofday", (__SCMP_NR_BASE + 94) }, - { "getuid", (__SCMP_NR_BASE + 100) }, - { "getuid32", __PNR_getuid32 }, - { "getxattr", (__SCMP_NR_BASE + 183) }, - { "gtty", __PNR_gtty }, - { "idle", __PNR_idle }, - { "init_module", (__SCMP_NR_BASE + 168) }, - { "inotify_add_watch", (__SCMP_NR_BASE + 248) }, - { "inotify_init", (__SCMP_NR_BASE + 247) }, - { "inotify_init1", (__SCMP_NR_BASE + 292) }, - { "inotify_rm_watch", (__SCMP_NR_BASE + 249) }, - { "io_cancel", (__SCMP_NR_BASE + 204) }, - { "io_destroy", (__SCMP_NR_BASE + 201) }, - { "io_getevents", (__SCMP_NR_BASE + 202) }, - { "io_pgetevents", (__SCMP_NR_BASE + 332) }, - { "io_pgetevents_time64", (__SCMP_NR_BASE + 416) }, - { "io_setup", (__SCMP_NR_BASE + 200) }, - { "io_submit", (__SCMP_NR_BASE + 203) }, - { "io_uring_setup", (__SCMP_NR_BASE + 425) }, - { "io_uring_enter", (__SCMP_NR_BASE + 426) }, - { "io_uring_register", (__SCMP_NR_BASE + 427) }, - { "ioctl", (__SCMP_NR_BASE + 15) }, - { "ioperm", __PNR_ioperm }, - { "iopl", __PNR_iopl }, - { "ioprio_get", (__SCMP_NR_BASE + 278) }, - { "ioprio_set", (__SCMP_NR_BASE + 277) }, - { "ipc", __PNR_ipc }, - { "kcmp", (__SCMP_NR_BASE + 311) }, - { "kexec_file_load", __PNR_kexec_file_load }, - { "kexec_load", (__SCMP_NR_BASE + 274) }, - { "keyctl", (__SCMP_NR_BASE + 245) }, - { "kill", (__SCMP_NR_BASE + 60) }, - { "lchown", (__SCMP_NR_BASE + 92) }, - { "lchown32", __PNR_lchown32 }, - { "lgetxattr", (__SCMP_NR_BASE + 184) }, - { "link", (__SCMP_NR_BASE + 84) }, - { "linkat", (__SCMP_NR_BASE + 259) }, - { "listen", (__SCMP_NR_BASE + 49) }, - { "listxattr", (__SCMP_NR_BASE + 186) }, - { "llistxattr", (__SCMP_NR_BASE + 187) }, - { "lock", __PNR_lock }, - { "lookup_dcookie", (__SCMP_NR_BASE + 206) }, - { "lremovexattr", (__SCMP_NR_BASE + 190) }, - { "lseek", (__SCMP_NR_BASE + 8) }, - { "lsetxattr", (__SCMP_NR_BASE + 181) }, - { "lstat", (__SCMP_NR_BASE + 6) }, - { "lstat64", __PNR_lstat64 }, - { "madvise", (__SCMP_NR_BASE + 27) }, - { "mbind", (__SCMP_NR_BASE + 231) }, - { "membarrier", (__SCMP_NR_BASE + 322) }, - { "memfd_create", (__SCMP_NR_BASE + 318) }, - { "migrate_pages", (__SCMP_NR_BASE + 250) }, - { "mincore", (__SCMP_NR_BASE + 26) }, - { "mkdir", (__SCMP_NR_BASE + 81) }, - { "mkdirat", (__SCMP_NR_BASE + 252) }, - { "mknod", (__SCMP_NR_BASE + 131) }, - { "mknodat", (__SCMP_NR_BASE + 253) }, - { "mlock", (__SCMP_NR_BASE + 146) }, - { "mlock2", (__SCMP_NR_BASE + 323) }, - { "mlockall", (__SCMP_NR_BASE + 148) }, - { "mmap", (__SCMP_NR_BASE + 9) }, - { "mmap2", __PNR_mmap2 }, - { "modify_ldt", __PNR_modify_ldt }, - { "mount", (__SCMP_NR_BASE + 160) }, - { "move_mount", (__SCMP_NR_BASE + 429) }, - { "move_pages", (__SCMP_NR_BASE + 271) }, - { "mprotect", (__SCMP_NR_BASE + 10) }, - { "mpx", __PNR_mpx }, - { "mq_getsetattr", (__SCMP_NR_BASE + 239) }, - { "mq_notify", (__SCMP_NR_BASE + 238) }, - { "mq_open", (__SCMP_NR_BASE + 234) }, - { "mq_timedreceive", (__SCMP_NR_BASE + 237) }, - { "mq_timedreceive_time64", (__SCMP_NR_BASE + 419) }, - { "mq_timedsend", (__SCMP_NR_BASE + 236) }, - { "mq_timedsend_time64", (__SCMP_NR_BASE + 418) }, - { "mq_unlink", (__SCMP_NR_BASE + 235) }, - { "mremap", (__SCMP_NR_BASE + 24) }, - { "msgctl", (__SCMP_NR_BASE + 69) }, - { "msgget", (__SCMP_NR_BASE + 66) }, - { "msgrcv", (__SCMP_NR_BASE + 68) }, - { "msgsnd", (__SCMP_NR_BASE + 67) }, - { "msync", (__SCMP_NR_BASE + 25) }, - { "multiplexer", __PNR_multiplexer }, - { "munlock", (__SCMP_NR_BASE + 147) }, - { "munlockall", (__SCMP_NR_BASE + 149) }, - { "munmap", (__SCMP_NR_BASE + 11) }, - { "name_to_handle_at", (__SCMP_NR_BASE + 303) }, - { "nanosleep", (__SCMP_NR_BASE + 34) }, - { "newfstatat", (__SCMP_NR_BASE + 256) }, - { "nfsservctl", (__SCMP_NR_BASE + 173) }, - { "nice", __PNR_nice }, - { "oldfstat", __PNR_oldfstat }, - { "oldlstat", __PNR_oldlstat }, - { "oldolduname", __PNR_oldolduname }, - { "oldstat", __PNR_oldstat }, - { "olduname", __PNR_olduname }, - { "oldwait4", __PNR_oldwait4 }, - { "open", (__SCMP_NR_BASE + 2) }, - { "open_by_handle_at", (__SCMP_NR_BASE + 304) }, - { "open_tree", (__SCMP_NR_BASE + 428) }, - { "openat", (__SCMP_NR_BASE + 251) }, - { "pause", (__SCMP_NR_BASE + 33) }, - { "pciconfig_iobase", __PNR_pciconfig_iobase }, - { "pciconfig_read", __PNR_pciconfig_read }, - { "pciconfig_write", __PNR_pciconfig_write }, - { "perf_event_open", (__SCMP_NR_BASE + 296) }, - { "personality", (__SCMP_NR_BASE + 132) }, - { "pidfd_open", (__SCMP_NR_BASE + 434) }, - { "pidfd_send_signal", (__SCMP_NR_BASE + 424) }, - { "pipe", (__SCMP_NR_BASE + 21) }, - { "pipe2", (__SCMP_NR_BASE + 291) }, - { "pivot_root", (__SCMP_NR_BASE + 151) }, - { "pkey_alloc", (__SCMP_NR_BASE + 328) }, - { "pkey_free", (__SCMP_NR_BASE + 329) }, - { "pkey_mprotect", (__SCMP_NR_BASE + 327) }, - { "poll", (__SCMP_NR_BASE + 7) }, - { "ppoll", (__SCMP_NR_BASE + 265) }, - { "ppoll_time64", (__SCMP_NR_BASE + 414) }, - { "prctl", (__SCMP_NR_BASE + 153) }, - { "pread64", (__SCMP_NR_BASE + 16) }, - { "preadv", (__SCMP_NR_BASE + 293) }, - { "preadv2", (__SCMP_NR_BASE + 325) }, - { "prlimit64", (__SCMP_NR_BASE + 302) }, - { "process_vm_readv", (__SCMP_NR_BASE + 309) }, - { "process_vm_writev", (__SCMP_NR_BASE + 310) }, - { "prof", __PNR_prof }, - { "profil", __PNR_profil }, - { "pselect6", (__SCMP_NR_BASE + 264) }, - { "pselect6_time64", (__SCMP_NR_BASE + 413) }, - { "ptrace", (__SCMP_NR_BASE + 99) }, - { "putpmsg", (__SCMP_NR_BASE + 175) }, - { "pwrite64", (__SCMP_NR_BASE + 17) }, - { "pwritev", (__SCMP_NR_BASE + 294) }, - { "pwritev2", (__SCMP_NR_BASE + 326) }, - { "query_module", (__SCMP_NR_BASE + 171) }, - { "quotactl", (__SCMP_NR_BASE + 172) }, - { "read", (__SCMP_NR_BASE + 0) }, - { "readahead", (__SCMP_NR_BASE + 179) }, - { "readdir", __PNR_readdir }, - { "readlink", (__SCMP_NR_BASE + 87) }, - { "readlinkat", (__SCMP_NR_BASE + 261) }, - { "readv", (__SCMP_NR_BASE + 18) }, - { "reboot", (__SCMP_NR_BASE + 164) }, - { "recv", __PNR_recv }, - { "recvfrom", (__SCMP_NR_BASE + 44) }, - { "recvmmsg", (__SCMP_NR_BASE + 298) }, - { "recvmmsg_time64", (__SCMP_NR_BASE + 417) }, - { "recvmsg", (__SCMP_NR_BASE + 46) }, - { "remap_file_pages", (__SCMP_NR_BASE + 210) }, - { "removexattr", (__SCMP_NR_BASE + 189) }, - { "rename", (__SCMP_NR_BASE + 80) }, - { "renameat", (__SCMP_NR_BASE + 258) }, - { "renameat2", (__SCMP_NR_BASE + 315) }, - { "request_key", (__SCMP_NR_BASE + 244) }, - { "restart_syscall", (__SCMP_NR_BASE + 214) }, - { "rmdir", (__SCMP_NR_BASE + 82) }, - { "rseq", (__SCMP_NR_BASE + 331) }, - { "rt_sigaction", (__SCMP_NR_BASE + 13) }, - { "rt_sigpending", (__SCMP_NR_BASE + 125) }, - { "rt_sigprocmask", (__SCMP_NR_BASE + 14) }, - { "rt_sigqueueinfo", (__SCMP_NR_BASE + 127) }, - { "rt_sigreturn", (__SCMP_NR_BASE + 211) }, - { "rt_sigsuspend", (__SCMP_NR_BASE + 128) }, - { "rt_sigtimedwait", (__SCMP_NR_BASE + 126) }, - { "rt_sigtimedwait_time64", (__SCMP_NR_BASE + 421) }, - { "rt_tgsigqueueinfo", (__SCMP_NR_BASE + 295) }, - { "rtas", __PNR_rtas }, - { "s390_guarded_storage", __PNR_s390_guarded_storage }, - { "s390_pci_mmio_read", __PNR_s390_pci_mmio_read }, - { "s390_pci_mmio_write", __PNR_s390_pci_mmio_write }, - { "s390_runtime_instr", __PNR_s390_runtime_instr }, - { "s390_sthyi", __PNR_s390_sthyi }, - { "sched_get_priority_max", (__SCMP_NR_BASE + 143) }, - { "sched_get_priority_min", (__SCMP_NR_BASE + 144) }, - { "sched_getaffinity", (__SCMP_NR_BASE + 196) }, - { "sched_getattr", (__SCMP_NR_BASE + 314) }, - { "sched_getparam", (__SCMP_NR_BASE + 140) }, - { "sched_getscheduler", (__SCMP_NR_BASE + 142) }, - { "sched_rr_get_interval", (__SCMP_NR_BASE + 145) }, - { "sched_rr_get_interval_time64", (__SCMP_NR_BASE + 423) }, - { "sched_setaffinity", (__SCMP_NR_BASE + 195) }, - { "sched_setattr", (__SCMP_NR_BASE + 313) }, - { "sched_setparam", (__SCMP_NR_BASE + 139) }, - { "sched_setscheduler", (__SCMP_NR_BASE + 141) }, - { "sched_yield", (__SCMP_NR_BASE + 23) }, - { "seccomp", (__SCMP_NR_BASE + 316) }, - { "security", __PNR_security }, - { "select", __PNR_select }, - { "semctl", (__SCMP_NR_BASE + 64) }, - { "semget", (__SCMP_NR_BASE + 62) }, - { "semop", (__SCMP_NR_BASE + 63) }, - { "semtimedop", (__SCMP_NR_BASE + 215) }, - { "semtimedop_time64", (__SCMP_NR_BASE + 420) }, - { "send", __PNR_send }, - { "sendfile", (__SCMP_NR_BASE + 39) }, - { "sendfile64", (__SCMP_NR_BASE + 219) }, - { "sendmmsg", (__SCMP_NR_BASE + 307) }, - { "sendmsg", (__SCMP_NR_BASE + 45) }, - { "sendto", (__SCMP_NR_BASE + 43) }, - { "set_mempolicy", (__SCMP_NR_BASE + 233) }, - { "set_robust_list", (__SCMP_NR_BASE + 272) }, - { "set_thread_area", (__SCMP_NR_BASE + 246) }, - { "set_tid_address", (__SCMP_NR_BASE + 213) }, - { "set_tls", __PNR_set_tls }, - { "setdomainname", (__SCMP_NR_BASE + 166) }, - { "setfsgid", (__SCMP_NR_BASE + 121) }, - { "setfsgid32", __PNR_setfsgid32 }, - { "setfsuid", (__SCMP_NR_BASE + 120) }, - { "setfsuid32", __PNR_setfsuid32 }, - { "setgid", (__SCMP_NR_BASE + 104) }, - { "setgid32", __PNR_setgid32 }, - { "setgroups", (__SCMP_NR_BASE + 114) }, - { "setgroups32", __PNR_setgroups32 }, - { "sethostname", (__SCMP_NR_BASE + 165) }, - { "setitimer", (__SCMP_NR_BASE + 36) }, - { "setns", (__SCMP_NR_BASE + 308) }, - { "setpgid", (__SCMP_NR_BASE + 107) }, - { "setpriority", (__SCMP_NR_BASE + 138) }, - { "setregid", (__SCMP_NR_BASE + 112) }, - { "setregid32", __PNR_setregid32 }, - { "setresgid", (__SCMP_NR_BASE + 117) }, - { "setresgid32", __PNR_setresgid32 }, - { "setresuid", (__SCMP_NR_BASE + 115) }, - { "setresuid32", __PNR_setresuid32 }, - { "setreuid", (__SCMP_NR_BASE + 111) }, - { "setreuid32", __PNR_setreuid32 }, - { "setrlimit", (__SCMP_NR_BASE + 155) }, - { "setsid", (__SCMP_NR_BASE + 110) }, - { "setsockopt", (__SCMP_NR_BASE + 53) }, - { "settimeofday", (__SCMP_NR_BASE + 159) }, - { "setuid", (__SCMP_NR_BASE + 103) }, - { "setuid32", __PNR_setuid32 }, - { "setxattr", (__SCMP_NR_BASE + 180) }, - { "sgetmask", __PNR_sgetmask }, - { "shmat", (__SCMP_NR_BASE + 29) }, - { "shmctl", (__SCMP_NR_BASE + 30) }, - { "shmdt", (__SCMP_NR_BASE + 65) }, - { "shmget", (__SCMP_NR_BASE + 28) }, - { "shutdown", (__SCMP_NR_BASE + 47) }, - { "sigaction", __PNR_sigaction }, - { "sigaltstack", (__SCMP_NR_BASE + 129) }, - { "signal", __PNR_signal }, - { "signalfd", (__SCMP_NR_BASE + 280) }, - { "signalfd4", (__SCMP_NR_BASE + 287) }, - { "sigpending", __PNR_sigpending }, - { "sigprocmask", __PNR_sigprocmask }, - { "sigreturn", __PNR_sigreturn }, - { "sigsuspend", __PNR_sigsuspend }, - { "socket", (__SCMP_NR_BASE + 40) }, - { "socketcall", __PNR_socketcall }, - { "socketpair", (__SCMP_NR_BASE + 52) }, - { "splice", (__SCMP_NR_BASE + 267) }, - { "spu_create", __PNR_spu_create }, - { "spu_run", __PNR_spu_run }, - { "ssetmask", __PNR_ssetmask }, - { "stat", (__SCMP_NR_BASE + 4) }, - { "stat64", __PNR_stat64 }, - { "statfs", (__SCMP_NR_BASE + 134) }, - { "statfs64", (__SCMP_NR_BASE + 217) }, - { "statx", (__SCMP_NR_BASE + 330) }, - { "stime", __PNR_stime }, - { "stty", __PNR_stty }, - { "subpage_prot", __PNR_subpage_prot }, - { "swapcontext", __PNR_swapcontext }, - { "swapoff", (__SCMP_NR_BASE + 163) }, - { "swapon", (__SCMP_NR_BASE + 162) }, - { "switch_endian", __PNR_switch_endian }, - { "symlink", (__SCMP_NR_BASE + 86) }, - { "symlinkat", (__SCMP_NR_BASE + 260) }, - { "sync", (__SCMP_NR_BASE + 157) }, - { "sync_file_range", (__SCMP_NR_BASE + 268) }, - { "sync_file_range2", __PNR_sync_file_range2 }, - { "syncfs", (__SCMP_NR_BASE + 306) }, - { "syscall", __PNR_syscall }, - { "sys_debug_setcontext", __PNR_sys_debug_setcontext }, - { "sysfs", (__SCMP_NR_BASE + 136) }, - { "sysinfo", (__SCMP_NR_BASE + 97) }, - { "syslog", (__SCMP_NR_BASE + 101) }, - { "sysmips", (__SCMP_NR_BASE + 199) }, - { "tee", (__SCMP_NR_BASE + 269) }, - { "tgkill", (__SCMP_NR_BASE + 229) }, - { "time", __PNR_time }, - { "timer_create", (__SCMP_NR_BASE + 220) }, - { "timer_delete", (__SCMP_NR_BASE + 224) }, - { "timer_getoverrun", (__SCMP_NR_BASE + 223) }, - { "timer_gettime", (__SCMP_NR_BASE + 222) }, - { "timer_gettime64", (__SCMP_NR_BASE + 408) }, - { "timer_settime", (__SCMP_NR_BASE + 221) }, - { "timer_settime64", (__SCMP_NR_BASE + 409) }, - { "timerfd", (__SCMP_NR_BASE + 281) }, - { "timerfd_create", (__SCMP_NR_BASE + 284) }, - { "timerfd_gettime", (__SCMP_NR_BASE + 285) }, - { "timerfd_gettime64", (__SCMP_NR_BASE + 410) }, - { "timerfd_settime", (__SCMP_NR_BASE + 286) }, - { "timerfd_settime64", (__SCMP_NR_BASE + 411) }, - { "times", (__SCMP_NR_BASE + 98) }, - { "tkill", (__SCMP_NR_BASE + 192) }, - { "truncate", (__SCMP_NR_BASE + 74) }, - { "truncate64", __PNR_truncate64 }, - { "tuxcall", __PNR_tuxcall }, - { "ugetrlimit", __PNR_ugetrlimit }, - { "ulimit", __PNR_ulimit }, - { "umask", (__SCMP_NR_BASE + 93) }, - { "umount", __PNR_umount }, - { "umount2", (__SCMP_NR_BASE + 161) }, - { "uname", (__SCMP_NR_BASE + 61) }, - { "unlink", (__SCMP_NR_BASE + 85) }, - { "unlinkat", (__SCMP_NR_BASE + 257) }, - { "unshare", (__SCMP_NR_BASE + 266) }, - { "uselib", __PNR_uselib }, - { "userfaultfd", (__SCMP_NR_BASE + 321) }, - { "usr26", __PNR_usr26 }, - { "usr32", __PNR_usr32 }, - { "ustat", (__SCMP_NR_BASE + 133) }, - { "utime", (__SCMP_NR_BASE + 130) }, - { "utimensat", (__SCMP_NR_BASE + 279) }, - { "utimensat_time64", (__SCMP_NR_BASE + 412) }, - { "utimes", (__SCMP_NR_BASE + 230) }, - { "vfork", __PNR_vfork }, - { "vhangup", (__SCMP_NR_BASE + 150) }, - { "vm86", __PNR_vm86 }, - { "vm86old", __PNR_vm86old }, - { "vmsplice", (__SCMP_NR_BASE + 270) }, - { "vserver", (__SCMP_NR_BASE + 240) }, - { "wait4", (__SCMP_NR_BASE + 59) }, - { "waitid", (__SCMP_NR_BASE + 241) }, - { "waitpid", __PNR_waitpid }, - { "write", (__SCMP_NR_BASE + 1) }, - { "writev", (__SCMP_NR_BASE + 19) }, - { NULL, __NR_SCMP_ERROR }, -}; - -/** - * Resolve a syscall name to a number - * @param name the syscall name - * - * Resolve the given syscall name to the syscall number using the syscall table. - * Returns the syscall number on success, including negative pseudo syscall - * numbers; returns __NR_SCMP_ERROR on failure. - * - */ -int mips64n32_syscall_resolve_name(const char *name) -{ - unsigned int iter; - const struct arch_syscall_def *table = mips64n32_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].name != NULL; iter++) { - if (strcmp(name, table[iter].name) == 0) - return table[iter].num; - } - - return __NR_SCMP_ERROR; -} - -/** - * Resolve a syscall number to a name - * @param num the syscall number - * - * Resolve the given syscall number to the syscall name using the syscall table. - * Returns a pointer to the syscall name string on success, including pseudo - * syscall names; returns NULL on failure. - * - */ -const char *mips64n32_syscall_resolve_num(int num) -{ - unsigned int iter; - const struct arch_syscall_def *table = mips64n32_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].num != __NR_SCMP_ERROR; iter++) { - if (num == table[iter].num) - return table[iter].name; - } - - return NULL; -} - -/** - * Iterate through the syscall table and return the syscall mapping - * @param spot the offset into the syscall table - * - * Return the syscall mapping at position @spot or NULL on failure. This - * function should only ever be used internally by libseccomp. - * - */ -const struct arch_syscall_def *mips64n32_syscall_iterate(unsigned int spot) -{ - /* XXX - no safety checks here */ - return &mips64n32_syscall_table[spot]; -} diff --git a/src/arch-parisc-syscalls.c b/src/arch-parisc-syscalls.c deleted file mode 100644 index c516c16..0000000 --- a/src/arch-parisc-syscalls.c +++ /dev/null @@ -1,542 +0,0 @@ -/* - * Copyright (c) 2016 Helge Deller <deller@gmx.de> - * Author: Helge Deller <deller@gmx.de> - */ - -#include <string.h> - -#include <seccomp.h> - -#include "arch.h" -#include "arch-parisc.h" - -/* NOTE: based on Linux v5.4-rc4 */ -const struct arch_syscall_def parisc_syscall_table[] = { \ - { "_llseek", 140 }, - { "_newselect", 142 }, - { "_sysctl", 149 }, - { "accept", 35 }, - { "accept4", 320 }, - { "access", 33 }, - { "acct", 51 }, - { "add_key", 264 }, - { "adjtimex", 124 }, - { "afs_syscall", 137 }, - { "alarm", 27 }, - { "arm_fadvise64_64", __PNR_arm_fadvise64_64 }, - { "arm_sync_file_range", __PNR_arm_sync_file_range }, - { "arch_prctl", __PNR_arch_prctl }, - { "bdflush", 134 }, - { "bind", 22 }, - { "bpf", 341 }, - { "break", __PNR_break }, - { "breakpoint", __PNR_breakpoint }, - { "brk", 45 }, - { "cachectl", __PNR_cachectl }, - { "cacheflush", __PNR_cacheflush }, - { "capget", 106 }, - { "capset", 107 }, - { "chdir", 12 }, - { "chmod", 15 }, - { "chown", 180 }, - { "chown32", __PNR_chown32 }, - { "chroot", 61 }, - { "clock_adjtime", 324 }, - { "clock_adjtime64", __PNR_clock_adjtime64 }, - { "clock_getres", 257 }, - { "clock_getres_time64", __PNR_clock_getres_time64 }, - { "clock_gettime", 256 }, - { "clock_gettime64", __PNR_clock_gettime64 }, - { "clock_nanosleep", 258 }, - { "clock_nanosleep_time64", __PNR_clock_nanosleep_time64 }, - { "clock_settime", 255 }, - { "clock_settime64", __PNR_clock_settime64 }, - { "clone", 120 }, - { "clone3", __PNR_clone3 }, - { "close", 6 }, - { "connect", 31 }, - { "copy_file_range", 346 }, - { "creat", 8 }, - { "create_module", 127 }, - { "delete_module", 129 }, - { "dup", 41 }, - { "dup2", 63 }, - { "dup3", 312 }, - { "epoll_create", 224 }, - { "epoll_create1", 311 }, - { "epoll_ctl", 225 }, - { "epoll_ctl_old", __PNR_epoll_ctl_old }, - { "epoll_pwait", 297 }, - { "epoll_wait", 226 }, - { "epoll_wait_old", __PNR_epoll_wait_old }, - { "eventfd", 304 }, - { "eventfd2", 310 }, - { "execve", 11 }, - { "execveat", 342 }, - { "exit", 1 }, - { "exit_group", 222 }, - { "faccessat", 287 }, - { "fadvise64", __PNR_fadvise64 }, - { "fadvise64_64", 236 }, - { "fallocate", 305 }, - { "fanotify_init", 322 }, - { "fanotify_mark", 323 }, - { "fchdir", 133 }, - { "fchmod", 94 }, - { "fchmodat", 286 }, - { "fchown", 95 }, - { "fchown32", __PNR_fchown32 }, - { "fchownat", 278 }, - { "fcntl", 55 }, - { "fcntl64", 202 }, - { "fdatasync", 148 }, - { "fgetxattr", 243 }, - { "finit_module", 333 }, - { "flistxattr", 246 }, - { "flock", 143 }, - { "fork", 2 }, - { "fremovexattr", 249 }, - { "fsconfig", __PNR_fsconfig }, - { "fsetxattr", 240 }, - { "fsmount", __PNR_fsmount }, - { "fsopen", __PNR_fsopen }, - { "fspick", __PNR_fspick }, - { "fstat", 28 }, - { "fstat64", 112 }, - { "fstatat64", 280 }, - { "fstatfs", 100 }, - { "fstatfs64", 299 }, - { "fsync", 118 }, - { "ftime", __PNR_ftime }, - { "ftruncate", 93 }, - { "ftruncate64", 200 }, - { "futex", 210 }, - { "futex_time64", __PNR_futex_time64 }, - { "futimesat", 279 }, - { "get_kernel_syms", 130 }, - { "get_mempolicy", 261 }, - { "get_robust_list", 290 }, - { "get_thread_area", 214 }, - { "get_tls", __PNR_get_tls }, - { "getcpu", 296 }, - { "getcwd", 110 }, - { "getdents", 141 }, - { "getdents64", 201 }, - { "getegid", 50 }, - { "getegid32", __PNR_getegid32 }, - { "geteuid", 49 }, - { "geteuid32", __PNR_geteuid32 }, - { "getgid", 47 }, - { "getgid32", __PNR_getgid32 }, - { "getgroups", 80 }, - { "getgroups32", __PNR_getgroups32 }, - { "getitimer", 105 }, - { "getpeername", 53 }, - { "getpgid", 132 }, - { "getpgrp", 65 }, - { "getpid", 20 }, - { "getpmsg", 196 }, - { "getppid", 64 }, - { "getpriority", 96 }, - { "getrandom", 339 }, - { "getresgid", 171 }, - { "getresgid32", __PNR_getresgid32 }, - { "getresuid", 165 }, - { "getresuid32", __PNR_getresuid32 }, - { "getrlimit", 76 }, - { "getrusage", 77 }, - { "getsid", 147 }, - { "getsockname", 44 }, - { "getsockopt", 182 }, - { "gettid", 206 }, - { "gettimeofday", 78 }, - { "getuid", 24 }, - { "getuid32", __PNR_getuid32 }, - { "getxattr", 241 }, - { "gtty", __PNR_gtty }, - { "idle", __PNR_idle }, - { "init_module", 128 }, - { "inotify_add_watch", 270 }, - { "inotify_init", 269 }, - { "inotify_init1", 314 }, - { "inotify_rm_watch", 271 }, - { "io_cancel", 219 }, - { "io_destroy", 216 }, - { "io_getevents", 217 }, - { "io_pgetevents", __PNR_io_pgetevents }, - { "io_pgetevents_time64", __PNR_io_pgetevents_time64 }, - { "io_setup", 215 }, - { "io_submit", 218 }, - { "io_uring_setup", 425 }, - { "io_uring_enter", 426 }, - { "io_uring_register", 427 }, - { "ioctl", 54 }, - { "ioperm", __PNR_ioperm }, - { "iopl", __PNR_iopl }, - { "ioprio_get", 268 }, - { "ioprio_set", 267 }, - { "ipc", __PNR_ipc }, - { "kcmp", 332 }, - { "kexec_file_load", __PNR_kexec_file_load }, - { "kexec_load", 300 }, - { "keyctl", 266 }, - { "kill", 37 }, - { "lchown", 16 }, - { "lchown32", __PNR_lchown32 }, - { "lgetxattr", 242 }, - { "link", 9 }, - { "linkat", 283 }, - { "listen", 32 }, - { "listxattr", 244 }, - { "llistxattr", 245 }, - { "lock", __PNR_lock }, - { "lookup_dcookie", 223 }, - { "lremovexattr", 248 }, - { "lseek", 19 }, - { "lsetxattr", 239 }, - { "lstat", 84 }, - { "lstat64", 198 }, - { "madvise", 119 }, - { "mbind", 260 }, - { "membarrier", 343 }, - { "memfd_create", 340 }, - { "migrate_pages", 272 }, - { "mincore", 72 }, - { "mkdir", 39 }, - { "mkdirat", 276 }, - { "mknod", 14 }, - { "mknodat", 277 }, - { "mlock", 150 }, - { "mlock2", 345 }, - { "mlockall", 152 }, - { "mmap", 90 }, - { "mmap2", 89 }, - { "modify_ldt", __PNR_modify_ldt }, - { "mount", 21 }, - { "move_mount", __PNR_move_mount }, - { "move_pages", 295 }, - { "mprotect", 125 }, - { "mpx", __PNR_mpx }, - { "mq_getsetattr", 234 }, - { "mq_notify", 233 }, - { "mq_open", 229 }, - { "mq_timedreceive", 232 }, - { "mq_timedreceive_time64", __PNR_mq_timedreceive_time64 }, - { "mq_timedsend", 231 }, - { "mq_timedsend_time64", __PNR_mq_timedsend_time64 }, - { "mq_unlink", 230 }, - { "mremap", 163 }, - { "msgctl", 191 }, - { "msgget", 190 }, - { "msgrcv", 189 }, - { "msgsnd", 188 }, - { "msync", 144 }, - { "multiplexer", __PNR_multiplexer }, - { "munlock", 151 }, - { "munlockall", 153 }, - { "munmap", 91 }, - { "name_to_handle_at", 325 }, - { "nanosleep", 162 }, - { "newfstatat", __PNR_newfstatat }, - { "nfsservctl", 169 }, - { "nice", 34 }, - { "oldfstat", __PNR_oldfstat }, - { "oldlstat", __PNR_oldlstat }, - { "oldolduname", __PNR_oldolduname }, - { "oldstat", __PNR_oldstat }, - { "olduname", __PNR_olduname }, - { "oldwait4", __PNR_oldwait4 }, - { "open", 5 }, - { "open_by_handle_at", 326 }, - { "open_tree", __PNR_open_tree }, - { "openat", 275 }, - { "pause", 29 }, - { "pciconfig_iobase", __PNR_pciconfig_iobase }, - { "pciconfig_read", __PNR_pciconfig_read }, - { "pciconfig_write", __PNR_pciconfig_write }, - { "perf_event_open", 318 }, - { "personality", 136 }, - { "pidfd_open", __PNR_pidfd_open }, - { "pidfd_send_signal", __PNR_pidfd_send_signal }, - { "pipe", 42 }, - { "pipe2", 313 }, - { "pivot_root", 67 }, - { "pkey_alloc", __PNR_pkey_alloc }, - { "pkey_free", __PNR_pkey_free }, - { "pkey_mprotect", __PNR_pkey_mprotect }, - { "poll", 168 }, - { "ppoll", 274 }, - { "ppoll_time64", __PNR_ppoll_time64 }, - { "prctl", 172 }, - { "pread64", 108 }, - { "preadv", 315 }, - { "preadv2", 347 }, - { "prlimit64", 321 }, - { "process_vm_readv", 330 }, - { "process_vm_writev", 331 }, - { "prof", __PNR_prof }, - { "profil", __PNR_profil }, - { "pselect6", 273 }, - { "pselect6_time64", __PNR_pselect6_time64 }, - { "ptrace", 26 }, - { "putpmsg", 197 }, - { "pwrite64", 109 }, - { "pwritev", 316 }, - { "pwritev2", 348 }, - { "query_module", 167 }, - { "quotactl", 131 }, - { "read", 3 }, - { "readahead", 207 }, - { "readdir", __PNR_readdir }, - { "readlink", 85 }, - { "readlinkat", 285 }, - { "readv", 145 }, - { "reboot", 88 }, - { "recv", 98 }, - { "recvfrom", 123 }, - { "recvmmsg", 319 }, - { "recvmmsg_time64", __PNR_recvmmsg_time64 }, - { "recvmsg", 184 }, - { "remap_file_pages", 227 }, - { "removexattr", 247 }, - { "rename", 38 }, - { "renameat", 282 }, - { "renameat2", 337 }, - { "request_key", 265 }, - { "restart_syscall", 0 }, - { "rmdir", 40 }, - { "rseq", __PNR_rseq }, - { "rt_sigaction", 174 }, - { "rt_sigpending", 176 }, - { "rt_sigprocmask", 175 }, - { "rt_sigqueueinfo", 178 }, - { "rt_sigreturn", 173 }, - { "rt_sigsuspend", 179 }, - { "rt_sigtimedwait", 177 }, - { "rt_sigtimedwait_time64", __PNR_rt_sigtimedwait_time64 }, - { "rt_tgsigqueueinfo", 317 }, - { "rtas", __PNR_rtas }, - { "s390_guarded_storage", __PNR_s390_guarded_storage }, - { "s390_pci_mmio_read", __PNR_s390_pci_mmio_read }, - { "s390_pci_mmio_write", __PNR_s390_pci_mmio_write }, - { "s390_runtime_instr", __PNR_s390_runtime_instr }, - { "s390_sthyi", __PNR_s390_sthyi }, - { "sched_get_priority_max", 159 }, - { "sched_get_priority_min", 160 }, - { "sched_getaffinity", 212 }, - { "sched_getattr", 335 }, - { "sched_getparam", 155 }, - { "sched_getscheduler", 157 }, - { "sched_rr_get_interval", 161 }, - { "sched_rr_get_interval_time64", __PNR_sched_rr_get_interval_time64 }, - { "sched_setaffinity", 211 }, - { "sched_setattr", 334 }, - { "sched_setparam", 154 }, - { "sched_setscheduler", 156 }, - { "sched_yield", 158 }, - { "seccomp", 338 }, - { "security", __PNR_security }, - { "select", __PNR_select }, - { "semctl", 187 }, - { "semget", 186 }, - { "semop", 185 }, - { "semtimedop", 228 }, - { "semtimedop_time64", __PNR_semtimedop_time64 }, - { "send", 58 }, - { "sendfile", 122 }, - { "sendfile64", 209 }, - { "sendmmsg", 329 }, - { "sendmsg", 183 }, - { "sendto", 82 }, - { "set_mempolicy", 262 }, - { "set_robust_list", 289 }, - { "set_thread_area", 213 }, - { "set_tid_address", 237 }, - { "set_tls", __PNR_set_tls }, - { "setdomainname", 121 }, - { "setfsgid", 139 }, - { "setfsgid32", __PNR_setfsgid32 }, - { "setfsuid", 138 }, - { "setfsuid32", __PNR_setfsuid32 }, - { "setgid", 46 }, - { "setgid32", __PNR_setgid32 }, - { "setgroups", 81 }, - { "setgroups32", __PNR_setgroups32}, - { "sethostname", 74 }, - { "setitimer", 104 }, - { "setns", 328 }, - { "setpgid", 57 }, - { "setpriority", 97 }, - { "setregid", 71 }, - { "setregid32", __PNR_setregid32 }, - { "setresgid", 170 }, - { "setresgid32", __PNR_setresgid32 }, - { "setresuid", 164 }, - { "setresuid32", __PNR_setresuid32 }, - { "setreuid", 70 }, - { "setreuid32", __PNR_setreuid32 }, - { "setrlimit", 75 }, - { "setsid", 66 }, - { "setsockopt", 181 }, - { "settimeofday", 79 }, - { "setuid", 23 }, - { "setuid32", __PNR_setuid32 }, - { "setxattr", 238 }, - { "sgetmask", 68 }, - { "shmat", 192 }, - { "shmctl", 195 }, - { "shmdt", 193 }, - { "shmget", 194 }, - { "shutdown", 117 }, - { "sigaction", __PNR_sigaction }, - { "sigaltstack", 166 }, - { "signal", 48 }, - { "signalfd", 302 }, - { "signalfd4", 309 }, - { "sigpending", 73 }, - { "sigprocmask", 126 }, - { "sigreturn", __PNR_sigreturn }, - { "sigsuspend", __PNR_sigsuspend }, - { "socket", 17 }, - { "socketcall", __PNR_socketcall }, - { "socketpair", 56 }, - { "splice", 291 }, - { "spu_create", __PNR_spu_create }, - { "spu_run", __PNR_spu_run }, - { "ssetmask", 69 }, - { "stat", 18 }, - { "stat64", 101 }, - { "statfs", 99 }, - { "statfs64", 298 }, - { "statx", 349 }, - { "stime", 25 }, - { "stty", __PNR_stty }, - { "subpage_prot", __PNR_subpage_prot }, - { "swapcontext", __PNR_swapcontext }, - { "swapoff", 115 }, - { "swapon", 87 }, - { "switch_endian", __PNR_switch_endian }, - { "symlink", 83 }, - { "symlinkat", 284 }, - { "sync", 36 }, - { "sync_file_range", 292 }, - { "sync_file_range2", __PNR_sync_file_range2 }, - { "syncfs", 327 }, - { "syscall", __PNR_syscall }, - { "sys_debug_setcontext", __PNR_sys_debug_setcontext }, - { "sysfs", 135 }, - { "sysinfo", 116 }, - { "syslog", 103 }, - { "sysmips", __PNR_sysmips }, - { "tee", 293 }, - { "tgkill", 259 }, - { "time", 13 }, - { "timer_create", 250 }, - { "timer_delete", 254 }, - { "timer_getoverrun", 253 }, - { "timer_gettime", 252 }, - { "timer_gettime64", __PNR_timer_gettime64 }, - { "timer_settime", 251 }, - { "timer_settime64", __PNR_timer_settime64 }, - { "timerfd", 303 }, - { "timerfd_create", 306 }, - { "timerfd_gettime", 308 }, - { "timerfd_gettime64", __PNR_timerfd_gettime64 }, - { "timerfd_settime", 307 }, - { "timerfd_settime64", __PNR_timerfd_settime64 }, - { "times", 43 }, - { "tkill", 208 }, - { "truncate", 92 }, - { "truncate64", 199 }, - { "tuxcall", __PNR_tuxcall }, - { "ugetrlimit", __PNR_ugetrlimit }, - { "ulimit", __PNR_ulimit }, - { "umask", 60 }, - { "umount", __PNR_umount }, - { "umount2", 52 }, - { "uname", 59 }, - { "unlink", 10 }, - { "unlinkat", 281 }, - { "unshare", 288 }, - { "uselib", 86 }, - { "userfaultfd", 344 }, - { "usr26", __PNR_usr26 }, - { "usr32", __PNR_usr32 }, - { "ustat", 62 }, - { "utime", 30 }, - { "utimensat", 301 }, - { "utimensat_time64", __PNR_utimensat_time64 }, - { "utimes", 336 }, - { "vfork", 113 }, - { "vhangup", 111 }, - { "vm86", __PNR_vm86 }, - { "vm86old", __PNR_vm86old }, - { "vmsplice", 294 }, - { "vserver", 263 }, - { "wait4", 114 }, - { "waitid", 235 }, - { "waitpid", 7 }, - { "write", 4 }, - { "writev", 146 }, - { NULL, __NR_SCMP_ERROR }, -}; - -/** - * Resolve a syscall name to a number - * @param name the syscall name - * - * Resolve the given syscall name to the syscall number using the syscall table. - * Returns the syscall number on success, including negative pseudo syscall - * numbers; returns __NR_SCMP_ERROR on failure. - * - */ -int parisc_syscall_resolve_name(const char *name) -{ - unsigned int iter; - const struct arch_syscall_def *table = parisc_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].name != NULL; iter++) { - if (strcmp(name, table[iter].name) == 0) - return table[iter].num; - } - - return __NR_SCMP_ERROR; -} - -/** - * Resolve a syscall number to a name - * @param num the syscall number - * - * Resolve the given syscall number to the syscall name using the syscall table. - * Returns a pointer to the syscall name string on success, including pseudo - * syscall names; returns NULL on failure. - * - */ -const char *parisc_syscall_resolve_num(int num) -{ - unsigned int iter; - const struct arch_syscall_def *table = parisc_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].num != __NR_SCMP_ERROR; iter++) { - if (num == table[iter].num) - return table[iter].name; - } - - return NULL; -} - -/** - * Iterate through the syscall table and return the syscall mapping - * @param spot the offset into the syscall table - * - * Return the syscall mapping at position @spot or NULL on failure. This - * function should only ever be used internally by libseccomp. - * - */ -const struct arch_syscall_def *parisc_syscall_iterate(unsigned int spot) -{ - /* XXX - no safety checks here */ - return &parisc_syscall_table[spot]; -} diff --git a/src/arch-ppc-syscalls.c b/src/arch-ppc-syscalls.c deleted file mode 100644 index fbfa1df..0000000 --- a/src/arch-ppc-syscalls.c +++ /dev/null @@ -1,559 +0,0 @@ -/** - * Enhanced Seccomp PPC Specific Code - * - * Copyright (c) 2015 Freescale <bogdan.purcareata@freescale.com> - * Author: Bogdan Purcareata <bogdan.purcareata@freescale.com> - * - */ - -/* - * This library is free software; you can redistribute it and/or modify it - * under the terms of version 2.1 of the GNU Lesser General Public License as - * published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, see <http://www.gnu.org/licenses>. - */ - -#include <string.h> - -#include <seccomp.h> - -#include "arch.h" -#include "arch-ppc.h" - -/* NOTE: based on Linux v5.4-rc4 */ -const struct arch_syscall_def ppc_syscall_table[] = { \ - { "_llseek", 140 }, - { "_newselect", 142 }, - { "_sysctl", 149 }, - { "accept", 330 }, - { "accept4", 344 }, - { "access", 33 }, - { "acct", 51 }, - { "add_key", 269 }, - { "adjtimex", 124 }, - { "afs_syscall", 137 }, - { "alarm", 27 }, - { "arm_fadvise64_64", __PNR_arm_fadvise64_64 }, - { "arm_sync_file_range", __PNR_arm_sync_file_range }, - { "arch_prctl", __PNR_arch_prctl }, - { "bdflush", 134 }, - { "bind", 327 }, - { "bpf", 361 }, - { "break", 17 }, - { "breakpoint", __PNR_breakpoint }, - { "brk", 45 }, - { "cachectl", __PNR_cachectl }, - { "cacheflush", __PNR_cacheflush }, - { "capget", 183 }, - { "capset", 184 }, - { "chdir", 12 }, - { "chmod", 15 }, - { "chown", 181 }, - { "chown32", __PNR_chown32 }, - { "chroot", 61 }, - { "clock_adjtime", 347 }, - { "clock_adjtime64", 405 }, - { "clock_getres", 247 }, - { "clock_getres_time64", 406 }, - { "clock_gettime", 246 }, - { "clock_gettime64", 403 }, - { "clock_nanosleep", 248 }, - { "clock_nanosleep_time64", 407 }, - { "clock_settime", 245 }, - { "clock_settime64", 404 }, - { "clone", 120 }, - { "clone3", 435 }, - { "close", 6 }, - { "connect", 328 }, - { "copy_file_range", 379 }, - { "creat", 8 }, - { "create_module", 127 }, - { "delete_module", 129 }, - { "dup", 41 }, - { "dup2", 63 }, - { "dup3", 316 }, - { "epoll_create", 236 }, - { "epoll_create1", 315 }, - { "epoll_ctl", 237 }, - { "epoll_ctl_old", __PNR_epoll_ctl_old }, - { "epoll_pwait", 303 }, - { "epoll_wait", 238 }, - { "epoll_wait_old", __PNR_epoll_wait_old }, - { "eventfd", 307 }, - { "eventfd2", 314 }, - { "execve", 11 }, - { "execveat", 362 }, - { "exit", 1 }, - { "exit_group", 234 }, - { "faccessat", 298 }, - { "fadvise64", 233 }, - { "fadvise64_64", 254 }, - { "fallocate", 309 }, - { "fanotify_init", 323 }, - { "fanotify_mark", 324 }, - { "fchdir", 133 }, - { "fchmod", 94 }, - { "fchmodat", 297 }, - { "fchown", 95 }, - { "fchown32", __PNR_fchown32 }, - { "fchownat", 289 }, - { "fcntl", 55 }, - { "fcntl64", 204 }, - { "fdatasync", 148 }, - { "fgetxattr", 214 }, - { "finit_module", 353 }, - { "flistxattr", 217 }, - { "flock", 143 }, - { "fork", 2 }, - { "fremovexattr", 220 }, - { "fsconfig", 431 }, - { "fsetxattr", 211 }, - { "fsmount", 432 }, - { "fsopen", 430 }, - { "fspick", 433 }, - { "fstat", 108 }, - { "fstat64", 197 }, - { "fstatat64", 291 }, - { "fstatfs", 100 }, - { "fstatfs64", 253 }, - { "fsync", 118 }, - { "ftime", 35 }, - { "ftruncate", 93 }, - { "ftruncate64", 194 }, - { "futex", 221 }, - { "futex_time64", 422 }, - { "futimesat", 290 }, - { "get_kernel_syms", 130 }, - { "get_mempolicy", 260 }, - { "get_robust_list", 299 }, - { "get_thread_area", __PNR_get_thread_area }, - { "get_tls", __PNR_get_tls }, - { "getcpu", 302 }, - { "getcwd", 182 }, - { "getdents", 141 }, - { "getdents64", 202 }, - { "getegid", 50 }, - { "getegid32", __PNR_getegid32 }, - { "geteuid", 49 }, - { "geteuid32", __PNR_geteuid32 }, - { "getgid", 47 }, - { "getgid32", __PNR_getgid32 }, - { "getgroups", 80 }, - { "getgroups32", __PNR_getgroups32 }, - { "getitimer", 105 }, - { "getpeername", 332 }, - { "getpgid", 132 }, - { "getpgrp", 65 }, - { "getpid", 20 }, - { "getpmsg", 187 }, - { "getppid", 64 }, - { "getpriority", 96 }, - { "getrandom", 359 }, - { "getresgid", 170 }, - { "getresgid32", __PNR_getresgid32 }, - { "getresuid", 165 }, - { "getresuid32", __PNR_getresuid32 }, - { "getrlimit", 76 }, - { "getrusage", 77 }, - { "getsid", 147 }, - { "getsockname", 331 }, - { "getsockopt", 340 }, - { "gettid", 207 }, - { "gettimeofday", 78 }, - { "getuid", 24 }, - { "getuid32", __PNR_getuid32 }, - { "getxattr", 212 }, - { "gtty", 32 }, - { "idle", 112 }, - { "init_module", 128 }, - { "inotify_add_watch", 276 }, - { "inotify_init", 275 }, - { "inotify_init1", 318 }, - { "inotify_rm_watch", 277 }, - { "io_cancel", 231 }, - { "io_destroy", 228 }, - { "io_getevents", 229 }, - { "io_pgetevents", 388 }, - { "io_pgetevents_time64", 416 }, - { "io_setup", 227 }, - { "io_submit", 230 }, - { "io_uring_setup", 425 }, - { "io_uring_enter", 426 }, - { "io_uring_register", 427 }, - { "ioctl", 54 }, - { "ioperm", 101 }, - { "iopl", 110 }, - { "ioprio_get", 274 }, - { "ioprio_set", 273 }, - { "ipc", 117 }, - { "kcmp", 354 }, - { "kexec_file_load", 382 }, - { "kexec_load", 268 }, - { "keyctl", 271 }, - { "kill", 37 }, - { "lchown", 16 }, - { "lchown32", __PNR_lchown32 }, - { "lgetxattr", 213 }, - { "link", 9 }, - { "linkat", 294 }, - { "listen", 329 }, - { "listxattr", 215 }, - { "llistxattr", 216 }, - { "lock", 53 }, - { "lookup_dcookie", 235 }, - { "lremovexattr", 219 }, - { "lseek", 19 }, - { "lsetxattr", 210 }, - { "lstat", 107 }, - { "lstat64", 196 }, - { "madvise", 205 }, - { "mbind", 259 }, - { "membarrier", 365 }, - { "memfd_create", 360 }, - { "migrate_pages", 258 }, - { "mincore", 206 }, - { "mkdir", 39 }, - { "mkdirat", 287 }, - { "mknod", 14 }, - { "mknodat", 288 }, - { "mlock", 150 }, - { "mlock2", 378 }, - { "mlockall", 152 }, - { "mmap", 90 }, - { "mmap2", 192 }, - { "modify_ldt", 123 }, - { "mount", 21 }, - { "move_mount", 429 }, - { "move_pages", 301 }, - { "mprotect", 125 }, - { "mpx", 56 }, - { "mq_getsetattr", 267 }, - { "mq_notify", 266 }, - { "mq_open", 262 }, - { "mq_timedreceive", 265 }, - { "mq_timedreceive_time64", 419 }, - { "mq_timedsend", 264 }, - { "mq_timedsend_time64", 418 }, - { "mq_unlink", 263 }, - { "mremap", 163 }, - { "msgctl", 402 }, - { "msgget", 399 }, - { "msgrcv", 401 }, - { "msgsnd", 400 }, - { "msync", 144 }, - { "multiplexer", 201 }, - { "munlock", 151 }, - { "munlockall", 153 }, - { "munmap", 91 }, - { "name_to_handle_at", 345 }, - { "nanosleep", 162 }, - { "newfstatat", __PNR_newfstatat }, - { "nfsservctl", 168 }, - { "nice", 34 }, - { "oldfstat", 28 }, - { "oldlstat", 84 }, - { "oldolduname", 59 }, - { "oldstat", 18 }, - { "olduname", 109 }, - { "oldwait4", __PNR_oldwait4 }, - { "open", 5 }, - { "open_by_handle_at", 346 }, - { "open_tree", 428 }, - { "openat", 286 }, - { "pause", 29 }, - { "pciconfig_iobase", 200 }, - { "pciconfig_read", 198 }, - { "pciconfig_write", 199 }, - { "perf_event_open", 319 }, - { "personality", 136 }, - { "pidfd_open", 434 }, - { "pidfd_send_signal", 424 }, - { "pipe", 42 }, - { "pipe2", 317 }, - { "pivot_root", 203 }, - { "pkey_alloc", 384 }, - { "pkey_free", 385 }, - { "pkey_mprotect", 386 }, - { "poll", 167 }, - { "ppoll", 281 }, - { "ppoll_time64", 414 }, - { "prctl", 171 }, - { "pread64", 179 }, - { "preadv", 320 }, - { "preadv2", 380 }, - { "prlimit64", 325 }, - { "process_vm_readv", 351 }, - { "process_vm_writev", 352 }, - { "prof", 44 }, - { "profil", 98 }, - { "pselect6", 280 }, - { "pselect6_time64", 413 }, - { "ptrace", 26 }, - { "putpmsg", 188 }, - { "pwrite64", 180 }, - { "pwritev", 321 }, - { "pwritev2", 381 }, - { "query_module", 166 }, - { "quotactl", 131 }, - { "read", 3 }, - { "readahead", 191 }, - { "readdir", 89 }, - { "readlink", 85 }, - { "readlinkat", 296 }, - { "readv", 145 }, - { "reboot", 88 }, - { "recv", 336 }, - { "recvfrom", 337 }, - { "recvmmsg", 343 }, - { "recvmmsg_time64", 417 }, - { "recvmsg", 342 }, - { "remap_file_pages", 239 }, - { "removexattr", 218 }, - { "rename", 38 }, - { "renameat", 293 }, - { "renameat2", 357 }, - { "request_key", 270 }, - { "restart_syscall", 0 }, - { "rmdir", 40 }, - { "rseq", 387 }, - { "rt_sigaction", 173 }, - { "rt_sigpending", 175 }, - { "rt_sigprocmask", 174 }, - { "rt_sigqueueinfo", 177 }, - { "rt_sigreturn", 172 }, - { "rt_sigsuspend", 178 }, - { "rt_sigtimedwait", 176 }, - { "rt_sigtimedwait_time64", 421 }, - { "rt_tgsigqueueinfo", 322 }, - { "rtas", 255 }, - { "s390_guarded_storage", __PNR_s390_guarded_storage }, - { "s390_pci_mmio_read", __PNR_s390_pci_mmio_read }, - { "s390_pci_mmio_write", __PNR_s390_pci_mmio_write }, - { "s390_runtime_instr", __PNR_s390_runtime_instr }, - { "s390_sthyi", __PNR_s390_sthyi }, - { "sched_get_priority_max", 159 }, - { "sched_get_priority_min", 160 }, - { "sched_getaffinity", 223 }, - { "sched_getattr", 356 }, - { "sched_getparam", 155 }, - { "sched_getscheduler", 157 }, - { "sched_rr_get_interval", 161 }, - { "sched_rr_get_interval_time64", 423 }, - { "sched_setaffinity", 222 }, - { "sched_setattr", 355 }, - { "sched_setparam", 154 }, - { "sched_setscheduler", 156 }, - { "sched_yield", 158 }, - { "seccomp", 358 }, - { "security", __PNR_security }, - { "select", 82 }, - { "semctl", 394 }, - { "semget", 393 }, - { "semop", __PNR_semop }, - { "semtimedop", __PNR_semtimedop }, - { "semtimedop_time64", 420 }, - { "send", 334 }, - { "sendfile", 186 }, - { "sendfile64", 226 }, - { "sendmmsg", 349 }, - { "sendmsg", 341 }, - { "sendto", 335 }, - { "set_mempolicy", 261 }, - { "set_robust_list", 300 }, - { "set_thread_area", __PNR_set_thread_area }, - { "set_tid_address", 232 }, - { "set_tls", __PNR_set_tls }, - { "setdomainname", 121 }, - { "setfsgid", 139 }, - { "setfsgid32", __PNR_setfsgid32 }, - { "setfsuid", 138 }, - { "setfsuid32", __PNR_setfsuid32 }, - { "setgid", 46 }, - { "setgid32", __PNR_setgid32 }, - { "setgroups", 81 }, - { "setgroups32", __PNR_setgroups32 }, - { "sethostname", 74 }, - { "setitimer", 104 }, - { "setns", 350 }, - { "setpgid", 57 }, - { "setpriority", 97 }, - { "setregid", 71 }, - { "setregid32", __PNR_setregid32 }, - { "setresgid", 169 }, - { "setresgid32", __PNR_setresgid32 }, - { "setresuid", 164 }, - { "setresuid32", __PNR_setresuid32 }, - { "setreuid", 70 }, - { "setreuid32", __PNR_setreuid32 }, - { "setrlimit", 75 }, - { "setsid", 66 }, - { "setsockopt", 339 }, - { "settimeofday", 79 }, - { "setuid", 23 }, - { "setuid32", __PNR_setuid32 }, - { "setxattr", 209 }, - { "sgetmask", 68 }, - { "shmat", 397 }, - { "shmctl", 396 }, - { "shmdt", 398 }, - { "shmget", 395 }, - { "shutdown", 338 }, - { "sigaction", 67 }, - { "sigaltstack", 185 }, - { "signal", 48 }, - { "signalfd", 305 }, - { "signalfd4", 313 }, - { "sigpending", 73 }, - { "sigprocmask", 126 }, - { "sigreturn", 119 }, - { "sigsuspend", 72 }, - { "socket", 326 }, - { "socketcall", 102 }, - { "socketpair", 333 }, - { "splice", 283 }, - { "spu_create", 279 }, - { "spu_run", 278 }, - { "ssetmask", 69 }, - { "stat", 106 }, - { "stat64", 195 }, - { "statfs", 99 }, - { "statfs64", 252 }, - { "statx", 383}, - { "stime", 25 }, - { "stty", 31 }, - { "subpage_prot", 310 }, - { "swapcontext", 249 }, - { "swapoff", 115 }, - { "swapon", 87 }, - { "switch_endian", 363 }, - { "symlink", 83 }, - { "symlinkat", 295 }, - { "sync", 36 }, - { "sync_file_range", __PNR_sync_file_range }, - { "sync_file_range2", 308 }, - { "syncfs", 348 }, - { "syscall", __PNR_syscall }, - { "sys_debug_setcontext", 256 }, - { "sysfs", 135 }, - { "sysinfo", 116 }, - { "syslog", 103 }, - { "sysmips", __PNR_sysmips }, - { "tee", 284 }, - { "tgkill", 250 }, - { "time", 13 }, - { "timer_create", 240 }, - { "timer_delete", 244 }, - { "timer_getoverrun", 243 }, - { "timer_gettime", 242 }, - { "timer_gettime64", 408 }, - { "timer_settime", 241 }, - { "timer_settime64", 409 }, - { "timerfd", __PNR_timerfd }, - { "timerfd_create", 306 }, - { "timerfd_gettime", 312 }, - { "timerfd_gettime64", 410 }, - { "timerfd_settime", 311 }, - { "timerfd_settime64", 411 }, - { "times", 43 }, - { "tkill", 208 }, - { "truncate", 92 }, - { "truncate64", 193 }, - { "tuxcall", 225 }, - { "ugetrlimit", 190 }, - { "ulimit", 58 }, - { "umask", 60 }, - { "umount", 22 }, - { "umount2", 52 }, - { "uname", 122 }, - { "unlink", 10 }, - { "unlinkat", 292 }, - { "unshare", 282 }, - { "uselib", 86 }, - { "userfaultfd", 364 }, - { "usr26", __PNR_usr26 }, - { "usr32", __PNR_usr32 }, - { "ustat", 62 }, - { "utime", 30 }, - { "utimensat", 304 }, - { "utimensat_time64", 412 }, - { "utimes", 251 }, - { "vfork", 189 }, - { "vhangup", 111 }, - { "vm86", 113 }, - { "vm86old", __PNR_vm86old }, - { "vmsplice", 285 }, - { "vserver", __PNR_vserver }, - { "wait4", 114 }, - { "waitid", 272 }, - { "waitpid", 7 }, - { "write", 4 }, - { "writev", 146 }, - { NULL, __NR_SCMP_ERROR }, -}; - -/** - * Resolve a syscall name to a number - * @param name the syscall name - * - * Resolve the given syscall name to the syscall number using the syscall table. - * Returns the syscall number on success, including negative pseudo syscall - * numbers; returns __NR_SCMP_ERROR on failure. - * - */ -int ppc_syscall_resolve_name(const char *name) -{ - unsigned int iter; - const struct arch_syscall_def *table = ppc_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].name != NULL; iter++) { - if (strcmp(name, table[iter].name) == 0) - return table[iter].num; - } - - return __NR_SCMP_ERROR; -} - -/** - * Resolve a syscall number to a name - * @param num the syscall number - * - * Resolve the given syscall number to the syscall name using the syscall table. - * Returns a pointer to the syscall name string on success, including pseudo - * syscall names; returns NULL on failure. - * - */ -const char *ppc_syscall_resolve_num(int num) -{ - unsigned int iter; - const struct arch_syscall_def *table = ppc_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].num != __NR_SCMP_ERROR; iter++) { - if (num == table[iter].num) - return table[iter].name; - } - - return NULL; -} - -/** - * Iterate through the syscall table and return the syscall mapping - * @param spot the offset into the syscall table - * - * Return the syscall mapping at position @spot or NULL on failure. This - * function should only ever be used internally by libseccomp. - * - */ -const struct arch_syscall_def *ppc_syscall_iterate(unsigned int spot) -{ - /* XXX - no safety checks here */ - return &ppc_syscall_table[spot]; -} diff --git a/src/arch-ppc64-syscalls.c b/src/arch-ppc64-syscalls.c deleted file mode 100644 index 41f82af..0000000 --- a/src/arch-ppc64-syscalls.c +++ /dev/null @@ -1,559 +0,0 @@ -/** - * Enhanced Seccomp PPC64 Specific Code - * - * Copyright (c) 2014 Red Hat <pmoore@redhat.com> - * Author: Paul Moore <paul@paul-moore.com> - * - */ - -/* - * This library is free software; you can redistribute it and/or modify it - * under the terms of version 2.1 of the GNU Lesser General Public License as - * published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, see <http://www.gnu.org/licenses>. - */ - -#include <string.h> - -#include <seccomp.h> - -#include "arch.h" -#include "arch-ppc64.h" - -/* NOTE: based on Linux v5.4-rc4 */ -const struct arch_syscall_def ppc64_syscall_table[] = { \ - { "_llseek", 140 }, - { "_newselect", 142 }, - { "_sysctl", 149 }, - { "accept", 330 }, - { "accept4", 344 }, - { "access", 33 }, - { "acct", 51 }, - { "add_key", 269 }, - { "adjtimex", 124 }, - { "afs_syscall", 137 }, - { "alarm", 27 }, - { "arm_fadvise64_64", __PNR_arm_fadvise64_64 }, - { "arm_sync_file_range", __PNR_arm_sync_file_range }, - { "arch_prctl", __PNR_arch_prctl }, - { "bdflush", 134 }, - { "bind", 327 }, - { "bpf", 361 }, - { "break", 17 }, - { "breakpoint", __PNR_breakpoint }, - { "brk", 45 }, - { "cachectl", __PNR_cachectl }, - { "cacheflush", __PNR_cacheflush }, - { "capget", 183 }, - { "capset", 184 }, - { "chdir", 12 }, - { "chmod", 15 }, - { "chown", 181 }, - { "chown32", __PNR_chown32 }, - { "chroot", 61 }, - { "clock_adjtime", 347 }, - { "clock_adjtime64", __PNR_clock_adjtime64 }, - { "clock_getres", 247 }, - { "clock_getres_time64", __PNR_clock_getres_time64 }, - { "clock_gettime", 246 }, - { "clock_gettime64", __PNR_clock_gettime64 }, - { "clock_nanosleep", 248 }, - { "clock_nanosleep_time64", __PNR_clock_nanosleep_time64 }, - { "clock_settime", 245 }, - { "clock_settime64", __PNR_clock_settime64 }, - { "clone", 120 }, - { "clone3", 435 }, - { "close", 6 }, - { "connect", 328 }, - { "copy_file_range", 379 }, - { "creat", 8 }, - { "create_module", 127 }, - { "delete_module", 129 }, - { "dup", 41 }, - { "dup2", 63 }, - { "dup3", 316 }, - { "epoll_create", 236 }, - { "epoll_create1", 315 }, - { "epoll_ctl", 237 }, - { "epoll_ctl_old", __PNR_epoll_ctl_old }, - { "epoll_pwait", 303 }, - { "epoll_wait", 238 }, - { "epoll_wait_old", __PNR_epoll_wait_old }, - { "eventfd", 307 }, - { "eventfd2", 314 }, - { "execve", 11 }, - { "execveat", 362 }, - { "exit", 1 }, - { "exit_group", 234 }, - { "faccessat", 298 }, - { "fadvise64", 233 }, - { "fadvise64_64", __PNR_fadvise64_64 }, - { "fallocate", 309 }, - { "fanotify_init", 323 }, - { "fanotify_mark", 324 }, - { "fchdir", 133 }, - { "fchmod", 94 }, - { "fchmodat", 297 }, - { "fchown", 95 }, - { "fchown32", __PNR_fchown32 }, - { "fchownat", 289 }, - { "fcntl", 55 }, - { "fcntl64", __PNR_fcntl64 }, - { "fdatasync", 148 }, - { "fgetxattr", 214 }, - { "finit_module", 353 }, - { "flistxattr", 217 }, - { "flock", 143 }, - { "fork", 2 }, - { "fremovexattr", 220 }, - { "fsconfig", 431 }, - { "fsetxattr", 211 }, - { "fsmount", 432 }, - { "fsopen", 430 }, - { "fspick", 433 }, - { "fstat", 108 }, - { "fstat64", __PNR_fstat64 }, - { "fstatat64", __PNR_fstatat64 }, - { "fstatfs", 100 }, - { "fstatfs64", 253 }, - { "fsync", 118 }, - { "ftime", 35 }, - { "ftruncate", 93 }, - { "ftruncate64", __PNR_ftruncate64 }, - { "futex", 221 }, - { "futex_time64", __PNR_futex_time64 }, - { "futimesat", 290 }, - { "get_kernel_syms", 130 }, - { "get_mempolicy", 260 }, - { "get_robust_list", 299 }, - { "get_thread_area", __PNR_get_thread_area }, - { "get_tls", __PNR_get_tls }, - { "getcpu", 302 }, - { "getcwd", 182 }, - { "getdents", 141 }, - { "getdents64", 202 }, - { "getegid", 50 }, - { "getegid32", __PNR_getegid32 }, - { "geteuid", 49 }, - { "geteuid32", __PNR_geteuid32 }, - { "getgid", 47 }, - { "getgid32", __PNR_getgid32 }, - { "getgroups", 80 }, - { "getgroups32", __PNR_getgroups32 }, - { "getitimer", 105 }, - { "getpeername", 332 }, - { "getpgid", 132 }, - { "getpgrp", 65 }, - { "getpid", 20 }, - { "getpmsg", 187 }, - { "getppid", 64 }, - { "getpriority", 96 }, - { "getrandom", 359 }, - { "getresgid", 170 }, - { "getresgid32", __PNR_getresgid32 }, - { "getresuid", 165 }, - { "getresuid32", __PNR_getresuid32 }, - { "getrlimit", 76 }, - { "getrusage", 77 }, - { "getsid", 147 }, - { "getsockname", 331 }, - { "getsockopt", 340 }, - { "gettid", 207 }, - { "gettimeofday", 78 }, - { "getuid", 24 }, - { "getuid32", __PNR_getuid32 }, - { "getxattr", 212 }, - { "gtty", 32 }, - { "idle", 112 }, - { "init_module", 128 }, - { "inotify_add_watch", 276 }, - { "inotify_init", 275 }, - { "inotify_init1", 318 }, - { "inotify_rm_watch", 277 }, - { "io_cancel", 231 }, - { "io_destroy", 228 }, - { "io_getevents", 229 }, - { "io_pgetevents", 388 }, - { "io_pgetevents_time64", __PNR_io_pgetevents_time64 }, - { "io_setup", 227 }, - { "io_submit", 230 }, - { "io_uring_setup", 425 }, - { "io_uring_enter", 426 }, - { "io_uring_register", 427 }, - { "ioctl", 54 }, - { "ioperm", 101 }, - { "iopl", 110 }, - { "ioprio_get", 274 }, - { "ioprio_set", 273 }, - { "ipc", 117 }, - { "kcmp", 354 }, - { "kexec_file_load", 382 }, - { "kexec_load", 268 }, - { "keyctl", 271 }, - { "kill", 37 }, - { "lchown", 16 }, - { "lchown32", __PNR_lchown32 }, - { "lgetxattr", 213 }, - { "link", 9 }, - { "linkat", 294 }, - { "listen", 329 }, - { "listxattr", 215 }, - { "llistxattr", 216 }, - { "lock", 53 }, - { "lookup_dcookie", 235 }, - { "lremovexattr", 219 }, - { "lseek", 19 }, - { "lsetxattr", 210 }, - { "lstat", 107 }, - { "lstat64", __PNR_lstat64 }, - { "madvise", 205 }, - { "mbind", 259 }, - { "membarrier", 365 }, - { "memfd_create", 360 }, - { "migrate_pages", 258 }, - { "mincore", 206 }, - { "mkdir", 39 }, - { "mkdirat", 287 }, - { "mknod", 14 }, - { "mknodat", 288 }, - { "mlock", 150 }, - { "mlock2", 378 }, - { "mlockall", 152 }, - { "mmap", 90 }, - { "mmap2", __PNR_mmap2 }, - { "modify_ldt", 123 }, - { "mount", 21 }, - { "move_mount", 429 }, - { "move_pages", 301 }, - { "mprotect", 125 }, - { "mpx", 56 }, - { "mq_getsetattr", 267 }, - { "mq_notify", 266 }, - { "mq_open", 262 }, - { "mq_timedreceive", 265 }, - { "mq_timedreceive_time64", __PNR_mq_timedreceive_time64 }, - { "mq_timedsend", 264 }, - { "mq_timedsend_time64", __PNR_mq_timedsend_time64 }, - { "mq_unlink", 263 }, - { "mremap", 163 }, - { "msgctl", 402 }, - { "msgget", 399 }, - { "msgrcv", 401 }, - { "msgsnd", 400 }, - { "msync", 144 }, - { "multiplexer", 201 }, - { "munlock", 151 }, - { "munlockall", 153 }, - { "munmap", 91 }, - { "name_to_handle_at", 345 }, - { "nanosleep", 162 }, - { "newfstatat", 291 }, - { "nfsservctl", 168 }, - { "nice", 34 }, - { "oldfstat", 28 }, - { "oldlstat", 84 }, - { "oldolduname", 59 }, - { "oldstat", 18 }, - { "olduname", 109 }, - { "oldwait4", __PNR_oldwait4 }, - { "open", 5 }, - { "open_by_handle_at", 346 }, - { "open_tree", 428 }, - { "openat", 286 }, - { "pause", 29 }, - { "pciconfig_iobase", 200 }, - { "pciconfig_read", 198 }, - { "pciconfig_write", 199 }, - { "perf_event_open", 319 }, - { "personality", 136 }, - { "pidfd_open", 434 }, - { "pidfd_send_signal", 424 }, - { "pipe", 42 }, - { "pipe2", 317 }, - { "pivot_root", 203 }, - { "pkey_alloc", 384 }, - { "pkey_free", 385 }, - { "pkey_mprotect", 386 }, - { "poll", 167 }, - { "ppoll", 281 }, - { "ppoll_time64", __PNR_ppoll_time64 }, - { "prctl", 171 }, - { "pread64", 179 }, - { "preadv", 320 }, - { "preadv2", 380 }, - { "prlimit64", 325 }, - { "process_vm_readv", 351 }, - { "process_vm_writev", 352 }, - { "prof", 44 }, - { "profil", 98 }, - { "pselect6", 280 }, - { "pselect6_time64", __PNR_pselect6_time64 }, - { "ptrace", 26 }, - { "putpmsg", 188 }, - { "pwrite64", 180 }, - { "pwritev", 321 }, - { "pwritev2", 381 }, - { "query_module", 166 }, - { "quotactl", 131 }, - { "read", 3 }, - { "readahead", 191 }, - { "readdir", 89 }, - { "readlink", 85 }, - { "readlinkat", 296 }, - { "readv", 145 }, - { "reboot", 88 }, - { "recv", 336 }, - { "recvfrom", 337 }, - { "recvmmsg", 343 }, - { "recvmmsg_time64", __PNR_recvmmsg_time64 }, - { "recvmsg", 342 }, - { "remap_file_pages", 239 }, - { "removexattr", 218 }, - { "rename", 38 }, - { "renameat", 293 }, - { "renameat2", 357 }, - { "request_key", 270 }, - { "restart_syscall", 0 }, - { "rmdir", 40 }, - { "rseq", 387 }, - { "rt_sigaction", 173 }, - { "rt_sigpending", 175 }, - { "rt_sigprocmask", 174 }, - { "rt_sigqueueinfo", 177 }, - { "rt_sigreturn", 172 }, - { "rt_sigsuspend", 178 }, - { "rt_sigtimedwait", 176 }, - { "rt_sigtimedwait_time64", __PNR_rt_sigtimedwait_time64 }, - { "rt_tgsigqueueinfo", 322 }, - { "rtas", 255 }, - { "s390_guarded_storage", __PNR_s390_guarded_storage }, - { "s390_pci_mmio_read", __PNR_s390_pci_mmio_read }, - { "s390_pci_mmio_write", __PNR_s390_pci_mmio_write }, - { "s390_runtime_instr", __PNR_s390_runtime_instr }, - { "s390_sthyi", __PNR_s390_sthyi }, - { "sched_get_priority_max", 159 }, - { "sched_get_priority_min", 160 }, - { "sched_getaffinity", 223 }, - { "sched_getattr", 356 }, - { "sched_getparam", 155 }, - { "sched_getscheduler", 157 }, - { "sched_rr_get_interval", 161 }, - { "sched_rr_get_interval_time64", __PNR_sched_rr_get_interval_time64 }, - { "sched_setaffinity", 222 }, - { "sched_setattr", 355 }, - { "sched_setparam", 154 }, - { "sched_setscheduler", 156 }, - { "sched_yield", 158 }, - { "seccomp", 358 }, - { "security", __PNR_security }, - { "select", 82 }, - { "semctl", 394 }, - { "semget", 393 }, - { "semop", __PNR_semop }, - { "semtimedop", 392 }, - { "semtimedop_time64", __PNR_semtimedop_time64 }, - { "send", 334 }, - { "sendfile", 186 }, - { "sendfile64", __PNR_sendfile64 }, - { "sendmmsg", 349 }, - { "sendmsg", 341 }, - { "sendto", 335 }, - { "set_mempolicy", 261 }, - { "set_robust_list", 300 }, - { "set_thread_area", __PNR_set_thread_area }, - { "set_tid_address", 232 }, - { "set_tls", __PNR_set_tls }, - { "setdomainname", 121 }, - { "setfsgid", 139 }, - { "setfsgid32", __PNR_setfsgid32 }, - { "setfsuid", 138 }, - { "setfsuid32", __PNR_setfsuid32 }, - { "setgid", 46 }, - { "setgid32", __PNR_setgid32 }, - { "setgroups", 81 }, - { "setgroups32", __PNR_setgroups32 }, - { "sethostname", 74 }, - { "setitimer", 104 }, - { "setns", 350 }, - { "setpgid", 57 }, - { "setpriority", 97 }, - { "setregid", 71 }, - { "setregid32", __PNR_setregid32 }, - { "setresgid", 169 }, - { "setresgid32", __PNR_setresgid32 }, - { "setresuid", 164 }, - { "setresuid32", __PNR_setresuid32 }, - { "setreuid", 70 }, - { "setreuid32", __PNR_setreuid32 }, - { "setrlimit", 75 }, - { "setsid", 66 }, - { "setsockopt", 339 }, - { "settimeofday", 79 }, - { "setuid", 23 }, - { "setuid32", __PNR_setuid32 }, - { "setxattr", 209 }, - { "sgetmask", 68 }, - { "shmat", 397 }, - { "shmctl", 396 }, - { "shmdt", 398 }, - { "shmget", 395 }, - { "shutdown", 338 }, - { "sigaction", 67 }, - { "sigaltstack", 185 }, - { "signal", 48 }, - { "signalfd", 305 }, - { "signalfd4", 313 }, - { "sigpending", 73 }, - { "sigprocmask", 126 }, - { "sigreturn", 119 }, - { "sigsuspend", 72 }, - { "socket", 326 }, - { "socketcall", 102 }, - { "socketpair", 333 }, - { "splice", 283 }, - { "spu_create", 279 }, - { "spu_run", 278 }, - { "ssetmask", 69 }, - { "stat", 106 }, - { "stat64", __PNR_stat64 }, - { "statfs", 99 }, - { "statfs64", 252 }, - { "statx", 383}, - { "stime", 25 }, - { "stty", 31 }, - { "subpage_prot", 310 }, - { "swapcontext", 249 }, - { "swapoff", 115 }, - { "swapon", 87 }, - { "switch_endian", 363 }, - { "symlink", 83 }, - { "symlinkat", 295 }, - { "sync", 36 }, - { "sync_file_range", __PNR_sync_file_range }, - { "sync_file_range2", 308 }, - { "syncfs", 348 }, - { "syscall", __PNR_syscall }, - { "sys_debug_setcontext", 256 }, - { "sysfs", 135 }, - { "sysinfo", 116 }, - { "syslog", 103 }, - { "sysmips", __PNR_sysmips }, - { "tee", 284 }, - { "tgkill", 250 }, - { "time", 13 }, - { "timer_create", 240 }, - { "timer_delete", 244 }, - { "timer_getoverrun", 243 }, - { "timer_gettime", 242 }, - { "timer_gettime64", __PNR_timer_gettime64 }, - { "timer_settime", 241 }, - { "timer_settime64", __PNR_timer_settime64 }, - { "timerfd", __PNR_timerfd }, - { "timerfd_create", 306 }, - { "timerfd_gettime", 312 }, - { "timerfd_gettime64", __PNR_timerfd_gettime64 }, - { "timerfd_settime", 311 }, - { "timerfd_settime64", __PNR_timerfd_settime64 }, - { "times", 43 }, - { "tkill", 208 }, - { "truncate", 92 }, - { "truncate64", __PNR_truncate64 }, - { "tuxcall", 225 }, - { "ugetrlimit", 190 }, - { "ulimit", 58 }, - { "umask", 60 }, - { "umount", 22 }, - { "umount2", 52 }, - { "uname", 122 }, - { "unlink", 10 }, - { "unlinkat", 292 }, - { "unshare", 282 }, - { "uselib", 86 }, - { "userfaultfd", 364 }, - { "usr26", __PNR_usr26 }, - { "usr32", __PNR_usr32 }, - { "ustat", 62 }, - { "utime", 30 }, - { "utimensat", 304 }, - { "utimensat_time64", __PNR_utimensat_time64 }, - { "utimes", 251 }, - { "vfork", 189 }, - { "vhangup", 111 }, - { "vm86", 113 }, - { "vm86old", __PNR_vm86old }, - { "vmsplice", 285 }, - { "vserver", __PNR_vserver }, - { "wait4", 114 }, - { "waitid", 272 }, - { "waitpid", 7 }, - { "write", 4 }, - { "writev", 146 }, - { NULL, __NR_SCMP_ERROR }, -}; - -/** - * Resolve a syscall name to a number - * @param name the syscall name - * - * Resolve the given syscall name to the syscall number using the syscall table. - * Returns the syscall number on success, including negative pseudo syscall - * numbers; returns __NR_SCMP_ERROR on failure. - * - */ -int ppc64_syscall_resolve_name(const char *name) -{ - unsigned int iter; - const struct arch_syscall_def *table = ppc64_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].name != NULL; iter++) { - if (strcmp(name, table[iter].name) == 0) - return table[iter].num; - } - - return __NR_SCMP_ERROR; -} - -/** - * Resolve a syscall number to a name - * @param num the syscall number - * - * Resolve the given syscall number to the syscall name using the syscall table. - * Returns a pointer to the syscall name string on success, including pseudo - * syscall names; returns NULL on failure. - * - */ -const char *ppc64_syscall_resolve_num(int num) -{ - unsigned int iter; - const struct arch_syscall_def *table = ppc64_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].num != __NR_SCMP_ERROR; iter++) { - if (num == table[iter].num) - return table[iter].name; - } - - return NULL; -} - -/** - * Iterate through the syscall table and return the syscall mapping - * @param spot the offset into the syscall table - * - * Return the syscall mapping at position @spot or NULL on failure. This - * function should only ever be used internally by libseccomp. - * - */ -const struct arch_syscall_def *ppc64_syscall_iterate(unsigned int spot) -{ - /* XXX - no safety checks here */ - return &ppc64_syscall_table[spot]; -} diff --git a/src/arch-riscv64-syscalls.c b/src/arch-riscv64-syscalls.c deleted file mode 100644 index ceebece..0000000 --- a/src/arch-riscv64-syscalls.c +++ /dev/null @@ -1,553 +0,0 @@ -/* - * This library is free software; you can redistribute it and/or modify it - * under the terms of version 2.1 of the GNU Lesser General Public License as - * published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, see <http://www.gnu.org/licenses>. - */ - -#include <string.h> - -#include <seccomp.h> - -#include "arch.h" -#include "arch-riscv64.h" - -/* NOTE: based on Linux 5.4 */ -const struct arch_syscall_def riscv64_syscall_table[] = { \ - { "_llseek", __PNR__llseek }, - { "_newselect", __PNR__newselect }, - { "_sysctl", __PNR__sysctl }, - { "accept", 202 }, - { "accept4", 242 }, - { "access", __PNR_access }, - { "acct", 89 }, - { "add_key", 217 }, - { "adjtimex", 171 }, - { "afs_syscall", __PNR_afs_syscall }, - { "alarm", __PNR_alarm }, - { "arm_fadvise64_64", __PNR_arm_fadvise64_64 }, - { "arm_sync_file_range", __PNR_arm_sync_file_range }, - { "arch_prctl", __PNR_arch_prctl }, - { "bdflush", __PNR_bdflush }, - { "bind", 200 }, - { "bpf", 280 }, - { "break", __PNR_break }, - { "breakpoint", __PNR_breakpoint }, - { "brk", 214 }, - { "cachectl", __PNR_cachectl }, - { "cacheflush", __PNR_cacheflush }, - { "capget", 90 }, - { "capset", 91 }, - { "chdir", 49 }, - { "chmod", __PNR_chmod }, - { "chown", __PNR_chown }, - { "chown32", __PNR_chown32 }, - { "chroot", 51 }, - { "clock_adjtime", 266 }, - { "clock_adjtime64", __PNR_clock_adjtime64 }, - { "clock_getres", 114 }, - { "clock_getres_time64", __PNR_clock_getres_time64 }, - { "clock_gettime", 113 }, - { "clock_gettime64", __PNR_clock_gettime64 }, - { "clock_nanosleep", 115 }, - { "clock_nanosleep_time64", __PNR_clock_nanosleep_time64 }, - { "clock_settime", 112 }, - { "clock_settime64", __PNR_clock_settime64 }, - { "clone", 220 }, - { "clone3", 435 }, - { "close", 57 }, - { "connect", 203 }, - { "copy_file_range", 285 }, - { "creat", __PNR_creat }, - { "create_module", __PNR_create_module }, - { "delete_module", 106 }, - { "dup", 23 }, - { "dup2", __PNR_dup2 }, - { "dup3", 24 }, - { "epoll_create", __PNR_epoll_create }, - { "epoll_create1", 20 }, - { "epoll_ctl", 21 }, - { "epoll_ctl_old", __PNR_epoll_ctl_old }, - { "epoll_pwait", 22 }, - { "epoll_wait", __PNR_epoll_wait }, - { "epoll_wait_old", __PNR_epoll_wait_old }, - { "eventfd", __PNR_eventfd }, - { "eventfd2", 19 }, - { "execve", 221 }, - { "execveat", 281 }, - { "exit", 93 }, - { "exit_group", 94 }, - { "faccessat", 48 }, - { "fadvise64", 223 }, - { "fadvise64_64", __PNR_fadvise64_64 }, - { "fallocate", 47 }, - { "fanotify_init", 262 }, - { "fanotify_mark", 263 }, - { "fchdir", 50 }, - { "fchmod", 52 }, - { "fchmodat", 53 }, - { "fchown", 55 }, - { "fchown32", __PNR_fchown32 }, - { "fchownat", 54 }, - { "fcntl", 25 }, - { "fcntl64", __PNR_fcntl64 }, - { "fdatasync", 83 }, - { "fgetxattr", 10 }, - { "finit_module", 273 }, - { "flistxattr", 13 }, - { "flock", 32 }, - { "fork", __PNR_fork }, - { "fremovexattr", 16 }, - { "fsconfig", 431 }, - { "fsetxattr", 7 }, - { "fsmount", 432 }, - { "fsopen", 430 }, - { "fspick", 433 }, - { "fstat", 80 }, - { "fstat64", __PNR_fstat64 }, - { "fstatat64", __PNR_fstatat64 }, - { "fstatfs", 44 }, - { "fstatfs64", __PNR_fstatfs64 }, - { "fsync", 82 }, - { "ftime", __PNR_ftime }, - { "ftruncate", 46 }, - { "ftruncate64", __PNR_ftruncate64 }, - { "futex", 98 }, - { "futex_time64", __PNR_futex_time64 }, - { "futimesat", __PNR_futimesat }, - { "get_kernel_syms", __PNR_get_kernel_syms }, - { "get_mempolicy", 236 }, - { "get_robust_list", 100 }, - { "get_thread_area", __PNR_get_thread_area }, - { "get_tls", __PNR_get_tls }, - { "getcpu", 168 }, - { "getcwd", 17 }, - { "getdents", __PNR_getdents }, - { "getdents64", 61 }, - { "getegid", 177 }, - { "getegid32", __PNR_getegid32 }, - { "geteuid", 175 }, - { "geteuid32", __PNR_geteuid32 }, - { "getgid", 176 }, - { "getgid32", __PNR_getgid32 }, - { "getgroups", 158 }, - { "getgroups32", __PNR_getgroups32 }, - { "getitimer", 102 }, - { "getpeername", 205 }, - { "getpgid", 155 }, - { "getpgrp", __PNR_getpgrp }, - { "getpid", 172 }, - { "getpmsg", __PNR_getpmsg }, - { "getppid", 173 }, - { "getpriority", 141 }, - { "getrandom", 278 }, - { "getresgid", 150 }, - { "getresgid32", __PNR_getresgid32 }, - { "getresuid", 148 }, - { "getresuid32", __PNR_getresuid32 }, - { "getrlimit", 163 }, - { "getrusage", 165 }, - { "getsid", 156 }, - { "getsockname", 204 }, - { "getsockopt", 209 }, - { "gettid", 178 }, - { "gettimeofday", 169 }, - { "getuid", 174 }, - { "getuid32", __PNR_getuid32 }, - { "getxattr", 8 }, - { "gtty", __PNR_gtty }, - { "idle", __PNR_idle }, - { "init_module", 105 }, - { "inotify_add_watch", 27 }, - { "inotify_init", __PNR_inotify_init }, - { "inotify_init1", 26 }, - { "inotify_rm_watch", 28 }, - { "io_cancel", 3 }, - { "io_destroy", 1 }, - { "io_getevents", 4 }, - { "io_pgetevents", 292 }, - { "io_pgetevents_time64", __PNR_io_pgetevents_time64 }, - { "io_setup", 0 }, - { "io_submit", 2 }, - { "io_uring_enter", 426 }, - { "io_uring_register", 427 }, - { "io_uring_setup", 425 }, - { "ioctl", 29 }, - { "ioperm", __PNR_ioperm }, - { "iopl", __PNR_iopl }, - { "ioprio_get", 31 }, - { "ioprio_set", 30 }, - { "ipc", __PNR_ipc }, - { "kcmp", 272 }, - { "kexec_file_load", 294 }, - { "kexec_load", 104 }, - { "keyctl", 219 }, - { "kill", 129 }, - { "lchown", __PNR_lchown }, - { "lchown32", __PNR_lchown32 }, - { "lgetxattr", 9 }, - { "link", __PNR_link }, - { "linkat", 37 }, - { "listen", 201 }, - { "listxattr", 11 }, - { "llistxattr", 12 }, - { "lock", __PNR_lock }, - { "lookup_dcookie", 18 }, - { "lremovexattr", 15 }, - { "lseek", 62 }, - { "lsetxattr", 6 }, - { "lstat", __PNR_lstat }, - { "lstat64", __PNR_lstat64 }, - { "madvise", 233 }, - { "mbind", 235 }, - { "membarrier", 283 }, - { "memfd_create", 279 }, - { "migrate_pages", 238 }, - { "mincore", 232 }, - { "mkdir", __PNR_mkdir }, - { "mkdirat", 34 }, - { "mknod", __PNR_mknod }, - { "mknodat", 33 }, - { "mlock", 228 }, - { "mlock2", 284 }, - { "mlockall", 230 }, - { "mmap", 222 }, - { "mmap2", __PNR_mmap2 }, - { "modify_ldt", __PNR_modify_ldt }, - { "mount", 40 }, - { "move_mount", 429 }, - { "move_pages", 239 }, - { "mprotect", 226 }, - { "mpx", __PNR_mpx }, - { "mq_getsetattr", 185 }, - { "mq_notify", 184 }, - { "mq_open", 180 }, - { "mq_timedreceive", 183 }, - { "mq_timedreceive_time64", __PNR_mq_timedreceive_time64 }, - { "mq_timedsend", 182 }, - { "mq_timedsend_time64", __PNR_mq_timedsend_time64 }, - { "mq_unlink", 181 }, - { "mremap", 216 }, - { "msgctl", 187 }, - { "msgget", 186 }, - { "msgrcv", 188 }, - { "msgsnd", 189 }, - { "msync", 227 }, - { "multiplexer", __PNR_multiplexer }, - { "munlock", 229 }, - { "munlockall", 231 }, - { "munmap", 215 }, - { "name_to_handle_at", 264 }, - { "nanosleep", 101 }, - { "newfstatat", 79 }, - { "nfsservctl", 42 }, - { "nice", __PNR_nice }, - { "oldfstat", __PNR_oldfstat }, - { "oldlstat", __PNR_oldlstat }, - { "oldolduname", __PNR_oldolduname }, - { "oldstat", __PNR_oldstat }, - { "olduname", __PNR_olduname }, - { "oldwait4", __PNR_oldwait4 }, - { "open", __PNR_open }, - { "open_by_handle_at", 265 }, - { "open_tree", 428 }, - { "openat", 56 }, - { "pause", __PNR_pause }, - { "pciconfig_iobase", __PNR_pciconfig_iobase }, - { "pciconfig_read", __PNR_pciconfig_read }, - { "pciconfig_write", __PNR_pciconfig_write }, - { "perf_event_open", 241 }, - { "personality", 92 }, - { "pidfd_open", 434 }, - { "pidfd_send_signal", 424 }, - { "pipe", __PNR_pipe }, - { "pipe2", 59 }, - { "pivot_root", 41 }, - { "pkey_alloc", 289 }, - { "pkey_free", 290 }, - { "pkey_mprotect", 288 }, - { "poll", __PNR_poll }, - { "ppoll", 73 }, - { "ppoll_time64", __PNR_ppoll_time64 }, - { "prctl", 167 }, - { "pread64", 67 }, - { "preadv", 69 }, - { "preadv2", 286 }, - { "prlimit64", 261 }, - { "process_vm_readv", 270 }, - { "process_vm_writev", 271 }, - { "prof", __PNR_prof }, - { "profil", __PNR_profil }, - { "pselect6", 72 }, - { "pselect6_time64", __PNR_pselect6_time64 }, - { "ptrace", 117 }, - { "putpmsg", __PNR_putpmsg }, - { "pwrite64", 68 }, - { "pwritev", 70 }, - { "pwritev2", 287 }, - { "query_module", __PNR_query_module }, - { "quotactl", 60 }, - { "read", 63 }, - { "readahead", 213 }, - { "readdir", __PNR_readdir }, - { "readlink", __PNR_readlink }, - { "readlinkat", 78 }, - { "readv", 65 }, - { "reboot", 142 }, - { "recv", __PNR_recv }, - { "recvfrom", 207 }, - { "recvmmsg", 243 }, - { "recvmmsg_time64", __PNR_recvmmsg_time64 }, - { "recvmsg", 212 }, - { "remap_file_pages", 234 }, - { "removexattr", 14 }, - { "rename", __PNR_rename }, - { "renameat", __PNR_renameat }, - { "renameat2", 276 }, - { "request_key", 218 }, - { "restart_syscall", 128 }, - { "rmdir", __PNR_rmdir }, - { "riscv_flush_icache", 244 }, - { "rseq", 293 }, - { "rt_sigaction", 134 }, - { "rt_sigpending", 136 }, - { "rt_sigprocmask", 135 }, - { "rt_sigqueueinfo", 138 }, - { "rt_sigreturn", 139 }, - { "rt_sigsuspend", 133 }, - { "rt_sigtimedwait", 137 }, - { "rt_sigtimedwait_time64", __PNR_rt_sigtimedwait_time64 }, - { "rt_tgsigqueueinfo", 240 }, - { "rtas", __PNR_rtas }, - { "s390_guarded_storage", __PNR_s390_guarded_storage }, - { "s390_pci_mmio_read", __PNR_s390_pci_mmio_read }, - { "s390_pci_mmio_write", __PNR_s390_pci_mmio_write }, - { "s390_runtime_instr", __PNR_s390_runtime_instr }, - { "s390_sthyi", __PNR_s390_sthyi }, - { "sched_get_priority_max", 125 }, - { "sched_get_priority_min", 126 }, - { "sched_getaffinity", 123 }, - { "sched_getattr", 275 }, - { "sched_getparam", 121 }, - { "sched_getscheduler", 120 }, - { "sched_rr_get_interval", 127 }, - { "sched_rr_get_interval_time64", __PNR_sched_rr_get_interval_time64 }, - { "sched_setaffinity", 122 }, - { "sched_setattr", 274 }, - { "sched_setparam", 118 }, - { "sched_setscheduler", 119 }, - { "sched_yield", 124 }, - { "seccomp", 277 }, - { "security", __PNR_security }, - { "select", __PNR_select }, - { "semctl", 191 }, - { "semget", 190 }, - { "semop", 193 }, - { "semtimedop", 192 }, - { "semtimedop_time64", __PNR_semtimedop_time64 }, - { "send", __PNR_send }, - { "sendfile", 71 }, - { "sendfile64", __PNR_sendfile64 }, - { "sendmmsg", 269 }, - { "sendmsg", 211 }, - { "sendto", 206 }, - { "set_mempolicy", 237 }, - { "set_robust_list", 99 }, - { "set_thread_area", __PNR_set_thread_area }, - { "set_tid_address", 96 }, - { "set_tls", __PNR_set_tls }, - { "setdomainname", 162 }, - { "setfsgid", 152 }, - { "setfsgid32", __PNR_setfsgid32 }, - { "setfsuid", 151 }, - { "setfsuid32", __PNR_setfsuid32 }, - { "setgid", 144 }, - { "setgid32", __PNR_setgid32 }, - { "setgroups", 159 }, - { "setgroups32", __PNR_setgroups32 }, - { "sethostname", 161 }, - { "setitimer", 103 }, - { "setns", 268 }, - { "setpgid", 154 }, - { "setpriority", 140 }, - { "setregid", 143 }, - { "setregid32", __PNR_setregid32 }, - { "setresgid", 149 }, - { "setresgid32", __PNR_setresgid32 }, - { "setresuid", 147 }, - { "setresuid32", __PNR_setresuid32 }, - { "setreuid", 145 }, - { "setreuid32", __PNR_setreuid32 }, - { "setrlimit", 164 }, - { "setsid", 157 }, - { "setsockopt", 208 }, - { "settimeofday", 170 }, - { "setuid", 146 }, - { "setuid32", __PNR_setuid32 }, - { "setxattr", 5 }, - { "sgetmask", __PNR_sgetmask }, - { "shmat", 196 }, - { "shmctl", 195 }, - { "shmdt", 197 }, - { "shmget", 194 }, - { "shutdown", 210 }, - { "sigaction", __PNR_sigaction }, - { "sigaltstack", 132 }, - { "signal", __PNR_signal }, - { "signalfd", __PNR_signalfd }, - { "signalfd4", 74 }, - { "sigpending", __PNR_sigpending }, - { "sigprocmask", __PNR_sigprocmask }, - { "sigreturn", __PNR_sigreturn }, - { "sigsuspend", __PNR_sigsuspend }, - { "socket", 198 }, - { "socketcall", __PNR_socketcall }, - { "socketpair", 199 }, - { "splice", 76 }, - { "spu_create", __PNR_spu_create }, - { "spu_run", __PNR_spu_run }, - { "ssetmask", __PNR_ssetmask }, - { "stat", __PNR_stat }, - { "stat64", __PNR_stat64 }, - { "statfs", 43 }, - { "statfs64", __PNR_statfs64 }, - { "statx", 291 }, - { "stime", __PNR_stime }, - { "stty", __PNR_stty }, - { "subpage_prot", __PNR_subpage_prot }, - { "swapcontext", __PNR_swapcontext }, - { "swapoff", 225 }, - { "swapon", 224 }, - { "switch_endian", __PNR_switch_endian }, - { "symlink", __PNR_symlink }, - { "symlinkat", 36 }, - { "sync", 81 }, - { "sync_file_range", 84 }, - { "sync_file_range2", __PNR_sync_file_range2 }, - { "syncfs", 267 }, - { "syscall", __PNR_syscall }, - { "sys_debug_setcontext", __PNR_sys_debug_setcontext }, - { "sysfs", __PNR_sysfs }, - { "sysinfo", 179 }, - { "syslog", 116 }, - { "sysmips", __PNR_sysmips }, - { "tee", 77 }, - { "tgkill", 131 }, - { "time", __PNR_time }, - { "timer_create", 107 }, - { "timer_delete", 111 }, - { "timer_getoverrun", 109 }, - { "timer_gettime", 108 }, - { "timer_gettime64", __PNR_timer_gettime64 }, - { "timer_settime", 110 }, - { "timer_settime64", __PNR_timer_settime64 }, - { "timerfd", __PNR_timerfd }, - { "timerfd_create", 85 }, - { "timerfd_gettime", 87 }, - { "timerfd_gettime64", __PNR_timerfd_gettime64 }, - { "timerfd_settime", 86 }, - { "timerfd_settime64", __PNR_timerfd_settime64 }, - { "times", 153 }, - { "tkill", 130 }, - { "truncate", 45 }, - { "truncate64", __PNR_truncate64 }, - { "tuxcall", __PNR_tuxcall }, - { "ugetrlimit", __PNR_ugetrlimit }, - { "ulimit", __PNR_ulimit }, - { "umask", 166 }, - { "umount", __PNR_umount }, - { "umount2", 39 }, - { "uname", 160 }, - { "unlink", __PNR_unlink }, - { "unlinkat", 35 }, - { "unshare", 97 }, - { "uselib", __PNR_uselib }, - { "userfaultfd", 282 }, - { "usr26", __PNR_usr26 }, - { "usr32", __PNR_usr32 }, - { "ustat", __PNR_ustat }, - { "utime", __PNR_utime }, - { "utimensat", 88 }, - { "utimensat_time64", __PNR_utimensat_time64 }, - { "utimes", __PNR_utimes }, - { "vfork", __PNR_vfork }, - { "vhangup", 58 }, - { "vm86", __PNR_vm86 }, - { "vm86old", __PNR_vm86old }, - { "vmsplice", 75 }, - { "vserver", __PNR_vserver }, - { "wait4", 260 }, - { "waitid", 95 }, - { "waitpid", __PNR_waitpid }, - { "write", 64 }, - { "writev", 66 }, - { NULL, __NR_SCMP_ERROR }, -}; - -/** - * Resolve a syscall name to a number - * @param name the syscall name - * - * Resolve the given syscall name to the syscall number using the syscall table. - * Returns the syscall number on success, including negative pseudo syscall - * numbers; returns __NR_SCMP_ERROR on failure. - * - */ -int riscv64_syscall_resolve_name(const char *name) -{ - unsigned int iter; - const struct arch_syscall_def *table = riscv64_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].name != NULL; iter++) { - if (strcmp(name, table[iter].name) == 0) - return table[iter].num; - } - - return __NR_SCMP_ERROR; -} - -/** - * Resolve a syscall number to a name - * @param num the syscall number - * - * Resolve the given syscall number to the syscall name using the syscall table. - * Returns a pointer to the syscall name string on success, including pseudo - * syscall names; returns NULL on failure. - * - */ -const char *riscv64_syscall_resolve_num(int num) -{ - unsigned int iter; - const struct arch_syscall_def *table = riscv64_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].num != __NR_SCMP_ERROR; iter++) { - if (num == table[iter].num) - return table[iter].name; - } - - return NULL; -} - - -/** - * Iterate through the syscall table and return the syscall mapping - * @param spot the offset into the syscall table - * - * Return the syscall mapping at position @spot or NULL on failure. This - * function should only ever be used internally by libseccomp. - * - */ -const struct arch_syscall_def *riscv64_syscall_iterate(unsigned int spot) -{ - /* XXX - no safety checks here */ - return &riscv64_syscall_table[spot]; -} diff --git a/src/arch-s390-syscalls.c b/src/arch-s390-syscalls.c deleted file mode 100644 index 6dd84db..0000000 --- a/src/arch-s390-syscalls.c +++ /dev/null @@ -1,642 +0,0 @@ -/* - * Copyright 2015 IBM - * Author: Jan Willeke <willeke@linux.vnet.com.com> - */ - -#include <string.h> - -#include <seccomp.h> - -#include "arch.h" -#include "arch-s390.h" - -/* NOTE: based on Linux v5.4-rc4 */ -const struct arch_syscall_def s390_syscall_table[] = { \ - { "_llseek", 140 }, - { "_newselect", 142 }, - { "_sysctl", 149 }, - { "accept", __PNR_accept }, - { "accept4", 364 }, - { "access", 33 }, - { "acct", 51 }, - { "add_key", 278 }, - { "adjtimex", 124 }, - { "afs_syscall", 137 }, - { "alarm", 27 }, - { "arm_fadvise64_64", __PNR_arm_fadvise64_64 }, - { "arm_sync_file_range", __PNR_arm_sync_file_range }, - { "arch_prctl", __PNR_arch_prctl }, - { "bdflush", 134 }, - { "bind", 361 }, - { "bpf", 351 }, - { "break", __PNR_break }, - { "breakpoint", __PNR_breakpoint }, - { "brk", 45 }, - { "cachectl", __PNR_cachectl }, - { "cacheflush", __PNR_cacheflush }, - { "capget", 184 }, - { "capset", 185 }, - { "chdir", 12 }, - { "chmod", 15 }, - { "chown", 182 }, - { "chown32", 212 }, - { "chroot", 61 }, - { "clock_adjtime", 337 }, - { "clock_adjtime64", 405 }, - { "clock_getres", 261 }, - { "clock_getres_time64", 406 }, - { "clock_gettime", 260 }, - { "clock_gettime64", 403 }, - { "clock_nanosleep", 262 }, - { "clock_nanosleep_time64", 407 }, - { "clock_settime", 259 }, - { "clock_settime64", 404 }, - { "clone", 120 }, - { "clone3", 435 }, - { "close", 6 }, - { "connect", 362 }, - { "copy_file_range", 375 }, - { "creat", 8 }, - { "create_module", 127 }, - { "delete_module", 129 }, - { "dup", 41 }, - { "dup2", 63 }, - { "dup3", 326 }, - { "epoll_create", 249 }, - { "epoll_create1", 327 }, - { "epoll_ctl", 250 }, - { "epoll_ctl_old", __PNR_epoll_ctl_old }, - { "epoll_pwait", 312 }, - { "epoll_wait", 251 }, - { "epoll_wait_old", __PNR_epoll_wait_old }, - { "eventfd", 318 }, - { "eventfd2", 323 }, - { "execve", 11 }, - { "execveat", 354 }, - { "exit", 1 }, - { "exit_group", 248 }, - { "faccessat", 300 }, - { "fadvise64", 253 }, - { "fadvise64_64", 264 }, - { "fallocate", 314 }, - { "fanotify_init", 332 }, - { "fanotify_mark", 333 }, - { "fchdir", 133 }, - { "fchmod", 94 }, - { "fchmodat", 299 }, - { "fchown", 95 }, - { "fchown32", 207 }, - { "fchownat", 291 }, - { "fcntl", 55 }, - { "fcntl64", 221 }, - { "fdatasync", 148 }, - { "fgetxattr", 229 }, - { "finit_module", 344 }, - { "flistxattr", 232 }, - { "flock", 143 }, - { "fork", 2 }, - { "fremovexattr", 235 }, - { "fsconfig", 431 }, - { "fsetxattr", 226 }, - { "fsmount", 432 }, - { "fsopen", 430 }, - { "fspick", 433 }, - { "fstat", 108 }, - { "fstat64", 197 }, - { "fstatat64", 293 }, - { "fstatfs", 100 }, - { "fstatfs64", 266 }, - { "fsync", 118 }, - { "ftime", __PNR_ftime }, - { "ftruncate", 93 }, - { "ftruncate64", 194 }, - { "futex", 238 }, - { "futex_time64", 422 }, - { "futimesat", 292 }, - { "get_kernel_syms", 130 }, - { "get_mempolicy", 269 }, - { "get_robust_list", 305 }, - { "get_thread_area", __PNR_get_thread_area }, - { "get_tls", __PNR_get_tls }, - { "getcpu", 311 }, - { "getcwd", 183 }, - { "getdents", 141 }, - { "getdents64", 220 }, - { "getegid", 50 }, - { "getegid32", 202 }, - { "geteuid", 49 }, - { "geteuid32", 201 }, - { "getgid", 47 }, - { "getgid32", 200 }, - { "getgroups", 80 }, - { "getgroups32", 205 }, - { "getitimer", 105 }, - { "getpeername", 368 }, - { "getpgid", 132 }, - { "getpgrp", 65 }, - { "getpid", 20 }, - { "getpmsg", 188 }, - { "getppid", 64 }, - { "getpriority", 96 }, - { "getrandom", 349 }, - { "getresgid", 171 }, - { "getresgid32", 211 }, - { "getresuid", 165 }, - { "getresuid32", 209 }, - { "getrlimit", 76 }, - { "getrusage", 77 }, - { "getsid", 147 }, - { "getsockname", 367 }, - { "getsockopt", 365 }, - { "gettid", 236 }, - { "gettimeofday", 78 }, - { "getuid", 24 }, - { "getuid32", 199 }, - { "getxattr", 227 }, - { "gtty", __PNR_gtty }, - { "idle", 112 }, - { "init_module", 128 }, - { "inotify_add_watch", 285 }, - { "inotify_init", 284 }, - { "inotify_init1", 324 }, - { "inotify_rm_watch", 286 }, - { "io_cancel", 247 }, - { "io_destroy", 244 }, - { "io_getevents", 245 }, - { "io_pgetevents", 382 }, - { "io_pgetevents_time64", 416 }, - { "io_setup", 243 }, - { "io_submit", 246 }, - { "io_uring_setup", 425 }, - { "io_uring_enter", 426 }, - { "io_uring_register", 427 }, - { "ioctl", 54 }, - { "ioperm", 101 }, - { "iopl", __PNR_iopl }, - { "ioprio_get", 283 }, - { "ioprio_set", 282 }, - { "ipc", 117 }, - { "kcmp", 343 }, - { "kexec_file_load", 381 }, - { "kexec_load", 277 }, - { "keyctl", 280 }, - { "kill", 37 }, - { "lchown", 16 }, - { "lchown32", 198 }, - { "lgetxattr", 228 }, - { "link", 9 }, - { "linkat", 296 }, - { "listen", 363 }, - { "listxattr", 230 }, - { "llistxattr", 231 }, - { "lock", __PNR_lock }, - { "lookup_dcookie", 110 }, - { "lremovexattr", 234 }, - { "lseek", 19 }, - { "lsetxattr", 225 }, - { "lstat", 107 }, - { "lstat64", 196 }, - { "madvise", 219 }, - { "mbind", 268 }, - { "membarrier", 356 }, - { "memfd_create", 350 }, - { "migrate_pages", 287 }, - { "mincore", 218 }, - { "mkdir", 39 }, - { "mkdirat", 289 }, - { "mknod", 14 }, - { "mknodat", 290 }, - { "mlock", 150 }, - { "mlock2", 374 }, - { "mlockall", 152 }, - { "mmap", 90 }, - { "mmap2", 192 }, - { "modify_ldt", __PNR_modify_ldt }, - { "mount", 21 }, - { "move_mount", 429 }, - { "move_pages", 310 }, - { "mprotect", 125 }, - { "mpx", __PNR_mpx }, - { "mq_getsetattr", 276 }, - { "mq_notify", 275 }, - { "mq_open", 271 }, - { "mq_timedreceive", 274 }, - { "mq_timedreceive_time64", 419 }, - { "mq_timedsend", 273 }, - { "mq_timedsend_time64", 418 }, - { "mq_unlink", 272 }, - { "mremap", 163 }, - { "msgctl", 402 }, - { "msgget", 399 }, - { "msgrcv", 401 }, - { "msgsnd", 400 }, - { "msync", 144 }, - { "multiplexer", __PNR_multiplexer }, - { "munlock", 151 }, - { "munlockall", 153 }, - { "munmap", 91 }, - { "name_to_handle_at", 335 }, - { "nanosleep", 162 }, - { "newfstatat", __PNR_newfstatat }, - { "nfsservctl", 169 }, - { "nice", 34 }, - { "oldfstat", __PNR_oldfstat }, - { "oldlstat", __PNR_oldlstat }, - { "oldolduname", __PNR_oldolduname }, - { "oldstat", __PNR_oldstat }, - { "olduname", __PNR_olduname }, - { "oldwait4", __PNR_oldwait4 }, - { "open", 5 }, - { "open_by_handle_at", 336 }, - { "open_tree", 428 }, - { "openat", 288 }, - { "pause", 29 }, - { "pciconfig_iobase", __PNR_pciconfig_iobase }, - { "pciconfig_read", __PNR_pciconfig_read }, - { "pciconfig_write", __PNR_pciconfig_write }, - { "perf_event_open", 331 }, - { "personality", 136 }, - { "pidfd_open", 434 }, - { "pidfd_send_signal", 424 }, - { "pipe", 42 }, - { "pipe2", 325 }, - { "pivot_root", 217 }, - { "pkey_alloc", 385 }, - { "pkey_free", 386 }, - { "pkey_mprotect", 384 }, - { "poll", 168 }, - { "ppoll", 302 }, - { "ppoll_time64", 414 }, - { "prctl", 172 }, - { "pread64", 180 }, - { "preadv", 328 }, - { "preadv2", 376 }, - { "prlimit64", 334 }, - { "process_vm_readv", 340 }, - { "process_vm_writev", 341 }, - { "prof", __PNR_prof }, - { "profil", __PNR_profil }, - { "pselect6", 301 }, - { "pselect6_time64", 413 }, - { "ptrace", 26 }, - { "putpmsg", 189 }, - { "pwrite64", 181 }, - { "pwritev", 329 }, - { "pwritev2", 377 }, - { "query_module", 167 }, - { "quotactl", 131 }, - { "read", 3 }, - { "readahead", 222 }, - { "readdir", 89 }, - { "readlink", 85 }, - { "readlinkat", 298 }, - { "readv", 145 }, - { "reboot", 88 }, - { "recv", __PNR_recv }, - { "recvfrom", 371 }, - { "recvmmsg", 357 }, - { "recvmmsg_time64", 417 }, - { "recvmsg", 372 }, - { "remap_file_pages", 267 }, - { "removexattr", 233 }, - { "rename", 38 }, - { "renameat", 295 }, - { "renameat2", 347 }, - { "request_key", 279 }, - { "restart_syscall", 7 }, - { "rmdir", 40 }, - { "rseq", 383 }, - { "rt_sigaction", 174 }, - { "rt_sigpending", 176 }, - { "rt_sigprocmask", 175 }, - { "rt_sigqueueinfo", 178 }, - { "rt_sigreturn", 173 }, - { "rt_sigsuspend", 179 }, - { "rt_sigtimedwait", 177 }, - { "rt_sigtimedwait_time64", 421 }, - { "rt_tgsigqueueinfo", 330 }, - { "rtas", __PNR_rtas }, - { "s390_guarded_storage", 378 }, - { "s390_pci_mmio_read", 353 }, - { "s390_pci_mmio_write", 352 }, - { "s390_runtime_instr", 342 }, - { "s390_sthyi", 380 }, - { "sched_get_priority_max", 159 }, - { "sched_get_priority_min", 160 }, - { "sched_getaffinity", 240 }, - { "sched_getattr", 346 }, - { "sched_getparam", 155 }, - { "sched_getscheduler", 157 }, - { "sched_rr_get_interval", 161 }, - { "sched_rr_get_interval_time64", 423 }, - { "sched_setaffinity", 239 }, - { "sched_setattr", 345 }, - { "sched_setparam", 154 }, - { "sched_setscheduler", 156 }, - { "sched_yield", 158 }, - { "seccomp", 348 }, - { "security", __PNR_security }, - { "select", __PNR_select }, - { "semctl", 394 }, - { "semget", 393 }, - { "semop", __PNR_semop }, - { "semtimedop", __PNR_semtimedop }, - { "semtimedop_time64", 420 }, - { "send", __PNR_send }, - { "sendfile", 187 }, - { "sendfile64", 223 }, - { "sendmmsg", 358 }, - { "sendmsg", 370 }, - { "sendto", 369 }, - { "set_mempolicy", 270 }, - { "set_robust_list", 304 }, - { "set_thread_area", __PNR_set_thread_area }, - { "set_tid_address", 252 }, - { "set_tls", __PNR_set_tls }, - { "setdomainname", 121 }, - { "setfsgid", 139 }, - { "setfsgid32", 216 }, - { "setfsuid", 138 }, - { "setfsuid32", 215 }, - { "setgid", 46 }, - { "setgid32", 214 }, - { "setgroups", 81 }, - { "setgroups32", 206 }, - { "sethostname", 74 }, - { "setitimer", 104 }, - { "setns", 339 }, - { "setpgid", 57 }, - { "setpriority", 97 }, - { "setregid", 71 }, - { "setregid32", 204 }, - { "setresgid", 170 }, - { "setresgid32", 210 }, - { "setresuid", 164 }, - { "setresuid32", 208 }, - { "setreuid", 70 }, - { "setreuid32", 203 }, - { "setrlimit", 75 }, - { "setsid", 66 }, - { "setsockopt", 366 }, - { "settimeofday", 79 }, - { "setuid", 23 }, - { "setuid32", 213 }, - { "setxattr", 224 }, - { "sgetmask", __PNR_sgetmask }, - { "shmat", 397 }, - { "shmctl", 396 }, - { "shmdt", 398 }, - { "shmget", 395 }, - { "shutdown", 373 }, - { "sigaction", 67 }, - { "sigaltstack", 186 }, - { "signal", 48 }, - { "signalfd", 316 }, - { "signalfd4", 322 }, - { "sigpending", 73 }, - { "sigprocmask", 126 }, - { "sigreturn", 119 }, - { "sigsuspend", 72 }, - { "socket", 359 }, - { "socketcall", 102 }, - { "socketpair", 360 }, - { "splice", 306 }, - { "spu_create", __PNR_spu_create }, - { "spu_run", __PNR_spu_run }, - { "ssetmask", __PNR_ssetmask }, - { "stat", 106 }, - { "stat64", 195 }, - { "statfs", 99 }, - { "statfs64", 265 }, - { "statx", 379 }, - { "stime", 25 }, - { "stty", __PNR_stty }, - { "subpage_prot", __PNR_subpage_prot }, - { "swapcontext", __PNR_swapcontext }, - { "swapoff", 115 }, - { "swapon", 87 }, - { "switch_endian", __PNR_switch_endian }, - { "symlink", 83 }, - { "symlinkat", 297 }, - { "sync", 36 }, - { "sync_file_range", 307 }, - { "sync_file_range2", __PNR_sync_file_range2 }, - { "syncfs", 338 }, - { "syscall", __PNR_syscall }, - { "sys_debug_setcontext", __PNR_sys_debug_setcontext }, - { "sysfs", 135 }, - { "sysinfo", 116 }, - { "syslog", 103 }, - { "sysmips", __PNR_sysmips }, - { "tee", 308 }, - { "tgkill", 241 }, - { "time", 13 }, - { "timer_create", 254 }, - { "timer_delete", 258 }, - { "timer_getoverrun", 257 }, - { "timer_gettime", 256 }, - { "timer_gettime64", 408 }, - { "timer_settime", 255 }, - { "timer_settime64", 409 }, - { "timerfd", 317 }, - { "timerfd_create", 319 }, - { "timerfd_gettime", 321 }, - { "timerfd_gettime64", 410 }, - { "timerfd_settime", 320 }, - { "timerfd_settime64", 411 }, - { "times", 43 }, - { "tkill", 237 }, - { "truncate", 92 }, - { "truncate64", 193 }, - { "tuxcall", __PNR_tuxcall }, - { "ugetrlimit", 191 }, - { "ulimit", __PNR_ulimit }, - { "umask", 60 }, - { "umount", 22 }, - { "umount2", 52 }, - { "uname", 122 }, - { "unlink", 10 }, - { "unlinkat", 294 }, - { "unshare", 303 }, - { "uselib", 86 }, - { "userfaultfd", 355 }, - { "usr26", __PNR_usr26 }, - { "usr32", __PNR_usr32 }, - { "ustat", 62 }, - { "utime", 30 }, - { "utimensat", 315 }, - { "utimensat_time64", 412 }, - { "utimes", 313 }, - { "vfork", 190 }, - { "vhangup", 111 }, - { "vm86", __PNR_vm86 }, - { "vm86old", __PNR_vm86old }, - { "vmsplice", 309 }, - { "vserver", __PNR_vserver }, - { "wait4", 114 }, - { "waitid", 281 }, - { "waitpid", __PNR_waitpid }, - { "write", 4 }, - { "writev", 146 }, - { NULL, __NR_SCMP_ERROR }, -}; - -/** - * Resolve a syscall name to a number - * @param name the syscall name - * - * Resolve the given syscall name to the syscall number using the syscall table. - * Returns the syscall number on success, including negative pseudo syscall - * numbers; returns __NR_SCMP_ERROR on failure. - * - */ -int s390_syscall_resolve_name(const char *name) -{ - unsigned int iter; - const struct arch_syscall_def *table = s390_syscall_table; - - /* XXX - plenty of room for future improvement here */ - - if (strcmp(name, "accept") == 0) - return __PNR_accept; - if (strcmp(name, "accept4") == 0) - return __PNR_accept4; - else if (strcmp(name, "bind") == 0) - return __PNR_bind; - else if (strcmp(name, "connect") == 0) - return __PNR_connect; - else if (strcmp(name, "getpeername") == 0) - return __PNR_getpeername; - else if (strcmp(name, "getsockname") == 0) - return __PNR_getsockname; - else if (strcmp(name, "getsockopt") == 0) - return __PNR_getsockopt; - else if (strcmp(name, "listen") == 0) - return __PNR_listen; - else if (strcmp(name, "recv") == 0) - return __PNR_recv; - else if (strcmp(name, "recvfrom") == 0) - return __PNR_recvfrom; - else if (strcmp(name, "recvmsg") == 0) - return __PNR_recvmsg; - else if (strcmp(name, "recvmmsg") == 0) - return __PNR_recvmmsg; - else if (strcmp(name, "send") == 0) - return __PNR_send; - else if (strcmp(name, "sendmsg") == 0) - return __PNR_sendmsg; - else if (strcmp(name, "sendmmsg") == 0) - return __PNR_sendmmsg; - else if (strcmp(name, "sendto") == 0) - return __PNR_sendto; - else if (strcmp(name, "setsockopt") == 0) - return __PNR_setsockopt; - else if (strcmp(name, "shmat") == 0) - return __PNR_shmat; - else if (strcmp(name, "shmdt") == 0) - return __PNR_shmdt; - else if (strcmp(name, "shmget") == 0) - return __PNR_shmget; - else if (strcmp(name, "shmctl") == 0) - return __PNR_shmctl; - else if (strcmp(name, "shutdown") == 0) - return __PNR_shutdown; - else if (strcmp(name, "socket") == 0) - return __PNR_socket; - else if (strcmp(name, "socketpair") == 0) - return __PNR_socketpair; - - for (iter = 0; table[iter].name != NULL; iter++) { - if (strcmp(name, table[iter].name) == 0) - return table[iter].num; - } - - return __NR_SCMP_ERROR; -} - -/** - * Resolve a syscall number to a name - * @param num the syscall number - * - * Resolve the given syscall number to the syscall name using the syscall table. - * Returns a pointer to the syscall name string on success, including pseudo - * syscall names; returns NULL on failure. - * - */ -const char *s390_syscall_resolve_num(int num) -{ - unsigned int iter; - const struct arch_syscall_def *table = s390_syscall_table; - - /* XXX - plenty of room for future improvement here */ - - if (num == __PNR_accept) - return "accept"; - else if (num == __PNR_accept4) - return "accept4"; - else if (num == __PNR_bind) - return "bind"; - else if (num == __PNR_connect) - return "connect"; - else if (num == __PNR_getpeername) - return "getpeername"; - else if (num == __PNR_getsockname) - return "getsockname"; - else if (num == __PNR_getsockopt) - return "getsockopt"; - else if (num == __PNR_listen) - return "listen"; - else if (num == __PNR_recv) - return "recv"; - else if (num == __PNR_recvfrom) - return "recvfrom"; - else if (num == __PNR_recvmsg) - return "recvmsg"; - else if (num == __PNR_recvmmsg) - return "recvmmsg"; - else if (num == __PNR_send) - return "send"; - else if (num == __PNR_sendmsg) - return "sendmsg"; - else if (num == __PNR_sendmmsg) - return "sendmmsg"; - else if (num == __PNR_sendto) - return "sendto"; - else if (num == __PNR_setsockopt) - return "setsockopt"; - else if (num == __PNR_shmat) - return "shmat"; - else if (num == __PNR_shmdt) - return "shmdt"; - else if (num == __PNR_shmget) - return "shmget"; - else if (num == __PNR_shmctl) - return "shmctl"; - else if (num == __PNR_shutdown) - return "shutdown"; - else if (num == __PNR_socket) - return "socket"; - else if (num == __PNR_socketpair) - return "socketpair"; - - for (iter = 0; table[iter].num != __NR_SCMP_ERROR; iter++) { - if (num == table[iter].num) - return table[iter].name; - } - - return NULL; -} - -/** - * Iterate through the syscall table and return the syscall mapping - * @param spot the offset into the syscall table - * - * Return the syscall mapping at position @spot or NULL on failure. This - * function should only ever be used internally by libseccomp. - * - */ -const struct arch_syscall_def *s390_syscall_iterate(unsigned int spot) -{ - /* XXX - no safety checks here */ - return &s390_syscall_table[spot]; -} diff --git a/src/arch-s390x-syscalls.c b/src/arch-s390x-syscalls.c deleted file mode 100644 index 703eaf1..0000000 --- a/src/arch-s390x-syscalls.c +++ /dev/null @@ -1,642 +0,0 @@ -/* - * Copyright 2015 IBM - * Author: Jan Willeke <willeke@linux.vnet.com.com> - */ - -#include <string.h> - -#include <seccomp.h> - -#include "arch.h" -#include "arch-s390x.h" - -/* NOTE: based on Linux v5.4-rc4 */ -const struct arch_syscall_def s390x_syscall_table[] = { \ - { "_llseek", __PNR__llseek }, - { "_newselect", __PNR__newselect }, - { "_sysctl", 149 }, - { "accept", __PNR_accept }, - { "accept4", 364 }, - { "access", 33 }, - { "acct", 51 }, - { "add_key", 278 }, - { "adjtimex", 124 }, - { "afs_syscall", 137 }, - { "alarm", 27 }, - { "arm_fadvise64_64", __PNR_arm_fadvise64_64 }, - { "arm_sync_file_range", __PNR_arm_sync_file_range }, - { "arch_prctl", __PNR_arch_prctl }, - { "bdflush", 134 }, - { "bind", 361 }, - { "bpf", 351 }, - { "break", __PNR_break }, - { "breakpoint", __PNR_breakpoint }, - { "brk", 45 }, - { "cachectl", __PNR_cachectl }, - { "cacheflush", __PNR_cacheflush }, - { "capget", 184 }, - { "capset", 185 }, - { "chdir", 12 }, - { "chmod", 15 }, - { "chown", 212 }, - { "chown32", __PNR_chown32 }, - { "chroot", 61 }, - { "clock_adjtime", 337 }, - { "clock_adjtime64", __PNR_clock_adjtime64 }, - { "clock_getres", 261 }, - { "clock_getres_time64", __PNR_clock_getres_time64 }, - { "clock_gettime", 260 }, - { "clock_gettime64", __PNR_clock_gettime64 }, - { "clock_nanosleep", 262 }, - { "clock_nanosleep_time64", __PNR_clock_nanosleep_time64 }, - { "clock_settime", 259 }, - { "clock_settime64", __PNR_clock_settime64 }, - { "clone", 120 }, - { "clone3", 435 }, - { "close", 6 }, - { "connect", 362 }, - { "copy_file_range", 375 }, - { "creat", 8 }, - { "create_module", 127 }, - { "delete_module", 129 }, - { "dup", 41 }, - { "dup2", 63 }, - { "dup3", 326 }, - { "epoll_create", 249 }, - { "epoll_create1", 327 }, - { "epoll_ctl", 250 }, - { "epoll_ctl_old", __PNR_epoll_ctl_old }, - { "epoll_pwait", 312 }, - { "epoll_wait", 251 }, - { "epoll_wait_old", __PNR_epoll_wait_old }, - { "eventfd", 318 }, - { "eventfd2", 323 }, - { "execve", 11 }, - { "execveat", 354 }, - { "exit", 1 }, - { "exit_group", 248 }, - { "faccessat", 300 }, - { "fadvise64", 253 }, - { "fadvise64_64", __PNR_fadvise64_64 }, - { "fallocate", 314 }, - { "fanotify_init", 332 }, - { "fanotify_mark", 333 }, - { "fchdir", 133 }, - { "fchmod", 94 }, - { "fchmodat", 299 }, - { "fchown", 207 }, - { "fchown32", __PNR_fchown32 }, - { "fchownat", 291 }, - { "fcntl", 55 }, - { "fcntl64", __PNR_fcntl64 }, - { "fdatasync", 148 }, - { "fgetxattr", 229 }, - { "finit_module", 344 }, - { "flistxattr", 232 }, - { "flock", 143 }, - { "fork", 2 }, - { "fremovexattr", 235 }, - { "fsconfig", 431 }, - { "fsetxattr", 226 }, - { "fsmount", 432 }, - { "fsopen", 430 }, - { "fspick", 433 }, - { "fstat", 108 }, - { "fstat64", __PNR_fstat64 }, - { "fstatat64", __PNR_fstatat64 }, - { "fstatfs", 100 }, - { "fstatfs64", 266 }, - { "fsync", 118 }, - { "ftime", __PNR_ftime }, - { "ftruncate", 93 }, - { "ftruncate64", __PNR_ftruncate64 }, - { "futex", 238 }, - { "futex_time64", __PNR_futex_time64 }, - { "futimesat", 292 }, - { "get_kernel_syms", 130 }, - { "get_mempolicy", 269 }, - { "get_robust_list", 305 }, - { "get_thread_area", __PNR_get_thread_area }, - { "get_tls", __PNR_get_tls }, - { "getcpu", 311 }, - { "getcwd", 183 }, - { "getdents", 141 }, - { "getdents64", 220 }, - { "getegid", 202 }, - { "getegid32", __PNR_getegid32 }, - { "geteuid", 201 }, - { "geteuid32", __PNR_geteuid32 }, - { "getgid", 200 }, - { "getgid32", __PNR_getgid32 }, - { "getgroups", 205 }, - { "getgroups32", __PNR_getgroups32 }, - { "getitimer", 105 }, - { "getpeername", 368 }, - { "getpgid", 132 }, - { "getpgrp", 65 }, - { "getpid", 20 }, - { "getpmsg", 188 }, - { "getppid", 64 }, - { "getpriority", 96 }, - { "getrandom", 349 }, - { "getresgid", 211 }, - { "getresgid32", __PNR_getresgid32 }, - { "getresuid", 209 }, - { "getresuid32", __PNR_getresuid32 }, - { "getrlimit", 191 }, - { "getrusage", 77 }, - { "getsid", 147 }, - { "getsockname", 367 }, - { "getsockopt", 365 }, - { "gettid", 236 }, - { "gettimeofday", 78 }, - { "getuid", 199 }, - { "getuid32", __PNR_getuid32 }, - { "getxattr", 227 }, - { "gtty", __PNR_gtty }, - { "idle", 112 }, - { "init_module", 128 }, - { "inotify_add_watch", 285 }, - { "inotify_init", 284 }, - { "inotify_init1", 324 }, - { "inotify_rm_watch", 286 }, - { "io_cancel", 247 }, - { "io_destroy", 244 }, - { "io_getevents", 245 }, - { "io_pgetevents", 382 }, - { "io_pgetevents_time64", __PNR_io_pgetevents_time64 }, - { "io_setup", 243 }, - { "io_submit", 246 }, - { "io_uring_setup", 425 }, - { "io_uring_enter", 426 }, - { "io_uring_register", 427 }, - { "ioctl", 54 }, - { "ioperm", __PNR_ioperm}, - { "iopl", __PNR_iopl }, - { "ioprio_get", 283 }, - { "ioprio_set", 282 }, - { "ipc", 117 }, - { "kcmp", 343 }, - { "kexec_file_load", 381 }, - { "kexec_load", 277 }, - { "keyctl", 280 }, - { "kill", 37 }, - { "lchown", 198 }, - { "lchown32", __PNR_lchown32 }, - { "lgetxattr", 228 }, - { "link", 9 }, - { "linkat", 296 }, - { "listen", 363 }, - { "listxattr", 230 }, - { "llistxattr", 231 }, - { "lock", __PNR_lock }, - { "lookup_dcookie", 110 }, - { "lremovexattr", 234 }, - { "lseek", 19 }, - { "lsetxattr", 225 }, - { "lstat", 107 }, - { "lstat64", __PNR_lstat64 }, - { "madvise", 219 }, - { "mbind", 268 }, - { "membarrier", 356 }, - { "memfd_create", 350 }, - { "migrate_pages", 287 }, - { "mincore", 218 }, - { "mkdir", 39 }, - { "mkdirat", 289 }, - { "mknod", 14 }, - { "mknodat", 290 }, - { "mlock", 150 }, - { "mlock2", 374 }, - { "mlockall", 152 }, - { "mmap", 90 }, - { "mmap2", __PNR_mmap2 }, - { "modify_ldt", __PNR_modify_ldt }, - { "mount", 21 }, - { "move_mount", 429 }, - { "move_pages", 310 }, - { "mprotect", 125 }, - { "mpx", __PNR_mpx }, - { "mq_getsetattr", 276 }, - { "mq_notify", 275 }, - { "mq_open", 271 }, - { "mq_timedreceive", 274 }, - { "mq_timedreceive_time64", __PNR_mq_timedreceive_time64 }, - { "mq_timedsend", 273 }, - { "mq_timedsend_time64", __PNR_mq_timedsend_time64 }, - { "mq_unlink", 272 }, - { "mremap", 163 }, - { "msgctl", 402 }, - { "msgget", 399 }, - { "msgrcv", 401 }, - { "msgsnd", 400 }, - { "msync", 144 }, - { "multiplexer", __PNR_multiplexer }, - { "munlock", 151 }, - { "munlockall", 153 }, - { "munmap", 91 }, - { "name_to_handle_at", 335 }, - { "nanosleep", 162 }, - { "newfstatat", 293 }, - { "nfsservctl", 169 }, - { "nice", 34 }, - { "oldfstat", __PNR_oldfstat }, - { "oldlstat", __PNR_oldlstat }, - { "oldolduname", __PNR_oldolduname }, - { "oldstat", __PNR_oldstat }, - { "olduname", __PNR_olduname }, - { "oldwait4", __PNR_oldwait4 }, - { "open", 5 }, - { "open_by_handle_at", 336 }, - { "open_tree", 428 }, - { "openat", 288 }, - { "pause", 29 }, - { "pciconfig_iobase", __PNR_pciconfig_iobase }, - { "pciconfig_read", __PNR_pciconfig_read }, - { "pciconfig_write", __PNR_pciconfig_write }, - { "perf_event_open", 331 }, - { "personality", 136 }, - { "pidfd_open", 434 }, - { "pidfd_send_signal", 424 }, - { "pipe", 42 }, - { "pipe2", 325 }, - { "pivot_root", 217 }, - { "pkey_alloc", 385 }, - { "pkey_free", 386 }, - { "pkey_mprotect", 384 }, - { "poll", 168 }, - { "ppoll", 302 }, - { "ppoll_time64", __PNR_ppoll_time64 }, - { "prctl", 172 }, - { "pread64", 180 }, - { "preadv", 328 }, - { "preadv2", 376 }, - { "prlimit64", 334 }, - { "process_vm_readv", 340 }, - { "process_vm_writev", 341 }, - { "prof", __PNR_prof }, - { "profil", __PNR_profil }, - { "pselect6", 301 }, - { "pselect6_time64", __PNR_pselect6_time64 }, - { "ptrace", 26 }, - { "putpmsg", 189 }, - { "pwrite64", 181 }, - { "pwritev", 329 }, - { "pwritev2", 377 }, - { "query_module", 167 }, - { "quotactl", 131 }, - { "read", 3 }, - { "readahead", 222 }, - { "readdir", 89 }, - { "readlink", 85 }, - { "readlinkat", 298 }, - { "readv", 145 }, - { "reboot", 88 }, - { "recv", __PNR_recv }, - { "recvfrom", 371 }, - { "recvmmsg", 357 }, - { "recvmmsg_time64", __PNR_recvmmsg_time64 }, - { "recvmsg", 372 }, - { "remap_file_pages", 267 }, - { "removexattr", 233 }, - { "rename", 38 }, - { "renameat", 295 }, - { "renameat2", 347 }, - { "request_key", 279 }, - { "restart_syscall", 7 }, - { "rmdir", 40 }, - { "rseq", 383 }, - { "rt_sigaction", 174 }, - { "rt_sigpending", 176 }, - { "rt_sigprocmask", 175 }, - { "rt_sigqueueinfo", 178 }, - { "rt_sigreturn", 173 }, - { "rt_sigsuspend", 179 }, - { "rt_sigtimedwait", 177 }, - { "rt_sigtimedwait_time64", __PNR_rt_sigtimedwait_time64 }, - { "rt_tgsigqueueinfo", 330 }, - { "rtas", __PNR_rtas }, - { "s390_guarded_storage", 378 }, - { "s390_pci_mmio_read", 353 }, - { "s390_pci_mmio_write", 352 }, - { "s390_runtime_instr", 342 }, - { "s390_sthyi", 380 }, - { "sched_get_priority_max", 159 }, - { "sched_get_priority_min", 160 }, - { "sched_getaffinity", 240 }, - { "sched_getattr", 346 }, - { "sched_getparam", 155 }, - { "sched_getscheduler", 157 }, - { "sched_rr_get_interval", 161 }, - { "sched_rr_get_interval_time64", __PNR_sched_rr_get_interval_time64 }, - { "sched_setaffinity", 239 }, - { "sched_setattr", 345 }, - { "sched_setparam", 154 }, - { "sched_setscheduler", 156 }, - { "sched_yield", 158 }, - { "seccomp", 348 }, - { "security", __PNR_security }, - { "select", 142 }, - { "semctl", 394 }, - { "semget", 393 }, - { "semop", __PNR_semop }, - { "semtimedop", 392 }, - { "semtimedop_time64", __PNR_semtimedop_time64 }, - { "send", __PNR_send }, - { "sendfile", 187 }, - { "sendfile64", __PNR_sendfile64 }, - { "sendmmsg", 358 }, - { "sendmsg", 370 }, - { "sendto", 369 }, - { "set_mempolicy", 270 }, - { "set_robust_list", 304 }, - { "set_thread_area", __PNR_set_thread_area }, - { "set_tid_address", 252 }, - { "set_tls", __PNR_set_tls }, - { "setdomainname", 121 }, - { "setfsgid", 216 }, - { "setfsgid32", __PNR_setfsgid32 }, - { "setfsuid", 215 }, - { "setfsuid32", __PNR_setfsuid32 }, - { "setgid", 214 }, - { "setgid32", __PNR_setgid32 }, - { "setgroups", 206 }, - { "setgroups32", __PNR_setgroups32 }, - { "sethostname", 74 }, - { "setitimer", 104 }, - { "setns", 339 }, - { "setpgid", 57 }, - { "setpriority", 97 }, - { "setregid", 204 }, - { "setregid32", __PNR_setregid32 }, - { "setresgid", 210 }, - { "setresgid32", __PNR_setresgid32 }, - { "setresuid", 208 }, - { "setresuid32", __PNR_setresuid32 }, - { "setreuid", 203 }, - { "setreuid32", __PNR_setreuid32 }, - { "setrlimit", 75 }, - { "setsid", 66 }, - { "setsockopt", 366 }, - { "settimeofday", 79 }, - { "setuid", 213 }, - { "setuid32", __PNR_setuid32 }, - { "setxattr", 224 }, - { "sgetmask", __PNR_sgetmask }, - { "shmat", 397 }, - { "shmctl", 396 }, - { "shmdt", 398 }, - { "shmget", 395 }, - { "shutdown", 373 }, - { "sigaction", 67 }, - { "sigaltstack", 186 }, - { "signal", 48 }, - { "signalfd", 316 }, - { "signalfd4", 322 }, - { "sigpending", 73 }, - { "sigprocmask", 126 }, - { "sigreturn", 119 }, - { "sigsuspend", 72 }, - { "socket", 359 }, - { "socketcall", 102 }, - { "socketpair", 360 }, - { "splice", 306 }, - { "spu_create", __PNR_spu_create }, - { "spu_run", __PNR_spu_run }, - { "ssetmask", __PNR_ssetmask }, - { "stat", 106 }, - { "stat64", __PNR_stat64 }, - { "statfs", 99 }, - { "statfs64", 265 }, - { "statx", 379 }, - { "stime", __PNR_stime }, - { "stty", __PNR_stty }, - { "subpage_prot", __PNR_subpage_prot }, - { "swapcontext", __PNR_swapcontext }, - { "swapoff", 115 }, - { "swapon", 87 }, - { "switch_endian", __PNR_switch_endian }, - { "symlink", 83 }, - { "symlinkat", 297 }, - { "sync", 36 }, - { "sync_file_range", 307 }, - { "sync_file_range2", __PNR_sync_file_range2 }, - { "syncfs", 338 }, - { "syscall", __PNR_syscall }, - { "sys_debug_setcontext", __PNR_sys_debug_setcontext }, - { "sysfs", 135 }, - { "sysinfo", 116 }, - { "syslog", 103 }, - { "sysmips", __PNR_sysmips }, - { "tee", 308 }, - { "tgkill", 241 }, - { "time", __PNR_time }, - { "timer_create", 254 }, - { "timer_delete", 258 }, - { "timer_getoverrun", 257 }, - { "timer_gettime", 256 }, - { "timer_gettime64", __PNR_timer_gettime64 }, - { "timer_settime", 255 }, - { "timer_settime64", __PNR_timer_settime64 }, - { "timerfd", 317 }, - { "timerfd_create", 319 }, - { "timerfd_gettime", 321 }, - { "timerfd_gettime64", __PNR_timerfd_gettime64 }, - { "timerfd_settime", 320 }, - { "timerfd_settime64", __PNR_timerfd_settime64 }, - { "times", 43 }, - { "tkill", 237 }, - { "truncate", 92 }, - { "truncate64", __PNR_truncate64 }, - { "tuxcall", __PNR_tuxcall }, - { "ugetrlimit", __PNR_ugetrlimit }, - { "ulimit", __PNR_ulimit }, - { "umask", 60 }, - { "umount", 22 }, - { "umount2", 52 }, - { "uname", 122 }, - { "unlink", 10 }, - { "unlinkat", 294 }, - { "unshare", 303 }, - { "uselib", 86 }, - { "userfaultfd", 355 }, - { "usr26", __PNR_usr26 }, - { "usr32", __PNR_usr32 }, - { "ustat", 62 }, - { "utime", 30 }, - { "utimensat", 315 }, - { "utimensat_time64", __PNR_utimensat_time64 }, - { "utimes", 313 }, - { "vfork", 190 }, - { "vhangup", 111 }, - { "vm86", __PNR_vm86 }, - { "vm86old", __PNR_vm86old }, - { "vmsplice", 309 }, - { "vserver", __PNR_vserver }, - { "wait4", 114 }, - { "waitid", 281 }, - { "waitpid", __PNR_waitpid }, - { "write", 4 }, - { "writev", 146 }, - { NULL, __NR_SCMP_ERROR }, -}; - -/** - * Resolve a syscall name to a number - * @param name the syscall name - * - * Resolve the given syscall name to the syscall number using the syscall table. - * Returns the syscall number on success, including negative pseudo syscall - * numbers; returns __NR_SCMP_ERROR on failure. - * - */ -int s390x_syscall_resolve_name(const char *name) -{ - unsigned int iter; - const struct arch_syscall_def *table = s390x_syscall_table; - - /* XXX - plenty of room for future improvement here */ - - if (strcmp(name, "accept") == 0) - return __PNR_accept; - if (strcmp(name, "accept4") == 0) - return __PNR_accept4; - else if (strcmp(name, "bind") == 0) - return __PNR_bind; - else if (strcmp(name, "connect") == 0) - return __PNR_connect; - else if (strcmp(name, "getpeername") == 0) - return __PNR_getpeername; - else if (strcmp(name, "getsockname") == 0) - return __PNR_getsockname; - else if (strcmp(name, "getsockopt") == 0) - return __PNR_getsockopt; - else if (strcmp(name, "listen") == 0) - return __PNR_listen; - else if (strcmp(name, "recv") == 0) - return __PNR_recv; - else if (strcmp(name, "recvfrom") == 0) - return __PNR_recvfrom; - else if (strcmp(name, "recvmsg") == 0) - return __PNR_recvmsg; - else if (strcmp(name, "recvmmsg") == 0) - return __PNR_recvmmsg; - else if (strcmp(name, "send") == 0) - return __PNR_send; - else if (strcmp(name, "sendmsg") == 0) - return __PNR_sendmsg; - else if (strcmp(name, "sendmmsg") == 0) - return __PNR_sendmmsg; - else if (strcmp(name, "sendto") == 0) - return __PNR_sendto; - else if (strcmp(name, "setsockopt") == 0) - return __PNR_setsockopt; - else if (strcmp(name, "shmat") == 0) - return __PNR_shmat; - else if (strcmp(name, "shmdt") == 0) - return __PNR_shmdt; - else if (strcmp(name, "shmget") == 0) - return __PNR_shmget; - else if (strcmp(name, "shmctl") == 0) - return __PNR_shmctl; - else if (strcmp(name, "shutdown") == 0) - return __PNR_shutdown; - else if (strcmp(name, "socket") == 0) - return __PNR_socket; - else if (strcmp(name, "socketpair") == 0) - return __PNR_socketpair; - - for (iter = 0; table[iter].name != NULL; iter++) { - if (strcmp(name, table[iter].name) == 0) - return table[iter].num; - } - - return __NR_SCMP_ERROR; -} - -/** - * Resolve a syscall number to a name - * @param num the syscall number - * - * Resolve the given syscall number to the syscall name using the syscall table. - * Returns a pointer to the syscall name string on success, including pseudo - * syscall names; returns NULL on failure. - * - */ -const char *s390x_syscall_resolve_num(int num) -{ - unsigned int iter; - const struct arch_syscall_def *table = s390x_syscall_table; - - /* XXX - plenty of room for future improvement here */ - - if (num == __PNR_accept) - return "accept"; - else if (num == __PNR_accept4) - return "accept4"; - else if (num == __PNR_bind) - return "bind"; - else if (num == __PNR_connect) - return "connect"; - else if (num == __PNR_getpeername) - return "getpeername"; - else if (num == __PNR_getsockname) - return "getsockname"; - else if (num == __PNR_getsockopt) - return "getsockopt"; - else if (num == __PNR_listen) - return "listen"; - else if (num == __PNR_recv) - return "recv"; - else if (num == __PNR_recvfrom) - return "recvfrom"; - else if (num == __PNR_recvmsg) - return "recvmsg"; - else if (num == __PNR_recvmmsg) - return "recvmmsg"; - else if (num == __PNR_send) - return "send"; - else if (num == __PNR_sendmsg) - return "sendmsg"; - else if (num == __PNR_sendmmsg) - return "sendmmsg"; - else if (num == __PNR_sendto) - return "sendto"; - else if (num == __PNR_setsockopt) - return "setsockopt"; - else if (num == __PNR_shmat) - return "shmat"; - else if (num == __PNR_shmdt) - return "shmdt"; - else if (num == __PNR_shmget) - return "shmget"; - else if (num == __PNR_shmctl) - return "shmctl"; - else if (num == __PNR_shutdown) - return "shutdown"; - else if (num == __PNR_socket) - return "socket"; - else if (num == __PNR_socketpair) - return "socketpair"; - - for (iter = 0; table[iter].num != __NR_SCMP_ERROR; iter++) { - if (num == table[iter].num) - return table[iter].name; - } - - return NULL; -} - -/** - * Iterate through the syscall table and return the syscall mapping - * @param spot the offset into the syscall table - * - * Return the syscall mapping at position @spot or NULL on failure. This - * function should only ever be used internally by libseccomp. - * - */ -const struct arch_syscall_def *s390x_syscall_iterate(unsigned int spot) -{ - /* XXX - no safety checks here */ - return &s390x_syscall_table[spot]; -} diff --git a/src/arch-x32-syscalls.c b/src/arch-x32-syscalls.c deleted file mode 100644 index e5cfadb..0000000 --- a/src/arch-x32-syscalls.c +++ /dev/null @@ -1,558 +0,0 @@ -/** - * Enhanced Seccomp x32 Syscall Table - * - * Copyright (c) 2013 Red Hat <pmoore@redhat.com> - * Author: Paul Moore <paul@paul-moore.com> - */ - -/* - * This library is free software; you can redistribute it and/or modify it - * under the terms of version 2.1 of the GNU Lesser General Public License as - * published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, see <http://www.gnu.org/licenses>. - */ - -#include <string.h> - -#include <seccomp.h> - -#include "arch.h" -#include "arch-x32.h" - -/* NOTE: based on Linux v5.4-rc4 */ -const struct arch_syscall_def x32_syscall_table[] = { \ - { "_llseek", __PNR__llseek }, - { "_newselect", __PNR__newselect }, - { "_sysctl", __PNR__sysctl }, - { "accept", (X32_SYSCALL_BIT + 43) }, - { "accept4", (X32_SYSCALL_BIT + 288) }, - { "access", (X32_SYSCALL_BIT + 21) }, - { "acct", (X32_SYSCALL_BIT + 163) }, - { "add_key", (X32_SYSCALL_BIT + 248) }, - { "adjtimex", (X32_SYSCALL_BIT + 159) }, - { "afs_syscall", (X32_SYSCALL_BIT + 183) }, - { "alarm", (X32_SYSCALL_BIT + 37) }, - { "arm_fadvise64_64", __PNR_arm_fadvise64_64 }, - { "arm_sync_file_range", __PNR_arm_sync_file_range }, - { "arch_prctl", (X32_SYSCALL_BIT + 158) }, - { "bdflush", __PNR_bdflush }, - { "bind", (X32_SYSCALL_BIT + 49) }, - { "bpf", (X32_SYSCALL_BIT + 321) }, - { "break", __PNR_break }, - { "breakpoint", __PNR_breakpoint }, - { "brk", (X32_SYSCALL_BIT + 12) }, - { "cachectl", __PNR_cachectl }, - { "cacheflush", __PNR_cacheflush }, - { "capget", (X32_SYSCALL_BIT + 125) }, - { "capset", (X32_SYSCALL_BIT + 126) }, - { "chdir", (X32_SYSCALL_BIT + 80) }, - { "chmod", (X32_SYSCALL_BIT + 90) }, - { "chown", (X32_SYSCALL_BIT + 92) }, - { "chown32", __PNR_chown32 }, - { "chroot", (X32_SYSCALL_BIT + 161) }, - { "clock_adjtime", (X32_SYSCALL_BIT + 305) }, - { "clock_adjtime64", __PNR_clock_adjtime64 }, - { "clock_getres", (X32_SYSCALL_BIT + 229) }, - { "clock_getres_time64", __PNR_clock_getres_time64 }, - { "clock_gettime", (X32_SYSCALL_BIT + 228) }, - { "clock_gettime64", __PNR_clock_gettime64 }, - { "clock_nanosleep", (X32_SYSCALL_BIT + 230) }, - { "clock_nanosleep_time64", __PNR_clock_nanosleep_time64 }, - { "clock_settime", (X32_SYSCALL_BIT + 227) }, - { "clock_settime64", __PNR_clock_settime64 }, - { "clone", (X32_SYSCALL_BIT + 56) }, - { "clone3", (X32_SYSCALL_BIT + 435) }, - { "close", (X32_SYSCALL_BIT + 3) }, - { "connect", (X32_SYSCALL_BIT + 42) }, - { "copy_file_range", (X32_SYSCALL_BIT + 326) }, - { "creat", (X32_SYSCALL_BIT + 85) }, - { "create_module", __PNR_create_module }, - { "delete_module", (X32_SYSCALL_BIT + 176) }, - { "dup", (X32_SYSCALL_BIT + 32) }, - { "dup2", (X32_SYSCALL_BIT + 33) }, - { "dup3", (X32_SYSCALL_BIT + 292) }, - { "epoll_create", (X32_SYSCALL_BIT + 213) }, - { "epoll_create1", (X32_SYSCALL_BIT + 291) }, - { "epoll_ctl", (X32_SYSCALL_BIT + 233) }, - { "epoll_ctl_old", __PNR_epoll_ctl_old }, - { "epoll_pwait", (X32_SYSCALL_BIT + 281) }, - { "epoll_wait", (X32_SYSCALL_BIT + 232) }, - { "epoll_wait_old", __PNR_epoll_wait_old }, - { "eventfd", (X32_SYSCALL_BIT + 284) }, - { "eventfd2", (X32_SYSCALL_BIT + 290) }, - { "execve", (X32_SYSCALL_BIT + 520) }, - { "execveat", (X32_SYSCALL_BIT + 545) }, - { "exit", (X32_SYSCALL_BIT + 60) }, - { "exit_group", (X32_SYSCALL_BIT + 231) }, - { "faccessat", (X32_SYSCALL_BIT + 269) }, - { "fadvise64", (X32_SYSCALL_BIT + 221) }, - { "fadvise64_64", __PNR_fadvise64_64 }, - { "fallocate", (X32_SYSCALL_BIT + 285) }, - { "fanotify_init", (X32_SYSCALL_BIT + 300) }, - { "fanotify_mark", (X32_SYSCALL_BIT + 301) }, - { "fchdir", (X32_SYSCALL_BIT + 81) }, - { "fchmod", (X32_SYSCALL_BIT + 91) }, - { "fchmodat", (X32_SYSCALL_BIT + 268) }, - { "fchown", (X32_SYSCALL_BIT + 93) }, - { "fchown32", __PNR_fchown32 }, - { "fchownat", (X32_SYSCALL_BIT + 260) }, - { "fcntl", (X32_SYSCALL_BIT + 72) }, - { "fcntl64", __PNR_fcntl64 }, - { "fdatasync", (X32_SYSCALL_BIT + 75) }, - { "fgetxattr", (X32_SYSCALL_BIT + 193) }, - { "finit_module", (X32_SYSCALL_BIT + 313) }, - { "flistxattr", (X32_SYSCALL_BIT + 196) }, - { "flock", (X32_SYSCALL_BIT + 73) }, - { "fork", (X32_SYSCALL_BIT + 57) }, - { "fremovexattr", (X32_SYSCALL_BIT + 199) }, - { "fsconfig", (X32_SYSCALL_BIT + 431) }, - { "fsetxattr", (X32_SYSCALL_BIT + 190) }, - { "fsmount", (X32_SYSCALL_BIT + 432) }, - { "fsopen", (X32_SYSCALL_BIT + 430) }, - { "fspick", (X32_SYSCALL_BIT + 433) }, - { "fstat", (X32_SYSCALL_BIT + 5) }, - { "fstat64", __PNR_fstat64 }, - { "fstatat64", __PNR_fstatat64 }, - { "fstatfs", (X32_SYSCALL_BIT + 138) }, - { "fstatfs64", __PNR_fstatfs64 }, - { "fsync", (X32_SYSCALL_BIT + 74) }, - { "ftime", __PNR_ftime }, - { "ftruncate", (X32_SYSCALL_BIT + 77) }, - { "ftruncate64", __PNR_ftruncate64 }, - { "futex", (X32_SYSCALL_BIT + 202) }, - { "futex_time64", __PNR_futex_time64 }, - { "futimesat", (X32_SYSCALL_BIT + 261) }, - { "get_kernel_syms", __PNR_get_kernel_syms }, - { "get_mempolicy", (X32_SYSCALL_BIT + 239) }, - { "get_robust_list", (X32_SYSCALL_BIT + 531) }, - { "get_thread_area", __PNR_get_thread_area }, - { "get_tls", __PNR_get_tls }, - { "getcpu", (X32_SYSCALL_BIT + 309) }, - { "getcwd", (X32_SYSCALL_BIT + 79) }, - { "getdents", (X32_SYSCALL_BIT + 78) }, - { "getdents64", (X32_SYSCALL_BIT + 217) }, - { "getegid", (X32_SYSCALL_BIT + 108) }, - { "getegid32", __PNR_getegid32 }, - { "geteuid", (X32_SYSCALL_BIT + 107) }, - { "geteuid32", __PNR_geteuid32 }, - { "getgid", (X32_SYSCALL_BIT + 104) }, - { "getgid32", __PNR_getgid32 }, - { "getgroups", (X32_SYSCALL_BIT + 115) }, - { "getgroups32", __PNR_getgroups32 }, - { "getitimer", (X32_SYSCALL_BIT + 36) }, - { "getpeername", (X32_SYSCALL_BIT + 52) }, - { "getpgid", (X32_SYSCALL_BIT + 121) }, - { "getpgrp", (X32_SYSCALL_BIT + 111) }, - { "getpid", (X32_SYSCALL_BIT + 39) }, - { "getpmsg", (X32_SYSCALL_BIT + 181) }, - { "getppid", (X32_SYSCALL_BIT + 110) }, - { "getpriority", (X32_SYSCALL_BIT + 140) }, - { "getrandom", (X32_SYSCALL_BIT + 318) }, - { "getresgid", (X32_SYSCALL_BIT + 120) }, - { "getresgid32", __PNR_getresgid32 }, - { "getresuid", (X32_SYSCALL_BIT + 118) }, - { "getresuid32", __PNR_getresuid32 }, - { "getrlimit", (X32_SYSCALL_BIT + 97) }, - { "getrusage", (X32_SYSCALL_BIT + 98) }, - { "getsid", (X32_SYSCALL_BIT + 124) }, - { "getsockname", (X32_SYSCALL_BIT + 51) }, - { "getsockopt", (X32_SYSCALL_BIT + 542) }, - { "gettid", (X32_SYSCALL_BIT + 186) }, - { "gettimeofday", (X32_SYSCALL_BIT + 96) }, - { "getuid", (X32_SYSCALL_BIT + 102) }, - { "getuid32", __PNR_getuid32 }, - { "getxattr", (X32_SYSCALL_BIT + 191) }, - { "gtty", __PNR_gtty }, - { "idle", __PNR_idle }, - { "init_module", (X32_SYSCALL_BIT + 175) }, - { "inotify_add_watch", (X32_SYSCALL_BIT + 254) }, - { "inotify_init", (X32_SYSCALL_BIT + 253) }, - { "inotify_init1", (X32_SYSCALL_BIT + 294) }, - { "inotify_rm_watch", (X32_SYSCALL_BIT + 255) }, - { "io_cancel", (X32_SYSCALL_BIT + 210) }, - { "io_destroy", (X32_SYSCALL_BIT + 207) }, - { "io_getevents", (X32_SYSCALL_BIT + 208) }, - { "io_pgetevents", (X32_SYSCALL_BIT + 333) }, - { "io_pgetevents_time64", __PNR_io_pgetevents_time64 }, - { "io_setup", (X32_SYSCALL_BIT + 543) }, - { "io_submit", (X32_SYSCALL_BIT + 544) }, - { "io_uring_setup", (X32_SYSCALL_BIT + 425) }, - { "io_uring_enter", (X32_SYSCALL_BIT + 426) }, - { "io_uring_register", (X32_SYSCALL_BIT + 427) }, - { "ioctl", (X32_SYSCALL_BIT + 514) }, - { "ioperm", (X32_SYSCALL_BIT + 173) }, - { "iopl", (X32_SYSCALL_BIT + 172) }, - { "ioprio_get", (X32_SYSCALL_BIT + 252) }, - { "ioprio_set", (X32_SYSCALL_BIT + 251) }, - { "ipc", __PNR_ipc }, - { "kcmp", (X32_SYSCALL_BIT + 312) }, - { "kexec_file_load", (X32_SYSCALL_BIT + 320) }, - { "kexec_load", (X32_SYSCALL_BIT + 528) }, - { "keyctl", (X32_SYSCALL_BIT + 250) }, - { "kill", (X32_SYSCALL_BIT + 62) }, - { "lchown", (X32_SYSCALL_BIT + 94) }, - { "lchown32", __PNR_lchown32 }, - { "lgetxattr", (X32_SYSCALL_BIT + 192) }, - { "link", (X32_SYSCALL_BIT + 86) }, - { "linkat", (X32_SYSCALL_BIT + 265) }, - { "listen", (X32_SYSCALL_BIT + 50) }, - { "listxattr", (X32_SYSCALL_BIT + 194) }, - { "llistxattr", (X32_SYSCALL_BIT + 195) }, - { "lock", __PNR_lock }, - { "lookup_dcookie", (X32_SYSCALL_BIT + 212) }, - { "lremovexattr", (X32_SYSCALL_BIT + 198) }, - { "lseek", (X32_SYSCALL_BIT + 8) }, - { "lsetxattr", (X32_SYSCALL_BIT + 189) }, - { "lstat", (X32_SYSCALL_BIT + 6) }, - { "lstat64", __PNR_lstat64 }, - { "madvise", (X32_SYSCALL_BIT + 28) }, - { "mbind", (X32_SYSCALL_BIT + 237) }, - { "membarrier", (X32_SYSCALL_BIT + 324) }, - { "memfd_create", (X32_SYSCALL_BIT + 319) }, - { "migrate_pages", (X32_SYSCALL_BIT + 256) }, - { "mincore", (X32_SYSCALL_BIT + 27) }, - { "mkdir", (X32_SYSCALL_BIT + 83) }, - { "mkdirat", (X32_SYSCALL_BIT + 258) }, - { "mknod", (X32_SYSCALL_BIT + 133) }, - { "mknodat", (X32_SYSCALL_BIT + 259) }, - { "mlock", (X32_SYSCALL_BIT + 149) }, - { "mlock2", (X32_SYSCALL_BIT + 325) }, - { "mlockall", (X32_SYSCALL_BIT + 151) }, - { "mmap", (X32_SYSCALL_BIT + 9) }, - { "mmap2", __PNR_mmap2 }, - { "modify_ldt", (X32_SYSCALL_BIT + 154) }, - { "mount", (X32_SYSCALL_BIT + 165) }, - { "move_mount", (X32_SYSCALL_BIT + 429) }, - { "move_pages", (X32_SYSCALL_BIT + 533) }, - { "mprotect", (X32_SYSCALL_BIT + 10) }, - { "mpx", __PNR_mpx }, - { "mq_getsetattr", (X32_SYSCALL_BIT + 245) }, - { "mq_notify", (X32_SYSCALL_BIT + 527) }, - { "mq_open", (X32_SYSCALL_BIT + 240) }, - { "mq_timedreceive", (X32_SYSCALL_BIT + 243) }, - { "mq_timedreceive_time64", __PNR_mq_timedreceive_time64 }, - { "mq_timedsend", (X32_SYSCALL_BIT + 242) }, - { "mq_timedsend_time64", __PNR_mq_timedsend_time64 }, - { "mq_unlink", (X32_SYSCALL_BIT + 241) }, - { "mremap", (X32_SYSCALL_BIT + 25) }, - { "msgctl", (X32_SYSCALL_BIT + 71) }, - { "msgget", (X32_SYSCALL_BIT + 68) }, - { "msgrcv", (X32_SYSCALL_BIT + 70) }, - { "msgsnd", (X32_SYSCALL_BIT + 69) }, - { "msync", (X32_SYSCALL_BIT + 26) }, - { "multiplexer", __PNR_multiplexer }, - { "munlock", (X32_SYSCALL_BIT + 150) }, - { "munlockall", (X32_SYSCALL_BIT + 152) }, - { "munmap", (X32_SYSCALL_BIT + 11) }, - { "name_to_handle_at", (X32_SYSCALL_BIT + 303) }, - { "nanosleep", (X32_SYSCALL_BIT + 35) }, - { "newfstatat", (X32_SYSCALL_BIT + 262) }, - { "nfsservctl", __PNR_nfsservctl }, - { "nice", __PNR_nice }, - { "oldfstat", __PNR_oldfstat }, - { "oldlstat", __PNR_oldlstat }, - { "oldolduname", __PNR_oldolduname }, - { "oldstat", __PNR_oldstat }, - { "olduname", __PNR_olduname }, - { "oldwait4", __PNR_oldwait4 }, - { "open", (X32_SYSCALL_BIT + 2) }, - { "open_by_handle_at", (X32_SYSCALL_BIT + 304) }, - { "open_tree", (X32_SYSCALL_BIT + 428) }, - { "openat", (X32_SYSCALL_BIT + 257) }, - { "pause", (X32_SYSCALL_BIT + 34) }, - { "pciconfig_iobase", __PNR_pciconfig_iobase }, - { "pciconfig_read", __PNR_pciconfig_read }, - { "pciconfig_write", __PNR_pciconfig_write }, - { "perf_event_open", (X32_SYSCALL_BIT + 298) }, - { "personality", (X32_SYSCALL_BIT + 135) }, - { "pidfd_open", (X32_SYSCALL_BIT + 434) }, - { "pidfd_send_signal", (X32_SYSCALL_BIT + 424) }, - { "pipe", (X32_SYSCALL_BIT + 22) }, - { "pipe2", (X32_SYSCALL_BIT + 293) }, - { "pivot_root", (X32_SYSCALL_BIT + 155) }, - { "pkey_alloc", (X32_SYSCALL_BIT + 330) }, - { "pkey_free", (X32_SYSCALL_BIT + 331) }, - { "pkey_mprotect", (X32_SYSCALL_BIT + 329) }, - { "poll", (X32_SYSCALL_BIT + 7) }, - { "ppoll", (X32_SYSCALL_BIT + 271) }, - { "ppoll_time64", __PNR_ppoll_time64 }, - { "prctl", (X32_SYSCALL_BIT + 157) }, - { "pread64", (X32_SYSCALL_BIT + 17) }, - { "preadv", (X32_SYSCALL_BIT + 534) }, - { "preadv2", (X32_SYSCALL_BIT + 546) }, - { "prlimit64", (X32_SYSCALL_BIT + 302) }, - { "process_vm_readv", (X32_SYSCALL_BIT + 539) }, - { "process_vm_writev", (X32_SYSCALL_BIT + 540) }, - { "prof", __PNR_prof }, - { "profil", __PNR_profil }, - { "pselect6", (X32_SYSCALL_BIT + 270) }, - { "pselect6_time64", __PNR_pselect6_time64 }, - { "ptrace", (X32_SYSCALL_BIT + 521) }, - { "putpmsg", (X32_SYSCALL_BIT + 182) }, - { "pwrite64", (X32_SYSCALL_BIT + 18) }, - { "pwritev", (X32_SYSCALL_BIT + 535) }, - { "pwritev2", (X32_SYSCALL_BIT + 547) }, - { "query_module", __PNR_query_module }, - { "quotactl", (X32_SYSCALL_BIT + 179) }, - { "read", (X32_SYSCALL_BIT + 0) }, - { "readahead", (X32_SYSCALL_BIT + 187) }, - { "readdir", __PNR_readdir }, - { "readlink", (X32_SYSCALL_BIT + 89) }, - { "readlinkat", (X32_SYSCALL_BIT + 267) }, - { "readv", (X32_SYSCALL_BIT + 515) }, - { "reboot", (X32_SYSCALL_BIT + 169) }, - { "recv", __PNR_recv }, - { "recvfrom", (X32_SYSCALL_BIT + 517) }, - { "recvmmsg", (X32_SYSCALL_BIT + 537) }, - { "recvmmsg_time64", __PNR_recvmmsg_time64 }, - { "recvmsg", (X32_SYSCALL_BIT + 519) }, - { "remap_file_pages", (X32_SYSCALL_BIT + 216) }, - { "removexattr", (X32_SYSCALL_BIT + 197) }, - { "rename", (X32_SYSCALL_BIT + 82) }, - { "renameat", (X32_SYSCALL_BIT + 264) }, - { "renameat2", (X32_SYSCALL_BIT + 316) }, - { "request_key", (X32_SYSCALL_BIT + 249) }, - { "restart_syscall", (X32_SYSCALL_BIT + 219) }, - { "rmdir", (X32_SYSCALL_BIT + 84) }, - { "rseq", (X32_SYSCALL_BIT + 334) }, - { "rt_sigaction", (X32_SYSCALL_BIT + 512) }, - { "rt_sigpending", (X32_SYSCALL_BIT + 522) }, - { "rt_sigprocmask", (X32_SYSCALL_BIT + 14) }, - { "rt_sigqueueinfo", (X32_SYSCALL_BIT + 524) }, - { "rt_sigreturn", (X32_SYSCALL_BIT + 513) }, - { "rt_sigsuspend", (X32_SYSCALL_BIT + 130) }, - { "rt_sigtimedwait", (X32_SYSCALL_BIT + 523) }, - { "rt_sigtimedwait_time64", __PNR_rt_sigtimedwait_time64 }, - { "rt_tgsigqueueinfo", (X32_SYSCALL_BIT + 536) }, - { "rtas", __PNR_rtas }, - { "s390_guarded_storage", __PNR_s390_guarded_storage }, - { "s390_pci_mmio_read", __PNR_s390_pci_mmio_read }, - { "s390_pci_mmio_write", __PNR_s390_pci_mmio_write }, - { "s390_runtime_instr", __PNR_s390_runtime_instr }, - { "s390_sthyi", __PNR_s390_sthyi }, - { "sched_get_priority_max", (X32_SYSCALL_BIT + 146) }, - { "sched_get_priority_min", (X32_SYSCALL_BIT + 147) }, - { "sched_getaffinity", (X32_SYSCALL_BIT + 204) }, - { "sched_getattr", (X32_SYSCALL_BIT + 315) }, - { "sched_getparam", (X32_SYSCALL_BIT + 143) }, - { "sched_getscheduler", (X32_SYSCALL_BIT + 145) }, - { "sched_rr_get_interval", (X32_SYSCALL_BIT + 148) }, - { "sched_rr_get_interval_time64", __PNR_sched_rr_get_interval_time64 }, - { "sched_setaffinity", (X32_SYSCALL_BIT + 203) }, - { "sched_setattr", (X32_SYSCALL_BIT + 314) }, - { "sched_setparam", (X32_SYSCALL_BIT + 142) }, - { "sched_setscheduler", (X32_SYSCALL_BIT + 144) }, - { "sched_yield", (X32_SYSCALL_BIT + 24) }, - { "seccomp", (X32_SYSCALL_BIT + 317) }, - { "security", (X32_SYSCALL_BIT + 185) }, - { "select", (X32_SYSCALL_BIT + 23) }, - { "semctl", (X32_SYSCALL_BIT + 66) }, - { "semget", (X32_SYSCALL_BIT + 64) }, - { "semop", (X32_SYSCALL_BIT + 65) }, - { "semtimedop", (X32_SYSCALL_BIT + 220) }, - { "semtimedop_time64", __PNR_semtimedop_time64 }, - { "send", __PNR_send }, - { "sendfile", (X32_SYSCALL_BIT + 40) }, - { "sendfile64", __PNR_sendfile64 }, - { "sendmmsg", (X32_SYSCALL_BIT + 538) }, - { "sendmsg", (X32_SYSCALL_BIT + 518) }, - { "sendto", (X32_SYSCALL_BIT + 44) }, - { "set_mempolicy", (X32_SYSCALL_BIT + 238) }, - { "set_robust_list", (X32_SYSCALL_BIT + 530) }, - { "set_thread_area", __PNR_set_thread_area }, - { "set_tid_address", (X32_SYSCALL_BIT + 218) }, - { "set_tls", __PNR_set_tls }, - { "setdomainname", (X32_SYSCALL_BIT + 171) }, - { "setfsgid", (X32_SYSCALL_BIT + 123) }, - { "setfsgid32", __PNR_setfsgid32 }, - { "setfsuid", (X32_SYSCALL_BIT + 122) }, - { "setfsuid32", __PNR_setfsuid32 }, - { "setgid", (X32_SYSCALL_BIT + 106) }, - { "setgid32", __PNR_setgid32 }, - { "setgroups", (X32_SYSCALL_BIT + 116) }, - { "setgroups32", __PNR_setgroups32 }, - { "sethostname", (X32_SYSCALL_BIT + 170) }, - { "setitimer", (X32_SYSCALL_BIT + 38) }, - { "setns", (X32_SYSCALL_BIT + 308) }, - { "setpgid", (X32_SYSCALL_BIT + 109) }, - { "setpriority", (X32_SYSCALL_BIT + 141) }, - { "setregid", (X32_SYSCALL_BIT + 114) }, - { "setregid32", __PNR_setregid32 }, - { "setresgid", (X32_SYSCALL_BIT + 119) }, - { "setresgid32", __PNR_setresgid32 }, - { "setresuid", (X32_SYSCALL_BIT + 117) }, - { "setresuid32", __PNR_setresuid32 }, - { "setreuid", (X32_SYSCALL_BIT + 113) }, - { "setreuid32", __PNR_setreuid32 }, - { "setrlimit", (X32_SYSCALL_BIT + 160) }, - { "setsid", (X32_SYSCALL_BIT + 112) }, - { "setsockopt", (X32_SYSCALL_BIT + 541) }, - { "settimeofday", (X32_SYSCALL_BIT + 164) }, - { "setuid", (X32_SYSCALL_BIT + 105) }, - { "setuid32", __PNR_setuid32 }, - { "setxattr", (X32_SYSCALL_BIT + 188) }, - { "sgetmask", __PNR_sgetmask }, - { "shmat", (X32_SYSCALL_BIT + 30) }, - { "shmctl", (X32_SYSCALL_BIT + 31) }, - { "shmdt", (X32_SYSCALL_BIT + 67) }, - { "shmget", (X32_SYSCALL_BIT + 29) }, - { "shutdown", (X32_SYSCALL_BIT + 48) }, - { "sigaction", __PNR_sigaction }, - { "sigaltstack", (X32_SYSCALL_BIT + 525) }, - { "signal", __PNR_signal }, - { "signalfd", (X32_SYSCALL_BIT + 282) }, - { "signalfd4", (X32_SYSCALL_BIT + 289) }, - { "sigpending", __PNR_sigpending }, - { "sigprocmask", __PNR_sigprocmask }, - { "sigreturn", __PNR_sigreturn }, - { "sigsuspend", __PNR_sigsuspend }, - { "socket", (X32_SYSCALL_BIT + 41) }, - { "socketcall", __PNR_socketcall }, - { "socketpair", (X32_SYSCALL_BIT + 53) }, - { "splice", (X32_SYSCALL_BIT + 275) }, - { "spu_create", __PNR_spu_create }, - { "spu_run", __PNR_spu_run }, - { "ssetmask", __PNR_ssetmask }, - { "stat", (X32_SYSCALL_BIT + 4) }, - { "stat64", __PNR_stat64 }, - { "statfs", (X32_SYSCALL_BIT + 137) }, - { "statfs64", __PNR_statfs64 }, - { "statx", (X32_SYSCALL_BIT + 332) }, - { "stime", __PNR_stime }, - { "stty", __PNR_stty }, - { "subpage_prot", __PNR_subpage_prot }, - { "swapcontext", __PNR_swapcontext }, - { "swapoff", (X32_SYSCALL_BIT + 168) }, - { "swapon", (X32_SYSCALL_BIT + 167) }, - { "switch_endian", __PNR_switch_endian }, - { "symlink", (X32_SYSCALL_BIT + 88) }, - { "symlinkat", (X32_SYSCALL_BIT + 266) }, - { "sync", (X32_SYSCALL_BIT + 162) }, - { "sync_file_range", (X32_SYSCALL_BIT + 277) }, - { "sync_file_range2", __PNR_sync_file_range2 }, - { "syncfs", (X32_SYSCALL_BIT + 306) }, - { "syscall", __PNR_syscall }, - { "sys_debug_setcontext", __PNR_sys_debug_setcontext }, - { "sysfs", (X32_SYSCALL_BIT + 139) }, - { "sysinfo", (X32_SYSCALL_BIT + 99) }, - { "syslog", (X32_SYSCALL_BIT + 103) }, - { "sysmips", __PNR_sysmips }, - { "tee", (X32_SYSCALL_BIT + 276) }, - { "tgkill", (X32_SYSCALL_BIT + 234) }, - { "time", (X32_SYSCALL_BIT + 201) }, - { "timer_create", (X32_SYSCALL_BIT + 526) }, - { "timer_delete", (X32_SYSCALL_BIT + 226) }, - { "timer_getoverrun", (X32_SYSCALL_BIT + 225) }, - { "timer_gettime", (X32_SYSCALL_BIT + 224) }, - { "timer_gettime64", __PNR_timer_gettime64 }, - { "timer_settime", (X32_SYSCALL_BIT + 223) }, - { "timer_settime64", __PNR_timer_settime64 }, - { "timerfd", __PNR_timerfd }, - { "timerfd_create", (X32_SYSCALL_BIT + 283) }, - { "timerfd_gettime", (X32_SYSCALL_BIT + 287) }, - { "timerfd_gettime64", __PNR_timerfd_gettime64 }, - { "timerfd_settime", (X32_SYSCALL_BIT + 286) }, - { "timerfd_settime64", __PNR_timerfd_settime64 }, - { "times", (X32_SYSCALL_BIT + 100) }, - { "tkill", (X32_SYSCALL_BIT + 200) }, - { "truncate", (X32_SYSCALL_BIT + 76) }, - { "truncate64", __PNR_truncate64 }, - { "tuxcall", (X32_SYSCALL_BIT + 184) }, - { "ugetrlimit", __PNR_ugetrlimit }, - { "ulimit", __PNR_ulimit }, - { "umask", (X32_SYSCALL_BIT + 95) }, - { "umount", __PNR_umount }, - { "umount2", (X32_SYSCALL_BIT + 166) }, - { "uname", (X32_SYSCALL_BIT + 63) }, - { "unlink", (X32_SYSCALL_BIT + 87) }, - { "unlinkat", (X32_SYSCALL_BIT + 263) }, - { "unshare", (X32_SYSCALL_BIT + 272) }, - { "uselib", __PNR_uselib }, - { "userfaultfd", (X32_SYSCALL_BIT + 323) }, - { "usr26", __PNR_usr26 }, - { "usr32", __PNR_usr32 }, - { "ustat", (X32_SYSCALL_BIT + 136) }, - { "utime", (X32_SYSCALL_BIT + 132) }, - { "utimensat", (X32_SYSCALL_BIT + 280) }, - { "utimensat_time64", __PNR_utimensat_time64 }, - { "utimes", (X32_SYSCALL_BIT + 235) }, - { "vfork", (X32_SYSCALL_BIT + 58) }, - { "vhangup", (X32_SYSCALL_BIT + 153) }, - { "vm86", __PNR_vm86 }, - { "vm86old", __PNR_vm86old }, - { "vmsplice", (X32_SYSCALL_BIT + 532) }, - { "vserver", __PNR_vserver }, - { "wait4", (X32_SYSCALL_BIT + 61) }, - { "waitid", (X32_SYSCALL_BIT + 529) }, - { "waitpid", __PNR_waitpid }, - { "write", (X32_SYSCALL_BIT + 1) }, - { "writev", (X32_SYSCALL_BIT + 516) }, - { NULL, __NR_SCMP_ERROR}, -}; - -/** - * Resolve a syscall name to a number - * @param name the syscall name - * - * Resolve the given syscall name to the syscall number using the syscall table. - * Returns the syscall number on success, including negative pseudo syscall - * numbers; returns __NR_SCMP_ERROR on failure. - * - */ -int x32_syscall_resolve_name(const char *name) -{ - unsigned int iter; - const struct arch_syscall_def *table = x32_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].name != NULL; iter++) { - if (strcmp(name, table[iter].name) == 0) - return table[iter].num; - } - - return __NR_SCMP_ERROR; -} - -/** - * Resolve a syscall number to a name - * @param num the syscall number - * - * Resolve the given syscall number to the syscall name using the syscall table. - * Returns a pointer to the syscall name string on success, including pseudo - * syscall names; returns NULL on failure. - * - */ -const char *x32_syscall_resolve_num(int num) -{ - unsigned int iter; - const struct arch_syscall_def *table = x32_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].num != __NR_SCMP_ERROR; iter++) { - if (num == table[iter].num) - return table[iter].name; - } - - return NULL; -} - -/** - * Iterate through the syscall table and return the syscall mapping - * @param spot the offset into the syscall table - * - * Return the syscall mapping at position @spot or NULL on failure. This - * function should only ever be used internally by libseccomp. - * - */ -const struct arch_syscall_def *x32_syscall_iterate(unsigned int spot) -{ - /* XXX - no safety checks here */ - return &x32_syscall_table[spot]; -} diff --git a/src/arch-x86-syscalls.c b/src/arch-x86-syscalls.c deleted file mode 100644 index ff555e9..0000000 --- a/src/arch-x86-syscalls.c +++ /dev/null @@ -1,692 +0,0 @@ -/** - * Enhanced Seccomp x86 Syscall Table - * - * Copyright (c) 2012 Red Hat <pmoore@redhat.com> - * Author: Paul Moore <paul@paul-moore.com> - */ - -/* - * This library is free software; you can redistribute it and/or modify it - * under the terms of version 2.1 of the GNU Lesser General Public License as - * published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, see <http://www.gnu.org/licenses>. - */ - -#include <string.h> - -#include <seccomp.h> - -#include "arch.h" -#include "arch-x86.h" - -/* NOTE: based on Linux v5.4-rc4 */ -const struct arch_syscall_def x86_syscall_table[] = { \ - { "_llseek", 140 }, - { "_newselect", 142 }, - { "_sysctl", 149 }, - { "accept", __PNR_accept }, - { "accept4", 364 }, - { "access", 33 }, - { "acct", 51 }, - { "add_key", 286 }, - { "adjtimex", 124 }, - { "afs_syscall", 137 }, - { "alarm", 27 }, - { "arm_fadvise64_64", __PNR_arm_fadvise64_64 }, - { "arm_sync_file_range", __PNR_arm_sync_file_range }, - { "arch_prctl", 384 }, - { "bdflush", 134 }, - { "bind", 361 }, - { "bpf", 357 }, - { "break", 17 }, - { "breakpoint", __PNR_breakpoint }, - { "brk", 45 }, - { "cachectl", __PNR_cachectl }, - { "cacheflush", __PNR_cacheflush }, - { "capget", 184 }, - { "capset", 185 }, - { "chdir", 12 }, - { "chmod", 15 }, - { "chown", 182 }, - { "chown32", 212 }, - { "chroot", 61 }, - { "clock_adjtime", 343 }, - { "clock_adjtime64", 405 }, - { "clock_getres", 266 }, - { "clock_getres_time64", 406 }, - { "clock_gettime", 265 }, - { "clock_gettime64", 403 }, - { "clock_nanosleep", 267 }, - { "clock_nanosleep_time64", 407 }, - { "clock_settime", 264 }, - { "clock_settime64", 404 }, - { "clone", 120 }, - { "clone3", 435 }, - { "close", 6 }, - { "connect", 362 }, - { "copy_file_range", 377 }, - { "creat", 8 }, - { "create_module", 127 }, - { "delete_module", 129 }, - { "dup", 41 }, - { "dup2", 63 }, - { "dup3", 330 }, - { "epoll_create", 254 }, - { "epoll_create1", 329 }, - { "epoll_ctl", 255 }, - { "epoll_ctl_old", __PNR_epoll_ctl_old }, - { "epoll_pwait", 319 }, - { "epoll_wait", 256 }, - { "epoll_wait_old", __PNR_epoll_wait_old }, - { "eventfd", 323 }, - { "eventfd2", 328 }, - { "execve", 11 }, - { "execveat", 358 }, - { "exit", 1 }, - { "exit_group", 252 }, - { "faccessat", 307 }, - { "fadvise64", 250 }, - { "fadvise64_64", 272 }, - { "fallocate", 324 }, - { "fanotify_init", 338 }, - { "fanotify_mark", 339 }, - { "fchdir", 133 }, - { "fchmod", 94 }, - { "fchmodat", 306 }, - { "fchown", 95 }, - { "fchown32", 207 }, - { "fchownat", 298 }, - { "fcntl", 55 }, - { "fcntl64", 221 }, - { "fdatasync", 148 }, - { "fgetxattr", 231 }, - { "finit_module", 350 }, - { "flistxattr", 234 }, - { "flock", 143 }, - { "fork", 2 }, - { "fremovexattr", 237 }, - { "fsconfig", 431 }, - { "fsetxattr", 228 }, - { "fsmount", 432 }, - { "fsopen", 430 }, - { "fspick", 433 }, - { "fstat", 108 }, - { "fstat64", 197 }, - { "fstatat64", 300 }, - { "fstatfs", 100 }, - { "fstatfs64", 269 }, - { "fsync", 118 }, - { "ftime", 35 }, - { "ftruncate", 93 }, - { "ftruncate64", 194 }, - { "futex", 240 }, - { "futex_time64", 422 }, - { "futimesat", 299 }, - { "get_kernel_syms", 130 }, - { "get_mempolicy", 275 }, - { "get_robust_list", 312 }, - { "get_thread_area", 244 }, - { "get_tls", __PNR_get_tls }, - { "getcpu", 318 }, - { "getcwd", 183 }, - { "getdents", 141 }, - { "getdents64", 220 }, - { "getegid", 50 }, - { "getegid32", 202 }, - { "geteuid", 49 }, - { "geteuid32", 201 }, - { "getgid", 47 }, - { "getgid32", 200 }, - { "getgroups", 80 }, - { "getgroups32", 205 }, - { "getitimer", 105 }, - { "getpeername", 368 }, - { "getpgid", 132 }, - { "getpgrp", 65 }, - { "getpid", 20 }, - { "getpmsg", 188 }, - { "getppid", 64 }, - { "getpriority", 96 }, - { "getrandom", 355 }, - { "getresgid", 171 }, - { "getresgid32", 211 }, - { "getresuid", 165 }, - { "getresuid32", 209 }, - { "getrlimit", 76 }, - { "getrusage", 77 }, - { "getsid", 147 }, - { "getsockname", 367 }, - { "getsockopt", 365 }, - { "gettid", 224 }, - { "gettimeofday", 78 }, - { "getuid", 24 }, - { "getuid32", 199 }, - { "getxattr", 229 }, - { "gtty", 32 }, - { "idle", 112 }, - { "init_module", 128 }, - { "inotify_add_watch", 292 }, - { "inotify_init", 291 }, - { "inotify_init1", 332 }, - { "inotify_rm_watch", 293 }, - { "io_cancel", 249 }, - { "io_destroy", 246 }, - { "io_getevents", 247 }, - { "io_pgetevents", 385 }, - { "io_pgetevents_time64", 416 }, - { "io_setup", 245 }, - { "io_submit", 248 }, - { "io_uring_setup", 425 }, - { "io_uring_enter", 426 }, - { "io_uring_register", 427 }, - { "ioctl", 54 }, - { "ioperm", 101 }, - { "iopl", 110 }, - { "ioprio_get", 290 }, - { "ioprio_set", 289 }, - { "ipc", 117 }, - { "kcmp", 349 }, - { "kexec_file_load", __PNR_kexec_file_load }, - { "kexec_load", 283 }, - { "keyctl", 288 }, - { "kill", 37 }, - { "lchown", 16 }, - { "lchown32", 198 }, - { "lgetxattr", 230 }, - { "link", 9 }, - { "linkat", 303 }, - { "listen", 363 }, - { "listxattr", 232 }, - { "llistxattr", 233 }, - { "lock", 53 }, - { "lookup_dcookie", 253 }, - { "lremovexattr", 236 }, - { "lseek", 19 }, - { "lsetxattr", 227 }, - { "lstat", 107 }, - { "lstat64", 196 }, - { "madvise", 219 }, - { "mbind", 274 }, - { "membarrier", 375 }, - { "memfd_create", 356 }, - { "migrate_pages", 294 }, - { "mincore", 218 }, - { "mkdir", 39 }, - { "mkdirat", 296 }, - { "mknod", 14 }, - { "mknodat", 297 }, - { "mlock", 150 }, - { "mlock2", 376 }, - { "mlockall", 152 }, - { "mmap", 90 }, - { "mmap2", 192 }, - { "modify_ldt", 123 }, - { "mount", 21 }, - { "move_mount", 429 }, - { "move_pages", 317 }, - { "mprotect", 125 }, - { "mpx", 56 }, - { "mq_getsetattr", 282 }, - { "mq_notify", 281 }, - { "mq_open", 277 }, - { "mq_timedreceive", 280 }, - { "mq_timedreceive_time64", 419 }, - { "mq_timedsend", 279 }, - { "mq_timedsend_time64", 418 }, - { "mq_unlink", 278 }, - { "mremap", 163 }, - { "msgctl", 402 }, - { "msgget", 399 }, - { "msgrcv", 401 }, - { "msgsnd", 400 }, - { "msync", 144 }, - { "multiplexer", __PNR_multiplexer }, - { "munlock", 151 }, - { "munlockall", 153 }, - { "munmap", 91 }, - { "name_to_handle_at", 341 }, - { "nanosleep", 162 }, - { "newfstatat", __PNR_newfstatat }, - { "nfsservctl", 169 }, - { "nice", 34 }, - { "oldfstat", 28 }, - { "oldlstat", 84 }, - { "oldolduname", 59 }, - { "oldstat", 18 }, - { "olduname", 109 }, - { "oldwait4", __PNR_oldwait4 }, - { "open", 5 }, - { "open_by_handle_at", 342 }, - { "open_tree", 428 }, - { "openat", 295 }, - { "pause", 29 }, - { "pciconfig_iobase", __PNR_pciconfig_iobase }, - { "pciconfig_read", __PNR_pciconfig_read }, - { "pciconfig_write", __PNR_pciconfig_write }, - { "perf_event_open", 336 }, - { "personality", 136 }, - { "pidfd_open", 434 }, - { "pidfd_send_signal", 424 }, - { "pipe", 42 }, - { "pipe2", 331 }, - { "pivot_root", 217 }, - { "pkey_alloc", 381 }, - { "pkey_free", 382 }, - { "pkey_mprotect", 380 }, - { "poll", 168 }, - { "ppoll", 309 }, - { "ppoll_time64", 414 }, - { "prctl", 172 }, - { "pread64", 180 }, - { "preadv", 333 }, - { "preadv2", 378 }, - { "prlimit64", 340 }, - { "process_vm_readv", 347 }, - { "process_vm_writev", 348 }, - { "prof", 44 }, - { "profil", 98 }, - { "pselect6", 308 }, - { "pselect6_time64", 413 }, - { "ptrace", 26 }, - { "putpmsg", 189 }, - { "pwrite64", 181 }, - { "pwritev", 334 }, - { "pwritev2", 379 }, - { "query_module", 167 }, - { "quotactl", 131 }, - { "read", 3 }, - { "readahead", 225 }, - { "readdir", 89 }, - { "readlink", 85 }, - { "readlinkat", 305 }, - { "readv", 145 }, - { "reboot", 88 }, - { "recv", __PNR_recv }, - { "recvfrom", 371 }, - { "recvmmsg", 337 }, - { "recvmmsg_time64", 417 }, - { "recvmsg", 372 }, - { "remap_file_pages", 257 }, - { "removexattr", 235 }, - { "rename", 38 }, - { "renameat", 302 }, - { "renameat2", 353 }, - { "request_key", 287 }, - { "restart_syscall", 0 }, - { "rmdir", 40 }, - { "rseq", 386 }, - { "rt_sigaction", 174 }, - { "rt_sigpending", 176 }, - { "rt_sigprocmask", 175 }, - { "rt_sigqueueinfo", 178 }, - { "rt_sigreturn", 173 }, - { "rt_sigsuspend", 179 }, - { "rt_sigtimedwait", 177 }, - { "rt_sigtimedwait_time64", 421 }, - { "rt_tgsigqueueinfo", 335 }, - { "rtas", __PNR_rtas }, - { "s390_guarded_storage", __PNR_s390_guarded_storage }, - { "s390_pci_mmio_read", __PNR_s390_pci_mmio_read }, - { "s390_pci_mmio_write", __PNR_s390_pci_mmio_write }, - { "s390_runtime_instr", __PNR_s390_runtime_instr }, - { "s390_sthyi", __PNR_s390_sthyi }, - { "sched_get_priority_max", 159 }, - { "sched_get_priority_min", 160 }, - { "sched_getaffinity", 242 }, - { "sched_getattr", 352 }, - { "sched_getparam", 155 }, - { "sched_getscheduler", 157 }, - { "sched_rr_get_interval", 161 }, - { "sched_rr_get_interval_time64", 423 }, - { "sched_setaffinity", 241 }, - { "sched_setattr", 351 }, - { "sched_setparam", 154 }, - { "sched_setscheduler", 156 }, - { "sched_yield", 158 }, - { "seccomp", 354 }, - { "security", __PNR_security }, - { "select", 82 }, - { "semctl", 394 }, - { "semget", 393 }, - { "semop", __PNR_semop }, - { "semtimedop", __PNR_semtimedop }, - { "semtimedop_time64", 420 }, - { "send", __PNR_send }, - { "sendfile", 187 }, - { "sendfile64", 239 }, - { "sendmmsg", 345 }, - { "sendmsg", 370 }, - { "sendto", 369 }, - { "set_mempolicy", 276 }, - { "set_robust_list", 311 }, - { "set_thread_area", 243 }, - { "set_tid_address", 258 }, - { "set_tls", __PNR_set_tls }, - { "setdomainname", 121 }, - { "setfsgid", 139 }, - { "setfsgid32", 216 }, - { "setfsuid", 138 }, - { "setfsuid32", 215 }, - { "setgid", 46 }, - { "setgid32", 214 }, - { "setgroups", 81 }, - { "setgroups32", 206 }, - { "sethostname", 74 }, - { "setitimer", 104 }, - { "setns", 346 }, - { "setpgid", 57 }, - { "setpriority", 97 }, - { "setregid", 71 }, - { "setregid32", 204 }, - { "setresgid", 170 }, - { "setresgid32", 210 }, - { "setresuid", 164 }, - { "setresuid32", 208 }, - { "setreuid", 70 }, - { "setreuid32", 203 }, - { "setrlimit", 75 }, - { "setsid", 66 }, - { "setsockopt", 366 }, - { "settimeofday", 79 }, - { "setuid", 23 }, - { "setuid32", 213 }, - { "setxattr", 226 }, - { "sgetmask", 68 }, - { "shmat", 397 }, - { "shmctl", 396 }, - { "shmdt", 398 }, - { "shmget", 395 }, - { "shutdown", 373 }, - { "sigaction", 67 }, - { "sigaltstack", 186 }, - { "signal", 48 }, - { "signalfd", 321 }, - { "signalfd4", 327 }, - { "sigpending", 73 }, - { "sigprocmask", 126 }, - { "sigreturn", 119 }, - { "sigsuspend", 72 }, - { "socket", 359 }, - { "socketcall", 102 }, - { "socketpair", 360 }, - { "splice", 313 }, - { "spu_create", __PNR_spu_create }, - { "spu_run", __PNR_spu_run }, - { "ssetmask", 69 }, - { "stat", 106 }, - { "stat64", 195 }, - { "statfs", 99 }, - { "statfs64", 268 }, - { "statx", 383 }, - { "stime", 25 }, - { "stty", 31 }, - { "subpage_prot", __PNR_subpage_prot }, - { "swapcontext", __PNR_swapcontext }, - { "swapoff", 115 }, - { "swapon", 87 }, - { "switch_endian", __PNR_switch_endian }, - { "symlink", 83 }, - { "symlinkat", 304 }, - { "sync", 36 }, - { "sync_file_range", 314 }, - { "sync_file_range2", __PNR_sync_file_range2 }, - { "syncfs", 344 }, - { "syscall", __PNR_syscall }, - { "sys_debug_setcontext", __PNR_sys_debug_setcontext }, - { "sysfs", 135 }, - { "sysinfo", 116 }, - { "syslog", 103 }, - { "sysmips", __PNR_sysmips }, - { "tee", 315 }, - { "tgkill", 270 }, - { "time", 13 }, - { "timer_create", 259 }, - { "timer_delete", 263 }, - { "timer_getoverrun", 262 }, - { "timer_gettime", 261 }, - { "timer_gettime64", 408 }, - { "timer_settime", 260 }, - { "timer_settime64", 409 }, - { "timerfd", __PNR_timerfd }, - { "timerfd_create", 322 }, - { "timerfd_gettime", 326 }, - { "timerfd_gettime64", 410 }, - { "timerfd_settime", 325 }, - { "timerfd_settime64", 411 }, - { "times", 43 }, - { "tkill", 238 }, - { "truncate", 92 }, - { "truncate64", 193 }, - { "tuxcall", __PNR_tuxcall }, - { "ugetrlimit", 191 }, - { "ulimit", 58 }, - { "umask", 60 }, - { "umount", 22 }, - { "umount2", 52 }, - { "uname", 122 }, - { "unlink", 10 }, - { "unlinkat", 301 }, - { "unshare", 310 }, - { "uselib", 86 }, - { "userfaultfd", 374 }, - { "usr26", __PNR_usr26 }, - { "usr32", __PNR_usr32 }, - { "ustat", 62 }, - { "utime", 30 }, - { "utimensat", 320 }, - { "utimensat_time64", 412 }, - { "utimes", 271 }, - { "vfork", 190 }, - { "vhangup", 111 }, - { "vm86", 166 }, - { "vm86old", 113 }, - { "vmsplice", 316 }, - { "vserver", 273 }, - { "wait4", 114 }, - { "waitid", 284 }, - { "waitpid", 7 }, - { "write", 4 }, - { "writev", 146 }, - { NULL, __NR_SCMP_ERROR }, -}; - -/** - * Resolve a syscall name to a number - * @param name the syscall name - * - * Resolve the given syscall name to the syscall number using the syscall table. - * Returns the syscall number on success, including negative pseudo syscall - * numbers; returns __NR_SCMP_ERROR on failure. - * - */ -int x86_syscall_resolve_name(const char *name) -{ - unsigned int iter; - const struct arch_syscall_def *table = x86_syscall_table; - - /* XXX - plenty of room for future improvement here */ - - if (strcmp(name, "accept") == 0) - return __PNR_accept; - else if (strcmp(name, "accept4") == 0) - return __PNR_accept4; - else if (strcmp(name, "bind") == 0) - return __PNR_bind; - else if (strcmp(name, "connect") == 0) - return __PNR_connect; - else if (strcmp(name, "getpeername") == 0) - return __PNR_getpeername; - else if (strcmp(name, "getsockname") == 0) - return __PNR_getsockname; - else if (strcmp(name, "getsockopt") == 0) - return __PNR_getsockopt; - else if (strcmp(name, "listen") == 0) - return __PNR_listen; - else if (strcmp(name, "recv") == 0) - return __PNR_recv; - else if (strcmp(name, "recvfrom") == 0) - return __PNR_recvfrom; - else if (strcmp(name, "recvmsg") == 0) - return __PNR_recvmsg; - else if (strcmp(name, "recvmmsg") == 0) - return __PNR_recvmmsg; - else if (strcmp(name, "send") == 0) - return __PNR_send; - else if (strcmp(name, "sendmsg") == 0) - return __PNR_sendmsg; - else if (strcmp(name, "sendmmsg") == 0) - return __PNR_sendmmsg; - else if (strcmp(name, "sendto") == 0) - return __PNR_sendto; - else if (strcmp(name, "setsockopt") == 0) - return __PNR_setsockopt; - else if (strcmp(name, "shutdown") == 0) - return __PNR_shutdown; - else if (strcmp(name, "socket") == 0) - return __PNR_socket; - else if (strcmp(name, "socketpair") == 0) - return __PNR_socketpair; - - if (strcmp(name, "semop") == 0) - return __PNR_semop; - else if (strcmp(name, "semget") == 0) - return __PNR_semget; - else if (strcmp(name, "semctl") == 0) - return __PNR_semctl; - else if (strcmp(name, "semtimedop") == 0) - return __PNR_semtimedop; - else if (strcmp(name, "msgsnd") == 0) - return __PNR_msgsnd; - else if (strcmp(name, "msgrcv") == 0) - return __PNR_msgrcv; - else if (strcmp(name, "msgget") == 0) - return __PNR_msgget; - else if (strcmp(name, "msgctl") == 0) - return __PNR_msgctl; - else if (strcmp(name, "shmat") == 0) - return __PNR_shmat; - else if (strcmp(name, "shmdt") == 0) - return __PNR_shmdt; - else if (strcmp(name, "shmget") == 0) - return __PNR_shmget; - else if (strcmp(name, "shmctl") == 0) - return __PNR_shmctl; - - for (iter = 0; table[iter].name != NULL; iter++) { - if (strcmp(name, table[iter].name) == 0) - return table[iter].num; - } - - return __NR_SCMP_ERROR; -} - -/** - * Resolve a syscall number to a name - * @param num the syscall number - * - * Resolve the given syscall number to the syscall name using the syscall table. - * Returns a pointer to the syscall name string on success, including pseudo - * syscall names; returns NULL on failure. - * - */ -const char *x86_syscall_resolve_num(int num) -{ - unsigned int iter; - const struct arch_syscall_def *table = x86_syscall_table; - - /* XXX - plenty of room for future improvement here */ - - if (num == __PNR_accept) - return "accept"; - else if (num == __PNR_accept4) - return "accept4"; - else if (num == __PNR_bind) - return "bind"; - else if (num == __PNR_connect) - return "connect"; - else if (num == __PNR_getpeername) - return "getpeername"; - else if (num == __PNR_getsockname) - return "getsockname"; - else if (num == __PNR_getsockopt) - return "getsockopt"; - else if (num == __PNR_listen) - return "listen"; - else if (num == __PNR_recv) - return "recv"; - else if (num == __PNR_recvfrom) - return "recvfrom"; - else if (num == __PNR_recvmsg) - return "recvmsg"; - else if (num == __PNR_recvmmsg) - return "recvmmsg"; - else if (num == __PNR_send) - return "send"; - else if (num == __PNR_sendmsg) - return "sendmsg"; - else if (num == __PNR_sendmmsg) - return "sendmmsg"; - else if (num == __PNR_sendto) - return "sendto"; - else if (num == __PNR_setsockopt) - return "setsockopt"; - else if (num == __PNR_shutdown) - return "shutdown"; - else if (num == __PNR_socket) - return "socket"; - else if (num == __PNR_socketpair) - return "socketpair"; - - if (num == __PNR_semop) - return "semop"; - else if (num == __PNR_semget) - return "semget"; - else if (num == __PNR_semctl) - return "semctl"; - else if (num == __PNR_semtimedop) - return "semtimedop"; - else if (num == __PNR_msgsnd) - return "msgsnd"; - else if (num == __PNR_msgrcv) - return "msgrcv"; - else if (num == __PNR_msgget) - return "msgget"; - else if (num == __PNR_msgctl) - return "msgctl"; - else if (num == __PNR_shmat) - return "shmat"; - else if (num == __PNR_shmdt) - return "shmdt"; - else if (num == __PNR_shmget) - return "shmget"; - else if (num == __PNR_shmctl) - return "shmctl"; - - for (iter = 0; table[iter].num != __NR_SCMP_ERROR; iter++) { - if (num == table[iter].num) - return table[iter].name; - } - - return NULL; -} - -/** - * Iterate through the syscall table and return the syscall mapping - * @param spot the offset into the syscall table - * - * Return the syscall mapping at position @spot or NULL on failure. This - * function should only ever be used internally by libseccomp. - * - */ -const struct arch_syscall_def *x86_syscall_iterate(unsigned int spot) -{ - /* XXX - no safety checks here */ - return &x86_syscall_table[spot]; -} diff --git a/src/arch-x86_64-syscalls.c b/src/arch-x86_64-syscalls.c deleted file mode 100644 index a2fdef8..0000000 --- a/src/arch-x86_64-syscalls.c +++ /dev/null @@ -1,559 +0,0 @@ -/** - * Enhanced Seccomp x86_64 Syscall Table - * - * Copyright (c) 2012 Red Hat <pmoore@redhat.com> - * Author: Paul Moore <paul@paul-moore.com> - */ - -/* - * This library is free software; you can redistribute it and/or modify it - * under the terms of version 2.1 of the GNU Lesser General Public License as - * published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, see <http://www.gnu.org/licenses>. - */ - -#include <string.h> - -#include <seccomp.h> - -#include "arch.h" -#include "arch-x86_64.h" - -/* NOTE: based on Linux v5.4-rc4 */ -const struct arch_syscall_def x86_64_syscall_table[] = { \ - { "_llseek", __PNR__llseek }, - { "_newselect", __PNR__newselect }, - { "_sysctl", 156 }, - { "accept", 43 }, - { "accept4", 288 }, - { "access", 21 }, - { "acct", 163 }, - { "add_key", 248 }, - { "adjtimex", 159 }, - { "afs_syscall", 183 }, - { "alarm", 37 }, - { "arm_fadvise64_64", __PNR_arm_fadvise64_64 }, - { "arm_sync_file_range", __PNR_arm_sync_file_range }, - { "arch_prctl", 158 }, - { "bdflush", __PNR_bdflush }, - { "bind", 49 }, - { "bpf", 321 }, - { "break", __PNR_break }, - { "breakpoint", __PNR_breakpoint }, - { "brk", 12 }, - { "cachectl", __PNR_cachectl }, - { "cacheflush", __PNR_cacheflush }, - { "capget", 125 }, - { "capset", 126 }, - { "chdir", 80 }, - { "chmod", 90 }, - { "chown", 92 }, - { "chown32", __PNR_chown32 }, - { "chroot", 161 }, - { "clock_adjtime", 305 }, - { "clock_adjtime64", __PNR_clock_adjtime64 }, - { "clock_getres", 229 }, - { "clock_getres_time64", __PNR_clock_getres_time64 }, - { "clock_gettime", 228 }, - { "clock_gettime64", __PNR_clock_gettime64 }, - { "clock_nanosleep", 230 }, - { "clock_nanosleep_time64", __PNR_clock_nanosleep_time64 }, - { "clock_settime", 227 }, - { "clock_settime64", __PNR_clock_settime64 }, - { "clone", 56 }, - { "clone3", 435 }, - { "close", 3 }, - { "connect", 42 }, - { "copy_file_range", 326 }, - { "creat", 85 }, - { "create_module", 174 }, - { "delete_module", 176 }, - { "dup", 32 }, - { "dup2", 33 }, - { "dup3", 292 }, - { "epoll_create", 213 }, - { "epoll_create1", 291 }, - { "epoll_ctl", 233 }, - { "epoll_ctl_old", 214 }, - { "epoll_pwait", 281 }, - { "epoll_wait", 232 }, - { "epoll_wait_old", 215 }, - { "eventfd", 284 }, - { "eventfd2", 290 }, - { "execve", 59 }, - { "execveat", 322 }, - { "exit", 60 }, - { "exit_group", 231 }, - { "faccessat", 269 }, - { "fadvise64", 221 }, - { "fadvise64_64", __PNR_fadvise64_64 }, - { "fallocate", 285 }, - { "fanotify_init", 300 }, - { "fanotify_mark", 301 }, - { "fchdir", 81 }, - { "fchmod", 91 }, - { "fchmodat", 268 }, - { "fchown", 93 }, - { "fchown32", __PNR_fchown32 }, - { "fchownat", 260 }, - { "fcntl", 72 }, - { "fcntl64", __PNR_fcntl64 }, - { "fdatasync", 75 }, - { "fgetxattr", 193 }, - { "finit_module", 313 }, - { "flistxattr", 196 }, - { "flock", 73 }, - { "fork", 57 }, - { "fremovexattr", 199 }, - { "fsconfig", 431 }, - { "fsetxattr", 190 }, - { "fsmount", 432 }, - { "fsopen", 430 }, - { "fspick", 433 }, - { "fstat", 5 }, - { "fstat64", __PNR_fstat64 }, - { "fstatat64", __PNR_fstatat64 }, - { "fstatfs", 138 }, - { "fstatfs64", __PNR_fstatfs64 }, - { "fsync", 74 }, - { "ftime", __PNR_ftime }, - { "ftruncate", 77 }, - { "ftruncate64", __PNR_ftruncate64 }, - { "futex", 202 }, - { "futex_time64", __PNR_futex_time64 }, - { "futimesat", 261 }, - { "get_kernel_syms", 177 }, - { "get_mempolicy", 239 }, - { "get_robust_list", 274 }, - { "get_thread_area", 211 }, - { "get_tls", __PNR_get_tls }, - { "getcpu", 309 }, - { "getcwd", 79 }, - { "getdents", 78 }, - { "getdents64", 217 }, - { "getegid", 108 }, - { "getegid32", __PNR_getegid32 }, - { "geteuid", 107 }, - { "geteuid32", __PNR_geteuid32 }, - { "getgid", 104 }, - { "getgid32", __PNR_getgid32 }, - { "getgroups", 115 }, - { "getgroups32", __PNR_getgroups32 }, - { "getitimer", 36 }, - { "getpeername", 52 }, - { "getpgid", 121 }, - { "getpgrp", 111 }, - { "getpid", 39 }, - { "getpmsg", 181 }, - { "getppid", 110 }, - { "getpriority", 140 }, - { "getrandom", 318 }, - { "getresgid", 120 }, - { "getresgid32", __PNR_getresgid32 }, - { "getresuid", 118 }, - { "getresuid32", __PNR_getresuid32 }, - { "getrlimit", 97 }, - { "getrusage", 98 }, - { "getsid", 124 }, - { "getsockname", 51 }, - { "getsockopt", 55 }, - { "gettid", 186 }, - { "gettimeofday", 96 }, - { "getuid", 102 }, - { "getuid32", __PNR_getuid32 }, - { "getxattr", 191 }, - { "gtty", __PNR_gtty }, - { "idle", __PNR_idle }, - { "init_module", 175 }, - { "inotify_add_watch", 254 }, - { "inotify_init", 253 }, - { "inotify_init1", 294 }, - { "inotify_rm_watch", 255 }, - { "io_cancel", 210 }, - { "io_destroy", 207 }, - { "io_getevents", 208 }, - { "io_pgetevents", 333 }, - { "io_pgetevents_time64", __PNR_io_pgetevents_time64 }, - { "io_setup", 206 }, - { "io_submit", 209 }, - { "io_uring_setup", 425 }, - { "io_uring_enter", 426 }, - { "io_uring_register", 427 }, - { "ioctl", 16 }, - { "ioperm", 173 }, - { "iopl", 172 }, - { "ioprio_get", 252 }, - { "ioprio_set", 251 }, - { "ipc", __PNR_ipc }, - { "kcmp", 312 }, - { "kexec_file_load", 320 }, - { "kexec_load", 246 }, - { "keyctl", 250 }, - { "kill", 62 }, - { "lchown", 94 }, - { "lchown32", __PNR_lchown32 }, - { "lgetxattr", 192 }, - { "link", 86 }, - { "linkat", 265 }, - { "listen", 50 }, - { "listxattr", 194 }, - { "llistxattr", 195 }, - { "lock", __PNR_lock }, - { "lookup_dcookie", 212 }, - { "lremovexattr", 198 }, - { "lseek", 8 }, - { "lsetxattr", 189 }, - { "lstat", 6 }, - { "lstat64", __PNR_lstat64 }, - { "madvise", 28 }, - { "mbind", 237 }, - { "membarrier", 324 }, - { "memfd_create", 319 }, - { "migrate_pages", 256 }, - { "mincore", 27 }, - { "mkdir", 83 }, - { "mkdirat", 258 }, - { "mknod", 133 }, - { "mknodat", 259 }, - { "mlock", 149 }, - { "mlock2", 325 }, - { "mlockall", 151 }, - { "mmap", 9 }, - { "mmap2", __PNR_mmap2 }, - { "modify_ldt", 154 }, - { "mount", 165 }, - { "move_mount", 429 }, - { "move_pages", 279 }, - { "mprotect", 10 }, - { "mpx", __PNR_mpx }, - { "mq_getsetattr", 245 }, - { "mq_notify", 244 }, - { "mq_open", 240 }, - { "mq_timedreceive", 243 }, - { "mq_timedreceive_time64", __PNR_mq_timedreceive_time64 }, - { "mq_timedsend", 242 }, - { "mq_timedsend_time64", __PNR_mq_timedsend_time64 }, - { "mq_unlink", 241 }, - { "mremap", 25 }, - { "msgctl", 71 }, - { "msgget", 68 }, - { "msgrcv", 70 }, - { "msgsnd", 69 }, - { "msync", 26 }, - { "multiplexer", __PNR_multiplexer }, - { "munlock", 150 }, - { "munlockall", 152 }, - { "munmap", 11 }, - { "name_to_handle_at", 303 }, - { "nanosleep", 35 }, - { "newfstatat", 262 }, - { "nfsservctl", 180 }, - { "nice", __PNR_nice }, - { "oldfstat", __PNR_oldfstat }, - { "oldlstat", __PNR_oldlstat }, - { "oldolduname", __PNR_oldolduname }, - { "oldstat", __PNR_oldstat }, - { "olduname", __PNR_olduname }, - { "oldwait4", __PNR_oldwait4 }, - { "open", 2 }, - { "open_by_handle_at", 304 }, - { "open_tree", 428 }, - { "openat", 257 }, - { "pause", 34 }, - { "pciconfig_iobase", __PNR_pciconfig_iobase }, - { "pciconfig_read", __PNR_pciconfig_read }, - { "pciconfig_write", __PNR_pciconfig_write }, - { "perf_event_open", 298 }, - { "personality", 135 }, - { "pidfd_open", 434 }, - { "pidfd_send_signal", 424 }, - { "pipe", 22 }, - { "pipe2", 293 }, - { "pivot_root", 155 }, - { "pkey_alloc", 330 }, - { "pkey_free", 331 }, - { "pkey_mprotect", 329 }, - { "poll", 7 }, - { "ppoll", 271 }, - { "ppoll_time64", __PNR_ppoll_time64 }, - { "prctl", 157 }, - { "pread64", 17 }, - { "preadv", 295 }, - { "preadv2", 327 }, - { "prlimit64", 302 }, - { "process_vm_readv", 310 }, - { "process_vm_writev", 311 }, - { "prof", __PNR_prof }, - { "profil", __PNR_profil }, - { "pselect6", 270 }, - { "pselect6_time64", __PNR_pselect6_time64 }, - { "ptrace", 101 }, - { "putpmsg", 182 }, - { "pwrite64", 18 }, - { "pwritev", 296 }, - { "pwritev2", 328 }, - { "query_module", 178 }, - { "quotactl", 179 }, - { "read", 0 }, - { "readahead", 187 }, - { "readdir", __PNR_readdir }, - { "readlink", 89 }, - { "readlinkat", 267 }, - { "readv", 19 }, - { "reboot", 169 }, - { "recv", __PNR_recv }, - { "recvfrom", 45 }, - { "recvmmsg", 299 }, - { "recvmmsg_time64", __PNR_recvmmsg_time64 }, - { "recvmsg", 47 }, - { "remap_file_pages", 216 }, - { "removexattr", 197 }, - { "rename", 82 }, - { "renameat", 264 }, - { "renameat2", 316 }, - { "request_key", 249 }, - { "restart_syscall", 219 }, - { "rmdir", 84 }, - { "rseq", 334 }, - { "rt_sigaction", 13 }, - { "rt_sigpending", 127 }, - { "rt_sigprocmask", 14 }, - { "rt_sigqueueinfo", 129 }, - { "rt_sigreturn", 15 }, - { "rt_sigsuspend", 130 }, - { "rt_sigtimedwait", 128 }, - { "rt_sigtimedwait_time64", __PNR_rt_sigtimedwait_time64 }, - { "rt_tgsigqueueinfo", 297 }, - { "rtas", __PNR_rtas }, - { "s390_guarded_storage", __PNR_s390_guarded_storage }, - { "s390_pci_mmio_read", __PNR_s390_pci_mmio_read }, - { "s390_pci_mmio_write", __PNR_s390_pci_mmio_write }, - { "s390_runtime_instr", __PNR_s390_runtime_instr }, - { "s390_sthyi", __PNR_s390_sthyi }, - { "sched_get_priority_max", 146 }, - { "sched_get_priority_min", 147 }, - { "sched_getaffinity", 204 }, - { "sched_getattr", 315 }, - { "sched_getparam", 143 }, - { "sched_getscheduler", 145 }, - { "sched_rr_get_interval", 148 }, - { "sched_rr_get_interval_time64", __PNR_sched_rr_get_interval_time64 }, - { "sched_setaffinity", 203 }, - { "sched_setattr", 314 }, - { "sched_setparam", 142 }, - { "sched_setscheduler", 144 }, - { "sched_yield", 24 }, - { "seccomp", 317 }, - { "security", 185 }, - { "select", 23 }, - { "semctl", 66 }, - { "semget", 64 }, - { "semop", 65 }, - { "semtimedop", 220 }, - { "semtimedop_time64", __PNR_semtimedop_time64 }, - { "send", __PNR_send }, - { "sendfile", 40 }, - { "sendfile64", __PNR_sendfile64 }, - { "sendmmsg", 307 }, - { "sendmsg", 46 }, - { "sendto", 44 }, - { "set_mempolicy", 238 }, - { "set_robust_list", 273 }, - { "set_thread_area", 205 }, - { "set_tid_address", 218 }, - { "set_tls", __PNR_set_tls }, - { "setdomainname", 171 }, - { "setfsgid", 123 }, - { "setfsgid32", __PNR_setfsgid32 }, - { "setfsuid", 122 }, - { "setfsuid32", __PNR_setfsuid32 }, - { "setgid", 106 }, - { "setgid32", __PNR_setgid32 }, - { "setgroups", 116 }, - { "setgroups32", __PNR_setgroups32 }, - { "sethostname", 170 }, - { "setitimer", 38 }, - { "setns", 308 }, - { "setpgid", 109 }, - { "setpriority", 141 }, - { "setregid", 114 }, - { "setregid32", __PNR_setregid32 }, - { "setresgid", 119 }, - { "setresgid32", __PNR_setresgid32 }, - { "setresuid", 117 }, - { "setresuid32", __PNR_setresuid32 }, - { "setreuid", 113 }, - { "setreuid32", __PNR_setreuid32 }, - { "setrlimit", 160 }, - { "setsid", 112 }, - { "setsockopt", 54 }, - { "settimeofday", 164 }, - { "setuid", 105 }, - { "setuid32", __PNR_setuid32 }, - { "setxattr", 188 }, - { "sgetmask", __PNR_sgetmask }, - { "shmat", 30 }, - { "shmctl", 31 }, - { "shmdt", 67 }, - { "shmget", 29 }, - { "shutdown", 48 }, - { "sigaction", __PNR_sigaction }, - { "sigaltstack", 131 }, - { "signal", __PNR_signal }, - { "signalfd", 282 }, - { "signalfd4", 289 }, - { "sigpending", __PNR_sigpending }, - { "sigprocmask", __PNR_sigprocmask }, - { "sigreturn", __PNR_sigreturn }, - { "sigsuspend", __PNR_sigsuspend }, - { "socket", 41 }, - { "socketcall", __PNR_socketcall }, - { "socketpair", 53 }, - { "splice", 275 }, - { "spu_create", __PNR_spu_create }, - { "spu_run", __PNR_spu_run }, - { "ssetmask", __PNR_ssetmask }, - { "stat", 4 }, - { "stat64", __PNR_stat64 }, - { "statfs", 137 }, - { "statfs64", __PNR_statfs64 }, - { "statx", 332 }, - { "stime", __PNR_stime }, - { "stty", __PNR_stty }, - { "subpage_prot", __PNR_subpage_prot }, - { "swapcontext", __PNR_swapcontext }, - { "swapoff", 168 }, - { "swapon", 167 }, - { "switch_endian", __PNR_switch_endian }, - { "symlink", 88 }, - { "symlinkat", 266 }, - { "sync", 162 }, - { "sync_file_range", 277 }, - { "sync_file_range2", __PNR_sync_file_range2 }, - { "syncfs", 306 }, - { "syscall", __PNR_syscall }, - { "sys_debug_setcontext", __PNR_sys_debug_setcontext }, - { "sysfs", 139 }, - { "sysinfo", 99 }, - { "syslog", 103 }, - { "sysmips", __PNR_sysmips }, - { "tee", 276 }, - { "tgkill", 234 }, - { "time", 201 }, - { "timer_create", 222 }, - { "timer_delete", 226 }, - { "timer_getoverrun", 225 }, - { "timer_gettime", 224 }, - { "timer_gettime64", __PNR_timer_gettime64 }, - { "timer_settime", 223 }, - { "timer_settime64", __PNR_timer_settime64 }, - { "timerfd", __PNR_timerfd }, - { "timerfd_create", 283 }, - { "timerfd_gettime", 287 }, - { "timerfd_gettime64", __PNR_timerfd_gettime64 }, - { "timerfd_settime", 286 }, - { "timerfd_settime64", __PNR_timerfd_settime64 }, - { "times", 100 }, - { "tkill", 200 }, - { "truncate", 76 }, - { "truncate64", __PNR_truncate64 }, - { "tuxcall", 184 }, - { "ugetrlimit", __PNR_ugetrlimit }, - { "ulimit", __PNR_ulimit }, - { "umask", 95 }, - { "umount", __PNR_umount }, - { "umount2", 166 }, - { "uname", 63 }, - { "unlink", 87 }, - { "unlinkat", 263 }, - { "unshare", 272 }, - { "uselib", 134 }, - { "userfaultfd", 323 }, - { "usr26", __PNR_usr26 }, - { "usr32", __PNR_usr32 }, - { "ustat", 136 }, - { "utime", 132 }, - { "utimensat", 280 }, - { "utimensat_time64", __PNR_utimensat_time64 }, - { "utimes", 235 }, - { "vfork", 58 }, - { "vhangup", 153 }, - { "vm86", __PNR_vm86 }, - { "vm86old", __PNR_vm86old }, - { "vmsplice", 278 }, - { "vserver", 236 }, - { "wait4", 61 }, - { "waitid", 247 }, - { "waitpid", __PNR_waitpid }, - { "write", 1 }, - { "writev", 20 }, - { NULL, __NR_SCMP_ERROR }, -}; - -/** - * Resolve a syscall name to a number - * @param name the syscall name - * - * Resolve the given syscall name to the syscall number using the syscall table. - * Returns the syscall number on success, including negative pseudo syscall - * numbers; returns __NR_SCMP_ERROR on failure. - * - */ -int x86_64_syscall_resolve_name(const char *name) -{ - unsigned int iter; - const struct arch_syscall_def *table = x86_64_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].name != NULL; iter++) { - if (strcmp(name, table[iter].name) == 0) - return table[iter].num; - } - - return __NR_SCMP_ERROR; -} - -/** - * Resolve a syscall number to a name - * @param num the syscall number - * - * Resolve the given syscall number to the syscall name using the syscall table. - * Returns a pointer to the syscall name string on success, including pseudo - * syscall names; returns NULL on failure. - * - */ -const char *x86_64_syscall_resolve_num(int num) -{ - unsigned int iter; - const struct arch_syscall_def *table = x86_64_syscall_table; - - /* XXX - plenty of room for future improvement here */ - for (iter = 0; table[iter].num != __NR_SCMP_ERROR; iter++) { - if (num == table[iter].num) - return table[iter].name; - } - - return NULL; -} - -/** - * Iterate through the syscall table and return the syscall mapping - * @param spot the offset into the syscall table - * - * Return the syscall mapping at position @spot or NULL on failure. This - * function should only ever be used internally by libseccomp. - * - */ -const struct arch_syscall_def *x86_64_syscall_iterate(unsigned int spot) -{ - /* XXX - no safety checks here */ - return &x86_64_syscall_table[spot]; -} - |