1 #include "sandboxed_api/sandbox2/syscall_defs.h"
2
3 #include <arpa/inet.h>
4 #include <dirent.h>
5 #include <linux/netlink.h>
6 #include <netdb.h>
7 #include <netinet/in.h>
8 #include <pwd.h>
9 #include <poll.h> // ANDROID: changed from sys/poll.h
10 #include <sys/socket.h>
11 #include <sys/types.h>
12 #include <sys/un.h>
13
14 #include <array>
15 #include <cstdint>
16 #include <optional>
17 #include <string>
18 #include <vector>
19
20 #include "absl/algorithm/container.h"
21 #include "absl/status/status.h"
22 #include "absl/status/statusor.h"
23 #include "absl/strings/escaping.h"
24 #include "absl/strings/str_cat.h"
25 #include "absl/strings/str_format.h"
26 #include "absl/strings/string_view.h"
27 #include "absl/types/span.h"
28 #include "sandboxed_api/config.h"
29 #include "sandboxed_api/sandbox2/util.h"
30 #include "sandboxed_api/util/status_macros.h"
31
32 namespace sandbox2 {
33
34 namespace syscalls {
35
GetDescriptionImpl() const36 absl::StatusOr<std::string> syscalls::ArgData::GetDescriptionImpl() const {
37 std::string formatted;
38 switch (type_) {
39 case kPath: {
40 SAPI_ASSIGN_OR_RETURN(std::string str, ReadAsString());
41 formatted = absl::StrFormat("'%s'", absl::CHexEscape(str));
42 break;
43 }
44 case kString: {
45 SAPI_ASSIGN_OR_RETURN(std::string str, ReadAsString());
46 formatted = absl::StrFormat("\"%s\"", absl::CHexEscape(str));
47 break;
48 }
49 case kFlags:
50 formatted = absl::StrFormat("\\0%o", value_);
51 break;
52 case kSignal:
53 formatted = util::GetSignalName(value_);
54 break;
55 case kAddressFamily:
56 formatted = util::GetAddressFamily(value_);
57 break;
58 case kInt:
59 case kResource:
60 case kIpcResource:
61 case kPid:
62 case kGid:
63 case kUid:
64 case kLen0:
65 case kLen1:
66 case kLen2:
67 case kLen3:
68 case kLen4:
69 case kLen5:
70 formatted = absl::StrCat(value_);
71 break;
72 case kPollFdArray:
73 case kSockaddr:
74 case kGen:
75 case kStruct:
76 case kPtr:
77 case kArray:
78 case kSharedAddress:
79 case kGidArray:
80 break;
81 default:
82 return absl::InternalError("Unable to format invalid type");
83 }
84
85 if (formatted.empty()) {
86 return absl::StrFormat("%#x", value_);
87 }
88 return absl::StrFormat("%#x [%s]", value_, formatted);
89 }
90
GetDescription() const91 std::string ArgData::GetDescription() const {
92 return GetDescriptionImpl().value_or(
93 absl::StrFormat("%#x [unavailable]", value_));
94 }
95
96 } // namespace syscalls
97
GetName(int syscall) const98 absl::string_view SyscallTable::GetName(int syscall) const {
99 absl::StatusOr<SyscallTable::Entry> entry = GetEntry(syscall);
100 if (!entry.ok()) {
101 return "";
102 }
103 return entry->name;
104 }
105
106 namespace {
107
108 template <typename... ArgTypes>
MakeEntry(int nr,absl::string_view name,ArgTypes...arg_types)109 constexpr SyscallTable::Entry MakeEntry(int nr, absl::string_view name,
110 ArgTypes... arg_types) {
111 static_assert(sizeof...(arg_types) <= syscalls::kMaxArgs,
112 "Too many arguments for syscall");
113 return {nr, name, sizeof...(arg_types), {arg_types...}};
114 }
115
116 struct UnknownArguments {};
MakeEntry(int nr,absl::string_view name,UnknownArguments)117 constexpr SyscallTable::Entry MakeEntry(int nr, absl::string_view name,
118 UnknownArguments) {
119 return {nr,
120 name,
121 -1,
122 {syscalls::kGen, syscalls::kGen, syscalls::kGen, syscalls::kGen,
123 syscalls::kGen, syscalls::kGen}};
124 }
125
126 } // namespace
127
GetEntry(int syscall) const128 absl::StatusOr<SyscallTable::Entry> SyscallTable::GetEntry(int syscall) const {
129 auto it = absl::c_lower_bound(
130 data_, syscall, [](const SyscallTable::Entry& entry, int syscall) {
131 return entry.nr < syscall;
132 });
133 if (it == data_.end() || it->nr != syscall) {
134 return absl::NotFoundError(absl::StrCat("Syscall not found: ", syscall));
135 }
136 return *it;
137 }
138
GetEntry(absl::string_view name) const139 absl::StatusOr<SyscallTable::Entry> SyscallTable::GetEntry(
140 absl::string_view name) const {
141 // Note: There's no uniqueness guarantee of syscall names in the table, but
142 // other than typos it's likely safe to assume uniqueness.
143 auto filter = [name](const SyscallTable::Entry& entry) {
144 return entry.name == name;
145 };
146 auto it = absl::c_find_if(data_, filter);
147 if (it != data_.end()) {
148 return *it;
149 } else {
150 return absl::NotFoundError(absl::StrCat("Name not found: ", name));
151 }
152 }
153
154 constexpr SyscallTable::Entry kInvalidEntry =
155 MakeEntry(-1, "unknown_syscall", UnknownArguments());
156
GetArgumentsData(int syscall,const uint64_t values[],pid_t pid) const157 std::vector<syscalls::ArgData> SyscallTable::GetArgumentsData(
158 int syscall, const uint64_t values[], pid_t pid) const {
159 SyscallTable::Entry entry = GetEntry(syscall).value_or(kInvalidEntry);
160 // First do a length scan.
161 std::array<std::optional<uint64_t>, syscalls::kMaxArgs> lengths;
162 for (int i = 0; i < entry.GetNumArgs(); ++i) {
163 syscalls::ArgType type = entry.arg_types[i];
164 if (type == syscalls::kLen0) {
165 lengths[0] = values[i];
166 } else if (type == syscalls::kLen1) {
167 lengths[1] = values[i];
168 } else if (type == syscalls::kLen2) {
169 lengths[2] = values[i];
170 } else if (type == syscalls::kLen3) {
171 lengths[3] = values[i];
172 } else if (type == syscalls::kLen4) {
173 lengths[4] = values[i];
174 } else if (type == syscalls::kLen5) {
175 lengths[5] = values[i];
176 }
177 }
178
179 // Then get all verbose descriptions, passing the correct lengths where used.
180 std::vector<syscalls::ArgData> args;
181 for (int i = 0; i < entry.GetNumArgs(); ++i) {
182 const syscalls::ArgType type = entry.arg_types[i];
183 args.push_back(syscalls::ArgData(type, pid, values[i], lengths[i]));
184 }
185
186 return args;
187 }
188
GetArgumentsDescription(int syscall,const uint64_t values[],pid_t pid) const189 std::vector<std::string> SyscallTable::GetArgumentsDescription(
190 int syscall, const uint64_t values[], pid_t pid) const {
191 std::vector<std::string> descriptions;
192 for (const syscalls::ArgData& arg : GetArgumentsData(syscall, values, pid)) {
193 descriptions.push_back(arg.GetDescription());
194 }
195 return descriptions;
196 }
197
198 namespace syscalls {
199 namespace {
200
201 // TODO(C++20) Use std::is_sorted
202 template <typename Container, typename Compare>
IsSorted(const Container & container,Compare comp)203 constexpr bool IsSorted(const Container& container, Compare comp) {
204 auto it = std::begin(container);
205 if (it == std::end(container)) {
206 return true;
207 }
208 auto last = it;
209 for (++it; it != std::end(container); ++it) {
210 if (!comp(*last, *it)) {
211 return false;
212 }
213 last = it;
214 }
215 return true;
216 }
217
218 // Syscall description table for Linux x86_64
219 constexpr std::array kSyscallDataX8664 = {
220 // clang-format off
221
222 MakeEntry(0, "read", kResource, kArray, kLen1),
223 MakeEntry(1, "write", kResource, kArray, kLen1),
224 MakeEntry(2, "open", kPath, kFlags, kFlags),
225 MakeEntry(3, "close", kResource),
226 MakeEntry(4, "stat", kPath, kPtr),
227 MakeEntry(5, "fstat", kResource, kPtr),
228 MakeEntry(6, "lstat", kPath, kPtr),
229 MakeEntry(7, "poll", kPollFdArray, kLen0, kInt),
230 MakeEntry(8, "lseek", kResource, kInt, kFlags),
231 MakeEntry(9, "mmap", kPtr, kLen0, kFlags, kFlags, kResource, kInt),
232 MakeEntry(10, "mprotect", kPtr, kLen0, kFlags),
233 MakeEntry(11, "munmap", kPtr, kLen0),
234 MakeEntry(12, "brk", kInt),
235 MakeEntry(13, "rt_sigaction", kSignal, kPtr, kPtr, kLen4, kPtr),
236 MakeEntry(14, "rt_sigprocmask", kFlags, kPtr, kPtr, kLen1),
237 MakeEntry(15, "rt_sigreturn"),
238 MakeEntry(16, "ioctl", kResource, kInt, kArray),
239 MakeEntry(17, "pread64", kResource, kArray, kLen1, kInt),
240 MakeEntry(18, "pwrite64", kResource, kArray, kLen1, kInt),
241 MakeEntry(19, "readv", kResource, kArray, kLen1),
242 MakeEntry(20, "writev", kResource, kArray, kLen1),
243 MakeEntry(21, "access", kPath, kFlags),
244 MakeEntry(22, "pipe", kPtr),
245 MakeEntry(23, "select", kLen1, kPtr, kPtr, kPtr, kPtr),
246 MakeEntry(24, "sched_yield"),
247 MakeEntry(25, "mremap", kPtr, kLen0, kLen4, kFlags, kPtr),
248 MakeEntry(26, "msync", kPtr, kLen0, kFlags),
249 MakeEntry(27, "mincore", kPtr, kLen0, kArray),
250 MakeEntry(28, "madvise", kPtr, kLen0, kFlags),
251 MakeEntry(29, "shmget", kInt, kLen3, kFlags, kPtr),
252 MakeEntry(30, "shmat", kIpcResource, kPtr, kFlags),
253 MakeEntry(31, "shmctl", kIpcResource, kInt, kArray),
254 MakeEntry(32, "dup", kResource),
255 MakeEntry(33, "dup2", kResource, kResource),
256 MakeEntry(34, "pause"),
257 MakeEntry(35, "nanosleep", kPtr, kPtr),
258 MakeEntry(36, "getitimer", kFlags, kPtr),
259 MakeEntry(37, "alarm", kInt),
260 MakeEntry(38, "setitimer", kFlags, kPtr, kPtr),
261 MakeEntry(39, "getpid"),
262 MakeEntry(40, "sendfile", kResource, kResource, kPtr, kInt),
263 MakeEntry(41, "socket", kFlags, kFlags, kInt),
264 MakeEntry(42, "connect", kResource, kSockaddr, kLen1),
265 MakeEntry(43, "accept", kResource, kPtr, kPtr),
266 MakeEntry(44, "sendto", kResource, kArray, kLen1, kFlags, kSockaddr, kLen4),
267 MakeEntry(45, "recvfrom", kResource, kArray, kLen1, kFlags, kSockaddr,
268 kLen4),
269 MakeEntry(46, "sendmsg", kResource, kPtr, kFlags),
270 MakeEntry(47, "recvmsg", kResource, kPtr, kFlags),
271 MakeEntry(48, "shutdown", kResource, kFlags),
272 MakeEntry(49, "bind", kResource, kSockaddr, kLen1),
273 MakeEntry(50, "listen", kResource, kInt),
274 MakeEntry(51, "getsockname", kResource, kPtr, kPtr),
275 MakeEntry(52, "getpeername", kResource, kPtr, kPtr),
276 MakeEntry(53, "socketpair", kFlags, kFlags, kInt, kPtr),
277 MakeEntry(54, "setsockopt", kResource, kInt, kInt, kArray, kLen3),
278 MakeEntry(55, "getsockopt", kResource, kInt, kInt, kArray, kPtr),
279 MakeEntry(56, "clone", kFlags, kArray, kPtr, kPtr, kArray),
280 MakeEntry(57, "fork"),
281 MakeEntry(58, "vfork"),
282 MakeEntry(59, "execve", kPath, kArray, kArray),
283 MakeEntry(60, "exit", kInt),
284 MakeEntry(61, "wait4", kPid, kPtr, kFlags, kPtr),
285 MakeEntry(62, "kill", kPid, kSignal),
286 MakeEntry(63, "uname", kArray),
287 MakeEntry(64, "semget", kIpcResource, kFlags, kFlags),
288 MakeEntry(65, "semop", kIpcResource, kArray, kLen1),
289 MakeEntry(66, "semctl", kIpcResource, kFlags, kInt, kArray),
290 MakeEntry(67, "shmdt", kSharedAddress),
291 MakeEntry(68, "msgget", kIpcResource, kFlags),
292 MakeEntry(69, "msgsnd", kIpcResource, kPtr, kLen1, kFlags),
293 MakeEntry(70, "msgrcv", kIpcResource, kPtr, kLen1, kFlags, kFlags),
294 MakeEntry(71, "msgctl", kIpcResource, kInt, kArray),
295 MakeEntry(72, "fcntl", kResource, kFlags, kResource),
296 MakeEntry(73, "flock", kResource, kFlags),
297 MakeEntry(74, "fsync", kResource),
298 MakeEntry(75, "fdatasync", kResource),
299 MakeEntry(76, "truncate", kPath, kInt),
300 MakeEntry(77, "ftruncate", kResource, kInt),
301 MakeEntry(78, "getdents", kResource, kArray, kLen1),
302 MakeEntry(79, "getcwd", kArray, kLen0),
303 MakeEntry(80, "chdir", kPath),
304 MakeEntry(81, "fchdir", kResource),
305 MakeEntry(82, "rename", kPath, kPath),
306 MakeEntry(83, "mkdir", kPath, kFlags),
307 MakeEntry(84, "rmdir", kPath),
308 MakeEntry(85, "creat", kPath, kFlags),
309 MakeEntry(86, "link", kPath, kPath),
310 MakeEntry(87, "unlink", kPath),
311 MakeEntry(88, "symlink", kPath, kPath),
312 MakeEntry(89, "readlink", kPath, kArray, kLen1),
313 MakeEntry(90, "chmod", kPath, kFlags),
314 MakeEntry(91, "fchmod", kResource, kFlags),
315 MakeEntry(92, "chown", kPath, kUid, kGid),
316 MakeEntry(93, "fchown", kResource, kUid, kGid),
317 MakeEntry(94, "lchown", kPath, kUid, kGid),
318 MakeEntry(95, "umask", kFlags),
319 MakeEntry(96, "gettimeofday", kPtr, kPtr),
320 MakeEntry(97, "getrlimit", kFlags, kPtr),
321 MakeEntry(98, "getrusage", kFlags, kPtr),
322 MakeEntry(99, "sysinfo", kArray),
323 MakeEntry(100, "times", kPtr),
324 MakeEntry(101, "ptrace", kFlags, kPid),
325 MakeEntry(102, "getuid"),
326 MakeEntry(103, "syslog", kFlags, kArray, kLen1),
327 MakeEntry(104, "getgid"),
328 MakeEntry(105, "setuid", kUid),
329 MakeEntry(106, "setgid", kGid),
330 MakeEntry(107, "geteuid"),
331 MakeEntry(108, "getegid"),
332 MakeEntry(109, "setpgid", kPid, kPid),
333 MakeEntry(110, "getppid"),
334 MakeEntry(111, "getpgrp", kPid),
335 MakeEntry(112, "setsid"),
336 MakeEntry(113, "setreuid", kUid, kUid),
337 MakeEntry(114, "setregid", kGid, kGid),
338 MakeEntry(115, "getgroups", kLen1, kGidArray),
339 MakeEntry(116, "setgroups", kLen1, kGidArray),
340 MakeEntry(117, "setresuid", kUid, kUid, kUid),
341 MakeEntry(118, "getresuid", kPtr, kPtr, kPtr),
342 MakeEntry(119, "setresgid", kGid, kGid, kGid),
343 MakeEntry(120, "getresgid", kPtr, kPtr, kPtr),
344 MakeEntry(121, "getpgid", kPid),
345 MakeEntry(122, "setfsuid", kUid),
346 MakeEntry(123, "setfsgid", kGid),
347 MakeEntry(124, "getsid", kPid),
348 MakeEntry(125, "capget", kPtr, kPtr),
349 MakeEntry(126, "capset", kPtr, kPtr),
350 MakeEntry(127, "rt_sigpending", kPtr, kLen0),
351 MakeEntry(128, "rt_sigtimedwait", kPtr, kPtr, kPtr, kLen0),
352 MakeEntry(129, "rt_sigqueueinfo", kPid, kSignal, kPtr),
353 MakeEntry(130, "rt_sigsuspend", kPtr, kLen0),
354 MakeEntry(131, "sigaltstack", kPtr, kPtr),
355 MakeEntry(132, "utime", kPath, kPtr),
356 MakeEntry(133, "mknod", kPath, kFlags, kInt),
357 MakeEntry(134, "uselib", kPath),
358 MakeEntry(135, "personality", kFlags),
359 MakeEntry(136, "ustat", kInt, kPtr),
360 MakeEntry(137, "statfs", kPath, kArray),
361 MakeEntry(138, "fstatfs", kResource, kArray),
362 MakeEntry(139, "sysfs", kInt, kString),
363 MakeEntry(140, "getpriority", kFlags, kPid),
364 MakeEntry(141, "setpriority", kFlags, kPid, kInt),
365 MakeEntry(142, "sched_setparam", kPid, kPtr),
366 MakeEntry(143, "sched_getparam", kPid, kPtr),
367 MakeEntry(144, "sched_setscheduler", kPid, kFlags, kPtr),
368 MakeEntry(145, "sched_getscheduler", kPid),
369 MakeEntry(146, "sched_get_priority_max", kInt),
370 MakeEntry(147, "sched_get_priority_min", kInt),
371 MakeEntry(148, "sched_rr_get_interval", kPid, kPtr),
372 MakeEntry(149, "mlock", kPtr, kLen0),
373 MakeEntry(150, "munlock", kPtr, kLen0),
374 MakeEntry(151, "mlockall", kFlags),
375 MakeEntry(152, "munlockall"),
376 MakeEntry(153, "vhangup"),
377 MakeEntry(154, "modify_ldt", kInt, kPtr, kLen1),
378 MakeEntry(155, "pivot_root", kPath, kPath),
379 MakeEntry(156, "_sysctl", kPtr),
380 MakeEntry(157, "prctl", kInt, kInt, kInt, kInt, kInt),
381 MakeEntry(158, "arch_prctl", kInt, kInt),
382 MakeEntry(159, "adjtimex", kArray),
383 MakeEntry(160, "setrlimit", kFlags, kPtr),
384 MakeEntry(161, "chroot", kPath),
385 MakeEntry(162, "sync"),
386 MakeEntry(163, "acct", kPath),
387 MakeEntry(164, "settimeofday", kPtr, kPtr),
388 MakeEntry(165, "mount", kPtr, kPath, kString, kFlags, kString),
389 MakeEntry(166, "umount2", kPath, kFlags),
390 MakeEntry(167, "swapon", kPath, kFlags),
391 MakeEntry(168, "swapoff", kPath),
392 MakeEntry(169, "reboot", kInt, kInt, kInt, kPtr),
393 MakeEntry(170, "sethostname", kString, kLen0),
394 MakeEntry(171, "setdomainname", kString, kLen0),
395 MakeEntry(172, "iopl", kInt),
396 MakeEntry(173, "ioperm", kInt, kInt, kInt),
397 MakeEntry(174, "create_module", kString, kInt),
398 MakeEntry(175, "init_module", kString, kLen0, kString),
399 MakeEntry(176, "delete_module", kString, kFlags),
400 MakeEntry(177, "get_kernel_syms", kInt),
401 MakeEntry(178, "query_module", kString, kInt, kGen, kInt, kGen),
402 MakeEntry(179, "quotactl", kInt, kPath, kInt, kGen),
403 MakeEntry(180, "nfsservctl", kInt, kPtr, kPtr),
404 MakeEntry(181, "getpmsg", UnknownArguments()),
405 MakeEntry(182, "putpmsg", UnknownArguments()),
406 MakeEntry(183, "afs_syscall", UnknownArguments()),
407 MakeEntry(184, "tuxcall", UnknownArguments()),
408 MakeEntry(185, "security", UnknownArguments()),
409 MakeEntry(186, "gettid"),
410 MakeEntry(187, "readahead", kResource, kInt, kInt),
411 MakeEntry(188, "setxattr", kPath, kPtr, kString, kLen2, kFlags),
412 MakeEntry(189, "lsetxattr", kPath, kPtr, kString, kLen2, kFlags),
413 MakeEntry(190, "fsetxattr", kResource, kPtr, kString, kLen2, kFlags),
414 MakeEntry(191, "getxattr", kPath, kPtr, kArray, kLen2),
415 MakeEntry(192, "lgetxattr", kPath, kPtr, kArray, kLen2),
416 MakeEntry(193, "fgetxattr", kResource, kPtr, kArray, kLen2),
417 MakeEntry(194, "listxattr", kPath, kArray, kLen1),
418 MakeEntry(195, "llistxattr", kPath, kArray, kLen1),
419 MakeEntry(196, "flistxattr", kResource, kArray, kLen1),
420 MakeEntry(197, "removexattr", kPath, kPtr),
421 MakeEntry(198, "lremovexattr", kPath, kPtr),
422 MakeEntry(199, "fremovexattr", kResource, kPtr),
423 MakeEntry(200, "tkill", kPid, kSignal),
424 MakeEntry(201, "time", kPtr),
425 MakeEntry(202, "futex", kPtr, kFlags, kInt, kPtr, kPtr, kInt),
426 MakeEntry(203, "sched_setaffinity", kPid, kLen2, kPtr),
427 MakeEntry(204, "sched_getaffinity", kPid, kLen2, kPtr),
428 MakeEntry(205, "set_thread_area", kPtr),
429 MakeEntry(206, "io_setup", kInt, kPtr),
430 MakeEntry(207, "io_destroy", kStruct),
431 MakeEntry(208, "io_getevents", kStruct, kInt, kLen3, kArray, kPtr),
432 MakeEntry(209, "io_submit", kStruct, kLen2, kArray),
433 MakeEntry(210, "io_cancel", kStruct, kPtr, kPtr),
434 MakeEntry(211, "get_thread_area", kPtr),
435 MakeEntry(212, "lookup_dcookie", kInt, kArray, kLen1),
436 MakeEntry(213, "epoll_create", kInt),
437 MakeEntry(214, "epoll_ctl_old", UnknownArguments()),
438 MakeEntry(215, "epoll_wait_old", UnknownArguments()),
439 MakeEntry(216, "remap_file_pages", kPtr, kLen0, kFlags, kInt, kFlags),
440 MakeEntry(217, "getdents64", kResource, kArray, kLen1),
441 MakeEntry(218, "set_tid_address", kPtr),
442 MakeEntry(219, "restart_syscall"),
443 MakeEntry(220, "semtimedop", kIpcResource, kArray, kLen1, kPtr),
444 MakeEntry(221, "fadvise64", kResource, kInt, kInt, kFlags),
445 MakeEntry(222, "timer_create", kFlags, kPtr, kPtr),
446 MakeEntry(223, "timer_settime", kStruct, kFlags, kPtr, kPtr),
447 MakeEntry(224, "timer_gettime", kStruct, kPtr),
448 MakeEntry(225, "timer_getoverrun", kStruct),
449 MakeEntry(226, "timer_delete", kStruct),
450 MakeEntry(227, "clock_settime", kFlags, kPtr),
451 MakeEntry(228, "clock_gettime", kFlags, kPtr),
452 MakeEntry(229, "clock_getres", kFlags, kPtr),
453 MakeEntry(230, "clock_nanosleep", kFlags, kFlags, kPtr, kPtr),
454 MakeEntry(231, "exit_group", kInt),
455 MakeEntry(232, "epoll_wait", kResource, kArray, kLen1, kInt),
456 MakeEntry(233, "epoll_ctl", kResource, kInt, kResource, kPtr),
457 MakeEntry(234, "tgkill", kPid, kPid, kSignal),
458 MakeEntry(235, "utimes", kPath, kPtr),
459 MakeEntry(236, "vserver", UnknownArguments()),
460 MakeEntry(237, "mbind", kPtr, kLen0, kFlags, kPtr, kInt, kFlags),
461 MakeEntry(238, "set_mempolicy", kFlags, kPtr, kInt),
462 MakeEntry(239, "get_mempolicy", kPtr, kPtr, kInt, kPtr, kFlags),
463 MakeEntry(240, "mq_open", kString, kFlags, kFlags, kPtr),
464 MakeEntry(241, "mq_unlink", kString),
465 MakeEntry(242, "mq_timedsend", kResource, kArray, kLen1, kInt, kPtr),
466 MakeEntry(243, "mq_timedreceive", kResource, kArray, kLen1, kInt, kPtr),
467 MakeEntry(244, "mq_notify", kResource, kPtr),
468 MakeEntry(245, "mq_getsetattr", kResource, kPtr, kPtr),
469 MakeEntry(246, "kexec_load", kInt, kLen2, kArray, kFlags),
470 MakeEntry(247, "waitid", kFlags, kPid, kPtr, kFlags, kPtr),
471 MakeEntry(248, "add_key", kString, kPtr, kArray, kLen2, kStruct),
472 MakeEntry(249, "request_key", kString, kPtr, kString, kStruct),
473 MakeEntry(250, "keyctl", kInt, kInt, kInt, kInt, kInt),
474 MakeEntry(251, "ioprio_set", kFlags, kPid, kFlags),
475 MakeEntry(252, "ioprio_get", kFlags, kUid),
476 MakeEntry(253, "inotify_init"),
477 MakeEntry(254, "inotify_add_watch", kResource, kPath, kFlags),
478 MakeEntry(255, "inotify_rm_watch", kResource, kResource),
479 MakeEntry(256, "migrate_pages", kPid, kInt, kPtr, kPtr),
480 MakeEntry(257, "openat", kResource, kPath, kFlags, kFlags),
481 MakeEntry(258, "mkdirat", kResource, kPath, kFlags),
482 MakeEntry(259, "mknodat", kResource, kPath, kFlags, kInt),
483 MakeEntry(260, "fchownat", kResource, kPath, kUid, kGid, kFlags),
484 MakeEntry(261, "futimesat", kResource, kPath, kPtr),
485 MakeEntry(262, "newfstatat", kInt, kPath, kPtr, kFlags),
486 MakeEntry(263, "unlinkat", kResource, kPath, kFlags),
487 MakeEntry(264, "renameat", kResource, kPath, kResource, kPath),
488 MakeEntry(265, "linkat", kResource, kPath, kResource, kPath, kFlags),
489 MakeEntry(266, "symlinkat", kPath, kResource, kPath),
490 MakeEntry(267, "readlinkat", kResource, kPath, kArray, kLen2),
491 MakeEntry(268, "fchmodat", kResource, kPath, kFlags),
492 MakeEntry(269, "faccessat", kResource, kPath, kFlags),
493 MakeEntry(270, "pselect6", kLen1, kPtr, kPtr, kPtr, kPtr, kPtr),
494 MakeEntry(271, "ppoll", kPollFdArray, kLen0, kPtr, kPtr, kLen3),
495 MakeEntry(272, "unshare", kFlags),
496 MakeEntry(273, "set_robust_list", kPtr, kLen0),
497 MakeEntry(274, "get_robust_list", kPid, kPtr, kPtr),
498 MakeEntry(275, "splice", kResource, kPtr, kResource, kPtr, kInt, kFlags),
499 MakeEntry(276, "tee", kResource, kResource, kInt, kFlags),
500 MakeEntry(277, "sync_file_range", kResource, kInt, kInt, kFlags),
501 MakeEntry(278, "vmsplice", kResource, kArray, kLen1, kFlags),
502 MakeEntry(279, "move_pages", kPid, kLen2, kArray, kArray, kArray, kFlags),
503 MakeEntry(280, "utimensat", kResource, kPath, kPtr, kFlags),
504 MakeEntry(281, "epoll_pwait", kResource, kArray, kLen1, kInt, kPtr, kLen4),
505 MakeEntry(282, "signalfd", kResource, kPtr, kLen1),
506 MakeEntry(283, "timerfd_create", kFlags, kFlags),
507 MakeEntry(284, "eventfd", kInt),
508 MakeEntry(285, "fallocate", kResource, kFlags, kInt, kInt),
509 MakeEntry(286, "timerfd_settime", kResource, kFlags, kPtr, kPtr),
510 MakeEntry(287, "timerfd_gettime", kResource, kPtr),
511 MakeEntry(288, "accept4", kResource, kPtr, kPtr, kFlags),
512 MakeEntry(289, "signalfd4", kResource, kPtr, kLen1, kFlags),
513 MakeEntry(290, "eventfd2", kInt, kFlags),
514 MakeEntry(291, "epoll_create1", kFlags),
515 MakeEntry(292, "dup3", kResource, kResource, kFlags),
516 MakeEntry(293, "pipe2", kPtr, kFlags),
517 MakeEntry(294, "inotify_init1", kFlags),
518 MakeEntry(295, "preadv", kResource, kArray, kLen1, kInt, kInt),
519 MakeEntry(296, "pwritev", kResource, kArray, kLen1, kInt, kInt),
520 MakeEntry(297, "rt_tgsigqueueinfo", kPid, kPid, kSignal, kPtr),
521 MakeEntry(298, "perf_event_open", kPtr, kPid, kInt, kResource, kFlags),
522 MakeEntry(299, "recvmmsg", kResource, kArray, kLen1, kFlags, kPtr),
523 MakeEntry(300, "fanotify_init", kFlags, kFlags),
524 MakeEntry(301, "fanotify_mark", kResource, kFlags, kFlags, kResource,
525 kPath),
526 MakeEntry(302, "prlimit64", kPid, kFlags, kPtr, kPtr),
527 MakeEntry(303, "name_to_handle_at", kResource, kPath, kPtr, kPtr, kFlags),
528 MakeEntry(304, "open_by_handle_at", kResource, kPtr, kFlags),
529 MakeEntry(305, "clock_adjtime", kFlags, kPtr),
530 MakeEntry(306, "syncfs", kResource),
531 MakeEntry(307, "sendmmsg", kResource, kArray, kLen1, kFlags),
532 MakeEntry(308, "setns", kResource, kFlags),
533 MakeEntry(309, "getcpu", kPtr, kPtr),
534 MakeEntry(310, "process_vm_readv", kPid, kArray, kLen1, kArray, kLen3,
535 kInt),
536 MakeEntry(311, "process_vm_writev", kPid, kArray, kLen1, kArray, kLen3,
537 kInt),
538 MakeEntry(312, "kcmp", kPid, kPid, kFlags, kResource, kResource),
539 MakeEntry(313, "finit_module", kResource, kString, kFlags),
540 MakeEntry(314, "sched_setattr", kPid, kPtr, kInt),
541 MakeEntry(315, "sched_getattr", kPid, kPtr, kLen1, kInt),
542 MakeEntry(316, "renameat2", kResource, kPath, kResource, kPath, kFlags),
543 MakeEntry(317, "seccomp", kInt, kFlags, kPtr),
544 MakeEntry(318, "getrandom", kArray, kLen0, kFlags),
545 MakeEntry(319, "memfd_create", kString, kFlags),
546 MakeEntry(320, "kexec_file_load", kInt, kInt, kInt, kString, kInt),
547 MakeEntry(321, "bpf", kInt, kPtr, kLen1),
548 MakeEntry(322, "execveat", kResource, kPath, kArray, kArray, kFlags),
549 MakeEntry(323, "userfaultfd", kFlags),
550 MakeEntry(324, "membarrier", kFlags, kInt),
551 MakeEntry(325, "mlock2", kPtr, kLen0, kFlags),
552 MakeEntry(326, "copy_file_range", kResource, kPtr, kResource, kPtr, kInt,
553 kFlags),
554 MakeEntry(327, "preadv2", kResource, kArray, kLen1, kInt, kInt, kFlags),
555 MakeEntry(328, "pwritev2", kResource, kArray, kLen1, kInt, kInt, kFlags),
556 MakeEntry(329, "pkey_mprotect", kPtr, kLen0, kFlags, kInt),
557 MakeEntry(330, "pkey_alloc", kInt, kFlags),
558 MakeEntry(331, "pkey_free", kInt),
559 MakeEntry(332, "statx", kResource, kPath, kFlags, kFlags, kPtr),
560 MakeEntry(333, "io_pgetevents", kStruct, kInt, kLen3, kArray, kPtr, kPtr),
561 MakeEntry(334, "rseq", kPtr, kLen0, kFlags, kInt),
562 MakeEntry(435, "clone3", kPtr, kLen0),
563 MakeEntry(436, "close_range", kInt, kInt, kInt),
564 MakeEntry(437, "openat2", kInt, kPath, kInt, kInt),
565 MakeEntry(438, "pidfd_getfd", UnknownArguments()),
566 MakeEntry(439, "faccessat2", kInt, kPath, kInt, kInt),
567 MakeEntry(440, "process_madvise", UnknownArguments()),
568 MakeEntry(441, "epoll_pwait2", kResource, kArray, kLen1, kPtr, kPtr, kLen4),
569 MakeEntry(442, "mount_setattr", UnknownArguments()),
570 MakeEntry(443, "quotactl_fd", UnknownArguments()),
571 MakeEntry(444, "landlock_create_ruleset", UnknownArguments()),
572 MakeEntry(445, "landlock_add_rule", UnknownArguments()),
573 MakeEntry(446, "landlock_restrict_self", UnknownArguments()),
574 MakeEntry(447, "memfd_secret", UnknownArguments()),
575 MakeEntry(448, "process_mrelease", UnknownArguments()),
576 MakeEntry(449, "futex_waitv", UnknownArguments()),
577 MakeEntry(450, "set_mempolicy_home_node", UnknownArguments()),
578 MakeEntry(451, "cachestat", UnknownArguments()),
579 MakeEntry(452, "fchmodat2", kInt, kPath, kInt, kInt),
580 MakeEntry(453, "map_shadow_stack", UnknownArguments()),
581 MakeEntry(454, "futex_wake", UnknownArguments()),
582 MakeEntry(455, "futex_wait", UnknownArguments()),
583 MakeEntry(456, "futex_requeue", UnknownArguments()),
584 MakeEntry(457, "statmount", UnknownArguments()),
585 MakeEntry(458, "listmount", UnknownArguments()),
586 MakeEntry(459, "lsm_get_self_attr", UnknownArguments()),
587 MakeEntry(460, "lsm_set_self_attr", UnknownArguments()),
588 MakeEntry(461, "lsm_list_modules", UnknownArguments()),
589 // clang-format on
590 };
591
592 static_assert(IsSorted(kSyscallDataX8664, SyscallTable::Entry::BySyscallNr),
593 "Syscalls should be sorted");
594
595 constexpr std::array kSyscallDataX8632 = {
596 // clang-format off
597 MakeEntry(0, "restart_syscall"),
598 MakeEntry(1, "exit", kInt),
599 MakeEntry(2, "fork"),
600 MakeEntry(3, "read", kResource, kArray, kLen1),
601 MakeEntry(4, "write", kResource, kArray, kLen1),
602 MakeEntry(5, "open", kPath, kFlags, kFlags),
603 MakeEntry(6, "close", kResource),
604 MakeEntry(7, "waitpid", kInt, kInt, kInt),
605 MakeEntry(8, "creat", kPath, kFlags),
606 MakeEntry(9, "link", kPath, kPath),
607 MakeEntry(10, "unlink", kPath),
608 MakeEntry(11, "execve", kPath, kArray, kArray),
609 MakeEntry(12, "chdir", kPath),
610 MakeEntry(13, "time", kPtr),
611 MakeEntry(14, "mknod", kPath, kFlags, kInt),
612 MakeEntry(15, "chmod", kPath, kFlags),
613 MakeEntry(16, "lchown", kPath, kUid, kGid),
614 MakeEntry(17, "break", UnknownArguments()),
615 MakeEntry(18, "oldstat", UnknownArguments()),
616 MakeEntry(19, "lseek", kResource, kInt, kFlags),
617 MakeEntry(20, "getpid"),
618 MakeEntry(21, "mount", kPtr, kPath, kString, kFlags, kString),
619 MakeEntry(22, "umount", UnknownArguments()),
620 MakeEntry(23, "setuid", kUid),
621 MakeEntry(24, "getuid"),
622 MakeEntry(25, "stime", UnknownArguments()),
623 MakeEntry(26, "ptrace", kFlags, kPid),
624 MakeEntry(27, "alarm", kInt),
625 MakeEntry(28, "oldfstat", UnknownArguments()),
626 MakeEntry(29, "pause"),
627 MakeEntry(30, "utime", kPath, kPtr),
628 MakeEntry(31, "stty", UnknownArguments()),
629 MakeEntry(32, "gtty", UnknownArguments()),
630 MakeEntry(33, "access", kPath, kInt),
631 MakeEntry(34, "nice", UnknownArguments()),
632 MakeEntry(35, "ftime", UnknownArguments()),
633 MakeEntry(36, "sync"),
634 MakeEntry(37, "kill", kPid, kSignal),
635 MakeEntry(38, "rename", kPath, kPath),
636 MakeEntry(39, "mkdir", kPath, kFlags),
637 MakeEntry(40, "rmdir", kPath),
638 MakeEntry(41, "dup", kResource),
639 MakeEntry(42, "pipe", kPtr),
640 MakeEntry(43, "times", kPtr),
641 MakeEntry(44, "prof", UnknownArguments()),
642 MakeEntry(45, "brk", kInt),
643 MakeEntry(46, "setgid", kGid),
644 MakeEntry(47, "getgid"),
645 MakeEntry(48, "signal", UnknownArguments()),
646 MakeEntry(49, "geteuid"),
647 MakeEntry(50, "getegid"),
648 MakeEntry(51, "acct", kPath),
649 MakeEntry(52, "umount2", kPath, kFlags),
650 MakeEntry(53, "lock", UnknownArguments()),
651 MakeEntry(54, "ioctl", kResource, kInt, kArray),
652 MakeEntry(55, "fcntl", kResource, kFlags, kResource),
653 MakeEntry(56, "mpx", UnknownArguments()),
654 MakeEntry(57, "setpgid", kPid, kPid),
655 MakeEntry(58, "ulimit", UnknownArguments()),
656 MakeEntry(59, "oldolduname", UnknownArguments()),
657 MakeEntry(60, "umask", kFlags),
658 MakeEntry(61, "chroot", kPath),
659 MakeEntry(62, "ustat", kInt, kPtr),
660 MakeEntry(63, "dup2", kResource, kResource),
661 MakeEntry(64, "getppid"),
662 MakeEntry(65, "getpgrp", kPid),
663 MakeEntry(66, "setsid"),
664 MakeEntry(67, "sigaction", UnknownArguments()),
665 MakeEntry(68, "sgetmask", UnknownArguments()),
666 MakeEntry(69, "ssetmask", UnknownArguments()),
667 MakeEntry(70, "setreuid", kUid, kUid),
668 MakeEntry(71, "setregid", kGid, kGid),
669 MakeEntry(72, "sigsuspend", UnknownArguments()),
670 MakeEntry(73, "sigpending", UnknownArguments()),
671 MakeEntry(74, "sethostname", kString, kLen0),
672 MakeEntry(75, "setrlimit", kFlags, kPtr),
673 MakeEntry(76, "getrlimit", kFlags, kPtr),
674 MakeEntry(77, "getrusage", kFlags, kPtr),
675 MakeEntry(78, "gettimeofday", kPtr, kPtr),
676 MakeEntry(79, "settimeofday", kPtr, kPtr),
677 MakeEntry(80, "getgroups", kLen1, kGidArray),
678 MakeEntry(81, "setgroups", kLen1, kGidArray),
679 MakeEntry(82, "select", kLen1, kPtr, kPtr, kPtr, kPtr),
680 MakeEntry(83, "symlink", kPath, kPath),
681 MakeEntry(84, "oldlstat", UnknownArguments()),
682 MakeEntry(85, "readlink", kPath, kArray, kLen1),
683 MakeEntry(86, "uselib", kPath),
684 MakeEntry(87, "swapon", kPath, kFlags),
685 MakeEntry(88, "reboot", kInt, kInt, kInt, kPtr),
686 MakeEntry(89, "readdir", UnknownArguments()),
687 MakeEntry(90, "mmap", kPtr, kLen0, kFlags, kFlags, kResource, kInt),
688 MakeEntry(91, "munmap", kPtr, kLen0),
689 MakeEntry(92, "truncate", kPath, kInt),
690 MakeEntry(93, "ftruncate", kResource, kInt),
691 MakeEntry(94, "fchmod", kResource, kFlags),
692 MakeEntry(95, "fchown", kResource, kUid, kGid),
693 MakeEntry(96, "getpriority", kFlags, kPid),
694 MakeEntry(97, "setpriority", kFlags, kPid, kInt),
695 MakeEntry(98, "profil", UnknownArguments()),
696 MakeEntry(99, "statfs", kPath, kArray),
697 MakeEntry(100, "fstatfs", kResource, kArray),
698 MakeEntry(101, "ioperm", kInt, kInt, kInt),
699 MakeEntry(102, "socketcall", UnknownArguments()),
700 MakeEntry(103, "syslog", kFlags, kArray, kLen1),
701 MakeEntry(104, "setitimer", kFlags, kPtr, kPtr),
702 MakeEntry(105, "getitimer", kFlags, kPtr),
703 MakeEntry(106, "stat", kPath, kPtr),
704 MakeEntry(107, "lstat", kPath, kPtr),
705 MakeEntry(108, "fstat", kResource, kPtr),
706 MakeEntry(109, "olduname", UnknownArguments()),
707 MakeEntry(110, "iopl", kInt),
708 MakeEntry(111, "vhangup"),
709 MakeEntry(112, "idle", UnknownArguments()),
710 MakeEntry(113, "vm86old", UnknownArguments()),
711 MakeEntry(114, "wait4", kPid, kPtr, kFlags, kPtr),
712 MakeEntry(115, "swapoff", kPath),
713 MakeEntry(116, "sysinfo", kArray),
714 MakeEntry(117, "ipc", UnknownArguments()),
715 MakeEntry(118, "fsync", kResource),
716 MakeEntry(119, "sigreturn", UnknownArguments()),
717 MakeEntry(120, "clone", kFlags, kArray, kPtr, kPtr, kArray),
718 MakeEntry(121, "setdomainname", kString, kLen0),
719 MakeEntry(122, "uname", kArray),
720 MakeEntry(123, "modify_ldt", kInt, kPtr, kLen1),
721 MakeEntry(124, "adjtimex", kArray),
722 MakeEntry(125, "mprotect", kPtr, kLen0, kFlags),
723 MakeEntry(126, "sigprocmask", UnknownArguments()),
724 MakeEntry(127, "create_module", kString, kInt),
725 MakeEntry(128, "init_module", kString, kLen0, kString),
726 MakeEntry(129, "delete_module", kString, kFlags),
727 MakeEntry(130, "get_kernel_syms", kInt),
728 MakeEntry(131, "quotactl", kInt, kPath, kInt, kGen),
729 MakeEntry(132, "getpgid", kPid),
730 MakeEntry(133, "fchdir", kResource),
731 MakeEntry(134, "bdflush", UnknownArguments()),
732 MakeEntry(135, "sysfs", kInt, kString),
733 MakeEntry(136, "personality", kFlags),
734 MakeEntry(137, "afs_syscall", UnknownArguments()),
735 MakeEntry(138, "setfsuid", kUid),
736 MakeEntry(139, "setfsgid", kGid),
737 MakeEntry(140, "_llseek", UnknownArguments()),
738 MakeEntry(141, "getdents", kResource, kArray, kLen1),
739 MakeEntry(142, "_newselect", UnknownArguments()),
740 MakeEntry(143, "flock", kResource, kFlags),
741 MakeEntry(144, "msync", kPtr, kLen0, kFlags),
742 MakeEntry(145, "readv", kResource, kArray, kLen1),
743 MakeEntry(146, "writev", kResource, kArray, kLen1),
744 MakeEntry(147, "getsid", kPid),
745 MakeEntry(148, "fdatasync", kResource),
746 MakeEntry(149, "_sysctl", kPtr),
747 MakeEntry(150, "mlock", kPtr, kLen0),
748 MakeEntry(151, "munlock", kPtr, kLen0),
749 MakeEntry(152, "mlockall", kFlags),
750 MakeEntry(153, "munlockall"),
751 MakeEntry(154, "sched_setparam", kPid, kPtr),
752 MakeEntry(155, "sched_getparam", kPid, kPtr),
753 MakeEntry(156, "sched_setscheduler", kPid, kFlags, kPtr),
754 MakeEntry(157, "sched_getscheduler", kPid),
755 MakeEntry(158, "sched_yield"),
756 MakeEntry(159, "sched_get_priority_max", kInt),
757 MakeEntry(160, "sched_get_priority_min", kInt),
758 MakeEntry(161, "sched_rr_get_interval", kPid, kPtr),
759 MakeEntry(162, "nanosleep", kPtr, kPtr),
760 MakeEntry(163, "mremap", kPtr, kLen0, kLen4, kFlags, kPtr),
761 MakeEntry(164, "setresuid", kUid, kUid, kUid),
762 MakeEntry(165, "getresuid", kPtr, kPtr, kPtr),
763 MakeEntry(166, "vm86", UnknownArguments()),
764 MakeEntry(167, "query_module", kString, kInt, kGen, kInt, kGen),
765 MakeEntry(168, "poll", kPollFdArray, kLen0, kInt),
766 MakeEntry(169, "nfsservctl", kInt, kPtr, kPtr),
767 MakeEntry(170, "setresgid", kGid, kGid, kGid),
768 MakeEntry(171, "getresgid", kPtr, kPtr, kPtr),
769 MakeEntry(172, "prctl", kInt, kInt, kInt, kInt, kInt),
770 MakeEntry(173, "rt_sigreturn"),
771 MakeEntry(174, "rt_sigaction", kSignal, kPtr, kPtr, kLen4, kPtr),
772 MakeEntry(175, "rt_sigprocmask", kFlags, kPtr, kPtr, kLen1),
773 MakeEntry(176, "rt_sigpending", kPtr, kLen0),
774 MakeEntry(177, "rt_sigtimedwait", kPtr, kPtr, kPtr, kLen0),
775 MakeEntry(178, "rt_sigqueueinfo", kPid, kSignal, kPtr),
776 MakeEntry(179, "rt_sigsuspend", kPtr, kLen0),
777 MakeEntry(180, "pread64", kResource, kArray, kLen1, kInt),
778 MakeEntry(181, "pwrite64", kResource, kArray, kLen1, kInt),
779 MakeEntry(182, "chown", kPath, kUid, kGid),
780 MakeEntry(183, "getcwd", kArray, kLen0),
781 MakeEntry(184, "capget", kPtr, kPtr),
782 MakeEntry(185, "capset", kPtr, kPtr),
783 MakeEntry(186, "sigaltstack", kPtr, kPtr),
784 MakeEntry(187, "sendfile", kResource, kResource, kPtr, kInt),
785 MakeEntry(188, "getpmsg", UnknownArguments()),
786 MakeEntry(189, "putpmsg", UnknownArguments()),
787 MakeEntry(190, "vfork"),
788 MakeEntry(191, "ugetrlimit", UnknownArguments()),
789 MakeEntry(192, "mmap2", UnknownArguments()),
790 MakeEntry(193, "truncate64", kPath, kInt),
791 MakeEntry(194, "ftruncate64", kInt, kInt),
792 MakeEntry(195, "stat64", kPath, kPtr),
793 MakeEntry(196, "lstat64", kPath, kPtr),
794 MakeEntry(197, "fstat64", kResource, kPtr),
795 MakeEntry(198, "lchown32", kPath, kInt, kInt),
796 MakeEntry(199, "getuid32", UnknownArguments()),
797 MakeEntry(200, "getgid32", UnknownArguments()),
798 MakeEntry(201, "geteuid32", UnknownArguments()),
799 MakeEntry(202, "getegid32", UnknownArguments()),
800 MakeEntry(203, "setreuid32", UnknownArguments()),
801 MakeEntry(204, "setregid32", UnknownArguments()),
802 MakeEntry(205, "getgroups32", UnknownArguments()),
803 MakeEntry(206, "setgroups32", UnknownArguments()),
804 MakeEntry(207, "fchown32", UnknownArguments()),
805 MakeEntry(208, "setresuid32", UnknownArguments()),
806 MakeEntry(209, "getresuid32", UnknownArguments()),
807 MakeEntry(210, "setresgid32", UnknownArguments()),
808 MakeEntry(211, "getresgid32", UnknownArguments()),
809 MakeEntry(212, "chown32", UnknownArguments()),
810 MakeEntry(213, "setuid32", UnknownArguments()),
811 MakeEntry(214, "setgid32", UnknownArguments()),
812 MakeEntry(215, "setfsuid32", UnknownArguments()),
813 MakeEntry(216, "setfsgid32", UnknownArguments()),
814 MakeEntry(217, "pivot_root", kPath, kPath),
815 MakeEntry(218, "mincore", kPtr, kLen0, kArray),
816 MakeEntry(219, "madvise", kPtr, kLen0, kFlags),
817 MakeEntry(220, "getdents64", kResource, kArray, kLen1),
818 MakeEntry(221, "fcntl64", UnknownArguments()),
819 MakeEntry(222, "unused1-222", UnknownArguments()),
820 MakeEntry(223, "unused2-223", UnknownArguments()),
821 MakeEntry(224, "gettid"),
822 MakeEntry(225, "readahead", kResource, kInt, kInt),
823 MakeEntry(226, "setxattr", kPath, kPtr, kString, kLen2, kFlags),
824 MakeEntry(227, "lsetxattr", kPath, kPtr, kString, kLen2, kFlags),
825 MakeEntry(228, "fsetxattr", kResource, kPtr, kString, kLen2, kFlags),
826 MakeEntry(229, "getxattr", kPath, kPtr, kArray, kLen2),
827 MakeEntry(230, "lgetxattr", kPath, kPtr, kArray, kLen2),
828 MakeEntry(231, "fgetxattr", kResource, kPtr, kArray, kLen2),
829 MakeEntry(232, "listxattr", kPath, kArray, kLen1),
830 MakeEntry(233, "llistxattr", kPath, kArray, kLen1),
831 MakeEntry(234, "flistxattr", kResource, kArray, kLen1),
832 MakeEntry(235, "removexattr", kPath, kPtr),
833 MakeEntry(236, "lremovexattr", kPath, kPtr),
834 MakeEntry(237, "fremovexattr", kResource, kPtr),
835 MakeEntry(238, "tkill", kPid, kSignal),
836 MakeEntry(239, "sendfile64", kResource, kResource, kPtr, kInt),
837 MakeEntry(240, "futex", kPtr, kFlags, kInt, kPtr, kPtr, kInt),
838 MakeEntry(241, "sched_setaffinity", kPid, kLen2, kPtr),
839 MakeEntry(242, "sched_getaffinity", kPid, kLen2, kPtr),
840 MakeEntry(243, "set_thread_area", kPtr),
841 MakeEntry(244, "get_thread_area", kPtr),
842 MakeEntry(245, "io_setup", kInt, kPtr),
843 MakeEntry(246, "io_destroy", kStruct),
844 MakeEntry(247, "io_getevents", kStruct, kInt, kLen3, kArray, kPtr),
845 MakeEntry(248, "io_submit", kStruct, kLen2, kArray),
846 MakeEntry(249, "io_cancel", kStruct, kPtr, kPtr),
847 MakeEntry(250, "fadvise64", kResource, kInt, kInt, kFlags),
848 MakeEntry(251, "251-old_sys_set_zone_reclaim", UnknownArguments()),
849 MakeEntry(252, "exit_group", kInt),
850 MakeEntry(253, "lookup_dcookie", kInt, kArray, kLen1),
851 MakeEntry(254, "epoll_create", kInt),
852 MakeEntry(255, "epoll_ctl", kResource, kInt, kResource, kPtr),
853 MakeEntry(256, "epoll_wait", kResource, kArray, kLen1, kInt),
854 MakeEntry(257, "remap_file_pages", kPtr, kLen0, kFlags, kInt, kFlags),
855 MakeEntry(258, "set_tid_address", kPtr),
856 MakeEntry(259, "timer_create", kFlags, kPtr, kPtr),
857 MakeEntry(260, "timer_settime", kStruct, kFlags, kPtr, kPtr),
858 MakeEntry(261, "timer_gettime", kStruct, kPtr),
859 MakeEntry(262, "timer_getoverrun", kStruct),
860 MakeEntry(263, "timer_delete", kStruct),
861 MakeEntry(264, "clock_settime", kFlags, kPtr),
862 MakeEntry(265, "clock_gettime", kFlags, kPtr),
863 MakeEntry(266, "clock_getres", kFlags, kPtr),
864 MakeEntry(267, "clock_nanosleep", kFlags, kFlags, kPtr, kPtr),
865 MakeEntry(268, "statfs64", UnknownArguments()),
866 MakeEntry(269, "fstatfs64", UnknownArguments()),
867 MakeEntry(270, "tgkill", kPid, kPid, kSignal),
868 MakeEntry(271, "utimes", kPath, kPtr),
869 MakeEntry(272, "fadvise64_64", UnknownArguments()),
870 MakeEntry(273, "vserver", UnknownArguments()),
871 MakeEntry(274, "mbind", kPtr, kLen0, kFlags, kPtr, kInt, kFlags),
872 MakeEntry(275, "get_mempolicy", kPtr, kPtr, kInt, kPtr, kFlags),
873 MakeEntry(276, "set_mempolicy", kFlags, kPtr, kInt),
874 MakeEntry(277, "mq_open", kString, kFlags, kFlags, kPtr),
875 MakeEntry(278, "mq_unlink", kString),
876 MakeEntry(279, "mq_timedsend", kResource, kArray, kLen1, kInt, kPtr),
877 MakeEntry(280, "mq_timedreceive", kResource, kArray, kLen1, kInt, kPtr),
878 MakeEntry(281, "mq_notify", kResource, kPtr),
879 MakeEntry(282, "mq_getsetattr", kResource, kPtr, kPtr),
880 MakeEntry(283, "kexec_load", kInt, kLen2, kArray, kFlags),
881 MakeEntry(284, "waitid", kFlags, kPid, kPtr, kFlags, kPtr),
882 MakeEntry(285, "285-old_sys_setaltroot", UnknownArguments()),
883 MakeEntry(286, "add_key", kString, kPtr, kArray, kLen2, kStruct),
884 MakeEntry(287, "request_key", kString, kPtr, kString, kStruct),
885 MakeEntry(288, "keyctl", kInt, kInt, kInt, kInt, kInt),
886 MakeEntry(289, "ioprio_set", kFlags, kPid, kFlags),
887 MakeEntry(290, "ioprio_get", kFlags, kUid),
888 MakeEntry(291, "inotify_init"),
889 MakeEntry(292, "inotify_add_watch", kResource, kPath, kFlags),
890 MakeEntry(293, "inotify_rm_watch", kResource, kResource),
891 MakeEntry(294, "migrate_pages", kPid, kInt, kPtr, kPtr),
892 MakeEntry(295, "openat", kResource, kPath, kFlags, kFlags),
893 MakeEntry(296, "mkdirat", kResource, kPath, kFlags),
894 MakeEntry(297, "mknodat", kResource, kPath, kFlags, kInt),
895 MakeEntry(298, "fchownat", kResource, kPath, kUid, kGid, kFlags),
896 MakeEntry(299, "futimesat", kResource, kPath, kPtr),
897 MakeEntry(300, "fstatat64", kInt, kPath, kPtr, kFlags),
898 MakeEntry(301, "unlinkat", kResource, kPath, kFlags),
899 MakeEntry(302, "renameat", kResource, kPath, kResource, kPath),
900 MakeEntry(303, "linkat", kResource, kPath, kResource, kPath, kFlags),
901 MakeEntry(304, "symlinkat", kPath, kResource, kPath),
902 MakeEntry(305, "readlinkat", kResource, kPath, kArray, kLen2),
903 MakeEntry(306, "fchmodat", kResource, kPath, kFlags),
904 MakeEntry(307, "faccessat", kResource, kPath, kFlags),
905 MakeEntry(308, "pselect6", kLen1, kPtr, kPtr, kPtr, kPtr, kPtr),
906 MakeEntry(309, "ppoll", kPollFdArray, kLen0, kPtr, kPtr, kLen3),
907 MakeEntry(310, "unshare", kFlags),
908 MakeEntry(311, "set_robust_list", kPtr, kLen0),
909 MakeEntry(312, "get_robust_list", kPid, kPtr, kPtr),
910 MakeEntry(313, "splice", kResource, kPtr, kResource, kPtr, kInt, kFlags),
911 MakeEntry(314, "sync_file_range", kResource, kInt, kInt, kFlags),
912 MakeEntry(315, "tee", kResource, kResource, kInt, kFlags),
913 MakeEntry(316, "vmsplice", kResource, kArray, kLen1, kFlags),
914 MakeEntry(317, "move_pages", kPid, kLen2, kArray, kArray, kArray, kFlags),
915 MakeEntry(318, "getcpu", kPtr, kPtr),
916 MakeEntry(319, "epoll_pwait", kResource, kArray, kLen1, kInt, kPtr, kLen4),
917 MakeEntry(320, "utimensat", kResource, kPath, kPtr, kFlags),
918 MakeEntry(321, "signalfd", kResource, kPtr, kLen1),
919 MakeEntry(322, "timerfd_create", kFlags, kFlags),
920 MakeEntry(323, "eventfd", kInt),
921 MakeEntry(324, "fallocate", kResource, kFlags, kInt, kInt),
922 MakeEntry(325, "timerfd_settime", kResource, kFlags, kPtr, kPtr),
923 MakeEntry(326, "timerfd_gettime", kResource, kPtr),
924 MakeEntry(327, "signalfd4", kResource, kPtr, kLen1, kFlags),
925 MakeEntry(328, "eventfd2", kInt, kFlags),
926 MakeEntry(329, "epoll_create1", kFlags),
927 MakeEntry(330, "dup3", kResource, kResource, kFlags),
928 MakeEntry(331, "pipe2", kPtr, kFlags),
929 MakeEntry(332, "inotify_init1", kFlags),
930 MakeEntry(333, "preadv", kResource, kArray, kLen1, kInt, kInt),
931 MakeEntry(334, "pwritev", kResource, kArray, kLen1, kInt, kInt),
932 MakeEntry(335, "rt_tgsigqueueinfo", kPid, kPid, kSignal, kPtr),
933 MakeEntry(336, "perf_event_open", kPtr, kPid, kInt, kResource, kFlags),
934 MakeEntry(337, "recvmmsg", kResource, kArray, kLen1, kFlags, kPtr),
935 MakeEntry(338, "fanotify_init", kFlags, kFlags),
936 MakeEntry(339, "fanotify_mark", kResource, kFlags, kFlags, kResource,
937 kPath),
938 MakeEntry(340, "prlimit64", kPid, kFlags, kPtr, kPtr),
939 MakeEntry(341, "name_to_handle_at", kResource, kPath, kPtr, kPtr, kFlags),
940 MakeEntry(342, "open_by_handle_at", kResource, kPtr, kFlags),
941 MakeEntry(343, "clock_adjtime", kFlags, kPtr),
942 MakeEntry(344, "syncfs", kResource),
943 MakeEntry(345, "sendmmsg", kResource, kArray, kLen1, kFlags),
944 MakeEntry(346, "setns", kResource, kFlags),
945 MakeEntry(347, "process_vm_readv", kPid, kArray, kLen1, kArray, kLen3,
946 kInt),
947 MakeEntry(348, "process_vm_writev", kPid, kArray, kLen1, kArray, kLen3,
948 kInt),
949 MakeEntry(349, "kcmp", kPid, kPid, kFlags, kResource, kResource),
950 MakeEntry(350, "finit_module", kResource, kString, kFlags),
951 MakeEntry(351, "sched_setattr", kPid, kPtr, kInt),
952 MakeEntry(352, "sched_getattr", kPid, kPtr, kLen1, kInt),
953 MakeEntry(353, "renameat2", kResource, kPath, kResource, kPath, kFlags),
954 MakeEntry(354, "seccomp", kInt, kFlags, kPtr),
955 MakeEntry(355, "getrandom", kArray, kLen0, kFlags),
956 MakeEntry(356, "memfd_create", kString, kFlags),
957 MakeEntry(357, "bpf", kInt, kPtr, kLen1),
958 MakeEntry(435, "clone3", kPtr, kLen0),
959 MakeEntry(436, "close_range", kResource, kResource, kFlags),
960 MakeEntry(437, "openat2", kResource, kPath, kPtr, kLen2),
961 MakeEntry(438, "pidfd_getfd", kResource, kResource, kInt),
962 MakeEntry(439, "faccessat2", kResource, kPath, kFlags, kFlags),
963 MakeEntry(440, "process_madvise", kResource, kArray, kLen1, kFlags, kInt),
964 MakeEntry(441, "epoll_pwait2", kResource, kArray, kLen1, kPtr, kPtr, kLen4),
965 MakeEntry(442, "mount_setattr", kResource, kPath, kFlags, kPtr, kLen3),
966 MakeEntry(443, "quotactl_fd", UnknownArguments()),
967 MakeEntry(444, "landlock_create_ruleset", kPtr, kLen0, kInt),
968 MakeEntry(445, "landlock_add_rule", kResource, kInt, kPtr, kInt),
969 MakeEntry(446, "landlock_restrict_self", kResource, kInt),
970 MakeEntry(447, "memfd_secret", kFlags),
971 MakeEntry(448, "process_mrelease", kResource, kInt),
972 MakeEntry(449, "futex_waitv", kArray, kLen0, kInt, kPtr, kFlags),
973 MakeEntry(450, "set_mempolicy_home_node", kPtr, kLen0, kInt, kInt),
974 MakeEntry(451, "cachestat", kResource, kPtr, kPtr, kInt),
975 MakeEntry(452, "fchmodat2", kInt, kPath, kInt, kInt),
976 MakeEntry(453, "map_shadow_stack", kPtr, kLen0, kFlags),
977 MakeEntry(454, "futex_wake", UnknownArguments()),
978 MakeEntry(455, "futex_wait", UnknownArguments()),
979 MakeEntry(456, "futex_requeue", UnknownArguments()),
980 MakeEntry(457, "statmount", UnknownArguments()),
981 MakeEntry(458, "listmount", UnknownArguments()),
982 MakeEntry(459, "lsm_get_self_attr", UnknownArguments()),
983 MakeEntry(460, "lsm_set_self_attr", UnknownArguments()),
984 MakeEntry(461, "lsm_list_modules", UnknownArguments()),
985 // clang-format on
986 };
987
988 static_assert(IsSorted(kSyscallDataX8632, SyscallTable::Entry::BySyscallNr),
989 "Syscalls should be sorted");
990
991 // http://lxr.free-electrons.com/source/arch/powerpc/include/uapi/asm/unistd.h
992 // Note: PPC64 syscalls can have up to 7 register arguments, but nobody is
993 // using the 7th argument - probably for x64 compatibility reasons.
994 constexpr std::array kSyscallDataPPC64LE = {
995 // clang-format off
996 MakeEntry(0, "restart_syscall"),
997 MakeEntry(1, "exit", kInt),
998 MakeEntry(2, "fork"),
999 MakeEntry(3, "read", kResource, kArray, kLen1),
1000 MakeEntry(4, "write", kResource, kArray, kLen1),
1001 MakeEntry(5, "open", kPath, kFlags, kFlags),
1002 MakeEntry(6, "close", kResource),
1003 MakeEntry(7, "waitpid", kInt, kInt, kInt),
1004 MakeEntry(8, "creat", kPath, kFlags),
1005 MakeEntry(9, "link", kPath, kPath),
1006 MakeEntry(10, "unlink", kPath),
1007 MakeEntry(11, "execve", kPath, kArray, kArray),
1008 MakeEntry(12, "chdir", kPath),
1009 MakeEntry(13, "time", kPtr),
1010 MakeEntry(14, "mknod", kPath, kFlags, kInt),
1011 MakeEntry(15, "chmod", kPath, kFlags),
1012 MakeEntry(16, "lchown", kPath, kUid, kGid),
1013 MakeEntry(17, "break", UnknownArguments()),
1014 MakeEntry(18, "oldstat", UnknownArguments()),
1015 MakeEntry(19, "lseek", kResource, kInt, kFlags),
1016 MakeEntry(20, "getpid"),
1017 MakeEntry(21, "mount", kPtr, kPath, kString, kFlags, kString),
1018 MakeEntry(22, "umount", UnknownArguments()),
1019 MakeEntry(23, "setuid", kUid),
1020 MakeEntry(24, "getuid"),
1021 MakeEntry(25, "stime", UnknownArguments()),
1022 MakeEntry(26, "ptrace", kFlags, kPid),
1023 MakeEntry(27, "alarm", kInt),
1024 MakeEntry(28, "oldfstat", UnknownArguments()),
1025 MakeEntry(29, "pause"),
1026 MakeEntry(30, "utime", kPath, kPtr),
1027 MakeEntry(31, "stty", UnknownArguments()),
1028 MakeEntry(32, "gtty", UnknownArguments()),
1029 MakeEntry(33, "access", kPath, kFlags),
1030 MakeEntry(34, "nice", UnknownArguments()),
1031 MakeEntry(35, "ftime", UnknownArguments()),
1032 MakeEntry(36, "sync"),
1033 MakeEntry(37, "kill", kPid, kSignal),
1034 MakeEntry(38, "rename", kPath, kPath),
1035 MakeEntry(39, "mkdir", kPath, kFlags),
1036 MakeEntry(40, "rmdir", kPath),
1037 MakeEntry(41, "dup", kResource),
1038 MakeEntry(42, "pipe", kPtr),
1039 MakeEntry(43, "times", kPtr),
1040 MakeEntry(44, "prof", UnknownArguments()),
1041 MakeEntry(45, "brk", kInt),
1042 MakeEntry(46, "setgid", kGid),
1043 MakeEntry(47, "getgid"),
1044 MakeEntry(48, "signal", UnknownArguments()),
1045 MakeEntry(49, "geteuid"),
1046 MakeEntry(50, "getegid"),
1047 MakeEntry(51, "acct", kPath),
1048 MakeEntry(52, "umount2", kPath, kFlags),
1049 MakeEntry(53, "lock", UnknownArguments()),
1050 MakeEntry(54, "ioctl", kResource, kInt, kArray),
1051 MakeEntry(55, "fcntl", kResource, kFlags, kResource),
1052 MakeEntry(56, "mpx", UnknownArguments()),
1053 MakeEntry(57, "setpgid", kPid, kPid),
1054 MakeEntry(58, "ulimit", UnknownArguments()),
1055 MakeEntry(59, "oldolduname", UnknownArguments()),
1056 MakeEntry(60, "umask", kFlags),
1057 MakeEntry(61, "chroot", kPath),
1058 MakeEntry(62, "ustat", kInt, kPtr),
1059 MakeEntry(63, "dup2", kResource, kResource),
1060 MakeEntry(64, "getppid"),
1061 MakeEntry(65, "getpgrp", kPid),
1062 MakeEntry(66, "setsid"),
1063 MakeEntry(67, "sigaction", UnknownArguments()),
1064 MakeEntry(68, "sgetmask", UnknownArguments()),
1065 MakeEntry(69, "ssetmask", UnknownArguments()),
1066 MakeEntry(70, "setreuid", kUid, kUid),
1067 MakeEntry(71, "setregid", kGid, kGid),
1068 MakeEntry(72, "sigsuspend", UnknownArguments()),
1069 MakeEntry(73, "sigpending", UnknownArguments()),
1070 MakeEntry(74, "sethostname", kString, kLen0),
1071 MakeEntry(75, "setrlimit", kFlags, kPtr),
1072 MakeEntry(76, "getrlimit", kFlags, kPtr),
1073 MakeEntry(77, "getrusage", kFlags, kPtr),
1074 MakeEntry(78, "gettimeofday", kPtr, kPtr),
1075 MakeEntry(79, "settimeofday", kPtr, kPtr),
1076 MakeEntry(80, "getgroups", kLen1, kGidArray),
1077 MakeEntry(81, "setgroups", kLen1, kGidArray),
1078 MakeEntry(82, "select", kLen1, kPtr, kPtr, kPtr, kPtr),
1079 MakeEntry(83, "symlink", kPath, kPath),
1080 MakeEntry(84, "oldlstat", UnknownArguments()),
1081 MakeEntry(85, "readlink", kPath, kArray, kLen1),
1082 MakeEntry(86, "uselib", kPath),
1083 MakeEntry(87, "swapon", kPath, kFlags),
1084 MakeEntry(88, "reboot", kInt, kInt, kInt, kPtr),
1085 MakeEntry(89, "readdir", UnknownArguments()),
1086 MakeEntry(90, "mmap", kPtr, kLen0, kFlags, kFlags, kResource, kInt),
1087 MakeEntry(91, "munmap", kPtr, kLen0),
1088 MakeEntry(92, "truncate", kPath, kInt),
1089 MakeEntry(93, "ftruncate", kResource, kInt),
1090 MakeEntry(94, "fchmod", kResource, kFlags),
1091 MakeEntry(95, "fchown", kResource, kUid, kGid),
1092 MakeEntry(96, "getpriority", kFlags, kPid),
1093 MakeEntry(97, "setpriority", kFlags, kPid, kInt),
1094 MakeEntry(98, "profil", UnknownArguments()),
1095 MakeEntry(99, "statfs", kPath, kArray),
1096 MakeEntry(100, "fstatfs", kResource, kArray),
1097 MakeEntry(101, "ioperm", kInt, kInt, kInt),
1098 MakeEntry(102, "socketcall", UnknownArguments()),
1099 MakeEntry(103, "syslog", kFlags, kArray, kLen1),
1100 MakeEntry(104, "setitimer", kFlags, kPtr, kPtr),
1101 MakeEntry(105, "getitimer", kFlags, kPtr),
1102 MakeEntry(106, "stat", kPath, kPtr),
1103 MakeEntry(107, "lstat", kPath, kPtr),
1104 MakeEntry(108, "fstat", kResource, kPtr),
1105 MakeEntry(109, "olduname", UnknownArguments()),
1106 MakeEntry(110, "iopl", kInt),
1107 MakeEntry(111, "vhangup"),
1108 MakeEntry(112, "idle", UnknownArguments()),
1109 MakeEntry(113, "vm86", UnknownArguments()),
1110 MakeEntry(114, "wait4", kPid, kPtr, kFlags, kPtr),
1111 MakeEntry(115, "swapoff", kPath),
1112 MakeEntry(116, "sysinfo", kArray),
1113 MakeEntry(117, "ipc", UnknownArguments()),
1114 MakeEntry(118, "fsync", kResource),
1115 MakeEntry(119, "sigreturn", UnknownArguments()),
1116 MakeEntry(120, "clone", kFlags, kArray, kPtr, kPtr, kArray),
1117 MakeEntry(121, "setdomainname", kString, kLen0),
1118 MakeEntry(122, "uname", kArray),
1119 MakeEntry(123, "modify_ldt", kInt, kPtr, kLen1),
1120 MakeEntry(124, "adjtimex", kArray),
1121 MakeEntry(125, "mprotect", kPtr, kLen0, kFlags),
1122 MakeEntry(126, "sigprocmask", UnknownArguments()),
1123 MakeEntry(127, "create_module", kString, kInt),
1124 MakeEntry(128, "init_module", kString, kLen0, kString),
1125 MakeEntry(129, "delete_module", kString, kFlags),
1126 MakeEntry(130, "get_kernel_syms", kInt),
1127 MakeEntry(131, "quotactl", kInt, kPath, kInt, kGen),
1128 MakeEntry(132, "getpgid", kPid),
1129 MakeEntry(133, "fchdir", kResource),
1130 MakeEntry(134, "bdflush", UnknownArguments()),
1131 MakeEntry(135, "sysfs", kInt, kString),
1132 MakeEntry(136, "personality", kFlags),
1133 MakeEntry(137, "afs_syscall", UnknownArguments()),
1134 MakeEntry(138, "setfsuid", kUid),
1135 MakeEntry(139, "setfsgid", kGid),
1136 MakeEntry(140, "_llseek", UnknownArguments()),
1137 MakeEntry(141, "getdents", kResource, kArray, kLen1),
1138 MakeEntry(142, "_newselect", UnknownArguments()),
1139 MakeEntry(143, "flock", kResource, kFlags),
1140 MakeEntry(144, "msync", kPtr, kLen0, kFlags),
1141 MakeEntry(145, "readv", kResource, kArray, kLen1),
1142 MakeEntry(146, "writev", kResource, kArray, kLen1),
1143 MakeEntry(147, "getsid", kPid),
1144 MakeEntry(148, "fdatasync", kResource),
1145 MakeEntry(149, "_sysctl", kPtr),
1146 MakeEntry(150, "mlock", kPtr, kLen0),
1147 MakeEntry(151, "munlock", kPtr, kLen0),
1148 MakeEntry(152, "mlockall", kFlags),
1149 MakeEntry(153, "munlockall"),
1150 MakeEntry(154, "sched_setparam", kPid, kPtr),
1151 MakeEntry(155, "sched_getparam", kPid, kPtr),
1152 MakeEntry(156, "sched_setscheduler", kPid, kFlags, kPtr),
1153 MakeEntry(157, "sched_getscheduler", kPid),
1154 MakeEntry(158, "sched_yield"),
1155 MakeEntry(159, "sched_get_priority_max", kInt),
1156 MakeEntry(160, "sched_get_priority_min", kInt),
1157 MakeEntry(161, "sched_rr_get_interval", kPid, kPtr),
1158 MakeEntry(162, "nanosleep", kPtr, kPtr),
1159 MakeEntry(163, "mremap", kPtr, kLen0, kLen4, kFlags, kPtr),
1160 MakeEntry(164, "setresuid", kUid, kUid, kUid),
1161 MakeEntry(165, "getresuid", kPtr, kPtr, kPtr),
1162 MakeEntry(166, "query_module", kString, kInt, kGen, kInt, kGen),
1163 MakeEntry(167, "poll", kPollFdArray, kLen0, kInt),
1164 MakeEntry(168, "nfsservctl", kInt, kPtr, kPtr),
1165 MakeEntry(169, "setresgid", kGid, kGid, kGid),
1166 MakeEntry(170, "getresgid", kPtr, kPtr, kPtr),
1167 MakeEntry(171, "prctl", kInt, kInt, kInt, kInt, kInt),
1168 MakeEntry(172, "rt_sigreturn"),
1169 MakeEntry(173, "rt_sigaction", kSignal, kPtr, kPtr, kLen4, kPtr),
1170 MakeEntry(174, "rt_sigprocmask", kFlags, kPtr, kPtr, kLen1),
1171 MakeEntry(175, "rt_sigpending", kPtr, kLen0),
1172 MakeEntry(176, "rt_sigtimedwait", kPtr, kPtr, kPtr, kLen0),
1173 MakeEntry(177, "rt_sigqueueinfo", kPid, kSignal, kPtr),
1174 MakeEntry(178, "rt_sigsuspend", kPtr, kLen0),
1175 MakeEntry(179, "pread64", kResource, kArray, kLen1, kInt),
1176 MakeEntry(180, "pwrite64", kResource, kArray, kLen1, kInt),
1177 MakeEntry(181, "chown", kPath, kUid, kGid),
1178 MakeEntry(182, "getcwd", kArray, kLen0),
1179 MakeEntry(183, "capget", kPtr, kPtr),
1180 MakeEntry(184, "capset", kPtr, kPtr),
1181 MakeEntry(185, "sigaltstack", kPtr, kPtr),
1182 MakeEntry(186, "sendfile", kResource, kResource, kPtr, kInt),
1183 MakeEntry(187, "getpmsg", UnknownArguments()),
1184 MakeEntry(188, "putpmsg", UnknownArguments()),
1185 MakeEntry(189, "vfork"),
1186 MakeEntry(190, "ugetrlimit", UnknownArguments()),
1187 MakeEntry(191, "readahead", kResource, kInt, kInt),
1188 MakeEntry(192, "mmap2", UnknownArguments()),
1189 MakeEntry(193, "truncate64", UnknownArguments()),
1190 MakeEntry(194, "ftruncate64", UnknownArguments()),
1191 MakeEntry(195, "stat64", kPath, kPtr),
1192 MakeEntry(196, "lstat64", kPath, kPtr),
1193 MakeEntry(197, "fstat64", kResource, kPtr),
1194 MakeEntry(198, "pciconfig_read", UnknownArguments()),
1195 MakeEntry(199, "pciconfig_write", UnknownArguments()),
1196 MakeEntry(200, "pciconfig_iobase", UnknownArguments()),
1197 MakeEntry(201, "multiplexer", UnknownArguments()),
1198 MakeEntry(202, "getdents64", kResource, kArray, kLen1),
1199 MakeEntry(203, "pivot_root", kPath, kPath),
1200 MakeEntry(204, "fcntl64", UnknownArguments()),
1201 MakeEntry(205, "madvise", kPtr, kLen0, kFlags),
1202 MakeEntry(206, "mincore", kPtr, kLen0, kArray),
1203 MakeEntry(207, "gettid"),
1204 MakeEntry(208, "tkill", kPid, kSignal),
1205 MakeEntry(209, "setxattr", kPath, kPtr, kString, kLen2, kFlags),
1206 MakeEntry(210, "lsetxattr", kPath, kPtr, kString, kLen2, kFlags),
1207 MakeEntry(211, "fsetxattr", kResource, kPtr, kString, kLen2, kFlags),
1208 MakeEntry(212, "getxattr", kPath, kPtr, kArray, kLen2),
1209 MakeEntry(213, "lgetxattr", kPath, kPtr, kArray, kLen2),
1210 MakeEntry(214, "fgetxattr", kResource, kPtr, kArray, kLen2),
1211 MakeEntry(215, "listxattr", kPath, kArray, kLen1),
1212 MakeEntry(216, "llistxattr", kPath, kArray, kLen1),
1213 MakeEntry(217, "flistxattr", kResource, kArray, kLen1),
1214 MakeEntry(218, "removexattr", kPath, kPtr),
1215 MakeEntry(219, "lremovexattr", kPath, kPtr),
1216 MakeEntry(220, "fremovexattr", kResource, kPtr),
1217 MakeEntry(221, "futex", kPtr, kFlags, kInt, kPtr, kPtr, kInt),
1218 MakeEntry(222, "sched_setaffinity", kPid, kLen2, kPtr),
1219 MakeEntry(223, "sched_getaffinity", kPid, kLen2, kPtr),
1220 MakeEntry(225, "tuxcall", UnknownArguments()),
1221 MakeEntry(226, "sendfile64", kResource, kResource, kPtr, kInt),
1222 MakeEntry(227, "io_setup", kInt, kPtr),
1223 MakeEntry(228, "io_destroy", kStruct),
1224 MakeEntry(229, "io_getevents", kStruct, kInt, kLen3, kArray, kPtr),
1225 MakeEntry(230, "io_submit", kStruct, kLen2, kArray),
1226 MakeEntry(231, "io_cancel", kStruct, kPtr, kPtr),
1227 MakeEntry(232, "set_tid_address", kPtr),
1228 MakeEntry(233, "fadvise64", kResource, kInt, kInt, kFlags),
1229 MakeEntry(234, "exit_group", kInt),
1230 MakeEntry(235, "lookup_dcookie", kInt, kArray, kLen1),
1231 MakeEntry(236, "epoll_create", kInt),
1232 MakeEntry(237, "epoll_ctl", kResource, kInt, kResource, kPtr),
1233 MakeEntry(238, "epoll_wait", kResource, kArray, kLen1, kInt),
1234 MakeEntry(239, "remap_file_pages", kPtr, kLen0, kFlags, kInt, kFlags),
1235 MakeEntry(240, "timer_create", kFlags, kPtr, kPtr),
1236 MakeEntry(241, "timer_settime", kStruct, kFlags, kPtr, kPtr),
1237 MakeEntry(242, "timer_gettime", kStruct, kPtr),
1238 MakeEntry(243, "timer_getoverrun", kStruct),
1239 MakeEntry(244, "timer_delete", kStruct),
1240 MakeEntry(245, "clock_settime", kFlags, kPtr),
1241 MakeEntry(246, "clock_gettime", kFlags, kPtr),
1242 MakeEntry(247, "clock_getres", kFlags, kPtr),
1243 MakeEntry(248, "clock_nanosleep", kFlags, kFlags, kPtr, kPtr),
1244 MakeEntry(249, "swapcontext", UnknownArguments()),
1245 MakeEntry(250, "tgkill", kPid, kPid, kSignal),
1246 MakeEntry(251, "utimes", kPath, kPtr),
1247 MakeEntry(252, "statfs64", UnknownArguments()),
1248 MakeEntry(253, "fstatfs64", UnknownArguments()),
1249 MakeEntry(254, "fadvise64_64", UnknownArguments()),
1250 MakeEntry(255, "rtas", UnknownArguments()),
1251 MakeEntry(256, "sys_debug_setcontext", kInt, kInt, kInt, kInt, kInt, kInt),
1252 MakeEntry(258, "migrate_pages", kPid, kInt, kPtr, kPtr),
1253 MakeEntry(259, "mbind", kPtr, kLen0, kFlags, kPtr, kInt, kFlags),
1254 MakeEntry(260, "get_mempolicy", kPtr, kPtr, kInt, kPtr, kFlags),
1255 MakeEntry(261, "set_mempolicy", kFlags, kPtr, kInt),
1256 MakeEntry(262, "mq_open", kString, kFlags, kFlags, kPtr),
1257 MakeEntry(263, "mq_unlink", kString),
1258 MakeEntry(264, "mq_timedsend", kResource, kArray, kLen1, kInt, kPtr),
1259 MakeEntry(265, "mq_timedreceive", kResource, kArray, kLen1, kInt, kPtr),
1260 MakeEntry(266, "mq_notify", kResource, kPtr),
1261 MakeEntry(267, "mq_getsetattr", kResource, kPtr, kPtr),
1262 MakeEntry(268, "kexec_load", kInt, kLen2, kArray, kFlags),
1263 MakeEntry(269, "add_key", kString, kPtr, kArray, kLen2, kStruct),
1264 MakeEntry(270, "request_key", kString, kPtr, kString, kStruct),
1265 MakeEntry(271, "keyctl", kInt, kInt, kInt, kInt, kInt),
1266 MakeEntry(272, "waitid", kFlags, kPid, kPtr, kFlags, kPtr),
1267 MakeEntry(273, "ioprio_set", kFlags, kPid, kFlags),
1268 MakeEntry(274, "ioprio_get", kFlags, kUid),
1269 MakeEntry(275, "inotify_init"),
1270 MakeEntry(276, "inotify_add_watch", kResource, kPath, kFlags),
1271 MakeEntry(277, "inotify_rm_watch", kResource, kResource),
1272 MakeEntry(278, "spu_run", UnknownArguments()),
1273 MakeEntry(279, "spu_create", UnknownArguments()),
1274 MakeEntry(280, "pselect6", kLen1, kPtr, kPtr, kPtr, kPtr, kPtr),
1275 MakeEntry(281, "ppoll", kPollFdArray, kLen0, kPtr, kPtr, kLen3),
1276 MakeEntry(282, "unshare", kFlags),
1277 MakeEntry(283, "splice", kResource, kPtr, kResource, kPtr, kInt, kFlags),
1278 MakeEntry(284, "tee", kResource, kResource, kInt, kFlags),
1279 MakeEntry(285, "vmsplice", kResource, kArray, kLen1, kFlags),
1280 MakeEntry(286, "openat", kResource, kPath, kFlags, kFlags),
1281 MakeEntry(287, "mkdirat", kResource, kPath, kFlags),
1282 MakeEntry(288, "mknodat", kResource, kPath, kFlags, kInt),
1283 MakeEntry(289, "fchownat", kResource, kPath, kUid, kGid, kFlags),
1284 MakeEntry(290, "futimesat", kResource, kPath, kPtr),
1285 MakeEntry(291, "newfstatat", kInt, kPath, kPtr, kFlags),
1286 MakeEntry(292, "unlinkat", kResource, kPath, kFlags),
1287 MakeEntry(293, "renameat", kResource, kPath, kResource, kPath),
1288 MakeEntry(294, "linkat", kResource, kPath, kResource, kPath, kFlags),
1289 MakeEntry(295, "symlinkat", kPath, kResource, kPath),
1290 MakeEntry(296, "readlinkat", kResource, kPath, kArray, kLen2),
1291 MakeEntry(297, "fchmodat", kResource, kPath, kFlags),
1292 MakeEntry(298, "faccessat", kResource, kPath, kFlags),
1293 MakeEntry(299, "get_robust_list", kPid, kPtr, kPtr),
1294 MakeEntry(300, "set_robust_list", kPtr, kLen0),
1295 MakeEntry(301, "move_pages", kPid, kLen2, kArray, kArray, kArray, kFlags),
1296 MakeEntry(302, "getcpu", kPtr, kPtr),
1297 MakeEntry(303, "epoll_pwait", kResource, kArray, kLen1, kInt, kPtr, kLen4),
1298 MakeEntry(304, "utimensat", kResource, kPath, kPtr, kFlags),
1299 MakeEntry(305, "signalfd", kResource, kPtr, kLen1),
1300 MakeEntry(306, "timerfd_create", kFlags, kFlags),
1301 MakeEntry(307, "eventfd", kInt),
1302 MakeEntry(308, "sync_file_range2", UnknownArguments()),
1303 MakeEntry(309, "fallocate", kResource, kFlags, kInt, kInt),
1304 MakeEntry(310, "subpage_prot", UnknownArguments()),
1305 MakeEntry(311, "timerfd_settime", kResource, kFlags, kPtr, kPtr),
1306 MakeEntry(312, "timerfd_gettime", kResource, kPtr),
1307 MakeEntry(313, "signalfd4", kResource, kPtr, kLen1, kFlags),
1308 MakeEntry(314, "eventfd2", kInt, kFlags),
1309 MakeEntry(315, "epoll_create1", kFlags),
1310 MakeEntry(316, "dup3", kResource, kResource, kFlags),
1311 MakeEntry(317, "pipe2", kPtr, kFlags),
1312 MakeEntry(318, "inotify_init1", kFlags),
1313 MakeEntry(319, "perf_event_open", kPtr, kPid, kInt, kResource, kFlags),
1314 MakeEntry(320, "preadv", kResource, kArray, kLen1, kInt, kInt),
1315 MakeEntry(321, "pwritev", kResource, kArray, kLen1, kInt, kInt),
1316 MakeEntry(322, "rt_tgsigqueueinfo", kPid, kPid, kSignal, kPtr),
1317 MakeEntry(323, "fanotify_init", kFlags, kFlags),
1318 MakeEntry(324, "fanotify_mark", kResource, kFlags, kFlags, kResource,
1319 kPath),
1320 MakeEntry(325, "prlimit64", kPid, kFlags, kPtr, kPtr),
1321 MakeEntry(326, "socket", kFlags, kFlags, kInt),
1322 MakeEntry(327, "bind", kResource, kSockaddr, kLen1),
1323 MakeEntry(328, "connect", kResource, kSockaddr, kLen1),
1324 MakeEntry(329, "listen", kResource, kInt),
1325 MakeEntry(330, "accept", kResource, kPtr, kPtr),
1326 MakeEntry(331, "getsockname", kResource, kPtr, kPtr),
1327 MakeEntry(332, "getpeername", kResource, kPtr, kPtr),
1328 MakeEntry(333, "socketpair", kFlags, kFlags, kInt, kPtr),
1329 MakeEntry(334, "send", UnknownArguments()),
1330 MakeEntry(335, "sendto", kResource, kArray, kLen1, kFlags, kSockaddr,
1331 kLen4),
1332 MakeEntry(336, "recv", UnknownArguments()),
1333 MakeEntry(337, "recvfrom", kResource, kArray, kLen1, kFlags, kSockaddr,
1334 kLen4),
1335 MakeEntry(338, "shutdown", kResource, kFlags),
1336 MakeEntry(339, "setsockopt", kResource, kInt, kInt, kArray, kLen3),
1337 MakeEntry(340, "getsockopt", kResource, kInt, kInt, kArray, kPtr),
1338 MakeEntry(341, "sendmsg", kResource, kPtr, kFlags),
1339 MakeEntry(342, "recvmsg", kResource, kPtr, kFlags),
1340 MakeEntry(343, "recvmmsg", kResource, kArray, kLen1, kFlags, kPtr),
1341 MakeEntry(344, "accept4", kResource, kPtr, kPtr, kFlags),
1342 MakeEntry(345, "name_to_handle_at", kResource, kPath, kPtr, kPtr, kFlags),
1343 MakeEntry(346, "open_by_handle_at", kResource, kPtr, kFlags),
1344 MakeEntry(347, "clock_adjtime", kFlags, kPtr),
1345 MakeEntry(348, "syncfs", kResource),
1346 MakeEntry(349, "sendmmsg", kResource, kArray, kLen1, kFlags),
1347 MakeEntry(350, "setns", kResource, kFlags),
1348 MakeEntry(351, "process_vm_readv", kPid, kArray, kLen1, kArray, kLen3,
1349 kInt),
1350 MakeEntry(352, "process_vm_writev", kPid, kArray, kLen1, kArray, kLen3,
1351 kInt),
1352 MakeEntry(353, "finit_module", kResource, kString, kFlags),
1353 MakeEntry(354, "kcmp", kPid, kPid, kFlags, kResource, kResource),
1354 MakeEntry(355, "sched_setattr", kPid, kPtr, kInt),
1355 MakeEntry(356, "sched_getattr", kPid, kPtr, kLen1, kInt),
1356 MakeEntry(357, "renameat2", kResource, kPath, kResource, kPath, kFlags),
1357 MakeEntry(358, "seccomp", kInt, kFlags, kPtr),
1358 MakeEntry(359, "getrandom", kArray, kLen0, kFlags),
1359 MakeEntry(360, "memfd_create", kString, kFlags),
1360 MakeEntry(361, "bpf", kInt, kPtr, kLen1),
1361 MakeEntry(362, "execveat", kResource, kPath, kArray, kArray, kFlags),
1362 MakeEntry(363, "switch_endian", UnknownArguments()),
1363 MakeEntry(364, "userfaultfd", kFlags),
1364 MakeEntry(365, "membarrier", kFlags, kInt),
1365 MakeEntry(378, "mlock2", kPtr, kLen0, kFlags),
1366 MakeEntry(379, "copy_file_range", kResource, kPtr, kResource, kPtr, kInt,
1367 kFlags),
1368 MakeEntry(380, "preadv2", kResource, kArray, kLen1, kInt, kInt, kFlags),
1369 MakeEntry(381, "pwritev2", kResource, kArray, kLen1, kInt, kInt, kFlags),
1370 MakeEntry(435, "clone3", kPtr, kLen0),
1371 MakeEntry(436, "close_range", kResource, kResource, kFlags),
1372 MakeEntry(437, "openat2", kResource, kPath, kPtr, kLen2),
1373 MakeEntry(438, "pidfd_getfd", kResource, kResource, kInt),
1374 MakeEntry(439, "faccessat2", kResource, kPath, kFlags, kFlags),
1375 MakeEntry(440, "process_madvise", kResource, kArray, kLen1, kFlags, kInt),
1376 MakeEntry(441, "epoll_pwait2", kResource, kArray, kLen1, kPtr, kPtr, kLen4),
1377 MakeEntry(442, "mount_setattr", kResource, kPath, kFlags, kPtr, kLen3),
1378 MakeEntry(443, "quotactl_fd", UnknownArguments()),
1379 MakeEntry(444, "landlock_create_ruleset", kPtr, kLen0, kInt),
1380 MakeEntry(445, "landlock_add_rule", kResource, kInt, kPtr, kInt),
1381 MakeEntry(446, "landlock_restrict_self", kResource, kInt),
1382 MakeEntry(448, "process_mrelease", kResource, kInt),
1383 MakeEntry(449, "futex_waitv", kArray, kLen0, kInt, kPtr, kFlags),
1384 MakeEntry(450, "set_mempolicy_home_node", kPtr, kLen0, kInt, kInt),
1385 MakeEntry(451, "cachestat", kResource, kPtr, kPtr, kInt),
1386 MakeEntry(452, "fchmodat2", kInt, kPath, kInt, kInt),
1387 MakeEntry(453, "map_shadow_stack", kPtr, kLen0, kFlags),
1388 MakeEntry(454, "futex_wake", UnknownArguments()),
1389 MakeEntry(455, "futex_wait", UnknownArguments()),
1390 MakeEntry(456, "futex_requeue", UnknownArguments()),
1391 MakeEntry(457, "statmount", UnknownArguments()),
1392 MakeEntry(458, "listmount", UnknownArguments()),
1393 MakeEntry(459, "lsm_get_self_attr", UnknownArguments()),
1394 MakeEntry(460, "lsm_set_self_attr", UnknownArguments()),
1395 MakeEntry(461, "lsm_list_modules", UnknownArguments()),
1396 // clang-format on
1397 };
1398
1399 static_assert(IsSorted(kSyscallDataPPC64LE, SyscallTable::Entry::BySyscallNr),
1400 "Syscalls should be sorted");
1401
1402 // https://github.com/torvalds/linux/blob/v5.8/include/uapi/asm-generic/unistd.h
1403 constexpr std::array kSyscallDataArm64 = {
1404 // clang-format off
1405 MakeEntry(0, "io_setup", kInt, kPtr),
1406 MakeEntry(1, "io_destroy", kStruct),
1407 MakeEntry(2, "io_submit", kStruct, kLen2, kArray),
1408 MakeEntry(3, "io_cancel", kStruct, kPtr, kPtr),
1409 MakeEntry(4, "io_getevents", kStruct, kInt, kLen3, kArray, kPtr),
1410 MakeEntry(5, "setxattr", kPath, kPtr, kString, kLen2, kFlags),
1411 MakeEntry(6, "lsetxattr", kPath, kPtr, kString, kLen2, kFlags),
1412 MakeEntry(7, "fsetxattr", kResource, kPtr, kString, kLen2, kFlags),
1413 MakeEntry(8, "getxattr", kPath, kPtr, kArray, kLen2),
1414 MakeEntry(9, "lgetxattr", kPath, kPtr, kArray, kLen2),
1415 MakeEntry(10, "fgetxattr", kResource, kPtr, kArray, kLen2),
1416 MakeEntry(11, "listxattr", kPath, kArray, kLen1),
1417 MakeEntry(12, "llistxattr", kPath, kArray, kLen1),
1418 MakeEntry(13, "flistxattr", kResource, kArray, kLen1),
1419 MakeEntry(14, "removexattr", kPath, kPtr),
1420 MakeEntry(15, "lremovexattr", kPath, kPtr),
1421 MakeEntry(16, "fremovexattr", kResource, kPtr),
1422 MakeEntry(17, "getcwd", kArray, kLen0),
1423 MakeEntry(18, "lookup_dcookie", kInt, kArray, kLen1),
1424 MakeEntry(19, "eventfd2", kInt, kFlags),
1425 MakeEntry(20, "epoll_create1", kFlags),
1426 MakeEntry(21, "epoll_ctl", kResource, kInt, kResource, kPtr),
1427 MakeEntry(22, "epoll_pwait", kResource, kArray, kLen1, kInt, kPtr, kLen4),
1428 MakeEntry(23, "dup", kResource),
1429 MakeEntry(24, "dup3", kResource, kResource, kFlags),
1430 MakeEntry(25, "fcntl", kResource, kFlags, kResource),
1431 MakeEntry(26, "inotify_init1", kFlags),
1432 MakeEntry(27, "inotify_add_watch", kResource, kPath, kFlags),
1433 MakeEntry(28, "inotify_rm_watch", kResource, kResource),
1434 MakeEntry(29, "ioctl", kResource, kInt, kArray),
1435 MakeEntry(30, "ioprio_set", kFlags, kPid, kFlags),
1436 MakeEntry(31, "ioprio_get", kFlags, kUid),
1437 MakeEntry(32, "flock", kResource, kFlags),
1438 MakeEntry(33, "mknodat", kResource, kPath, kFlags, kInt),
1439 MakeEntry(34, "mkdirat", kResource, kPath, kFlags),
1440 MakeEntry(35, "unlinkat", kResource, kPath, kFlags),
1441 MakeEntry(36, "symlinkat", kPath, kResource, kPath),
1442 MakeEntry(37, "linkat", kResource, kPath, kResource, kPath, kFlags),
1443 MakeEntry(38, "renameat", kResource, kPath, kResource, kPath),
1444 MakeEntry(39, "umount2", kPath, kFlags),
1445 MakeEntry(40, "mount", kPtr, kPath, kString, kFlags, kString),
1446 MakeEntry(41, "pivot_root", kPath, kPath),
1447 MakeEntry(42, "nfsservctl", kInt, kPtr, kPtr),
1448 MakeEntry(43, "statfs", kPath, kArray),
1449 MakeEntry(44, "fstatfs", kResource, kArray),
1450 MakeEntry(45, "truncate", kPath, kInt),
1451 MakeEntry(46, "ftruncate", kResource, kInt),
1452 MakeEntry(47, "fallocate", kResource, kFlags, kInt, kInt),
1453 MakeEntry(48, "faccessat", kResource, kPath, kFlags),
1454 MakeEntry(49, "chdir", kPath),
1455 MakeEntry(50, "fchdir", kResource),
1456 MakeEntry(51, "chroot", kPath),
1457 MakeEntry(52, "fchmod", kResource, kFlags),
1458 MakeEntry(53, "fchmodat", kResource, kPath, kFlags),
1459 MakeEntry(54, "fchownat", kResource, kPath, kUid, kGid, kFlags),
1460 MakeEntry(55, "fchown", kResource, kUid, kGid),
1461 MakeEntry(56, "openat", kResource, kPath, kFlags, kFlags),
1462 MakeEntry(57, "close", kResource),
1463 MakeEntry(58, "vhangup"),
1464 MakeEntry(59, "pipe2", kPtr, kFlags),
1465 MakeEntry(60, "quotactl", kInt, kPath, kInt, kGen),
1466 MakeEntry(61, "getdents64", kResource, kArray, kLen1),
1467 MakeEntry(62, "lseek", kResource, kInt, kFlags),
1468 MakeEntry(63, "read", kResource, kArray, kLen1),
1469 MakeEntry(64, "write", kResource, kArray, kLen1),
1470 MakeEntry(65, "readv", kResource, kArray, kLen1),
1471 MakeEntry(66, "writev", kResource, kArray, kLen1),
1472 MakeEntry(67, "pread64", kResource, kArray, kLen1, kInt),
1473 MakeEntry(68, "pwrite64", kResource, kArray, kLen1, kInt),
1474 MakeEntry(69, "preadv", kResource, kArray, kLen1, kInt, kInt),
1475 MakeEntry(70, "pwritev", kResource, kArray, kLen1, kInt, kInt),
1476 MakeEntry(71, "sendfile", kResource, kResource, kPtr, kInt),
1477 MakeEntry(72, "pselect6", kLen1, kPtr, kPtr, kPtr, kPtr, kPtr),
1478 MakeEntry(73, "ppoll", kPollFdArray, kLen0, kPtr, kPtr, kLen3),
1479 MakeEntry(74, "signalfd4", kResource, kPtr, kLen1, kFlags),
1480 MakeEntry(75, "vmsplice", kResource, kArray, kLen1, kFlags),
1481 MakeEntry(76, "splice", kResource, kPtr, kResource, kPtr, kInt, kFlags),
1482 MakeEntry(77, "tee", kResource, kResource, kInt, kFlags),
1483 MakeEntry(78, "readlinkat", kResource, kPath, kArray, kLen2),
1484 MakeEntry(79, "newfstatat", kInt, kPath, kPtr, kFlags),
1485 MakeEntry(80, "fstat", kResource, kPtr),
1486 MakeEntry(81, "sync"),
1487 MakeEntry(82, "fsync", kResource),
1488 MakeEntry(83, "fdatasync", kResource),
1489 MakeEntry(84, "sync_file_range", kResource, kInt, kInt, kFlags),
1490 MakeEntry(85, "timerfd_create", kFlags, kFlags),
1491 MakeEntry(86, "timerfd_settime", kResource, kFlags, kPtr, kPtr),
1492 MakeEntry(87, "timerfd_gettime", kResource, kPtr),
1493 MakeEntry(88, "utimensat", kResource, kPath, kPtr, kFlags),
1494 MakeEntry(89, "acct", kPath),
1495 MakeEntry(90, "capget", kPtr, kPtr),
1496 MakeEntry(91, "capset", kPtr, kPtr),
1497 MakeEntry(92, "personality", kFlags),
1498 MakeEntry(93, "exit", kInt),
1499 MakeEntry(94, "exit_group", kInt),
1500 MakeEntry(95, "waitid", kFlags, kPid, kPtr, kFlags, kPtr),
1501 MakeEntry(96, "set_tid_address", kPtr),
1502 MakeEntry(97, "unshare", kFlags),
1503 MakeEntry(98, "futex", kPtr, kFlags, kInt, kPtr, kPtr, kInt),
1504 MakeEntry(99, "set_robust_list", kPtr, kLen0),
1505 MakeEntry(100, "get_robust_list", kPid, kPtr, kPtr),
1506 MakeEntry(101, "nanosleep", kPtr, kPtr),
1507 MakeEntry(102, "getitimer", kFlags, kPtr),
1508 MakeEntry(103, "setitimer", kFlags, kPtr, kPtr),
1509 MakeEntry(104, "kexec_load", kInt, kLen2, kArray, kFlags),
1510 MakeEntry(105, "init_module", kString, kLen0, kString),
1511 MakeEntry(106, "delete_module", kString, kFlags),
1512 MakeEntry(107, "timer_create", kFlags, kPtr, kPtr),
1513 MakeEntry(108, "timer_gettime", kStruct, kPtr),
1514 MakeEntry(109, "timer_getoverrun", kStruct),
1515 MakeEntry(110, "timer_settime", kStruct, kFlags, kPtr, kPtr),
1516 MakeEntry(111, "timer_delete", kStruct),
1517 MakeEntry(112, "clock_settime", kFlags, kPtr),
1518 MakeEntry(113, "clock_gettime", kFlags, kPtr),
1519 MakeEntry(114, "clock_getres", kFlags, kPtr),
1520 MakeEntry(115, "clock_nanosleep", kFlags, kFlags, kPtr, kPtr),
1521 MakeEntry(116, "syslog", kFlags, kArray, kLen1),
1522 MakeEntry(117, "ptrace", kFlags, kPid),
1523 MakeEntry(118, "sched_setparam", kPid, kPtr),
1524 MakeEntry(119, "sched_setscheduler", kPid, kFlags, kPtr),
1525 MakeEntry(120, "sched_getscheduler", kPid),
1526 MakeEntry(121, "sched_getparam", kPid, kPtr),
1527 MakeEntry(122, "sched_setaffinity", kPid, kLen2, kPtr),
1528 MakeEntry(123, "sched_getaffinity", kPid, kLen2, kPtr),
1529 MakeEntry(124, "sched_yield"),
1530 MakeEntry(125, "sched_get_priority_max", kInt),
1531 MakeEntry(126, "sched_get_priority_min", kInt),
1532 MakeEntry(127, "sched_rr_get_interval", kPid, kPtr),
1533 MakeEntry(128, "restart_syscall"),
1534 MakeEntry(129, "kill", kPid, kSignal),
1535 MakeEntry(130, "tkill", kPid, kSignal),
1536 MakeEntry(131, "tgkill", kPid, kPid, kSignal),
1537 MakeEntry(132, "sigaltstack", kPtr, kPtr),
1538 MakeEntry(133, "rt_sigsuspend", kPtr, kLen0),
1539 MakeEntry(134, "rt_sigaction", kSignal, kPtr, kPtr, kLen4, kPtr),
1540 MakeEntry(135, "rt_sigprocmask", kFlags, kPtr, kPtr, kLen1),
1541 MakeEntry(136, "rt_sigpending", kPtr, kLen0),
1542 MakeEntry(137, "rt_sigtimedwait", kPtr, kPtr, kPtr, kLen0),
1543 MakeEntry(138, "rt_sigqueueinfo", kPid, kSignal, kPtr),
1544 MakeEntry(139, "rt_sigreturn"),
1545 MakeEntry(140, "setpriority", kFlags, kPid, kInt),
1546 MakeEntry(141, "getpriority", kFlags, kPid),
1547 MakeEntry(142, "reboot", kInt, kInt, kInt, kPtr),
1548 MakeEntry(143, "setregid", kGid, kGid),
1549 MakeEntry(144, "setgid", kGid),
1550 MakeEntry(145, "setreuid", kUid, kUid),
1551 MakeEntry(146, "setuid", kUid),
1552 MakeEntry(147, "setresuid", kUid, kUid, kUid),
1553 MakeEntry(148, "getresuid", kPtr, kPtr, kPtr),
1554 MakeEntry(149, "setresgid", kGid, kGid, kGid),
1555 MakeEntry(150, "getresgid", kPtr, kPtr, kPtr),
1556 MakeEntry(151, "setfsuid", kUid),
1557 MakeEntry(152, "setfsgid", kGid),
1558 MakeEntry(153, "times", kPtr),
1559 MakeEntry(154, "setpgid", kPid, kPid),
1560 MakeEntry(155, "getpgid", kPid),
1561 MakeEntry(156, "getsid", kPid),
1562 MakeEntry(157, "setsid"),
1563 MakeEntry(158, "getgroups", kLen1, kGidArray),
1564 MakeEntry(159, "setgroups", kLen1, kGidArray),
1565 MakeEntry(160, "uname", kArray),
1566 MakeEntry(161, "sethostname", kString, kLen0),
1567 MakeEntry(162, "setdomainname", kString, kLen0),
1568 MakeEntry(163, "getrlimit", kFlags, kPtr),
1569 MakeEntry(164, "setrlimit", kFlags, kPtr),
1570 MakeEntry(165, "getrusage", kFlags, kPtr),
1571 MakeEntry(166, "umask", kFlags),
1572 MakeEntry(167, "prctl", kInt, kInt, kInt, kInt, kInt),
1573 MakeEntry(168, "getcpu", kPtr, kPtr),
1574 MakeEntry(169, "gettimeofday", kPtr, kPtr),
1575 MakeEntry(170, "settimeofday", kPtr, kPtr),
1576 MakeEntry(171, "adjtimex", kArray),
1577 MakeEntry(172, "getpid"),
1578 MakeEntry(173, "getppid"),
1579 MakeEntry(174, "getuid"),
1580 MakeEntry(175, "geteuid"),
1581 MakeEntry(176, "getgid"),
1582 MakeEntry(177, "getegid"),
1583 MakeEntry(178, "gettid"),
1584 MakeEntry(179, "sysinfo", kArray),
1585 MakeEntry(180, "mq_open", kString, kFlags, kFlags, kPtr),
1586 MakeEntry(181, "mq_unlink", kString),
1587 MakeEntry(182, "mq_timedsend", kResource, kArray, kLen1, kInt, kPtr),
1588 MakeEntry(183, "mq_timedreceive", kResource, kArray, kLen1, kInt, kPtr),
1589 MakeEntry(184, "mq_notify", kResource, kPtr),
1590 MakeEntry(185, "mq_getsetattr", kResource, kPtr, kPtr),
1591 MakeEntry(186, "msgget", kIpcResource, kFlags),
1592 MakeEntry(187, "msgctl", kIpcResource, kInt, kArray),
1593 MakeEntry(188, "msgrcv", kIpcResource, kPtr, kLen1, kFlags, kFlags),
1594 MakeEntry(189, "msgsnd", kIpcResource, kPtr, kLen1, kFlags),
1595 MakeEntry(190, "semget", kIpcResource, kFlags, kFlags),
1596 MakeEntry(191, "semctl", kIpcResource, kFlags, kInt, kArray),
1597 MakeEntry(192, "semtimedop", kIpcResource, kArray, kLen1, kPtr),
1598 MakeEntry(193, "semop", kIpcResource, kArray, kLen1),
1599 MakeEntry(194, "shmget", kInt, kLen3, kFlags, kPtr),
1600 MakeEntry(195, "shmctl", kIpcResource, kInt, kArray),
1601 MakeEntry(196, "shmat", kIpcResource, kPtr, kFlags),
1602 MakeEntry(197, "shmdt", kSharedAddress),
1603 MakeEntry(198, "socket", kFlags, kFlags, kInt),
1604 MakeEntry(199, "socketpair", kFlags, kFlags, kInt, kPtr),
1605 MakeEntry(200, "bind", kResource, kSockaddr, kLen1),
1606 MakeEntry(201, "listen", kResource, kInt),
1607 MakeEntry(202, "accept", kResource, kPtr, kPtr),
1608 MakeEntry(203, "connect", kResource, kSockaddr, kLen1),
1609 MakeEntry(204, "getsockname", kResource, kPtr, kPtr),
1610 MakeEntry(205, "getpeername", kResource, kPtr, kPtr),
1611 MakeEntry(206, "sendto", kResource, kArray, kLen1, kFlags, kSockaddr,
1612 kLen4),
1613 MakeEntry(207, "recvfrom", kResource, kArray, kLen1, kFlags, kSockaddr,
1614 kLen4),
1615 MakeEntry(208, "setsockopt", kResource, kInt, kInt, kArray, kLen3),
1616 MakeEntry(209, "getsockopt", kResource, kInt, kInt, kArray, kPtr),
1617 MakeEntry(210, "shutdown", kResource, kFlags),
1618 MakeEntry(211, "sendmsg", kResource, kPtr, kFlags),
1619 MakeEntry(212, "recvmsg", kResource, kPtr, kFlags),
1620 MakeEntry(213, "readahead", kResource, kInt, kInt),
1621 MakeEntry(214, "brk", kInt),
1622 MakeEntry(215, "munmap", kPtr, kLen0),
1623 MakeEntry(216, "mremap", kPtr, kLen0, kLen4, kFlags, kPtr),
1624 MakeEntry(217, "add_key", kString, kPtr, kArray, kLen2, kStruct),
1625 MakeEntry(218, "request_key", kString, kPtr, kString, kStruct),
1626 MakeEntry(219, "keyctl", kInt, kInt, kInt, kInt, kInt),
1627 MakeEntry(220, "clone", kFlags, kArray, kPtr, kPtr, kArray),
1628 MakeEntry(221, "execve", kPath, kArray, kArray),
1629 MakeEntry(222, "mmap", kPtr, kLen0, kFlags, kFlags, kResource, kInt),
1630 MakeEntry(223, "fadvise64", kResource, kInt, kInt, kFlags),
1631 MakeEntry(224, "swapon", kPath, kFlags),
1632 MakeEntry(225, "swapoff", kPath),
1633 MakeEntry(226, "mprotect", kPtr, kLen0, kFlags),
1634 MakeEntry(227, "msync", kPtr, kLen0, kFlags),
1635 MakeEntry(228, "mlock", kPtr, kLen0),
1636 MakeEntry(229, "munlock", kPtr, kLen0),
1637 MakeEntry(230, "mlockall", kFlags),
1638 MakeEntry(231, "munlockall"),
1639 MakeEntry(232, "mincore", kPtr, kLen0, kArray),
1640 MakeEntry(233, "madvise", kPtr, kLen0, kFlags),
1641 MakeEntry(234, "remap_file_pages", kPtr, kLen0, kFlags, kInt, kFlags),
1642 MakeEntry(235, "mbind", kPtr, kLen0, kFlags, kPtr, kInt, kFlags),
1643 MakeEntry(236, "get_mempolicy", kPtr, kPtr, kInt, kPtr, kFlags),
1644 MakeEntry(237, "set_mempolicy", kFlags, kPtr, kInt),
1645 MakeEntry(238, "migrate_pages", kPid, kInt, kPtr, kPtr),
1646 MakeEntry(239, "move_pages", kPid, kLen2, kArray, kArray, kArray, kFlags),
1647 MakeEntry(240, "rt_tgsigqueueinfo", kPid, kPid, kSignal, kPtr),
1648 MakeEntry(241, "perf_event_open", kPtr, kPid, kInt, kResource, kFlags),
1649 MakeEntry(242, "accept4", kResource, kPtr, kPtr, kFlags),
1650 MakeEntry(243, "recvmmsg", kResource, kArray, kLen1, kFlags, kPtr),
1651 MakeEntry(260, "wait4", kPid, kPtr, kFlags, kPtr),
1652 MakeEntry(261, "prlimit64", kPid, kFlags, kPtr, kPtr),
1653 MakeEntry(262, "fanotify_init", kFlags, kFlags),
1654 MakeEntry(263, "fanotify_mark", kResource, kFlags, kFlags, kResource,
1655 kPath),
1656 MakeEntry(264, "name_to_handle_at", kResource, kPath, kPtr, kPtr, kFlags),
1657 MakeEntry(265, "open_by_handle_at", kResource, kPtr, kFlags),
1658 MakeEntry(266, "clock_adjtime", kFlags, kPtr),
1659 MakeEntry(267, "syncfs", kResource),
1660 MakeEntry(268, "setns", kResource, kFlags),
1661 MakeEntry(269, "sendmmsg", kResource, kArray, kLen1, kFlags),
1662 MakeEntry(270, "process_vm_readv", kPid, kArray, kLen1, kArray, kLen3,
1663 kInt),
1664 MakeEntry(271, "process_vm_writev", kPid, kArray, kLen1, kArray, kLen3,
1665 kInt),
1666 MakeEntry(272, "kcmp", kPid, kPid, kFlags, kResource, kResource),
1667 MakeEntry(273, "finit_module", kResource, kString, kFlags),
1668 MakeEntry(274, "sched_setattr", kPid, kPtr, kInt),
1669 MakeEntry(275, "sched_getattr", kPid, kPtr, kLen1, kInt),
1670 MakeEntry(276, "renameat2", kResource, kPath, kResource, kPath, kFlags),
1671 MakeEntry(277, "seccomp", kInt, kFlags, kPtr),
1672 MakeEntry(278, "getrandom", kArray, kLen0, kFlags),
1673 MakeEntry(279, "memfd_create", kString, kFlags),
1674 MakeEntry(280, "bpf", kInt, kPtr, kLen1),
1675 MakeEntry(281, "execveat", kResource, kPath, kArray, kArray, kFlags),
1676 MakeEntry(282, "userfaultfd", kFlags),
1677 MakeEntry(283, "membarrier", kFlags, kInt),
1678 MakeEntry(284, "mlock2", kPtr, kLen0, kFlags),
1679 MakeEntry(285, "copy_file_range", kResource, kPtr, kResource, kPtr, kInt,
1680 kFlags),
1681 MakeEntry(286, "preadv2", kResource, kArray, kLen1, kInt, kInt, kFlags),
1682 MakeEntry(287, "pwritev2", kResource, kArray, kLen1, kInt, kInt, kFlags),
1683 MakeEntry(435, "clone3", kPtr, kLen0),
1684 MakeEntry(436, "close_range", kResource, kResource, kFlags),
1685 MakeEntry(437, "openat2", kResource, kPath, kPtr, kLen2),
1686 MakeEntry(438, "pidfd_getfd", kResource, kResource, kInt),
1687 MakeEntry(439, "faccessat2", kResource, kPath, kFlags, kFlags),
1688 MakeEntry(440, "process_madvise", kResource, kArray, kLen1, kFlags, kInt),
1689 MakeEntry(441, "epoll_pwait2", kResource, kArray, kLen1, kPtr, kPtr, kLen4),
1690 MakeEntry(442, "mount_setattr", kResource, kPath, kFlags, kPtr, kLen3),
1691 MakeEntry(443, "quotactl_fd", UnknownArguments()),
1692 MakeEntry(444, "landlock_create_ruleset", kPtr, kLen0, kInt),
1693 MakeEntry(445, "landlock_add_rule", kResource, kInt, kPtr, kInt),
1694 MakeEntry(446, "landlock_restrict_self", kResource, kInt),
1695 MakeEntry(448, "process_mrelease", kResource, kInt),
1696 MakeEntry(449, "futex_waitv", kArray, kLen0, kInt, kPtr, kFlags),
1697 MakeEntry(450, "set_mempolicy_home_node", kPtr, kLen0, kInt, kInt),
1698 MakeEntry(451, "cachestat", kResource, kPtr, kPtr, kInt),
1699 MakeEntry(452, "fchmodat2", kInt, kPath, kInt, kInt),
1700 MakeEntry(453, "map_shadow_stack", kPtr, kLen0, kFlags),
1701 MakeEntry(454, "futex_wake", UnknownArguments()),
1702 MakeEntry(455, "futex_wait", UnknownArguments()),
1703 MakeEntry(456, "futex_requeue", UnknownArguments()),
1704 MakeEntry(457, "statmount", UnknownArguments()),
1705 MakeEntry(458, "listmount", UnknownArguments()),
1706 MakeEntry(459, "lsm_get_self_attr", UnknownArguments()),
1707 MakeEntry(460, "lsm_set_self_attr", UnknownArguments()),
1708 MakeEntry(461, "lsm_list_modules", UnknownArguments()),
1709 // clang-format on
1710 };
1711
1712 static_assert(IsSorted(kSyscallDataArm64, SyscallTable::Entry::BySyscallNr),
1713 "Syscalls should be sorted");
1714
1715 constexpr std::array kSyscallDataArm32 = {
1716 // clang-format off
1717 MakeEntry(0, "restart_syscall"),
1718 MakeEntry(1, "exit", kInt),
1719 MakeEntry(2, "fork"),
1720 MakeEntry(3, "read", kResource, kArray, kLen1),
1721 MakeEntry(4, "write", kResource, kArray, kLen1),
1722 MakeEntry(5, "open", kPath, kFlags, kFlags),
1723 MakeEntry(6, "close", kResource),
1724 MakeEntry(8, "creat", kPath, kFlags),
1725 MakeEntry(9, "link", kPath, kPath),
1726 MakeEntry(10, "unlink", kPath),
1727 MakeEntry(11, "execve", kPath, kArray, kArray),
1728 MakeEntry(12, "chdir", kPath),
1729 MakeEntry(14, "mknod", kPath, kFlags, kInt),
1730 MakeEntry(15, "chmod", kPath, kFlags),
1731 MakeEntry(16, "lchown", kPath, kUid, kGid),
1732 MakeEntry(19, "lseek", kResource, kInt, kFlags),
1733 MakeEntry(20, "getpid"),
1734 MakeEntry(21, "mount", kPtr, kPath, kString, kFlags, kString),
1735 MakeEntry(23, "setuid", kUid),
1736 MakeEntry(24, "getuid"),
1737 MakeEntry(26, "ptrace", kFlags, kPid),
1738 MakeEntry(29, "pause"),
1739 MakeEntry(33, "access", kPath, kInt),
1740 MakeEntry(34, "nice", kInt, kInt, kInt, kInt),
1741 MakeEntry(36, "sync"),
1742 MakeEntry(37, "kill", kPid, kSignal),
1743 MakeEntry(38, "rename", kPath, kPath),
1744 MakeEntry(39, "mkdir", kPath, kFlags),
1745 MakeEntry(40, "rmdir", kPath),
1746 MakeEntry(41, "dup", kResource),
1747 MakeEntry(42, "pipe", kPtr),
1748 MakeEntry(43, "times", kPtr),
1749 MakeEntry(45, "brk", kInt),
1750 MakeEntry(46, "setgid", kGid),
1751 MakeEntry(47, "getgid"),
1752 MakeEntry(49, "geteuid"),
1753 MakeEntry(50, "getegid"),
1754 MakeEntry(51, "acct", kPath),
1755 MakeEntry(52, "umount2", kPath, kFlags),
1756 MakeEntry(54, "ioctl", kResource, kInt, kArray),
1757 MakeEntry(55, "fcntl", kResource, kFlags, kResource),
1758 MakeEntry(57, "setpgid", kPid, kPid),
1759 MakeEntry(60, "umask", kFlags),
1760 MakeEntry(61, "chroot", kPath),
1761 MakeEntry(62, "ustat", kInt, kPtr),
1762 MakeEntry(63, "dup2", kResource, kResource),
1763 MakeEntry(64, "getppid"),
1764 MakeEntry(65, "getpgrp", kPid),
1765 MakeEntry(66, "setsid"),
1766 MakeEntry(67, "sigaction", kInt, kInt, kInt, kInt),
1767 MakeEntry(70, "setreuid", kUid, kUid),
1768 MakeEntry(71, "setregid", kGid, kGid),
1769 MakeEntry(72, "sigsuspend", kInt, kInt, kInt, kInt),
1770 MakeEntry(73, "sigpending", kInt, kInt, kInt, kInt),
1771 MakeEntry(74, "sethostname", kString, kLen0),
1772 MakeEntry(75, "setrlimit", kFlags, kPtr),
1773 MakeEntry(77, "getrusage", kFlags, kPtr),
1774 MakeEntry(78, "gettimeofday", kPtr, kPtr),
1775 MakeEntry(79, "settimeofday", kPtr, kPtr),
1776 MakeEntry(80, "getgroups", kLen1, kGidArray),
1777 MakeEntry(81, "setgroups", kLen1, kGidArray),
1778 MakeEntry(83, "symlink", kPath, kPath),
1779 MakeEntry(85, "readlink", kPath, kArray, kLen1),
1780 MakeEntry(86, "uselib", kPath),
1781 MakeEntry(87, "swapon", kPath, kFlags),
1782 MakeEntry(88, "reboot", kInt, kInt, kInt, kPtr),
1783 MakeEntry(91, "munmap", kPtr, kLen0),
1784 MakeEntry(92, "truncate", kPath, kInt),
1785 MakeEntry(93, "ftruncate", kResource, kInt),
1786 MakeEntry(94, "fchmod", kResource, kFlags),
1787 MakeEntry(95, "fchown", kResource, kUid, kGid),
1788 MakeEntry(96, "getpriority", kFlags, kPid),
1789 MakeEntry(97, "setpriority", kFlags, kPid, kInt),
1790 MakeEntry(99, "statfs", kPath, kArray),
1791 MakeEntry(100, "fstatfs", kResource, kArray),
1792 MakeEntry(103, "syslog", kFlags, kArray, kLen1),
1793 MakeEntry(104, "setitimer", kFlags, kPtr, kPtr),
1794 MakeEntry(105, "getitimer", kFlags, kPtr),
1795 MakeEntry(106, "stat", kPath, kPtr),
1796 MakeEntry(107, "lstat", kPath, kPtr),
1797 MakeEntry(108, "fstat", kResource, kPtr),
1798 MakeEntry(111, "vhangup"),
1799 MakeEntry(114, "wait4", kPid, kPtr, kFlags, kPtr),
1800 MakeEntry(115, "swapoff", kPath),
1801 MakeEntry(116, "sysinfo", kArray),
1802 MakeEntry(118, "fsync", kResource),
1803 MakeEntry(119, "sigreturn", kInt, kInt, kInt, kInt),
1804 MakeEntry(120, "clone", kFlags, kArray, kPtr, kPtr, kArray),
1805 MakeEntry(121, "setdomainname", kString, kLen0),
1806 MakeEntry(122, "uname", kArray),
1807 MakeEntry(124, "adjtimex", kArray),
1808 MakeEntry(125, "mprotect", kPtr, kLen0, kFlags),
1809 MakeEntry(126, "sigprocmask", kInt, kInt, kInt, kInt),
1810 MakeEntry(128, "init_module", kString, kLen0, kString),
1811 MakeEntry(129, "delete_module", kString, kFlags),
1812 MakeEntry(131, "quotactl", kInt, kInt, kInt, kInt),
1813 MakeEntry(132, "getpgid", kPid),
1814 MakeEntry(133, "fchdir", kResource),
1815 MakeEntry(134, "bdflush", kInt, kInt, kInt, kInt),
1816 MakeEntry(135, "sysfs", kInt, kString),
1817 MakeEntry(136, "personality", kFlags),
1818 MakeEntry(138, "setfsuid", kUid),
1819 MakeEntry(139, "setfsgid", kGid),
1820 MakeEntry(140, "_llseek", kInt, kInt, kInt, kInt),
1821 MakeEntry(141, "getdents", kResource, kArray, kLen1),
1822 MakeEntry(142, "_newselect", kInt, kInt, kInt, kInt),
1823 MakeEntry(143, "flock", kResource, kFlags),
1824 MakeEntry(144, "msync", kPtr, kLen0, kFlags),
1825 MakeEntry(145, "readv", kResource, kArray, kLen1),
1826 MakeEntry(146, "writev", kResource, kArray, kLen1),
1827 MakeEntry(147, "getsid", kPid),
1828 MakeEntry(148, "fdatasync", kResource),
1829 MakeEntry(149, "_sysctl", kPtr),
1830 MakeEntry(150, "mlock", kPtr, kLen0),
1831 MakeEntry(151, "munlock", kPtr, kLen0),
1832 MakeEntry(152, "mlockall", kFlags),
1833 MakeEntry(153, "munlockall"),
1834 MakeEntry(154, "sched_setparam", kPid, kPtr),
1835 MakeEntry(155, "sched_getparam", kPid, kPtr),
1836 MakeEntry(156, "sched_setscheduler", kPid, kFlags, kPtr),
1837 MakeEntry(157, "sched_getscheduler", kPid),
1838 MakeEntry(158, "sched_yield"),
1839 MakeEntry(159, "sched_get_priority_max", kInt),
1840 MakeEntry(160, "sched_get_priority_min", kInt),
1841 MakeEntry(161, "sched_rr_get_interval", kPid, kPtr),
1842 MakeEntry(162, "nanosleep", kPtr, kPtr),
1843 MakeEntry(163, "mremap", kPtr, kLen0, kLen4, kFlags, kPtr),
1844 MakeEntry(164, "setresuid", kUid, kUid, kUid),
1845 MakeEntry(165, "getresuid", kPtr, kPtr, kPtr),
1846 MakeEntry(168, "poll", kPollFdArray, kLen0, kInt),
1847 MakeEntry(169, "nfsservctl", kInt, kPtr, kPtr),
1848 MakeEntry(170, "setresgid", kGid, kGid, kGid),
1849 MakeEntry(171, "getresgid", kPtr, kPtr, kPtr),
1850 MakeEntry(172, "prctl", kInt, kInt, kInt, kInt, kInt),
1851 MakeEntry(173, "rt_sigreturn"),
1852 MakeEntry(174, "rt_sigaction", kSignal, kPtr, kPtr, kLen4, kPtr),
1853 MakeEntry(175, "rt_sigprocmask", kFlags, kPtr, kPtr, kLen1),
1854 MakeEntry(176, "rt_sigpending", kPtr, kLen0),
1855 MakeEntry(177, "rt_sigtimedwait", kPtr, kPtr, kPtr, kLen0),
1856 MakeEntry(178, "rt_sigqueueinfo", kPid, kSignal, kPtr),
1857 MakeEntry(179, "rt_sigsuspend", kPtr, kLen0),
1858 MakeEntry(180, "pread64", kResource, kArray, kLen1, kInt),
1859 MakeEntry(181, "pwrite64", kResource, kArray, kLen1, kInt),
1860 MakeEntry(182, "chown", kPath, kUid, kGid),
1861 MakeEntry(183, "getcwd", kArray, kLen0),
1862 MakeEntry(184, "capget", kPtr, kPtr),
1863 MakeEntry(185, "capset", kPtr, kPtr),
1864 MakeEntry(186, "sigaltstack", kPtr, kPtr),
1865 MakeEntry(187, "sendfile", kResource, kResource, kPtr, kInt),
1866 MakeEntry(190, "vfork"),
1867 MakeEntry(191, "ugetrlimit", kInt, kInt, kInt, kInt),
1868 MakeEntry(192, "mmap2", kInt, kInt, kInt, kInt),
1869 MakeEntry(193, "truncate64", kInt, kInt, kInt, kInt),
1870 MakeEntry(194, "ftruncate64", kInt, kInt, kInt, kInt),
1871 MakeEntry(195, "stat64", kPath, kPtr),
1872 MakeEntry(196, "lstat64", kPath, kPtr),
1873 MakeEntry(197, "fstat64", kResource, kPtr),
1874 MakeEntry(198, "lchown32", kInt, kInt, kInt, kInt),
1875 MakeEntry(199, "getuid32", kInt, kInt, kInt, kInt),
1876 MakeEntry(200, "getgid32", kInt, kInt, kInt, kInt),
1877 MakeEntry(201, "geteuid32", kInt, kInt, kInt, kInt),
1878 MakeEntry(202, "getegid32", kInt, kInt, kInt, kInt),
1879 MakeEntry(203, "setreuid32", kInt, kInt, kInt, kInt),
1880 MakeEntry(204, "setregid32", kInt, kInt, kInt, kInt),
1881 MakeEntry(205, "getgroups32", kInt, kInt, kInt, kInt),
1882 MakeEntry(206, "setgroups32", kInt, kInt, kInt, kInt),
1883 MakeEntry(207, "fchown32", kInt, kInt, kInt, kInt),
1884 MakeEntry(208, "setresuid32", kInt, kInt, kInt, kInt),
1885 MakeEntry(209, "getresuid32", kInt, kInt, kInt, kInt),
1886 MakeEntry(210, "setresgid32", kInt, kInt, kInt, kInt),
1887 MakeEntry(211, "getresgid32", kInt, kInt, kInt, kInt),
1888 MakeEntry(212, "chown32", kInt, kInt, kInt, kInt),
1889 MakeEntry(213, "setuid32", kInt, kInt, kInt, kInt),
1890 MakeEntry(214, "setgid32", kInt, kInt, kInt, kInt),
1891 MakeEntry(215, "setfsuid32", kInt, kInt, kInt, kInt),
1892 MakeEntry(216, "setfsgid32", kInt, kInt, kInt, kInt),
1893 MakeEntry(217, "getdents64", kResource, kArray, kLen1),
1894 MakeEntry(218, "pivot_root", kPath, kPath),
1895 MakeEntry(219, "mincore", kPtr, kLen0, kArray),
1896 MakeEntry(220, "madvise", kPtr, kLen0, kFlags),
1897 MakeEntry(221, "fcntl64", kInt, kInt, kInt, kInt),
1898 MakeEntry(224, "gettid"),
1899 MakeEntry(225, "readahead", kResource, kInt, kInt),
1900 MakeEntry(226, "setxattr", kPath, kPtr, kString, kLen2, kFlags),
1901 MakeEntry(227, "lsetxattr", kPath, kPtr, kString, kLen2, kFlags),
1902 MakeEntry(228, "fsetxattr", kResource, kPtr, kString, kLen2, kFlags),
1903 MakeEntry(229, "getxattr", kPath, kPtr, kArray, kLen2),
1904 MakeEntry(230, "lgetxattr", kPath, kPtr, kArray, kLen2),
1905 MakeEntry(231, "fgetxattr", kResource, kPtr, kArray, kLen2),
1906 MakeEntry(232, "listxattr", kPath, kArray, kLen1),
1907 MakeEntry(233, "llistxattr", kPath, kArray, kLen1),
1908 MakeEntry(234, "flistxattr", kResource, kArray, kLen1),
1909 MakeEntry(235, "removexattr", kPath, kPtr),
1910 MakeEntry(236, "lremovexattr", kPath, kPtr),
1911 MakeEntry(237, "fremovexattr", kResource, kPtr),
1912 MakeEntry(238, "tkill", kPid, kSignal),
1913 MakeEntry(239, "sendfile64", kResource, kResource, kPtr, kInt),
1914 MakeEntry(240, "futex", kPtr, kFlags, kInt, kPtr, kPtr, kInt),
1915 MakeEntry(241, "sched_setaffinity", kPid, kLen2, kPtr),
1916 MakeEntry(242, "sched_getaffinity", kPid, kLen2, kPtr),
1917 MakeEntry(243, "io_setup", kInt, kPtr),
1918 MakeEntry(244, "io_destroy", kStruct),
1919 MakeEntry(245, "io_getevents", kStruct, kInt, kLen3, kArray, kPtr),
1920 MakeEntry(246, "io_submit", kStruct, kLen2, kArray),
1921 MakeEntry(247, "io_cancel", kStruct, kPtr, kPtr),
1922 MakeEntry(248, "exit_group", kInt),
1923 MakeEntry(249, "lookup_dcookie", kInt, kArray, kLen1),
1924 MakeEntry(250, "epoll_create", kInt),
1925 MakeEntry(251, "epoll_ctl", kResource, kInt, kResource, kPtr),
1926 MakeEntry(252, "epoll_wait", kResource, kArray, kLen1, kInt),
1927 MakeEntry(253, "remap_file_pages", kPtr, kLen0, kFlags, kInt, kFlags),
1928 MakeEntry(256, "set_tid_address", kPtr),
1929 MakeEntry(257, "timer_create", kFlags, kPtr, kPtr),
1930 MakeEntry(258, "timer_settime", kStruct, kFlags, kPtr, kPtr),
1931 MakeEntry(259, "timer_gettime", kStruct, kPtr),
1932 MakeEntry(260, "timer_getoverrun", kStruct),
1933 MakeEntry(261, "timer_delete", kStruct),
1934 MakeEntry(262, "clock_settime", kFlags, kPtr),
1935 MakeEntry(263, "clock_gettime", kFlags, kPtr),
1936 MakeEntry(264, "clock_getres", kFlags, kPtr),
1937 MakeEntry(265, "clock_nanosleep", kFlags, kFlags, kPtr, kPtr),
1938 MakeEntry(266, "statfs64", kInt, kInt, kInt, kInt),
1939 MakeEntry(267, "fstatfs64", kInt, kInt, kInt, kInt),
1940 MakeEntry(268, "tgkill", kPid, kPid, kSignal),
1941 MakeEntry(269, "utimes", kPath, kPtr),
1942 MakeEntry(271, "pciconfig_iobase", kInt, kInt, kInt, kInt),
1943 MakeEntry(272, "pciconfig_read", kInt, kInt, kInt, kInt),
1944 MakeEntry(273, "pciconfig_write", kInt, kInt, kInt, kInt),
1945 MakeEntry(274, "mq_open", kString, kFlags, kFlags, kPtr),
1946 MakeEntry(275, "mq_unlink", kString),
1947 MakeEntry(276, "mq_timedsend", kResource, kArray, kLen1, kInt, kPtr),
1948 MakeEntry(277, "mq_timedreceive", kResource, kArray, kLen1, kInt, kPtr),
1949 MakeEntry(278, "mq_notify", kResource, kPtr),
1950 MakeEntry(279, "mq_getsetattr", kResource, kPtr, kPtr),
1951 MakeEntry(280, "waitid", kFlags, kPid, kPtr, kFlags, kPtr),
1952 MakeEntry(281, "socket", kFlags, kFlags, kInt),
1953 MakeEntry(282, "bind", kResource, kSockaddr, kLen1),
1954 MakeEntry(283, "connect", kResource, kSockaddr, kLen1),
1955 MakeEntry(284, "listen", kResource, kInt),
1956 MakeEntry(285, "accept", kResource, kPtr, kPtr),
1957 MakeEntry(286, "getsockname", kResource, kPtr, kPtr),
1958 MakeEntry(287, "getpeername", kResource, kPtr, kPtr),
1959 MakeEntry(288, "socketpair", kFlags, kFlags, kInt, kPtr),
1960 MakeEntry(289, "send", kInt, kInt, kInt, kInt),
1961 MakeEntry(290, "sendto", kResource, kArray, kLen1, kFlags, kSockaddr,
1962 kLen4),
1963 MakeEntry(291, "recv", kInt, kInt, kInt, kInt),
1964 MakeEntry(292, "recvfrom", kResource, kArray, kLen1, kFlags, kSockaddr,
1965 kLen4),
1966 MakeEntry(293, "shutdown", kResource, kFlags),
1967 MakeEntry(294, "setsockopt", kResource, kInt, kInt, kArray, kLen3),
1968 MakeEntry(295, "getsockopt", kResource, kInt, kInt, kArray, kPtr),
1969 MakeEntry(296, "sendmsg", kResource, kPtr, kFlags),
1970 MakeEntry(297, "recvmsg", kResource, kPtr, kFlags),
1971 MakeEntry(298, "semop", kIpcResource, kArray, kLen1),
1972 MakeEntry(299, "semget", kIpcResource, kFlags, kFlags),
1973 MakeEntry(300, "semctl", kIpcResource, kFlags, kInt, kArray),
1974 MakeEntry(301, "msgsnd", kIpcResource, kPtr, kLen1, kFlags),
1975 MakeEntry(302, "msgrcv", kIpcResource, kPtr, kLen1, kFlags, kFlags),
1976 MakeEntry(303, "msgget", kIpcResource, kFlags),
1977 MakeEntry(304, "msgctl", kIpcResource, kInt, kArray),
1978 MakeEntry(305, "shmat", kIpcResource, kPtr, kFlags),
1979 MakeEntry(306, "shmdt", kSharedAddress),
1980 MakeEntry(307, "shmget", kInt, kLen3, kFlags, kPtr),
1981 MakeEntry(308, "shmctl", kIpcResource, kInt, kArray),
1982 MakeEntry(309, "add_key", kString, kPtr, kArray, kLen2, kStruct),
1983 MakeEntry(310, "request_key", kString, kPtr, kString, kStruct),
1984 MakeEntry(311, "keyctl", kInt, kInt, kInt, kInt, kInt),
1985 MakeEntry(312, "semtimedop", kIpcResource, kArray, kLen1, kPtr),
1986 MakeEntry(313, "vserver", kInt, kInt, kInt, kInt),
1987 MakeEntry(314, "ioprio_set", kFlags, kPid, kFlags),
1988 MakeEntry(315, "ioprio_get", kFlags, kUid),
1989 MakeEntry(316, "inotify_init"),
1990 MakeEntry(317, "inotify_add_watch", kResource, kPath, kFlags),
1991 MakeEntry(318, "inotify_rm_watch", kResource, kResource),
1992 MakeEntry(319, "mbind", kPtr, kLen0, kFlags, kPtr, kInt, kFlags),
1993 MakeEntry(320, "get_mempolicy", kPtr, kPtr, kInt, kPtr, kFlags),
1994 MakeEntry(321, "set_mempolicy", kFlags, kPtr, kInt),
1995 MakeEntry(322, "openat", kResource, kPath, kFlags, kFlags),
1996 MakeEntry(323, "mkdirat", kResource, kPath, kFlags),
1997 MakeEntry(324, "mknodat", kResource, kPath, kFlags, kInt),
1998 MakeEntry(325, "fchownat", kResource, kPath, kUid, kGid, kFlags),
1999 MakeEntry(326, "futimesat", kResource, kPath, kPtr),
2000 MakeEntry(327, "fstatat64", kInt, kPath, kPtr, kFlags),
2001 MakeEntry(328, "unlinkat", kResource, kPath, kFlags),
2002 MakeEntry(329, "renameat", kResource, kPath, kResource, kPath),
2003 MakeEntry(330, "linkat", kResource, kPath, kResource, kPath, kFlags),
2004 MakeEntry(331, "symlinkat", kPath, kResource, kPath),
2005 MakeEntry(332, "readlinkat", kResource, kPath, kArray, kLen2),
2006 MakeEntry(333, "fchmodat", kResource, kPath, kFlags),
2007 MakeEntry(334, "faccessat", kResource, kPath, kFlags),
2008 MakeEntry(335, "pselect6", kLen1, kPtr, kPtr, kPtr, kPtr, kPtr),
2009 MakeEntry(336, "ppoll", kPollFdArray, kLen0, kPtr, kPtr, kLen3),
2010 MakeEntry(337, "unshare", kFlags),
2011 MakeEntry(338, "set_robust_list", kPtr, kLen0),
2012 MakeEntry(339, "get_robust_list", kPid, kPtr, kPtr),
2013 MakeEntry(340, "splice", kResource, kPtr, kResource, kPtr, kInt, kFlags),
2014 MakeEntry(342, "tee", kResource, kResource, kInt, kFlags),
2015 MakeEntry(343, "vmsplice", kResource, kArray, kLen1, kFlags),
2016 MakeEntry(344, "move_pages", kPid, kLen2, kArray, kArray, kArray, kFlags),
2017 MakeEntry(345, "getcpu", kPtr, kPtr),
2018 MakeEntry(346, "epoll_pwait", kResource, kArray, kLen1, kInt, kPtr, kLen4),
2019 MakeEntry(347, "kexec_load", kInt, kLen2, kArray, kFlags),
2020 MakeEntry(348, "utimensat", kResource, kPath, kPtr, kFlags),
2021 MakeEntry(349, "signalfd", kResource, kPtr, kLen1),
2022 MakeEntry(350, "timerfd_create", kFlags, kFlags),
2023 MakeEntry(351, "eventfd", kInt),
2024 MakeEntry(352, "fallocate", kResource, kFlags, kInt, kInt),
2025 MakeEntry(353, "timerfd_settime", kResource, kFlags, kPtr, kPtr),
2026 MakeEntry(354, "timerfd_gettime", kResource, kPtr),
2027 MakeEntry(355, "signalfd4", kResource, kPtr, kLen1, kFlags),
2028 MakeEntry(356, "eventfd2", kInt, kFlags),
2029 MakeEntry(357, "epoll_create1", kFlags),
2030 MakeEntry(358, "dup3", kResource, kResource, kFlags),
2031 MakeEntry(359, "pipe2", kPtr, kFlags),
2032 MakeEntry(360, "inotify_init1", kFlags),
2033 MakeEntry(361, "preadv", kResource, kArray, kLen1, kInt, kInt),
2034 MakeEntry(362, "pwritev", kResource, kArray, kLen1, kInt, kInt),
2035 MakeEntry(363, "rt_tgsigqueueinfo", kPid, kPid, kSignal, kPtr),
2036 MakeEntry(364, "perf_event_open", kPtr, kPid, kInt, kResource, kFlags),
2037 MakeEntry(365, "recvmmsg", kResource, kArray, kLen1, kFlags, kPtr),
2038 MakeEntry(366, "accept4", kResource, kPtr, kPtr, kFlags),
2039 MakeEntry(367, "fanotify_init", kFlags, kFlags),
2040 MakeEntry(368, "fanotify_mark", kResource, kFlags, kFlags, kResource,
2041 kPath),
2042 MakeEntry(369, "prlimit64", kPid, kFlags, kPtr, kPtr),
2043 MakeEntry(370, "name_to_handle_at", kResource, kPath, kPtr, kPtr, kFlags),
2044 MakeEntry(371, "open_by_handle_at", kResource, kPtr, kFlags),
2045 MakeEntry(372, "clock_adjtime", kFlags, kPtr),
2046 MakeEntry(373, "syncfs", kResource),
2047 MakeEntry(374, "sendmmsg", kResource, kArray, kLen1, kFlags),
2048 MakeEntry(375, "setns", kResource, kFlags),
2049 MakeEntry(376, "process_vm_readv", kPid, kArray, kLen1, kArray, kLen3,
2050 kInt),
2051 MakeEntry(377, "process_vm_writev", kPid, kArray, kLen1, kArray, kLen3,
2052 kInt),
2053 MakeEntry(378, "kcmp", kPid, kPid, kFlags, kResource, kResource),
2054 MakeEntry(379, "finit_module", kResource, kString, kFlags),
2055 MakeEntry(380, "sched_setattr", kPid, kPtr, kInt),
2056 MakeEntry(381, "sched_getattr", kPid, kPtr, kLen1, kInt),
2057 MakeEntry(382, "renameat2", kResource, kPath, kResource, kPath, kFlags),
2058 MakeEntry(383, "seccomp", kInt, kFlags, kPtr),
2059 MakeEntry(384, "getrandom", kArray, kLen0, kFlags),
2060 MakeEntry(385, "memfd_create", kString, kFlags),
2061 MakeEntry(386, "bpf", kInt, kPtr, kLen1),
2062 MakeEntry(387, "execveat", kResource, kPath, kArray, kArray, kFlags),
2063 MakeEntry(388, "userfaultfd", kFlags),
2064 MakeEntry(389, "membarrier", kFlags, kInt),
2065 MakeEntry(390, "mlock2", kPtr, kLen0, kFlags),
2066 MakeEntry(391, "copy_file_range", kResource, kPtr, kResource, kPtr, kInt,
2067 kFlags),
2068 MakeEntry(392, "preadv2", kResource, kArray, kLen1, kInt, kInt, kFlags),
2069 MakeEntry(393, "pwritev2", kResource, kArray, kLen1, kInt, kInt, kFlags),
2070 MakeEntry(400, "migrate_pages", kPid, kInt, kPtr, kPtr),
2071 MakeEntry(401, "kexec_file_load", kInt, kInt, kInt, kString, kInt),
2072 MakeEntry(435, "clone3", kPtr, kLen0),
2073 MakeEntry(436, "close_range", kResource, kResource, kFlags),
2074 MakeEntry(437, "openat2", kResource, kPath, kPtr, kLen2),
2075 MakeEntry(438, "pidfd_getfd", kResource, kResource, kInt),
2076 MakeEntry(439, "faccessat2", kResource, kPath, kFlags, kFlags),
2077 MakeEntry(440, "process_madvise", kResource, kArray, kLen1, kFlags, kInt),
2078 MakeEntry(441, "epoll_pwait2", kResource, kArray, kLen1, kPtr, kPtr, kLen4),
2079 MakeEntry(442, "mount_setattr", kResource, kPath, kFlags, kPtr, kLen3),
2080 MakeEntry(443, "quotactl_fd", UnknownArguments()),
2081 MakeEntry(444, "landlock_create_ruleset", kPtr, kLen0, kInt),
2082 MakeEntry(445, "landlock_add_rule", kResource, kInt, kPtr, kInt),
2083 MakeEntry(446, "landlock_restrict_self", kResource, kInt),
2084 MakeEntry(448, "process_mrelease", kResource, kInt),
2085 MakeEntry(449, "futex_waitv", kArray, kLen0, kInt, kPtr, kFlags),
2086 MakeEntry(450, "set_mempolicy_home_node", kPtr, kLen0, kInt, kInt),
2087 MakeEntry(451, "cachestat", kResource, kPtr, kPtr, kInt),
2088 MakeEntry(452, "fchmodat2", kInt, kPath, kInt, kInt),
2089 MakeEntry(453, "map_shadow_stack", kPtr, kLen0, kFlags),
2090 MakeEntry(454, "futex_wake", UnknownArguments()),
2091 MakeEntry(455, "futex_wait", UnknownArguments()),
2092 MakeEntry(456, "futex_requeue", UnknownArguments()),
2093 MakeEntry(457, "statmount", UnknownArguments()),
2094 MakeEntry(458, "listmount", UnknownArguments()),
2095 MakeEntry(459, "lsm_get_self_attr", UnknownArguments()),
2096 MakeEntry(460, "lsm_set_self_attr", UnknownArguments()),
2097 MakeEntry(461, "lsm_list_modules", UnknownArguments()),
2098 MakeEntry(0xf0001, "ARM_breakpoint", UnknownArguments()),
2099 MakeEntry(0xf0002, "ARM_cacheflush", UnknownArguments()),
2100 MakeEntry(0xf0003, "ARM_usr26", UnknownArguments()),
2101 MakeEntry(0xf0004, "ARM_usr32", UnknownArguments()),
2102 MakeEntry(0xf0005, "ARM_set_tls", UnknownArguments()),
2103 // clang-format on
2104 };
2105
2106 static_assert(IsSorted(kSyscallDataArm32, SyscallTable::Entry::BySyscallNr),
2107 "Syscalls should be sorted");
2108
2109 } // namespace
2110 } // namespace syscalls
2111
get(sapi::cpu::Architecture arch)2112 SyscallTable SyscallTable::get(sapi::cpu::Architecture arch) {
2113 switch (arch) {
2114 case sapi::cpu::kX8664:
2115 return SyscallTable(syscalls::kSyscallDataX8664);
2116 case sapi::cpu::kX86:
2117 return SyscallTable(syscalls::kSyscallDataX8632);
2118 case sapi::cpu::kPPC64LE:
2119 return SyscallTable(syscalls::kSyscallDataPPC64LE);
2120 case sapi::cpu::kArm64:
2121 return SyscallTable(syscalls::kSyscallDataArm64);
2122 case sapi::cpu::kArm:
2123 return SyscallTable(syscalls::kSyscallDataArm32);
2124 default:
2125 return SyscallTable();
2126 }
2127 }
2128
2129 } // namespace sandbox2
2130