#include "sandboxed_api/sandbox2/syscall_defs.h" #include #include #include #include "absl/algorithm/container.h" #include "absl/strings/escaping.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" #include "sandboxed_api/config.h" #include "sandboxed_api/sandbox2/util.h" namespace sandbox2 { // Type of a given syscall argument. Used with argument conversion routines. enum ArgType { kGen = 1, kInt, kPath, kHex, kOct, kSocketCall, kSocketCallPtr, kSignal, kString, kAddressFamily, kSockaddr, kSockmsghdr, kCloneFlag, }; // Single syscall definition struct SyscallTable::Entry { // Returns the number of arguments which given syscall takes. int GetNumArgs() const { if (num_args < 0 || num_args > syscalls::kMaxArgs) { return syscalls::kMaxArgs; } return num_args; } static std::string GetArgumentDescription(uint64_t value, ArgType type, pid_t pid); std::vector GetArgumentsDescription( const uint64_t values[syscalls::kMaxArgs], pid_t pid) const; static constexpr bool BySyscallNr(const SyscallTable::Entry& a, const SyscallTable::Entry& b) { return a.nr < b.nr; } int nr; absl::string_view name; int num_args; std::array arg_types; }; std::string SyscallTable::Entry::GetArgumentDescription(uint64_t value, ArgType type, pid_t pid) { std::string ret = absl::StrFormat("%#x", value); switch (type) { case kOct: absl::StrAppendFormat(&ret, " [\\0%o]", value); break; case kPath: if (auto path_or = util::ReadCPathFromPid(pid, value); path_or.ok()) { absl::StrAppendFormat(&ret, " ['%s']", absl::CHexEscape(path_or.value())); } else { absl::StrAppend(&ret, " [unreadable path]"); } break; case kInt: absl::StrAppendFormat(&ret, " [%d]", value); break; default: break; } return ret; } absl::string_view SyscallTable::GetName(int syscall) const { auto it = absl::c_lower_bound( data_, syscall, [](const SyscallTable::Entry& entry, int syscall) { return entry.nr < syscall; }); if (it == data_.end() || it->nr != syscall) { return ""; } return it->name; } namespace { template constexpr SyscallTable::Entry MakeEntry(int nr, absl::string_view name, ArgTypes... arg_types) { static_assert(sizeof...(arg_types) <= syscalls::kMaxArgs, "Too many arguments for syscall"); return {nr, name, sizeof...(arg_types), {arg_types...}}; } struct UnknownArguments {}; constexpr SyscallTable::Entry MakeEntry(int nr, absl::string_view name, UnknownArguments) { return {nr, name, -1, {kGen, kGen, kGen, kGen, kGen, kGen}}; } } // namespace std::vector SyscallTable::GetArgumentsDescription( int syscall, const uint64_t values[], pid_t pid) const { static SyscallTable::Entry kInvalidEntry = MakeEntry(-1, "", UnknownArguments()); auto it = absl::c_lower_bound( data_, syscall, [](const SyscallTable::Entry& entry, int syscall) { return entry.nr < syscall; }); const auto& entry = it != data_.end() && it->nr == syscall ? *it : kInvalidEntry; int num_args = entry.GetNumArgs(); std::vector rv; rv.reserve(num_args); for (int i = 0; i < num_args; ++i) { rv.push_back(SyscallTable::Entry::GetArgumentDescription( values[i], entry.arg_types[i], pid)); } return rv; } namespace { // TODO(C++20) Use std::is_sorted template constexpr bool IsSorted(const Container& container, Compare comp) { auto it = std::begin(container); if (it == std::end(container)) { return true; } auto last = it; for (++it; it != std::end(container); ++it) { if (!comp(*last, *it)) { return false; } last = it; } return true; } // Syscall description table for Linux x86_64 constexpr std::array kSyscallDataX8664 = { // clang-format off MakeEntry(0, "read", kInt, kHex, kInt), MakeEntry(1, "write", kInt, kHex, kInt), MakeEntry(2, "open", kPath, kHex, kOct), MakeEntry(3, "close", kInt), MakeEntry(4, "stat", kPath, kGen), MakeEntry(5, "fstat", kInt, kHex), MakeEntry(6, "lstat", kPath, kGen), MakeEntry(7, "poll", kGen, kInt, kInt), MakeEntry(8, "lseek", kInt, kInt, kInt), MakeEntry(9, "mmap", kHex, kInt, kHex, kHex, kInt, kInt), MakeEntry(10, "mprotect", kHex, kInt, kHex), MakeEntry(11, "munmap", kHex, kInt), MakeEntry(12, "brk", kInt), MakeEntry(13, "rt_sigaction", kSignal, kHex, kHex, kInt), MakeEntry(14, "rt_sigprocmask", kInt, kHex, kHex, kInt), MakeEntry(15, "rt_sigreturn"), MakeEntry(16, "ioctl", kInt, kInt, kHex), MakeEntry(17, "pread64", kInt, kHex, kInt, kInt), MakeEntry(18, "pwrite64", kInt, kHex, kInt, kInt), MakeEntry(19, "readv", kInt, kHex, kInt), MakeEntry(20, "writev", kInt, kHex, kInt), MakeEntry(21, "access", kPath, kOct), MakeEntry(22, "pipe", kHex), MakeEntry(23, "select", kInt, kHex, kHex, kHex, kHex), MakeEntry(24, "sched_yield"), MakeEntry(25, "mremap", kHex, kInt, kInt, kInt, kHex), MakeEntry(26, "msync", kHex, kInt, kInt), MakeEntry(27, "mincore", kHex, kInt, kHex), MakeEntry(28, "madvise", kHex, kInt, kInt), MakeEntry(29, "shmget", kInt, kInt, kHex), MakeEntry(30, "shmat", kInt, kHex, kHex), MakeEntry(31, "shmctl", kInt, kInt, kHex), MakeEntry(32, "dup", kInt), MakeEntry(33, "dup2", kInt, kInt), MakeEntry(34, "pause"), MakeEntry(35, "nanosleep", kHex, kHex), MakeEntry(36, "getitimer", kInt, kHex), MakeEntry(37, "alarm", kInt), MakeEntry(38, "setitimer", kInt, kHex, kHex), MakeEntry(39, "getpid"), MakeEntry(40, "sendfile", kInt, kInt, kHex, kInt), MakeEntry(41, "socket", kAddressFamily, kInt, kInt), MakeEntry(42, "connect", kInt, kSockaddr, kInt), MakeEntry(43, "accept", kInt, kSockaddr, kHex), MakeEntry(44, "sendto", kInt, kHex, kInt, kHex, kSockaddr, kInt), MakeEntry(45, "recvfrom", kInt, kHex, kInt, kHex, kSockaddr, kHex), MakeEntry(46, "sendmsg", kInt, kSockmsghdr, kHex), MakeEntry(47, "recvmsg", kInt, kHex, kInt), MakeEntry(48, "shutdown", kInt, kInt), MakeEntry(49, "bind", kInt, kSockaddr, kInt), MakeEntry(50, "listen", kInt, kInt), MakeEntry(51, "getsockname", kInt, kSockaddr, kHex), MakeEntry(52, "getpeername", kInt, kSockaddr, kHex), MakeEntry(53, "socketpair", kAddressFamily, kInt, kInt, kHex), MakeEntry(54, "setsockopt", kInt, kInt, kInt, kHex, kHex), MakeEntry(55, "getsockopt", kInt, kInt, kInt, kHex, kInt), MakeEntry(56, "clone", kCloneFlag, kHex, kHex, kHex, kHex), MakeEntry(57, "fork"), MakeEntry(58, "vfork"), MakeEntry(59, "execve", kPath, kHex, kHex), MakeEntry(60, "exit", kInt), MakeEntry(61, "wait4", kInt, kHex, kHex, kHex), MakeEntry(62, "kill", kInt, kSignal), MakeEntry(63, "uname", kInt), MakeEntry(64, "semget", kInt, kInt, kHex), MakeEntry(65, "semop", kInt, kHex, kInt), MakeEntry(66, "semctl", kInt, kInt, kInt, kHex), MakeEntry(67, "shmdt", kHex), MakeEntry(68, "msgget", kInt, kHex), MakeEntry(69, "msgsnd", kInt, kHex, kInt, kHex), MakeEntry(70, "msgrcv", kInt, kHex, kInt, kInt, kHex), MakeEntry(71, "msgctl", kInt, kInt, kHex), MakeEntry(72, "fcntl", kInt, kInt, kHex), MakeEntry(73, "flock", kInt, kInt), MakeEntry(74, "fsync", kInt), MakeEntry(75, "fdatasync", kInt), MakeEntry(76, "truncate", kPath, kInt), MakeEntry(77, "ftruncate", kInt, kInt), MakeEntry(78, "getdents", kInt, kHex, kInt), MakeEntry(79, "getcwd", kHex, kInt), MakeEntry(80, "chdir", kPath), MakeEntry(81, "fchdir", kInt), MakeEntry(82, "rename", kPath, kPath), MakeEntry(83, "mkdir", kPath, kOct), MakeEntry(84, "rmdir", kPath), MakeEntry(85, "creat", kPath, kOct), MakeEntry(86, "link", kPath, kPath), MakeEntry(87, "unlink", kPath), MakeEntry(88, "symlink", kPath, kPath), MakeEntry(89, "readlink", kPath, kHex, kInt), MakeEntry(90, "chmod", kPath, kOct), MakeEntry(91, "fchmod", kInt, kOct), MakeEntry(92, "chown", kPath, kInt, kInt), MakeEntry(93, "fchown", kInt, kInt, kInt), MakeEntry(94, "lchown", kPath, kInt, kInt), MakeEntry(95, "umask", kHex), MakeEntry(96, "gettimeofday", kHex, kHex), MakeEntry(97, "getrlimit", kInt, kHex), MakeEntry(98, "getrusage", kInt, kHex), MakeEntry(99, "sysinfo", kHex), MakeEntry(100, "times", kHex), MakeEntry(101, "ptrace", kInt, kInt, kHex, kHex), MakeEntry(102, "getuid"), MakeEntry(103, "syslog", kInt, kHex, kInt), MakeEntry(104, "getgid"), MakeEntry(105, "setuid", kInt), MakeEntry(106, "setgid", kInt), MakeEntry(107, "geteuid"), MakeEntry(108, "getegid"), MakeEntry(109, "setpgid", kInt, kInt), MakeEntry(110, "getppid"), MakeEntry(111, "getpgrp"), MakeEntry(112, "setsid"), MakeEntry(113, "setreuid", kInt, kInt), MakeEntry(114, "setregid", kInt, kInt), MakeEntry(115, "getgroups", kInt, kHex), MakeEntry(116, "setgroups", kInt, kHex), MakeEntry(117, "setresuid", kInt, kInt, kInt), MakeEntry(118, "getresuid", kHex, kHex, kHex), MakeEntry(119, "setresgid", kInt, kInt, kInt), MakeEntry(120, "getresgid", kHex, kHex, kHex), MakeEntry(121, "getpgid", kInt), MakeEntry(122, "setfsuid", kInt), MakeEntry(123, "setfsgid", kInt), MakeEntry(124, "getsid", kInt), MakeEntry(125, "capget", kHex, kHex), MakeEntry(126, "capset", kHex, kHex), MakeEntry(127, "rt_sigpending", kHex, kInt), MakeEntry(128, "rt_sigtimedwait", kHex, kHex, kHex, kInt), MakeEntry(129, "rt_sigqueueinfo", kInt, kSignal, kHex), MakeEntry(130, "rt_sigsuspend", kHex, kInt), MakeEntry(131, "sigaltstack", kHex, kHex), MakeEntry(132, "utime", kPath, kHex), MakeEntry(133, "mknod", kPath, kOct, kHex), MakeEntry(134, "uselib", kPath), MakeEntry(135, "personality", kHex), MakeEntry(136, "ustat", kHex, kHex), MakeEntry(137, "statfs", kPath, kHex), MakeEntry(138, "fstatfs", kInt, kHex), MakeEntry(139, "sysfs", kInt, kInt, kInt), MakeEntry(140, "getpriority", kInt, kInt), MakeEntry(141, "setpriority", kInt, kInt, kInt), MakeEntry(142, "sched_setparam", kInt, kHex), MakeEntry(143, "sched_getparam", kInt, kHex), MakeEntry(144, "sched_setscheduler", kInt, kInt, kHex), MakeEntry(145, "sched_getscheduler", kInt), MakeEntry(146, "sched_get_priority_max", kInt), MakeEntry(147, "sched_get_priority_min", kInt), MakeEntry(148, "sched_rr_get_interval", kInt, kHex), MakeEntry(149, "mlock", kInt, kInt), MakeEntry(150, "munlock", kInt, kInt), MakeEntry(151, "mlockall", kHex), MakeEntry(152, "munlockall"), MakeEntry(153, "vhangup"), MakeEntry(154, "modify_ldt", kInt, kHex, kInt), MakeEntry(155, "pivot_root", kPath, kPath), MakeEntry(156, "_sysctl", kHex), MakeEntry(157, "prctl", kInt, kHex, kHex, kHex, kHex), MakeEntry(158, "arch_prctl", kInt, kHex), MakeEntry(159, "adjtimex", kHex), MakeEntry(160, "setrlimit", kInt, kHex), MakeEntry(161, "chroot", kPath), MakeEntry(162, "sync"), MakeEntry(163, "acct", kPath), MakeEntry(164, "settimeofday", kHex, kHex), MakeEntry(165, "mount", kPath, kPath, kString, kHex, kGen), MakeEntry(166, "umount2", kPath, kHex), MakeEntry(167, "swapon", kPath, kHex), MakeEntry(168, "swapoff", kPath), MakeEntry(169, "reboot", kInt, kHex, kHex, kGen), MakeEntry(170, "sethostname", kString, kInt), MakeEntry(171, "setdomainname", kString, kInt), MakeEntry(172, "iopl", kInt), MakeEntry(173, "ioperm", kInt, kInt, kInt), MakeEntry(174, "create_module", kString, kInt), MakeEntry(175, "init_module", kGen, kInt, kString), MakeEntry(176, "delete_module", kString, kHex), MakeEntry(177, "get_kernel_syms", kHex), MakeEntry(178, "query_module", kString, kInt, kGen, kInt, kGen), MakeEntry(179, "quotactl", kInt, kPath, kInt, kGen), MakeEntry(180, "nfsservctl", kInt, kGen, kGen), MakeEntry(181, "getpmsg", UnknownArguments()), MakeEntry(182, "putpmsg", UnknownArguments()), MakeEntry(183, "afs_syscall", UnknownArguments()), MakeEntry(184, "tuxcall", UnknownArguments()), MakeEntry(185, "security", UnknownArguments()), MakeEntry(186, "gettid"), MakeEntry(187, "readahead", kInt, kInt, kInt), MakeEntry(188, "setxattr", kPath, kString, kGen, kInt, kHex), MakeEntry(189, "lsetxattr", kPath, kString, kGen, kInt, kHex), MakeEntry(190, "fsetxattr", kInt, kString, kGen, kInt, kHex), MakeEntry(191, "getxattr", kPath, kString, kGen, kInt), MakeEntry(192, "lgetxattr", kPath, kString, kGen, kInt), MakeEntry(193, "fgetxattr", kInt, kString, kGen, kInt), MakeEntry(194, "listxattr", kPath, kGen, kInt), MakeEntry(195, "llistxattr", kPath, kGen, kInt), MakeEntry(196, "flistxattr", kInt, kGen, kInt), MakeEntry(197, "removexattr", kPath, kString), MakeEntry(198, "lremovexattr", kPath, kString), MakeEntry(199, "fremovexattr", kInt, kString), MakeEntry(200, "tkill", kInt, kSignal), MakeEntry(201, "time", kHex), MakeEntry(202, "futex", kGen, kInt, kInt, kGen, kGen, kInt), MakeEntry(203, "sched_setaffinity", kInt, kInt, kHex), MakeEntry(204, "sched_getaffinity", kInt, kInt, kHex), MakeEntry(205, "set_thread_area", kHex), MakeEntry(206, "io_setup", kInt, kHex), MakeEntry(207, "io_destroy", kInt), MakeEntry(208, "io_getevents", kInt, kInt, kInt, kHex, kHex), MakeEntry(209, "io_submit", kInt, kInt, kHex), MakeEntry(210, "io_cancel", kInt, kHex, kHex), MakeEntry(211, "get_thread_area", kHex), MakeEntry(212, "lookup_dcookie", kInt, kString, kInt), MakeEntry(213, "epoll_create", kInt), MakeEntry(214, "epoll_ctl_old", UnknownArguments()), MakeEntry(215, "epoll_wait_old", UnknownArguments()), MakeEntry(216, "remap_file_pages", kGen, kInt, kInt, kInt, kHex), MakeEntry(217, "getdents64", kInt, kHex, kInt), MakeEntry(218, "set_tid_address", kHex), MakeEntry(219, "restart_syscall"), MakeEntry(220, "semtimedop", kInt, kHex, kInt, kHex), MakeEntry(221, "fadvise64", kInt, kInt, kInt, kInt), MakeEntry(222, "timer_create", kInt, kHex, kHex), MakeEntry(223, "timer_settime", kInt, kHex, kHex, kHex), MakeEntry(224, "timer_gettime", kInt, kHex), MakeEntry(225, "timer_getoverrun", kInt), MakeEntry(226, "timer_delete", kInt), MakeEntry(227, "clock_settime", kInt, kHex), MakeEntry(228, "clock_gettime", kInt, kHex), MakeEntry(229, "clock_getres", kInt, kHex), MakeEntry(230, "clock_nanosleep", kInt, kHex, kHex, kHex), MakeEntry(231, "exit_group", kInt), MakeEntry(232, "epoll_wait", kInt, kHex, kInt, kInt), MakeEntry(233, "epoll_ctl", kInt, kInt, kInt, kHex), MakeEntry(234, "tgkill", kInt, kInt, kSignal), MakeEntry(235, "utimes", kPath, kHex), MakeEntry(236, "vserver", UnknownArguments()), MakeEntry(237, "mbind", kGen, kInt, kInt, kHex, kInt, kHex), MakeEntry(238, "set_mempolicy", kInt, kHex, kInt), MakeEntry(239, "get_mempolicy", kInt, kHex, kInt, kInt, kHex), MakeEntry(240, "mq_open", kString, kHex, kOct, kHex), MakeEntry(241, "mq_unlink", kString), MakeEntry(242, "mq_timedsend", kHex, kHex, kInt, kInt, kHex), MakeEntry(243, "mq_timedreceive", kHex, kHex, kInt, kHex, kHex), MakeEntry(244, "mq_notify", kHex, kHex), MakeEntry(245, "mq_getsetattr", kHex, kHex, kHex), MakeEntry(246, "kexec_load", kHex, kInt, kHex, kHex), MakeEntry(247, "waitid", kInt, kInt, kHex, kInt, kHex), MakeEntry(248, "add_key", kString, kString, kGen, kInt, kInt), MakeEntry(249, "request_key", kString, kString, kHex, kInt), MakeEntry(250, "keyctl", kInt, kInt, kInt, kInt, kInt), MakeEntry(251, "ioprio_set", kInt, kInt, kInt), MakeEntry(252, "ioprio_get", kInt, kInt), MakeEntry(253, "inotify_init"), MakeEntry(254, "inotify_add_watch", kInt, kPath, kHex), MakeEntry(255, "inotify_rm_watch", kInt, kInt), MakeEntry(256, "migrate_pages", kInt, kInt, kHex, kHex), MakeEntry(257, "openat", kInt, kPath, kHex, kOct), MakeEntry(258, "mkdirat", kInt, kPath, kOct), MakeEntry(259, "mknodat", kInt, kPath, kOct, kHex), MakeEntry(260, "fchownat", kInt, kPath, kInt, kInt, kHex), MakeEntry(261, "futimesat", kInt, kPath, kHex), MakeEntry(262, "newfstatat", kInt, kPath, kHex, kHex), MakeEntry(263, "unlinkat", kInt, kPath, kHex), MakeEntry(264, "renameat", kInt, kPath, kInt, kPath), MakeEntry(265, "linkat", kInt, kPath, kInt, kPath, kHex), MakeEntry(266, "symlinkat", kPath, kInt, kPath), MakeEntry(267, "readlinkat", kInt, kPath, kHex, kInt), MakeEntry(268, "fchmodat", kInt, kPath, kOct), MakeEntry(269, "faccessat", kInt, kPath, kInt, kHex), MakeEntry(270, "pselect6", kInt, kHex, kHex, kHex, kHex), MakeEntry(271, "ppoll", kHex, kInt, kHex, kHex, kInt), MakeEntry(272, "unshare", kHex), MakeEntry(273, "set_robust_list", kHex, kInt), MakeEntry(274, "get_robust_list", kInt, kHex, kHex), MakeEntry(275, "splice", kInt, kHex, kInt, kHex, kInt, kHex), MakeEntry(276, "tee", kInt, kInt, kInt, kHex), MakeEntry(277, "sync_file_range", kInt, kInt, kInt, kHex), MakeEntry(278, "vmsplice", kInt, kHex, kInt, kInt), MakeEntry(279, "move_pages", kInt, kInt, kHex, kHex, kHex, kHex), MakeEntry(280, "utimensat", kInt, kPath, kHex, kHex), MakeEntry(281, "epoll_pwait", kInt, kHex, kInt, kInt, kHex, kInt), MakeEntry(282, "signalfd", kInt, kHex, kHex), MakeEntry(283, "timerfd_create", kInt, kHex), MakeEntry(284, "eventfd", kInt), MakeEntry(285, "fallocate", kInt, kOct, kInt, kInt), MakeEntry(286, "timerfd_settime", kInt, kHex, kHex, kHex), MakeEntry(287, "timerfd_gettime", kInt, kHex), MakeEntry(288, "accept4", kInt, kHex, kHex, kInt), MakeEntry(289, "signalfd4", kInt, kHex, kHex, kHex), MakeEntry(290, "eventfd2", kInt, kHex), MakeEntry(291, "epoll_create1", kHex), MakeEntry(292, "dup3", kInt, kInt, kHex), MakeEntry(293, "pipe2", kHex, kHex), MakeEntry(294, "inotify_init1", kHex), MakeEntry(295, "preadv", kInt, kHex, kInt, kInt, kInt), MakeEntry(296, "pwritev", kInt, kHex, kInt, kInt, kInt), MakeEntry(297, "rt_tgsigqueueinfo", kInt, kInt, kInt, kHex), MakeEntry(298, "perf_event_open", kHex, kInt, kInt, kInt, kHex), MakeEntry(299, "recvmmsg", kInt, kHex, kInt, kHex, kHex), MakeEntry(300, "fanotify_init", kHex, kHex), MakeEntry(301, "fanotify_mark", kInt, kHex, kHex, kInt, kPath), MakeEntry(302, "prlimit64", kInt, kInt, kHex, kHex), MakeEntry(303, "name_to_handle_at", kInt, kPath, kHex, kHex, kHex), MakeEntry(304, "open_by_handle_at", kInt, kHex, kHex), MakeEntry(305, "clock_adjtime", kInt, kHex), MakeEntry(306, "syncfs", kInt), MakeEntry(307, "sendmmsg", kInt, kHex, kInt, kHex), MakeEntry(308, "setns", kInt, kHex), MakeEntry(309, "getcpu", kHex, kHex, kHex), MakeEntry(310, "process_vm_readv", kInt, kHex, kInt, kHex, kInt, kInt), MakeEntry(311, "process_vm_writev", kInt, kHex, kInt, kHex, kInt, kInt), MakeEntry(312, "kcmp", kInt, kInt, kInt, kInt, kInt), MakeEntry(313, "finit_module", kInt, kString, kHex), MakeEntry(314, "sched_setattr", kInt, kHex, kHex), MakeEntry(315, "sched_getattr", kInt, kHex, kInt, kHex), MakeEntry(316, "renameat2", kInt, kPath, kInt, kPath, kHex), MakeEntry(317, "seccomp", kInt, kHex, kHex), MakeEntry(318, "getrandom", kGen, kInt, kHex), MakeEntry(319, "memfd_create", kString, kHex), MakeEntry(320, "kexec_file_load", kInt, kInt, kInt, kString, kHex), MakeEntry(321, "bpf", kInt, kHex, kInt), MakeEntry(322, "execveat", kInt, kPath, kHex, kHex, kHex), MakeEntry(323, "userfaultfd", kHex), MakeEntry(324, "membarrier", kInt, kHex), MakeEntry(325, "mlock2", kHex, kInt, kHex), MakeEntry(326, "copy_file_range", kInt, kHex, kInt, kHex, kInt, kHex), MakeEntry(327, "preadv2", kInt, kHex, kInt, kInt, kInt, kHex), MakeEntry(328, "pwritev2", kInt, kHex, kInt, kInt, kInt, kHex), MakeEntry(329, "pkey_mprotect", kInt, kInt, kHex, kInt), MakeEntry(330, "pkey_alloc", kInt, kInt), MakeEntry(331, "pkey_free", kInt), MakeEntry(332, "statx", kInt, kPath, kHex, kHex, kHex), // clang-format on }; static_assert(IsSorted(kSyscallDataX8664, SyscallTable::Entry::BySyscallNr), "Syscalls should be sorted"); constexpr std::array kSyscallDataX8632 = { // clang-format off MakeEntry(0, "restart_syscall", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(1, "exit", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(2, "fork", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(3, "read", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(4, "write", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(5, "open", kPath, kHex, kOct, kHex, kHex, kHex), MakeEntry(6, "close", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(7, "waitpid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(8, "creat", kPath, kHex, kHex, kHex, kHex, kHex), MakeEntry(9, "link", kPath, kPath, kHex, kHex, kHex, kHex), MakeEntry(10, "unlink", kPath, kHex, kHex, kHex, kHex, kHex), MakeEntry(11, "execve", kPath, kHex, kHex, kHex, kHex, kHex), MakeEntry(12, "chdir", kPath, kHex, kHex, kHex, kHex, kHex), MakeEntry(13, "time", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(14, "mknod", kPath, kOct, kHex, kHex, kHex, kHex), MakeEntry(15, "chmod", kPath, kOct, kHex, kHex, kHex, kHex), MakeEntry(16, "lchown", kPath, kInt, kInt, kHex, kHex, kHex), MakeEntry(17, "break", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(18, "oldstat", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(19, "lseek", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(20, "getpid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(21, "mount", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(22, "umount", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(23, "setuid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(24, "getuid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(25, "stime", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(26, "ptrace", kHex, kHex, kHex, kHex), MakeEntry(27, "alarm", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(28, "oldfstat", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(29, "pause", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(30, "utime", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(31, "stty", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(32, "gtty", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(33, "access", kPath, kHex, kHex, kHex, kHex, kHex), MakeEntry(34, "nice", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(35, "ftime", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(36, "sync", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(37, "kill", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(38, "rename", kPath, kPath, kHex, kHex, kHex, kHex), MakeEntry(39, "mkdir", kPath, kHex, kHex, kHex, kHex, kHex), MakeEntry(40, "rmdir", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(41, "dup", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(42, "pipe", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(43, "times", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(44, "prof", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(45, "brk", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(46, "setgid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(47, "getgid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(48, "signal", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(49, "geteuid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(50, "getegid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(51, "acct", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(52, "umount2", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(53, "lock", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(54, "ioctl", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(55, "fcntl", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(56, "mpx", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(57, "setpgid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(58, "ulimit", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(59, "oldolduname", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(60, "umask", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(61, "chroot", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(62, "ustat", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(63, "dup2", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(64, "getppid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(65, "getpgrp", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(66, "setsid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(67, "sigaction", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(68, "sgetmask", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(69, "ssetmask", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(70, "setreuid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(71, "setregid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(72, "sigsuspend", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(73, "sigpending", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(74, "sethostname", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(75, "setrlimit", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(76, "getrlimit", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(77, "getrusage", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(78, "gettimeofday", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(79, "settimeofday", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(80, "getgroups", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(81, "setgroups", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(82, "select", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(83, "symlink", kPath, kPath, kHex, kHex, kHex, kHex), MakeEntry(84, "oldlstat", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(85, "readlink", kPath, kHex, kInt, kHex, kHex, kHex), MakeEntry(86, "uselib", kPath, kHex, kHex, kHex, kHex, kHex), MakeEntry(87, "swapon", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(88, "reboot", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(89, "readdir", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(90, "mmap", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(91, "munmap", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(92, "truncate", kPath, kHex, kHex, kHex, kHex, kHex), MakeEntry(93, "ftruncate", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(94, "fchmod", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(95, "fchown", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(96, "getpriority", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(97, "setpriority", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(98, "profil", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(99, "statfs", kPath, kHex, kHex, kHex, kHex, kHex), MakeEntry(100, "fstatfs", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(101, "ioperm", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(102, "socketcall", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(103, "syslog", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(104, "setitimer", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(105, "getitimer", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(106, "stat", kPath, kHex, kHex, kHex, kHex, kHex), MakeEntry(107, "lstat", kPath, kHex, kHex, kHex, kHex, kHex), MakeEntry(108, "fstat", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(109, "olduname", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(110, "iopl", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(111, "vhangup", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(112, "idle", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(113, "vm86old", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(114, "wait4", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(115, "swapoff", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(116, "sysinfo", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(117, "ipc", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(118, "fsync", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(119, "sigreturn", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(120, "clone", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(121, "setdomainname", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(122, "uname", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(123, "modify_ldt", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(124, "adjtimex", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(125, "mprotect", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(126, "sigprocmask", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(127, "create_module", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(128, "init_module", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(129, "delete_module", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(130, "get_kernel_syms", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(131, "quotactl", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(132, "getpgid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(133, "fchdir", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(134, "bdflush", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(135, "sysfs", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(136, "personality", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(137, "afs_syscall", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(138, "setfsuid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(139, "setfsgid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(140, "_llseek", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(141, "getdents", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(142, "_newselect", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(143, "flock", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(144, "msync", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(145, "readv", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(146, "writev", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(147, "getsid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(148, "fdatasync", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(149, "_sysctl", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(150, "mlock", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(151, "munlock", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(152, "mlockall", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(153, "munlockall", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(154, "sched_setparam", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(155, "sched_getparam", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(156, "sched_setscheduler", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(157, "sched_getscheduler", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(158, "sched_yield", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(159, "sched_get_priority_max", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(160, "sched_get_priority_min", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(161, "sched_rr_get_interval", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(162, "nanosleep", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(163, "mremap", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(164, "setresuid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(165, "getresuid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(166, "vm86", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(167, "query_module", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(168, "poll", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(169, "nfsservctl", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(170, "setresgid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(171, "getresgid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(172, "prctl", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(173, "rt_sigreturn", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(174, "rt_sigaction", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(175, "rt_sigprocmask", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(176, "rt_sigpending", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(177, "rt_sigtimedwait", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(178, "rt_sigqueueinfo", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(179, "rt_sigsuspend", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(180, "pread64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(181, "pwrite64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(182, "chown", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(183, "getcwd", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(184, "capget", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(185, "capset", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(186, "sigaltstack", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(187, "sendfile", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(188, "getpmsg", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(189, "putpmsg", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(190, "vfork", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(191, "ugetrlimit", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(192, "mmap2", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(193, "truncate64", kPath, kHex, kHex, kHex, kHex, kHex), MakeEntry(194, "ftruncate64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(195, "stat64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(196, "lstat64", kPath, kHex, kHex, kHex, kHex, kHex), MakeEntry(197, "fstat64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(198, "lchown32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(199, "getuid32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(200, "getgid32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(201, "geteuid32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(202, "getegid32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(203, "setreuid32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(204, "setregid32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(205, "getgroups32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(206, "setgroups32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(207, "fchown32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(208, "setresuid32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(209, "getresuid32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(210, "setresgid32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(211, "getresgid32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(212, "chown32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(213, "setuid32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(214, "setgid32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(215, "setfsuid32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(216, "setfsgid32", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(217, "pivot_root", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(218, "mincore", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(219, "madvise", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(220, "getdents64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(221, "fcntl64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(222, "unused1-222", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(223, "unused2-223", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(224, "gettid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(225, "readahead", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(226, "setxattr", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(227, "lsetxattr", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(228, "fsetxattr", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(229, "getxattr", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(230, "lgetxattr", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(231, "fgetxattr", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(232, "listxattr", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(233, "llistxattr", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(234, "flistxattr", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(235, "removexattr", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(236, "lremovexattr", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(237, "fremovexattr", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(238, "tkill", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(239, "sendfile64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(240, "futex", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(241, "sched_setaffinity", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(242, "sched_getaffinity", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(243, "set_thread_area", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(244, "get_thread_area", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(245, "io_setup", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(246, "io_destroy", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(247, "io_getevents", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(248, "io_submit", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(249, "io_cancel", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(250, "fadvise64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(251, "251-old_sys_set_zone_reclaim", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(252, "exit_group", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(253, "lookup_dcookie", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(254, "epoll_create", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(255, "epoll_ctl", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(256, "epoll_wait", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(257, "remap_file_pages", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(258, "set_tid_address", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(259, "timer_create", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(260, "timer_settime", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(261, "timer_gettime", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(262, "timer_getoverrun", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(263, "timer_delete", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(264, "clock_settime", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(265, "clock_gettime", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(266, "clock_getres", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(267, "clock_nanosleep", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(268, "statfs64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(269, "fstatfs64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(270, "tgkill", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(271, "utimes", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(272, "fadvise64_64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(273, "vserver", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(274, "mbind", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(275, "get_mempolicy", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(276, "set_mempolicy", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(277, "mq_open", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(278, "mq_unlink", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(279, "mq_timedsend", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(280, "mq_timedreceive", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(281, "mq_notify", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(282, "mq_getsetattr", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(283, "kexec_load", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(284, "waitid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(285, "285-old_sys_setaltroot", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(286, "add_key", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(287, "request_key", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(288, "keyctl", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(289, "ioprio_set", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(290, "ioprio_get", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(291, "inotify_init", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(292, "inotify_add_watch", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(293, "inotify_rm_watch", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(294, "migrate_pages", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(295, "openat", kHex, kPath, kOct, kHex, kHex, kHex), MakeEntry(296, "mkdirat", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(297, "mknodat", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(298, "fchownat", kHex, kPath, kHex, kHex, kHex, kHex), MakeEntry(299, "futimesat", kHex, kPath, kHex, kHex, kHex, kHex), MakeEntry(300, "fstatat64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(301, "unlinkat", kHex, kPath, kHex, kHex, kHex, kHex), MakeEntry(302, "renameat", kHex, kPath, kHex, kPath, kHex, kHex), MakeEntry(303, "linkat", kHex, kPath, kHex, kPath, kHex, kHex), MakeEntry(304, "symlinkat", kPath, kHex, kPath, kHex, kHex, kHex), MakeEntry(305, "readlinkat", kHex, kPath, kHex, kHex, kHex, kHex), MakeEntry(306, "fchmodat", kHex, kPath, kHex, kHex, kHex, kHex), MakeEntry(307, "faccessat", kHex, kPath, kHex, kHex, kHex, kHex), MakeEntry(308, "pselect6", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(309, "ppoll", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(310, "unshare", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(311, "set_robust_list", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(312, "get_robust_list", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(313, "splice", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(314, "sync_file_range", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(315, "tee", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(316, "vmsplice", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(317, "move_pages", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(318, "getcpu", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(319, "epoll_pwait", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(320, "utimensat", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(321, "signalfd", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(322, "timerfd_create", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(323, "eventfd", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(324, "fallocate", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(325, "timerfd_settime", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(326, "timerfd_gettime", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(327, "signalfd4", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(328, "eventfd2", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(329, "epoll_create1", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(330, "dup3", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(331, "pipe2", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(332, "inotify_init1", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(333, "preadv", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(334, "pwritev", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(335, "rt_tgsigqueueinfo", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(336, "perf_event_open", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(337, "recvmmsg", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(338, "fanotify_init", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(339, "fanotify_mark", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(340, "prlimit64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(341, "name_to_handle_at", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(342, "open_by_handle_at", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(343, "clock_adjtime", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(344, "syncfs", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(345, "sendmmsg", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(346, "setns", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(347, "process_vm_readv", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(348, "process_vm_writev", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(349, "kcmp", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(350, "finit_module", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(351, "sched_setattr", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(352, "sched_getattr", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(353, "renameat2", kHex, kPath, kHex, kPath, kHex, kHex), MakeEntry(354, "seccomp", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(355, "getrandom", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(356, "memfd_create", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(357, "bpf", kHex, kHex, kHex, kHex, kHex, kHex), // clang-format on }; static_assert(IsSorted(kSyscallDataX8632, SyscallTable::Entry::BySyscallNr), "Syscalls should be sorted"); // http://lxr.free-electrons.com/source/arch/powerpc/include/uapi/asm/unistd.h // Note: PPC64 syscalls can have up to 7 register arguments, but nobody is // using the 7th argument - probably for x64 compatibility reasons. constexpr std::array kSyscallDataPPC64LE = { // clang-format off MakeEntry(0, "restart_syscall", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(1, "exit", kInt, kGen, kGen, kGen, kGen, kGen), MakeEntry(2, "fork", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(3, "read", kInt, kHex, kInt), MakeEntry(4, "write", kInt, kHex, kInt, kGen, kGen, kGen), MakeEntry(5, "open", kPath, kHex, kOct, kGen, kGen, kGen), MakeEntry(6, "close", kInt, kGen, kGen, kGen, kGen, kGen), MakeEntry(7, "waitpid", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(8, "creat", kPath, kOct, kGen, kGen, kGen, kGen), MakeEntry(9, "link", kPath, kPath, kGen, kGen, kGen, kGen), MakeEntry(10, "unlink", kPath, kGen, kGen, kGen, kGen, kGen), MakeEntry(11, "execve", kPath, kHex, kHex, kGen, kGen, kGen), MakeEntry(12, "chdir", kPath, kGen, kGen, kGen, kGen, kGen), MakeEntry(13, "time", kHex, kGen, kGen, kGen, kGen, kGen), MakeEntry(14, "mknod", kPath, kOct, kHex, kGen, kGen, kGen), MakeEntry(15, "chmod", kPath, kOct, kGen, kGen, kGen, kGen), MakeEntry(16, "lchown", kPath, kInt, kInt, kGen, kGen, kGen), MakeEntry(17, "break", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(18, "oldstat", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(19, "lseek", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(20, "getpid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(21, "mount", kPath, kPath, kString, kHex, kGen, kGen), MakeEntry(22, "umount", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(23, "setuid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(24, "getuid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(25, "stime", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(26, "ptrace", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(27, "alarm", kInt, kGen, kGen, kGen, kGen, kGen), MakeEntry(28, "oldfstat", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(29, "pause", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(30, "utime", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(31, "stty", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(32, "gtty", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(33, "access", kPath, kHex, kGen, kGen, kGen, kGen), MakeEntry(34, "nice", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(35, "ftime", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(36, "sync", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(37, "kill", kInt, kSignal, kGen, kGen, kGen, kGen), MakeEntry(38, "rename", kPath, kPath, kGen, kGen, kGen, kGen), MakeEntry(39, "mkdir", kPath, kOct, kGen, kGen, kGen, kGen), MakeEntry(40, "rmdir", kPath, kGen, kGen, kGen, kGen, kGen), MakeEntry(41, "dup", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(42, "pipe", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(43, "times", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(44, "prof", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(45, "brk", kHex, kGen, kGen, kGen, kGen, kGen), MakeEntry(46, "setgid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(47, "getgid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(48, "signal", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(49, "geteuid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(50, "getegid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(51, "acct", kPath, kGen, kGen, kGen, kGen, kGen), MakeEntry(52, "umount2", kPath, kHex, kGen, kGen, kGen, kGen), MakeEntry(53, "lock", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(54, "ioctl", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(55, "fcntl", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(56, "mpx", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(57, "setpgid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(58, "ulimit", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(59, "oldolduname", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(60, "umask", kHex, kGen, kGen, kGen, kGen, kGen), MakeEntry(61, "chroot", kPath, kGen, kGen, kGen, kGen, kGen), MakeEntry(62, "ustat", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(63, "dup2", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(64, "getppid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(65, "getpgrp", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(66, "setsid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(67, "sigaction", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(68, "sgetmask", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(69, "ssetmask", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(70, "setreuid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(71, "setregid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(72, "sigsuspend", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(73, "sigpending", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(74, "sethostname", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(75, "setrlimit", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(76, "getrlimit", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(77, "getrusage", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(78, "gettimeofday", kHex, kHex, kGen, kGen, kGen, kGen), MakeEntry(79, "settimeofday", kHex, kHex, kGen, kGen, kGen, kGen), MakeEntry(80, "getgroups", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(81, "setgroups", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(82, "select", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(83, "symlink", kPath, kPath, kGen, kGen, kGen, kGen), MakeEntry(84, "oldlstat", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(85, "readlink", kPath, kGen, kInt, kGen, kGen, kGen), MakeEntry(86, "uselib", kPath, kGen, kGen, kGen, kGen, kGen), MakeEntry(87, "swapon", kPath, kHex, kGen, kGen, kGen, kGen), MakeEntry(88, "reboot", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(89, "readdir", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(90, "mmap", kHex, kInt, kHex, kHex, kInt, kInt), MakeEntry(91, "munmap", kHex, kHex, kGen, kGen, kGen, kGen), MakeEntry(92, "truncate", kPath, kInt, kGen, kGen, kGen, kGen), MakeEntry(93, "ftruncate", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(94, "fchmod", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(95, "fchown", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(96, "getpriority", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(97, "setpriority", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(98, "profil", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(99, "statfs", kPath, kGen, kGen, kGen, kGen, kGen), MakeEntry(100, "fstatfs", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(101, "ioperm", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(102, "socketcall", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(103, "syslog", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(104, "setitimer", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(105, "getitimer", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(106, "stat", kPath, kGen, kGen, kGen, kGen, kGen), MakeEntry(107, "lstat", kPath, kGen, kGen, kGen, kGen, kGen), MakeEntry(108, "fstat", kInt, kHex, kGen, kGen, kGen, kGen), MakeEntry(109, "olduname", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(110, "iopl", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(111, "vhangup", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(112, "idle", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(113, "vm86", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(114, "wait4", kInt, kHex, kHex, kHex, kGen, kGen), MakeEntry(115, "swapoff", kPath, kGen, kGen, kGen, kGen, kGen), MakeEntry(116, "sysinfo", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(117, "ipc", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(118, "fsync", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(119, "sigreturn", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(120, "clone", kCloneFlag, kHex, kHex, kHex, kHex, kGen), MakeEntry(121, "setdomainname", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(122, "uname", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(123, "modify_ldt", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(124, "adjtimex", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(125, "mprotect", kHex, kHex, kHex, kGen, kGen, kGen), MakeEntry(126, "sigprocmask", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(127, "create_module", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(128, "init_module", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(129, "delete_module", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(130, "get_kernel_syms", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(131, "quotactl", kInt, kPath, kInt, kGen, kGen, kGen), MakeEntry(132, "getpgid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(133, "fchdir", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(134, "bdflush", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(135, "sysfs", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(136, "personality", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(137, "afs_syscall", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(138, "setfsuid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(139, "setfsgid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(140, "_llseek", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(141, "getdents", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(142, "_newselect", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(143, "flock", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(144, "msync", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(145, "readv", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(146, "writev", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(147, "getsid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(148, "fdatasync", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(149, "_sysctl", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(150, "mlock", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(151, "munlock", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(152, "mlockall", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(153, "munlockall", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(154, "sched_setparam", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(155, "sched_getparam", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(156, "sched_setscheduler", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(157, "sched_getscheduler", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(158, "sched_yield", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(159, "sched_get_priority_max", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(160, "sched_get_priority_min", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(161, "sched_rr_get_interval", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(162, "nanosleep", kHex, kHex, kGen, kGen, kGen, kGen), MakeEntry(163, "mremap", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(164, "setresuid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(165, "getresuid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(166, "query_module", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(167, "poll", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(168, "nfsservctl", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(169, "setresgid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(170, "getresgid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(171, "prctl", kInt, kHex, kHex, kHex, kHex, kGen), MakeEntry(172, "rt_sigreturn", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(173, "rt_sigaction", kSignal, kHex, kHex, kInt, kGen, kGen), MakeEntry(174, "rt_sigprocmask", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(175, "rt_sigpending", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(176, "rt_sigtimedwait", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(177, "rt_sigqueueinfo", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(178, "rt_sigsuspend", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(179, "pread64", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(180, "pwrite64", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(181, "chown", kPath, kInt, kInt, kGen, kGen, kGen), MakeEntry(182, "getcwd", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(183, "capget", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(184, "capset", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(185, "sigaltstack", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(186, "sendfile", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(187, "getpmsg", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(188, "putpmsg", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(189, "vfork", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(190, "ugetrlimit", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(191, "readahead", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(192, "mmap2", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(193, "truncate64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(194, "ftruncate64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(195, "stat64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(196, "lstat64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(197, "fstat64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(198, "pciconfig_read", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(199, "pciconfig_write", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(200, "pciconfig_iobase", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(201, "multiplexer", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(202, "getdents64", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(203, "pivot_root", kPath, kPath, kGen, kGen, kGen, kGen), MakeEntry(204, "fcntl64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(205, "madvise", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(206, "mincore", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(207, "gettid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(208, "tkill", kInt, kSignal, kGen, kGen, kGen, kGen), MakeEntry(209, "setxattr", kPath, kString, kGen, kInt, kHex, kGen), MakeEntry(210, "lsetxattr", kPath, kString, kGen, kInt, kHex, kGen), MakeEntry(211, "fsetxattr", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(212, "getxattr", kPath, kString, kGen, kInt, kGen, kGen), MakeEntry(213, "lgetxattr", kPath, kString, kGen, kInt, kGen, kGen), MakeEntry(214, "fgetxattr", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(215, "listxattr", kPath, kGen, kInt, kGen, kGen, kGen), MakeEntry(216, "llistxattr", kPath, kGen, kInt, kGen, kGen, kGen), MakeEntry(217, "flistxattr", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(218, "removexattr", kPath, kString, kGen, kGen, kGen, kGen), MakeEntry(219, "lremovexattr", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(220, "fremovexattr", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(221, "futex", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(222, "sched_setaffinity", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(223, "sched_getaffinity", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(225, "tuxcall", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(226, "sendfile64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(227, "io_setup", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(228, "io_destroy", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(229, "io_getevents", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(230, "io_submit", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(231, "io_cancel", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(232, "set_tid_address", kHex, kGen, kGen, kGen, kGen, kGen), MakeEntry(233, "fadvise64", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(234, "exit_group", kInt, kGen, kGen, kGen, kGen, kGen), MakeEntry(235, "lookup_dcookie", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(236, "epoll_create", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(237, "epoll_ctl", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(238, "epoll_wait", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(239, "remap_file_pages", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(240, "timer_create", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(241, "timer_settime", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(242, "timer_gettime", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(243, "timer_getoverrun", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(244, "timer_delete", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(245, "clock_settime", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(246, "clock_gettime", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(247, "clock_getres", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(248, "clock_nanosleep", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(249, "swapcontext", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(250, "tgkill", kInt, kInt, kSignal, kGen, kGen, kGen), MakeEntry(251, "utimes", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(252, "statfs64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(253, "fstatfs64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(254, "fadvise64_64", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(255, "rtas", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(256, "sys_debug_setcontext", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(258, "migrate_pages", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(259, "mbind", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(260, "get_mempolicy", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(261, "set_mempolicy", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(262, "mq_open", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(263, "mq_unlink", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(264, "mq_timedsend", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(265, "mq_timedreceive", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(266, "mq_notify", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(267, "mq_getsetattr", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(268, "kexec_load", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(269, "add_key", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(270, "request_key", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(271, "keyctl", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(272, "waitid", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(273, "ioprio_set", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(274, "ioprio_get", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(275, "inotify_init", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(276, "inotify_add_watch", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(277, "inotify_rm_watch", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(278, "spu_run", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(279, "spu_create", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(280, "pselect6", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(281, "ppoll", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(282, "unshare", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(283, "splice", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(284, "tee", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(285, "vmsplice", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(286, "openat", kGen, kPath, kOct, kHex, kGen, kGen), MakeEntry(287, "mkdirat", kGen, kPath, kGen, kGen, kGen, kGen), MakeEntry(288, "mknodat", kGen, kPath, kGen, kGen, kGen, kGen), MakeEntry(289, "fchownat", kGen, kPath, kGen, kGen, kGen, kGen), MakeEntry(290, "futimesat", kGen, kPath, kGen, kGen, kGen, kGen), MakeEntry(291, "newfstatat", kGen, kPath, kGen, kGen, kGen, kGen), MakeEntry(292, "unlinkat", kGen, kPath, kGen, kGen, kGen, kGen), MakeEntry(293, "renameat", kGen, kPath, kGen, kPath, kGen, kGen), MakeEntry(294, "linkat", kGen, kPath, kGen, kPath, kGen, kGen), MakeEntry(295, "symlinkat", kPath, kGen, kPath, kGen, kGen, kGen), MakeEntry(296, "readlinkat", kGen, kPath, kGen, kGen, kGen, kGen), MakeEntry(297, "fchmodat", kGen, kPath, kGen, kGen, kGen, kGen), MakeEntry(298, "faccessat", kGen, kPath, kGen, kGen, kGen, kGen), MakeEntry(299, "get_robust_list", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(300, "set_robust_list", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(301, "move_pages", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(302, "getcpu", kHex, kHex, kHex, kGen, kGen, kGen), MakeEntry(303, "epoll_pwait", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(304, "utimensat", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(305, "signalfd", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(306, "timerfd_create", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(307, "eventfd", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(308, "sync_file_range2", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(309, "fallocate", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(310, "subpage_prot", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(311, "timerfd_settime", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(312, "timerfd_gettime", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(313, "signalfd4", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(314, "eventfd2", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(315, "epoll_create1", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(316, "dup3", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(317, "pipe2", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(318, "inotify_init1", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(319, "perf_event_open", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(320, "preadv", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(321, "pwritev", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(322, "rt_tgsigqueueinfo", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(323, "fanotify_init", kHex, kHex, kInt, kGen, kGen, kGen), MakeEntry(324, "fanotify_mark", kInt, kHex, kInt, kPath, kGen, kGen), MakeEntry(325, "prlimit64", kInt, kInt, kHex, kHex, kGen, kGen), MakeEntry(326, "socket", kAddressFamily, kInt, kInt, kGen, kGen, kGen), MakeEntry(327, "bind", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(328, "connect", kInt, kSockaddr, kInt, kGen, kGen, kGen), MakeEntry(329, "listen", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(330, "accept", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(331, "getsockname", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(332, "getpeername", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(333, "socketpair", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(334, "send", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(335, "sendto", kInt, kGen, kInt, kHex, kSockaddr, kInt), MakeEntry(336, "recv", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(337, "recvfrom", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(338, "shutdown", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(339, "setsockopt", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(340, "getsockopt", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(341, "sendmsg", kInt, kSockmsghdr, kHex, kGen, kGen, kGen), MakeEntry(342, "recvmsg", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(343, "recvmmsg", kInt, kHex, kHex, kHex, kGen, kGen), MakeEntry(344, "accept4", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(345, "name_to_handle_at", kInt, kGen, kHex, kHex, kHex, kGen), MakeEntry(346, "open_by_handle_at", kInt, kHex, kHex, kGen, kGen, kGen), MakeEntry(347, "clock_adjtime", kInt, kHex, kGen, kGen, kGen, kGen), MakeEntry(348, "syncfs", kInt, kGen, kGen, kGen, kGen, kGen), MakeEntry(349, "sendmmsg", kInt, kHex, kInt, kHex, kGen, kGen), MakeEntry(350, "setns", kInt, kHex, kGen, kGen, kGen, kGen), MakeEntry(351, "process_vm_readv", kInt, kHex, kInt, kHex, kInt, kInt), MakeEntry(352, "process_vm_writev", kInt, kHex, kInt, kHex, kInt, kInt), MakeEntry(353, "finit_module", kInt, kPath, kHex, kGen, kGen, kGen), MakeEntry(354, "kcmp", kInt, kInt, kInt, kHex, kHex, kGen), MakeEntry(355, "sched_setattr", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(356, "sched_getattr", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(357, "renameat2", kGen, kPath, kGen, kPath, kGen, kGen), MakeEntry(358, "seccomp", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(359, "getrandom", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(360, "memfd_create", kGen, kGen, kGen, kGen, kGen, kGen), MakeEntry(361, "bpf", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(362, "execveat", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(363, "switch_endian", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(364, "userfaultfd", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(365, "membarrier", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(378, "mlock2", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(379, "copy_file_range", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(380, "preadv2", kHex, kHex, kHex, kHex, kHex, kHex), MakeEntry(381, "pwritev2", kHex, kHex, kHex, kHex, kHex, kHex), // clang-format on }; static_assert(IsSorted(kSyscallDataPPC64LE, SyscallTable::Entry::BySyscallNr), "Syscalls should be sorted"); // TODO(cblichmann): Confirm the entries in this list. // https://github.com/torvalds/linux/blob/v5.8/include/uapi/asm-generic/unistd.h constexpr std::array kSyscallDataArm64 = { // clang-format off MakeEntry(0, "io_setup", UnknownArguments()), MakeEntry(1, "io_destroy", UnknownArguments()), MakeEntry(2, "io_submit", UnknownArguments()), MakeEntry(3, "io_cancel", UnknownArguments()), MakeEntry(4, "io_getevents", UnknownArguments()), MakeEntry(5, "setxattr", kPath, kString, kGen, kInt, kHex, kGen), MakeEntry(6, "lsetxattr", kPath, kString, kGen, kInt, kHex, kGen), MakeEntry(7, "fsetxattr", UnknownArguments()), MakeEntry(8, "getxattr", kPath, kString, kGen, kInt, kGen, kGen), MakeEntry(9, "lgetxattr", kPath, kString, kGen, kInt, kGen, kGen), MakeEntry(10, "fgetxattr", UnknownArguments()), MakeEntry(11, "listxattr", kPath, kGen, kInt, kGen, kGen, kGen), MakeEntry(12, "llistxattr", kPath, kGen, kInt, kGen, kGen, kGen), MakeEntry(13, "flistxattr", UnknownArguments()), MakeEntry(14, "removexattr", kPath, kString, kGen, kGen, kGen, kGen), MakeEntry(15, "lremovexattr", UnknownArguments()), MakeEntry(16, "fremovexattr", UnknownArguments()), MakeEntry(17, "getcwd", UnknownArguments()), MakeEntry(18, "lookup_dcookie", UnknownArguments()), MakeEntry(19, "eventfd2", UnknownArguments()), MakeEntry(20, "epoll_create1", UnknownArguments()), MakeEntry(21, "epoll_ctl", UnknownArguments()), MakeEntry(22, "epoll_pwait", UnknownArguments()), MakeEntry(23, "dup", UnknownArguments()), MakeEntry(24, "dup3", UnknownArguments()), MakeEntry(25, "fcntl", UnknownArguments()), MakeEntry(26, "inotify_init1", UnknownArguments()), MakeEntry(27, "inotify_add_watch", UnknownArguments()), MakeEntry(28, "inotify_rm_watch", UnknownArguments()), MakeEntry(29, "ioctl", UnknownArguments()), MakeEntry(30, "ioprio_set", UnknownArguments()), MakeEntry(31, "ioprio_get", UnknownArguments()), MakeEntry(32, "flock", UnknownArguments()), MakeEntry(33, "mknodat", kGen, kPath, kGen, kGen, kGen, kGen), MakeEntry(34, "mkdirat", kGen, kPath, kGen, kGen, kGen, kGen), MakeEntry(35, "unlinkat", kGen, kPath, kGen, kGen, kGen, kGen), MakeEntry(36, "symlinkat", kPath, kGen, kPath, kGen, kGen, kGen), MakeEntry(37, "linkat", kGen, kPath, kGen, kPath, kGen, kGen), MakeEntry(38, "renameat", kGen, kPath, kGen, kPath, kGen, kGen), MakeEntry(39, "umount2", kPath, kHex, kGen, kGen, kGen, kGen), MakeEntry(40, "mount", kPath, kPath, kString, kHex, kGen, kGen), MakeEntry(41, "pivot_root", kPath, kPath, kGen, kGen, kGen, kGen), MakeEntry(42, "nfsservctl", UnknownArguments()), MakeEntry(43, "statfs", kPath, kGen, kGen, kGen, kGen, kGen), MakeEntry(44, "fstatfs", UnknownArguments()), MakeEntry(45, "truncate", kPath, kInt, kGen, kGen, kGen, kGen), MakeEntry(46, "ftruncate", UnknownArguments()), MakeEntry(47, "fallocate", UnknownArguments()), MakeEntry(48, "faccessat", kGen, kPath, kGen, kGen, kGen, kGen), MakeEntry(49, "chdir", kPath, kGen, kGen, kGen, kGen, kGen), MakeEntry(50, "fchdir", UnknownArguments()), MakeEntry(51, "chroot", kPath, kGen, kGen, kGen, kGen, kGen), MakeEntry(52, "fchmod", UnknownArguments()), MakeEntry(53, "fchmodat", kGen, kPath, kGen, kGen, kGen, kGen), MakeEntry(54, "fchownat", kGen, kPath, kGen, kGen, kGen, kGen), MakeEntry(55, "fchown", UnknownArguments()), MakeEntry(56, "openat", kGen, kPath, kOct, kHex, kGen, kGen), MakeEntry(57, "close", kInt, kGen, kGen, kGen, kGen, kGen), MakeEntry(58, "vhangup", UnknownArguments()), MakeEntry(59, "pipe2", UnknownArguments()), MakeEntry(60, "quotactl", kInt, kPath, kInt, kGen, kGen, kGen), MakeEntry(61, "getdents64", UnknownArguments()), MakeEntry(62, "lseek", UnknownArguments()), MakeEntry(63, "read", kInt, kHex, kInt, kGen, kGen, kGen), MakeEntry(64, "write", kInt, kHex, kInt, kGen, kGen, kGen), MakeEntry(65, "readv", UnknownArguments()), MakeEntry(66, "writev", UnknownArguments()), MakeEntry(67, "pread64", UnknownArguments()), MakeEntry(68, "pwrite64", UnknownArguments()), MakeEntry(69, "preadv", UnknownArguments()), MakeEntry(70, "pwritev", UnknownArguments()), MakeEntry(71, "sendfile", UnknownArguments()), MakeEntry(72, "pselect6", UnknownArguments()), MakeEntry(73, "ppoll", UnknownArguments()), MakeEntry(74, "signalfd4", UnknownArguments()), MakeEntry(75, "vmsplice", UnknownArguments()), MakeEntry(76, "splice", UnknownArguments()), MakeEntry(77, "tee", UnknownArguments()), MakeEntry(78, "readlinkat", kGen, kPath, kGen, kGen, kGen, kGen), MakeEntry(79, "newfstatat", kGen, kPath, kGen, kGen, kGen, kGen), MakeEntry(80, "fstat", kInt, kHex, kGen, kGen, kGen, kGen), MakeEntry(81, "sync", UnknownArguments()), MakeEntry(82, "fsync", UnknownArguments()), MakeEntry(83, "fdatasync", UnknownArguments()), MakeEntry(84, "sync_file_range", UnknownArguments()), MakeEntry(85, "timerfd_create", UnknownArguments()), MakeEntry(86, "timerfd_settime", UnknownArguments()), MakeEntry(87, "timerfd_gettime", UnknownArguments()), MakeEntry(88, "utimensat", UnknownArguments()), MakeEntry(89, "acct", kPath, kGen, kGen, kGen, kGen, kGen), MakeEntry(90, "capget", UnknownArguments()), MakeEntry(91, "capset", UnknownArguments()), MakeEntry(92, "personality", UnknownArguments()), MakeEntry(93, "exit", kInt, kGen, kGen, kGen, kGen, kGen), MakeEntry(94, "exit_group", kInt, kGen, kGen, kGen, kGen, kGen), MakeEntry(95, "waitid", UnknownArguments()), MakeEntry(96, "set_tid_address", kHex, kGen, kGen, kGen, kGen, kGen), MakeEntry(97, "unshare", UnknownArguments()), MakeEntry(98, "futex", UnknownArguments()), MakeEntry(99, "set_robust_list", UnknownArguments()), MakeEntry(100, "get_robust_list", UnknownArguments()), MakeEntry(101, "nanosleep", kHex, kHex, kGen, kGen, kGen, kGen), MakeEntry(102, "getitimer", UnknownArguments()), MakeEntry(103, "setitimer", UnknownArguments()), MakeEntry(104, "kexec_load", UnknownArguments()), MakeEntry(105, "init_module", UnknownArguments()), MakeEntry(106, "delete_module", UnknownArguments()), MakeEntry(107, "timer_create", UnknownArguments()), MakeEntry(108, "timer_gettime", UnknownArguments()), MakeEntry(109, "timer_getoverrun", UnknownArguments()), MakeEntry(110, "timer_settime", UnknownArguments()), MakeEntry(111, "timer_delete", UnknownArguments()), MakeEntry(112, "clock_settime", UnknownArguments()), MakeEntry(113, "clock_gettime", UnknownArguments()), MakeEntry(114, "clock_getres", UnknownArguments()), MakeEntry(115, "clock_nanosleep", UnknownArguments()), MakeEntry(116, "syslog", UnknownArguments()), MakeEntry(117, "ptrace", UnknownArguments()), MakeEntry(118, "sched_setparam", UnknownArguments()), MakeEntry(119, "sched_setscheduler", UnknownArguments()), MakeEntry(120, "sched_getscheduler", UnknownArguments()), MakeEntry(121, "sched_getparam", UnknownArguments()), MakeEntry(122, "sched_setaffinity", UnknownArguments()), MakeEntry(123, "sched_getaffinity", UnknownArguments()), MakeEntry(124, "sched_yield", UnknownArguments()), MakeEntry(125, "sched_get_priority_max", UnknownArguments()), MakeEntry(126, "sched_get_priority_min", UnknownArguments()), MakeEntry(127, "sched_rr_get_interval", UnknownArguments()), MakeEntry(128, "restart_syscall", UnknownArguments()), MakeEntry(129, "kill", kInt, kSignal, kGen, kGen, kGen, kGen), MakeEntry(130, "tkill", kInt, kSignal, kGen, kGen, kGen, kGen), MakeEntry(131, "tgkill", kInt, kInt, kSignal, kGen, kGen, kGen), MakeEntry(132, "sigaltstack", UnknownArguments()), MakeEntry(133, "rt_sigsuspend", UnknownArguments()), MakeEntry(134, "rt_sigaction", kSignal, kHex, kHex, kInt, kGen, kGen), MakeEntry(135, "rt_sigprocmask", UnknownArguments()), MakeEntry(136, "rt_sigpending", UnknownArguments()), MakeEntry(137, "rt_sigtimedwait", UnknownArguments()), MakeEntry(138, "rt_sigqueueinfo", UnknownArguments()), MakeEntry(139, "rt_sigreturn", UnknownArguments()), MakeEntry(140, "setpriority", UnknownArguments()), MakeEntry(141, "getpriority", UnknownArguments()), MakeEntry(142, "reboot", UnknownArguments()), MakeEntry(143, "setregid", UnknownArguments()), MakeEntry(144, "setgid", UnknownArguments()), MakeEntry(145, "setreuid", UnknownArguments()), MakeEntry(146, "setuid", UnknownArguments()), MakeEntry(147, "setresuid", UnknownArguments()), MakeEntry(148, "getresuid", UnknownArguments()), MakeEntry(149, "setresgid", UnknownArguments()), MakeEntry(150, "getresgid", UnknownArguments()), MakeEntry(151, "setfsuid", UnknownArguments()), MakeEntry(152, "setfsgid", UnknownArguments()), MakeEntry(153, "times", UnknownArguments()), MakeEntry(154, "setpgid", UnknownArguments()), MakeEntry(155, "getpgid", UnknownArguments()), MakeEntry(156, "getsid", UnknownArguments()), MakeEntry(157, "setsid", UnknownArguments()), MakeEntry(158, "getgroups", UnknownArguments()), MakeEntry(159, "setgroups", UnknownArguments()), MakeEntry(160, "uname", UnknownArguments()), MakeEntry(161, "sethostname", UnknownArguments()), MakeEntry(162, "setdomainname", UnknownArguments()), MakeEntry(163, "getrlimit", UnknownArguments()), MakeEntry(164, "setrlimit", UnknownArguments()), MakeEntry(165, "getrusage", UnknownArguments()), MakeEntry(166, "umask", kHex, kGen, kGen, kGen, kGen, kGen), MakeEntry(167, "prctl", kInt, kHex, kHex, kHex, kHex, kGen), MakeEntry(168, "getcpu", kHex, kHex, kHex, kGen, kGen, kGen), MakeEntry(169, "gettimeofday", kHex, kHex, kGen, kGen, kGen, kGen), MakeEntry(170, "settimeofday", kHex, kHex, kGen, kGen, kGen, kGen), MakeEntry(171, "adjtimex", UnknownArguments()), MakeEntry(172, "getpid", UnknownArguments()), MakeEntry(173, "getppid", UnknownArguments()), MakeEntry(174, "getuid", UnknownArguments()), MakeEntry(175, "geteuid", UnknownArguments()), MakeEntry(176, "getgid", UnknownArguments()), MakeEntry(177, "getegid", UnknownArguments()), MakeEntry(178, "gettid", UnknownArguments()), MakeEntry(179, "sysinfo", UnknownArguments()), MakeEntry(180, "mq_open", UnknownArguments()), MakeEntry(181, "mq_unlink", UnknownArguments()), MakeEntry(182, "mq_timedsend", UnknownArguments()), MakeEntry(183, "mq_timedreceive", UnknownArguments()), MakeEntry(184, "mq_notify", UnknownArguments()), MakeEntry(185, "mq_getsetattr", UnknownArguments()), MakeEntry(186, "msgget", UnknownArguments()), MakeEntry(187, "msgctl", UnknownArguments()), MakeEntry(188, "msgrcv", UnknownArguments()), MakeEntry(189, "msgsnd", UnknownArguments()), MakeEntry(190, "semget", UnknownArguments()), MakeEntry(191, "semctl", UnknownArguments()), MakeEntry(192, "semtimedop", UnknownArguments()), MakeEntry(193, "semop", UnknownArguments()), MakeEntry(194, "shmget", UnknownArguments()), MakeEntry(195, "shmctl", UnknownArguments()), MakeEntry(196, "shmat", UnknownArguments()), MakeEntry(197, "shmdt", UnknownArguments()), MakeEntry(198, "socket", kAddressFamily, kInt, kInt, kGen, kGen, kGen), MakeEntry(199, "socketpair", UnknownArguments()), MakeEntry(200, "bind", UnknownArguments()), MakeEntry(201, "listen", UnknownArguments()), MakeEntry(202, "accept", UnknownArguments()), MakeEntry(203, "connect", kInt, kSockaddr, kInt, kGen, kGen, kGen), MakeEntry(204, "getsockname", UnknownArguments()), MakeEntry(205, "getpeername", UnknownArguments()), MakeEntry(206, "sendto", kInt, kGen, kInt, kHex, kSockaddr, kInt), MakeEntry(207, "recvfrom", UnknownArguments()), MakeEntry(208, "setsockopt", UnknownArguments()), MakeEntry(209, "getsockopt", UnknownArguments()), MakeEntry(210, "shutdown", UnknownArguments()), MakeEntry(211, "sendmsg", kInt, kSockmsghdr, kHex, kGen, kGen, kGen), MakeEntry(212, "recvmsg", UnknownArguments()), MakeEntry(213, "readahead", UnknownArguments()), MakeEntry(214, "brk", kHex, kGen, kGen, kGen, kGen, kGen), MakeEntry(215, "munmap", kHex, kHex, kGen, kGen, kGen, kGen), MakeEntry(216, "mremap", UnknownArguments()), MakeEntry(217, "add_key", UnknownArguments()), MakeEntry(218, "request_key", UnknownArguments()), MakeEntry(219, "keyctl", UnknownArguments()), MakeEntry(220, "clone", kCloneFlag, kHex, kHex, kHex, kHex, kGen), MakeEntry(221, "execve", kPath, kHex, kHex, kGen, kGen, kGen), MakeEntry(222, "mmap", kHex, kInt, kHex, kHex, kInt, kInt), MakeEntry(223, "fadvise64", UnknownArguments()), MakeEntry(224, "swapon", kPath, kHex, kGen, kGen, kGen, kGen), MakeEntry(225, "swapoff", kPath, kGen, kGen, kGen, kGen, kGen), MakeEntry(226, "mprotect", kHex, kHex, kHex, kGen, kGen, kGen), MakeEntry(227, "msync", UnknownArguments()), MakeEntry(228, "mlock", UnknownArguments()), MakeEntry(229, "munlock", UnknownArguments()), MakeEntry(230, "mlockall", UnknownArguments()), MakeEntry(231, "munlockall", UnknownArguments()), MakeEntry(232, "mincore", UnknownArguments()), MakeEntry(233, "madvise", UnknownArguments()), MakeEntry(234, "remap_file_pages", UnknownArguments()), MakeEntry(235, "mbind", UnknownArguments()), MakeEntry(236, "get_mempolicy", UnknownArguments()), MakeEntry(237, "set_mempolicy", UnknownArguments()), MakeEntry(238, "migrate_pages", UnknownArguments()), MakeEntry(239, "move_pages", UnknownArguments()), MakeEntry(240, "rt_tgsigqueueinfo", UnknownArguments()), MakeEntry(241, "perf_event_open", UnknownArguments()), MakeEntry(242, "accept4", UnknownArguments()), MakeEntry(243, "recvmmsg", kInt, kHex, kHex, kHex, kGen, kGen), MakeEntry(260, "wait4", kInt, kHex, kHex, kHex, kGen, kGen), MakeEntry(261, "prlimit64", kInt, kInt, kHex, kHex, kGen, kGen), MakeEntry(262, "fanotify_init", kHex, kHex, kInt, kGen, kGen, kGen), MakeEntry(263, "fanotify_mark", kInt, kHex, kInt, kPath, kGen, kGen), MakeEntry(264, "name_to_handle_at", kInt, kGen, kHex, kHex, kHex, kGen), MakeEntry(265, "open_by_handle_at", kInt, kHex, kHex, kGen, kGen, kGen), MakeEntry(266, "clock_adjtime", kInt, kHex, kGen, kGen, kGen, kGen), MakeEntry(267, "syncfs", kInt, kGen, kGen, kGen, kGen, kGen), MakeEntry(268, "setns", kInt, kHex, kGen, kGen, kGen, kGen), MakeEntry(269, "sendmmsg", kInt, kHex, kInt, kHex, kGen, kGen), MakeEntry(270, "process_vm_readv", kInt, kHex, kInt, kHex, kInt, kInt), MakeEntry(271, "process_vm_writev", kInt, kHex, kInt, kHex, kInt, kInt), MakeEntry(272, "kcmp", kInt, kInt, kInt, kHex, kHex, kGen), MakeEntry(273, "finit_module", kInt, kPath, kHex, kGen, kGen, kGen), MakeEntry(274, "sched_setattr", UnknownArguments()), MakeEntry(275, "sched_getattr", UnknownArguments()), MakeEntry(276, "renameat2", kGen, kPath, kGen, kPath, kGen, kGen), MakeEntry(277, "seccomp", UnknownArguments()), MakeEntry(278, "getrandom", UnknownArguments()), MakeEntry(279, "memfd_create", UnknownArguments()), // clang-format on }; static_assert(IsSorted(kSyscallDataArm64, SyscallTable::Entry::BySyscallNr), "Syscalls should be sorted"); constexpr std::array kSyscallDataArm32 = { // clang-format off MakeEntry(0, "restart_syscall", kGen, kGen, kGen, kGen), MakeEntry(1, "exit", kHex, kHex, kHex, kHex), MakeEntry(2, "fork", kGen, kGen, kGen, kGen), MakeEntry(3, "read", kInt, kHex, kInt), MakeEntry(4, "write", kHex, kHex, kHex, kHex), MakeEntry(5, "open", kPath, kHex, kOct), MakeEntry(6, "close", kHex, kHex, kHex, kHex), MakeEntry(8, "creat", kPath, kHex, kHex, kHex), MakeEntry(9, "link", kPath, kPath), MakeEntry(10, "unlink", kPath), MakeEntry(11, "execve", kPath, kHex, kHex), MakeEntry(12, "chdir", kPath), MakeEntry(14, "mknod", kPath, kOct, kHex), MakeEntry(15, "chmod", kPath, kOct), MakeEntry(16, "lchown", kPath, kInt, kInt), MakeEntry(19, "lseek", kGen, kGen, kGen, kGen), MakeEntry(20, "getpid", kGen, kGen, kGen, kGen), MakeEntry(21, "mount", kHex, kHex, kHex, kHex), MakeEntry(23, "setuid", kGen, kGen, kGen, kGen), MakeEntry(24, "getuid", kGen, kGen, kGen, kGen), MakeEntry(26, "ptrace", kGen, kGen, kGen), MakeEntry(29, "pause", kGen, kGen, kGen, kGen), MakeEntry(33, "access", kPath, kHex), MakeEntry(34, "nice", kHex, kHex, kHex, kHex), MakeEntry(36, "sync", kGen, kGen, kGen, kGen), MakeEntry(37, "kill", kHex, kHex, kHex, kHex), MakeEntry(38, "rename", kPath, kPath), MakeEntry(39, "mkdir", kPath, kHex, kHex, kHex), MakeEntry(40, "rmdir", kHex, kHex, kHex, kHex), MakeEntry(41, "dup", kGen, kGen, kGen, kGen), MakeEntry(42, "pipe", kGen, kGen, kGen, kGen), MakeEntry(43, "times", kGen, kGen, kGen, kGen), MakeEntry(45, "brk", kHex), MakeEntry(46, "setgid", kGen, kGen, kGen, kGen), MakeEntry(47, "getgid", kGen, kGen, kGen, kGen), MakeEntry(49, "geteuid", kGen, kGen, kGen, kGen), MakeEntry(50, "getegid", kGen, kGen, kGen, kGen), MakeEntry(51, "acct", kHex, kHex, kHex, kHex), MakeEntry(52, "umount2", kHex, kHex, kHex, kHex), MakeEntry(54, "ioctl", kGen, kGen, kGen, kGen), MakeEntry(55, "fcntl", kGen, kGen, kGen, kGen), MakeEntry(57, "setpgid", kGen, kGen, kGen, kGen), MakeEntry(60, "umask", kHex), MakeEntry(61, "chroot", kHex, kHex, kHex, kHex), MakeEntry(62, "ustat", kGen, kGen, kGen, kGen), MakeEntry(63, "dup2", kGen, kGen), MakeEntry(64, "getppid", kGen, kGen, kGen, kGen), MakeEntry(65, "getpgrp", kGen, kGen, kGen, kGen), MakeEntry(66, "setsid", kGen, kGen, kGen, kGen), MakeEntry(67, "sigaction", kHex, kHex, kHex, kHex), MakeEntry(70, "setreuid", kGen, kGen, kGen, kGen), MakeEntry(71, "setregid", kGen, kGen, kGen, kGen), MakeEntry(72, "sigsuspend", kHex, kHex, kHex, kHex), MakeEntry(73, "sigpending", kHex, kHex, kHex, kHex), MakeEntry(74, "sethostname", kGen, kGen, kGen, kGen), MakeEntry(75, "setrlimit", kGen, kGen, kGen, kGen), MakeEntry(77, "getrusage", kGen, kGen, kGen, kGen), MakeEntry(78, "gettimeofday", kHex, kHex), MakeEntry(79, "settimeofday", kHex, kHex), MakeEntry(80, "getgroups", kGen, kGen, kGen, kGen), MakeEntry(81, "setgroups", kGen, kGen, kGen, kGen), MakeEntry(83, "symlink", kPath, kPath), MakeEntry(85, "readlink", kPath, kGen, kInt), MakeEntry(86, "uselib", kPath), MakeEntry(87, "swapon", kHex, kHex, kHex, kHex), MakeEntry(88, "reboot", kGen, kGen, kGen, kGen), MakeEntry(91, "munmap", kHex, kHex), MakeEntry(92, "truncate", kPath, kHex, kHex, kHex), MakeEntry(93, "ftruncate", kGen, kGen, kGen, kGen), MakeEntry(94, "fchmod", kGen, kGen, kGen, kGen), MakeEntry(95, "fchown", kGen, kGen, kGen, kGen), MakeEntry(96, "getpriority", kGen, kGen, kGen, kGen), MakeEntry(97, "setpriority", kGen, kGen, kGen, kGen), MakeEntry(99, "statfs", kPath, kGen, kGen, kGen), MakeEntry(100, "fstatfs", kGen, kGen, kGen, kGen), MakeEntry(103, "syslog", kGen, kGen, kGen, kGen), MakeEntry(104, "setitimer", kGen, kGen, kGen, kGen), MakeEntry(105, "getitimer", kGen, kGen, kGen, kGen), MakeEntry(106, "stat", kPath, kGen), MakeEntry(107, "lstat", kPath, kGen), MakeEntry(108, "fstat", kHex, kHex, kHex, kHex), MakeEntry(111, "vhangup", kGen, kGen, kGen, kGen), MakeEntry(114, "wait4", kHex, kHex, kHex, kHex), MakeEntry(115, "swapoff", kHex, kHex, kHex, kHex), MakeEntry(116, "sysinfo", kGen, kGen, kGen, kGen), MakeEntry(118, "fsync", kGen, kGen, kGen, kGen), MakeEntry(119, "sigreturn", kHex, kHex, kHex, kHex), MakeEntry(120, "clone", kCloneFlag, kHex, kHex, kHex), MakeEntry(121, "setdomainname", kGen, kGen, kGen, kGen), MakeEntry(122, "uname", kGen, kGen, kGen, kGen), MakeEntry(124, "adjtimex", kGen, kGen, kGen, kGen), MakeEntry(125, "mprotect", kHex, kHex, kHex), MakeEntry(126, "sigprocmask", kHex, kHex, kHex, kHex), MakeEntry(128, "init_module", kGen, kGen, kGen, kGen), MakeEntry(129, "delete_module", kGen, kGen, kGen, kGen), MakeEntry(131, "quotactl", kHex, kHex, kHex, kHex), MakeEntry(132, "getpgid", kGen, kGen, kGen, kGen), MakeEntry(133, "fchdir", kGen, kGen, kGen, kGen), MakeEntry(134, "bdflush", kHex, kHex, kHex, kHex), MakeEntry(135, "sysfs", kGen, kGen, kGen, kGen), MakeEntry(136, "personality", kGen, kGen, kGen, kGen), MakeEntry(138, "setfsuid", kGen, kGen, kGen, kGen), MakeEntry(139, "setfsgid", kGen, kGen, kGen, kGen), MakeEntry(140, "_llseek", kHex, kHex, kHex, kHex), MakeEntry(141, "getdents", kGen, kGen, kGen, kGen), MakeEntry(142, "_newselect", kHex, kHex, kHex, kHex), MakeEntry(143, "flock", kGen, kGen, kGen, kGen), MakeEntry(144, "msync", kGen, kGen, kGen, kGen), MakeEntry(145, "readv", kGen, kGen, kGen, kGen), MakeEntry(146, "writev", kGen, kGen, kGen, kGen), MakeEntry(147, "getsid", kGen, kGen, kGen, kGen), MakeEntry(148, "fdatasync", kGen, kGen, kGen, kGen), MakeEntry(149, "_sysctl", kGen, kGen, kGen, kGen), MakeEntry(150, "mlock", kGen, kGen, kGen, kGen), MakeEntry(151, "munlock", kGen, kGen, kGen, kGen), MakeEntry(152, "mlockall", kGen, kGen, kGen, kGen), MakeEntry(153, "munlockall", kGen, kGen, kGen, kGen), MakeEntry(154, "sched_setparam", kGen, kGen, kGen, kGen), MakeEntry(155, "sched_getparam", kGen, kGen, kGen, kGen), MakeEntry(156, "sched_setscheduler", kGen, kGen, kGen, kGen), MakeEntry(157, "sched_getscheduler", kGen, kGen, kGen, kGen), MakeEntry(158, "sched_yield", kGen, kGen, kGen, kGen), MakeEntry(159, "sched_get_priority_max", kGen, kGen, kGen, kGen), MakeEntry(160, "sched_get_priority_min", kGen, kGen, kGen, kGen), MakeEntry(161, "sched_rr_get_interval", kGen, kGen, kGen, kGen), MakeEntry(162, "nanosleep", kHex, kHex), MakeEntry(163, "mremap", kGen, kGen, kGen, kGen), MakeEntry(164, "setresuid", kGen, kGen, kGen, kGen), MakeEntry(165, "getresuid", kGen, kGen, kGen, kGen), MakeEntry(168, "poll", kGen, kGen, kGen, kGen), MakeEntry(169, "nfsservctl", kGen, kGen, kGen, kGen), MakeEntry(170, "setresgid", kGen, kGen, kGen, kGen), MakeEntry(171, "getresgid", kGen, kGen, kGen, kGen), MakeEntry(172, "prctl", kHex, kHex, kHex, kHex), MakeEntry(173, "rt_sigreturn", kGen, kGen, kGen, kGen), MakeEntry(174, "rt_sigaction", kHex, kHex, kHex, kHex), MakeEntry(175, "rt_sigprocmask", kGen, kGen, kGen, kGen), MakeEntry(176, "rt_sigpending", kGen, kGen, kGen, kGen), MakeEntry(177, "rt_sigtimedwait", kGen, kGen, kGen, kGen), MakeEntry(178, "rt_sigqueueinfo", kGen, kGen, kGen, kGen), MakeEntry(179, "rt_sigsuspend", kGen, kGen, kGen, kGen), MakeEntry(180, "pread64", kGen, kGen, kGen, kGen), MakeEntry(181, "pwrite64", kGen, kGen, kGen, kGen), MakeEntry(182, "chown", kHex, kHex, kHex, kHex), MakeEntry(183, "getcwd", kGen, kGen, kGen, kGen), MakeEntry(184, "capget", kGen, kGen, kGen, kGen), MakeEntry(185, "capset", kGen, kGen, kGen, kGen), MakeEntry(186, "sigaltstack", kGen, kGen, kGen, kGen), MakeEntry(187, "sendfile", kGen, kGen, kGen, kGen), MakeEntry(190, "vfork", kGen, kGen, kGen, kGen), MakeEntry(191, "ugetrlimit", kHex, kHex, kHex, kHex), MakeEntry(192, "mmap2", kHex, kHex, kHex, kHex), MakeEntry(193, "truncate64", kHex, kHex, kHex, kHex), MakeEntry(194, "ftruncate64", kHex, kHex, kHex, kHex), MakeEntry(195, "stat64", kHex, kHex, kHex, kHex), MakeEntry(196, "lstat64", kHex, kHex, kHex, kHex), MakeEntry(197, "fstat64", kHex, kHex, kHex, kHex), MakeEntry(198, "lchown32", kHex, kHex, kHex, kHex), MakeEntry(199, "getuid32", kHex, kHex, kHex, kHex), MakeEntry(200, "getgid32", kHex, kHex, kHex, kHex), MakeEntry(201, "geteuid32", kHex, kHex, kHex, kHex), MakeEntry(202, "getegid32", kHex, kHex, kHex, kHex), MakeEntry(203, "setreuid32", kHex, kHex, kHex, kHex), MakeEntry(204, "setregid32", kHex, kHex, kHex, kHex), MakeEntry(205, "getgroups32", kHex, kHex, kHex, kHex), MakeEntry(206, "setgroups32", kHex, kHex, kHex, kHex), MakeEntry(207, "fchown32", kHex, kHex, kHex, kHex), MakeEntry(208, "setresuid32", kHex, kHex, kHex, kHex), MakeEntry(209, "getresuid32", kHex, kHex, kHex, kHex), MakeEntry(210, "setresgid32", kHex, kHex, kHex, kHex), MakeEntry(211, "getresgid32", kHex, kHex, kHex, kHex), MakeEntry(212, "chown32", kHex, kHex, kHex, kHex), MakeEntry(213, "setuid32", kHex, kHex, kHex, kHex), MakeEntry(214, "setgid32", kHex, kHex, kHex, kHex), MakeEntry(215, "setfsuid32", kHex, kHex, kHex, kHex), MakeEntry(216, "setfsgid32", kHex, kHex, kHex, kHex), MakeEntry(217, "getdents64", kGen, kGen, kGen, kGen), MakeEntry(218, "pivot_root", kHex, kHex, kHex, kHex), MakeEntry(219, "mincore", kGen, kGen, kGen, kGen), MakeEntry(220, "madvise", kGen, kGen, kGen, kGen), MakeEntry(221, "fcntl64", kHex, kHex, kHex, kHex), MakeEntry(224, "gettid", kGen, kGen, kGen, kGen), MakeEntry(225, "readahead", kGen, kGen, kGen, kGen), MakeEntry(226, "setxattr", kHex, kHex, kHex, kHex), MakeEntry(227, "lsetxattr", kHex, kHex, kHex, kHex), MakeEntry(228, "fsetxattr", kGen, kGen, kGen, kGen), MakeEntry(229, "getxattr", kHex, kHex, kHex, kHex), MakeEntry(230, "lgetxattr", kHex, kHex, kHex, kHex), MakeEntry(231, "fgetxattr", kGen, kGen, kGen, kGen), MakeEntry(232, "listxattr", kHex, kHex, kHex, kHex), MakeEntry(233, "llistxattr", kHex, kHex, kHex, kHex), MakeEntry(234, "flistxattr", kGen, kGen, kGen, kGen), MakeEntry(235, "removexattr", kHex, kHex, kHex, kHex), MakeEntry(236, "lremovexattr", kGen, kGen, kGen, kGen), MakeEntry(237, "fremovexattr", kGen, kGen, kGen, kGen), MakeEntry(238, "tkill", kHex, kHex, kHex, kHex), MakeEntry(239, "sendfile64", kHex, kHex, kHex, kHex), MakeEntry(240, "futex", kGen, kGen, kGen, kGen), MakeEntry(241, "sched_setaffinity", kGen, kGen, kGen, kGen), MakeEntry(242, "sched_getaffinity", kGen, kGen, kGen, kGen), MakeEntry(243, "io_setup", kGen, kGen, kGen, kGen), MakeEntry(244, "io_destroy", kGen, kGen, kGen, kGen), MakeEntry(245, "io_getevents", kGen, kGen, kGen, kGen), MakeEntry(246, "io_submit", kGen, kGen, kGen, kGen), MakeEntry(247, "io_cancel", kGen, kGen, kGen, kGen), MakeEntry(248, "exit_group", kHex, kHex, kHex, kHex), MakeEntry(249, "lookup_dcookie", kGen, kGen, kGen, kGen), MakeEntry(250, "epoll_create", kGen, kGen, kGen, kGen), MakeEntry(251, "epoll_ctl", kGen, kGen, kGen, kGen), MakeEntry(252, "epoll_wait", kGen, kGen, kGen, kGen), MakeEntry(253, "remap_file_pages", kGen, kGen, kGen, kGen), MakeEntry(256, "set_tid_address", kHex), MakeEntry(257, "timer_create", kGen, kGen, kGen, kGen), MakeEntry(258, "timer_settime", kGen, kGen, kGen, kGen), MakeEntry(259, "timer_gettime", kGen, kGen, kGen, kGen), MakeEntry(260, "timer_getoverrun", kGen, kGen, kGen, kGen), MakeEntry(261, "timer_delete", kGen, kGen, kGen, kGen), MakeEntry(262, "clock_settime", kGen, kGen, kGen, kGen), MakeEntry(263, "clock_gettime", kGen, kGen, kGen, kGen), MakeEntry(264, "clock_getres", kGen, kGen, kGen, kGen), MakeEntry(265, "clock_nanosleep", kGen, kGen, kGen, kGen), MakeEntry(266, "statfs64", kHex, kHex, kHex, kHex), MakeEntry(267, "fstatfs64", kHex, kHex, kHex, kHex), MakeEntry(268, "tgkill", kHex, kHex, kHex, kHex), MakeEntry(269, "utimes", kGen, kGen, kGen, kGen), MakeEntry(271, "pciconfig_iobase", kHex, kHex, kHex, kHex), MakeEntry(272, "pciconfig_read", kHex, kHex, kHex, kHex), MakeEntry(273, "pciconfig_write", kHex, kHex, kHex, kHex), MakeEntry(274, "mq_open", kGen, kGen, kGen, kGen), MakeEntry(275, "mq_unlink", kGen, kGen, kGen, kGen), MakeEntry(276, "mq_timedsend", kGen, kGen, kGen, kGen), MakeEntry(277, "mq_timedreceive", kGen, kGen, kGen, kGen), MakeEntry(278, "mq_notify", kGen, kGen, kGen, kGen), MakeEntry(279, "mq_getsetattr", kGen, kGen, kGen, kGen), MakeEntry(280, "waitid", kGen, kGen, kGen, kGen), MakeEntry(281, "socket", kAddressFamily, kInt, kInt), MakeEntry(282, "bind", kGen, kGen, kGen, kGen), MakeEntry(283, "connect", kInt, kSockaddr, kInt), MakeEntry(284, "listen", kGen, kGen, kGen, kGen), MakeEntry(285, "accept", kGen, kGen, kGen, kGen), MakeEntry(286, "getsockname", kGen, kGen, kGen, kGen), MakeEntry(287, "getpeername", kGen, kGen, kGen, kGen), MakeEntry(288, "socketpair", kGen, kGen, kGen, kGen), MakeEntry(289, "send", kHex, kHex, kHex, kHex), MakeEntry(290, "sendto", kInt, kGen, kInt, kHex), MakeEntry(291, "recv", kHex, kHex, kHex, kHex), MakeEntry(292, "recvfrom", kGen, kGen, kGen, kGen), MakeEntry(293, "shutdown", kGen, kGen, kGen, kGen), MakeEntry(294, "setsockopt", kGen, kGen, kGen, kGen), MakeEntry(295, "getsockopt", kGen, kGen, kGen, kGen), MakeEntry(296, "sendmsg", kInt, kSockmsghdr, kHex), MakeEntry(297, "recvmsg", kGen, kGen, kGen, kGen), MakeEntry(298, "semop", UnknownArguments()), MakeEntry(299, "semget", UnknownArguments()), MakeEntry(300, "semctl", UnknownArguments()), MakeEntry(301, "msgsnd", UnknownArguments()), MakeEntry(302, "msgrcv", UnknownArguments()), MakeEntry(303, "msgget", UnknownArguments()), MakeEntry(304, "msgctl", UnknownArguments()), MakeEntry(305, "shmat", UnknownArguments()), MakeEntry(306, "shmdt", UnknownArguments()), MakeEntry(307, "shmget", UnknownArguments()), MakeEntry(308, "shmctl", UnknownArguments()), MakeEntry(309, "add_key", kGen, kGen, kGen, kGen), MakeEntry(310, "request_key", kGen, kGen, kGen, kGen), MakeEntry(311, "keyctl", kGen, kGen, kGen, kGen), MakeEntry(312, "semtimedop", UnknownArguments()), MakeEntry(313, "vserver", kHex, kHex, kHex, kHex), MakeEntry(314, "ioprio_set", kGen, kGen, kGen, kGen), MakeEntry(315, "ioprio_get", kGen, kGen, kGen, kGen), MakeEntry(316, "inotify_init", kGen, kGen, kGen, kGen), MakeEntry(317, "inotify_add_watch", kGen, kGen, kGen, kGen), MakeEntry(318, "inotify_rm_watch", kGen, kGen, kGen, kGen), MakeEntry(319, "mbind", kGen, kGen, kGen, kGen), MakeEntry(320, "get_mempolicy", kGen, kGen, kGen, kGen), MakeEntry(321, "set_mempolicy", kGen, kGen, kGen, kGen), MakeEntry(322, "openat", kGen, kPath, kOct, kHex), MakeEntry(323, "mkdirat", kGen, kPath), MakeEntry(324, "mknodat", kGen, kPath), MakeEntry(325, "fchownat", kGen, kPath), MakeEntry(326, "futimesat", kGen, kPath), MakeEntry(327, "fstatat64", kHex, kHex, kHex, kHex), MakeEntry(328, "unlinkat", kGen, kPath), MakeEntry(329, "renameat", kGen, kPath, kGen, kPath), MakeEntry(330, "linkat", kGen, kPath, kGen, kPath), MakeEntry(331, "symlinkat", kPath, kGen, kPath), MakeEntry(332, "readlinkat", kGen, kPath), MakeEntry(333, "fchmodat", kGen, kPath), MakeEntry(334, "faccessat", kGen, kPath), MakeEntry(335, "pselect6", kGen, kGen, kGen, kGen), MakeEntry(336, "ppoll", kGen, kGen, kGen, kGen), MakeEntry(337, "unshare", kGen, kGen, kGen, kGen), MakeEntry(338, "set_robust_list", kGen, kGen), MakeEntry(339, "get_robust_list", kGen, kGen, kGen, kGen), MakeEntry(340, "splice", kGen, kGen, kGen, kGen), MakeEntry(342, "tee", kGen, kGen, kGen, kGen), MakeEntry(343, "vmsplice", kGen, kGen, kGen, kGen), MakeEntry(344, "move_pages", kGen, kGen, kGen, kGen), MakeEntry(345, "getcpu", kHex, kHex, kHex), MakeEntry(346, "epoll_pwait", kGen, kGen, kGen, kGen), MakeEntry(347, "kexec_load", kGen, kGen, kGen, kGen), MakeEntry(348, "utimensat", kGen, kGen, kGen, kGen), MakeEntry(349, "signalfd", kGen, kGen, kGen, kGen), MakeEntry(350, "timerfd_create", kGen, kGen, kGen, kGen), MakeEntry(351, "eventfd", kGen, kGen, kGen, kGen), MakeEntry(352, "fallocate", kGen, kGen, kGen, kGen), MakeEntry(353, "timerfd_settime", kGen, kGen, kGen, kGen), MakeEntry(354, "timerfd_gettime", kGen, kGen, kGen, kGen), MakeEntry(355, "signalfd4", kGen, kGen, kGen, kGen), MakeEntry(356, "eventfd2", kGen, kGen, kGen, kGen), MakeEntry(357, "epoll_create1", kGen, kGen, kGen, kGen), MakeEntry(358, "dup3", kGen, kGen, kGen), MakeEntry(359, "pipe2", kGen, kGen, kGen, kGen), MakeEntry(360, "inotify_init1", kGen, kGen, kGen, kGen), MakeEntry(361, "preadv", kGen, kGen, kGen, kGen), MakeEntry(362, "pwritev", kGen, kGen, kGen, kGen), MakeEntry(363, "rt_tgsigqueueinfo", kGen, kGen, kGen, kGen), MakeEntry(364, "perf_event_open", kGen, kGen, kGen, kGen), MakeEntry(365, "recvmmsg", kHex, kHex, kHex, kHex), MakeEntry(366, "accept4", kGen, kGen, kGen, kGen), MakeEntry(367, "fanotify_init", kHex, kHex, kHex, kHex), MakeEntry(368, "fanotify_mark", kHex, kHex, kHex, kHex), MakeEntry(369, "prlimit64", kHex, kHex, kHex, kHex), MakeEntry(370, "name_to_handle_at", kHex, kHex, kHex, kHex), MakeEntry(371, "open_by_handle_at", kHex, kHex, kHex, kHex), MakeEntry(372, "clock_adjtime", kHex, kHex, kHex, kHex), MakeEntry(373, "syncfs", kHex, kHex, kHex, kHex), MakeEntry(374, "sendmmsg", kHex, kHex, kHex, kHex), MakeEntry(375, "setns", kHex, kHex, kHex, kHex), MakeEntry(376, "process_vm_readv", kHex, kHex, kHex, kHex), MakeEntry(377, "process_vm_writev", kHex, kHex, kHex, kHex), MakeEntry(378, "kcmp", kHex, kHex, kHex, kHex), MakeEntry(379, "finit_module", kHex, kHex, kHex, kHex), MakeEntry(380, "sched_setattr", kGen, kGen, kGen, kGen), MakeEntry(381, "sched_getattr", kGen, kGen, kGen, kGen), MakeEntry(382, "renameat2", kGen, kPath, kGen, kPath), MakeEntry(383, "seccomp", kGen, kGen, kGen, kGen), MakeEntry(384, "getrandom", kGen, kGen, kGen, kGen), MakeEntry(385, "memfd_create", kGen, kGen, kGen, kGen), MakeEntry(386, "bpf", kHex, kHex, kHex, kHex), MakeEntry(387, "execveat", kHex, kHex, kHex, kHex), MakeEntry(388, "userfaultfd", kHex), MakeEntry(389, "membarrier", kHex, kHex), MakeEntry(390, "mlock2", kHex, kHex, kHex, kHex), MakeEntry(391, "copy_file_range", kHex, kHex, kHex, kHex), MakeEntry(392, "preadv2", kHex, kHex, kHex, kHex), MakeEntry(393, "pwritev2", kHex, kHex, kHex, kHex), MakeEntry(400, "migrate_pages", kGen, kGen, kGen, kGen), MakeEntry(401, "kexec_file_load", kGen, kGen, kGen, kGen), MakeEntry(0xf0001, "ARM_breakpoint", kHex, kHex, kHex, kHex), MakeEntry(0xf0002, "ARM_cacheflush", kHex, kHex, kHex, kHex), MakeEntry(0xf0003, "ARM_usr26", kHex, kHex, kHex, kHex), MakeEntry(0xf0004, "ARM_usr32", kHex, kHex, kHex, kHex), MakeEntry(0xf0005, "ARM_set_tls", kHex, kHex, kHex, kHex), // clang-format on }; static_assert(IsSorted(kSyscallDataArm32, SyscallTable::Entry::BySyscallNr), "Syscalls should be sorted"); } // namespace SyscallTable SyscallTable::get(sapi::cpu::Architecture arch) { switch (arch) { case sapi::cpu::kX8664: return SyscallTable(kSyscallDataX8664); case sapi::cpu::kX86: return SyscallTable(kSyscallDataX8632); case sapi::cpu::kPPC64LE: return SyscallTable(kSyscallDataPPC64LE); case sapi::cpu::kArm64: return SyscallTable(kSyscallDataArm64); case sapi::cpu::kArm: return SyscallTable(kSyscallDataArm32); default: return SyscallTable(); } } } // namespace sandbox2