github.com/SagerNet/gvisor@v0.0.0-20210707092255-7731c139d75c/pkg/sentry/strace/linux64_arm64.go (about) 1 // Copyright 2019 The gVisor Authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 // +build arm64 16 17 package strace 18 19 import ( 20 "github.com/SagerNet/gvisor/pkg/abi" 21 "github.com/SagerNet/gvisor/pkg/sentry/arch" 22 ) 23 24 // linuxARM64 provides a mapping of the Linux arm64 syscalls and their argument 25 // types for display / formatting. 26 var linuxARM64 = SyscallMap{ 27 0: makeSyscallInfo("io_setup", Hex, Hex), 28 1: makeSyscallInfo("io_destroy", Hex), 29 2: makeSyscallInfo("io_submit", Hex, Hex, Hex), 30 3: makeSyscallInfo("io_cancel", Hex, Hex, Hex), 31 4: makeSyscallInfo("io_getevents", Hex, Hex, Hex, Hex, Timespec), 32 5: makeSyscallInfo("setxattr", Path, Path, Hex, Hex, Hex), 33 6: makeSyscallInfo("lsetxattr", Path, Path, Hex, Hex, Hex), 34 7: makeSyscallInfo("fsetxattr", FD, Path, Hex, Hex, Hex), 35 8: makeSyscallInfo("getxattr", Path, Path, Hex, Hex), 36 9: makeSyscallInfo("lgetxattr", Path, Path, Hex, Hex), 37 10: makeSyscallInfo("fgetxattr", FD, Path, Hex, Hex), 38 11: makeSyscallInfo("listxattr", Path, Path, Hex), 39 12: makeSyscallInfo("llistxattr", Path, Path, Hex), 40 13: makeSyscallInfo("flistxattr", FD, Path, Hex), 41 14: makeSyscallInfo("removexattr", Path, Path), 42 15: makeSyscallInfo("lremovexattr", Path, Path), 43 16: makeSyscallInfo("fremovexattr", FD, Path), 44 17: makeSyscallInfo("getcwd", PostPath, Hex), 45 18: makeSyscallInfo("lookup_dcookie", Hex, Hex, Hex), 46 19: makeSyscallInfo("eventfd2", Hex, Hex), 47 20: makeSyscallInfo("epoll_create1", Hex), 48 21: makeSyscallInfo("epoll_ctl", FD, EpollCtlOp, FD, EpollEvent), 49 22: makeSyscallInfo("epoll_pwait", FD, EpollEvents, Hex, Hex, SigSet, Hex), 50 23: makeSyscallInfo("dup", FD), 51 24: makeSyscallInfo("dup3", FD, FD, Hex), 52 25: makeSyscallInfo("fcntl", FD, Hex, Hex), 53 26: makeSyscallInfo("inotify_init1", Hex), 54 27: makeSyscallInfo("inotify_add_watch", Hex, Path, Hex), 55 28: makeSyscallInfo("inotify_rm_watch", Hex, Hex), 56 29: makeSyscallInfo("ioctl", FD, Hex, Hex), 57 30: makeSyscallInfo("ioprio_set", Hex, Hex, Hex), 58 31: makeSyscallInfo("ioprio_get", Hex, Hex), 59 32: makeSyscallInfo("flock", FD, Hex), 60 33: makeSyscallInfo("mknodat", FD, Path, Mode, Hex), 61 34: makeSyscallInfo("mkdirat", FD, Path, Hex), 62 35: makeSyscallInfo("unlinkat", FD, Path, Hex), 63 36: makeSyscallInfo("symlinkat", Path, Hex, Path), 64 37: makeSyscallInfo("linkat", FD, Path, Hex, Path, Hex), 65 38: makeSyscallInfo("renameat", FD, Path, Hex, Path), 66 39: makeSyscallInfo("umount2", Path, Hex), 67 40: makeSyscallInfo("mount", Path, Path, Path, Hex, Path), 68 41: makeSyscallInfo("pivot_root", Path, Path), 69 42: makeSyscallInfo("nfsservctl", Hex, Hex, Hex), 70 43: makeSyscallInfo("statfs", Path, Hex), 71 44: makeSyscallInfo("fstatfs", FD, Hex), 72 45: makeSyscallInfo("truncate", Path, Hex), 73 46: makeSyscallInfo("ftruncate", FD, Hex), 74 47: makeSyscallInfo("fallocate", FD, Hex, Hex, Hex), 75 48: makeSyscallInfo("faccessat", FD, Path, Oct, Hex), 76 49: makeSyscallInfo("chdir", Path), 77 50: makeSyscallInfo("fchdir", FD), 78 51: makeSyscallInfo("chroot", Path), 79 52: makeSyscallInfo("fchmod", FD, Mode), 80 53: makeSyscallInfo("fchmodat", FD, Path, Mode), 81 54: makeSyscallInfo("fchownat", FD, Path, Hex, Hex, Hex), 82 55: makeSyscallInfo("fchown", FD, Hex, Hex), 83 56: makeSyscallInfo("openat", FD, Path, OpenFlags, Mode), 84 57: makeSyscallInfo("close", FD), 85 58: makeSyscallInfo("vhangup"), 86 59: makeSyscallInfo("pipe2", PipeFDs, Hex), 87 60: makeSyscallInfo("quotactl", Hex, Hex, Hex, Hex), 88 61: makeSyscallInfo("getdents64", FD, Hex, Hex), 89 62: makeSyscallInfo("lseek", Hex, Hex, Hex), 90 63: makeSyscallInfo("read", FD, ReadBuffer, Hex), 91 64: makeSyscallInfo("write", FD, WriteBuffer, Hex), 92 65: makeSyscallInfo("readv", FD, ReadIOVec, Hex), 93 66: makeSyscallInfo("writev", FD, WriteIOVec, Hex), 94 67: makeSyscallInfo("pread64", FD, ReadBuffer, Hex, Hex), 95 68: makeSyscallInfo("pwrite64", FD, WriteBuffer, Hex, Hex), 96 69: makeSyscallInfo("preadv", FD, ReadIOVec, Hex, Hex), 97 70: makeSyscallInfo("pwritev", FD, WriteIOVec, Hex, Hex), 98 71: makeSyscallInfo("sendfile", FD, FD, Hex, Hex), 99 72: makeSyscallInfo("pselect6", Hex, Hex, Hex, Hex, Hex, Hex), 100 73: makeSyscallInfo("ppoll", PollFDs, Hex, Timespec, SigSet, Hex), 101 74: makeSyscallInfo("signalfd4", Hex, Hex, Hex, Hex), 102 75: makeSyscallInfo("vmsplice", FD, Hex, Hex, Hex), 103 76: makeSyscallInfo("splice", FD, Hex, FD, Hex, Hex, Hex), 104 77: makeSyscallInfo("tee", FD, FD, Hex, Hex), 105 78: makeSyscallInfo("readlinkat", FD, Path, ReadBuffer, Hex), 106 79: makeSyscallInfo("fstatat", FD, Path, Stat, Hex), 107 80: makeSyscallInfo("fstat", FD, Stat), 108 81: makeSyscallInfo("sync"), 109 82: makeSyscallInfo("fsync", FD), 110 83: makeSyscallInfo("fdatasync", FD), 111 84: makeSyscallInfo("sync_file_range", FD, Hex, Hex, Hex), 112 85: makeSyscallInfo("timerfd_create", Hex, Hex), 113 86: makeSyscallInfo("timerfd_settime", FD, Hex, ItimerSpec, PostItimerSpec), 114 87: makeSyscallInfo("timerfd_gettime", FD, PostItimerSpec), 115 88: makeSyscallInfo("utimensat", FD, Path, UTimeTimespec, Hex), 116 89: makeSyscallInfo("acct", Hex), 117 90: makeSyscallInfo("capget", CapHeader, PostCapData), 118 91: makeSyscallInfo("capset", CapHeader, CapData), 119 92: makeSyscallInfo("personality", Hex), 120 93: makeSyscallInfo("exit", Hex), 121 94: makeSyscallInfo("exit_group", Hex), 122 95: makeSyscallInfo("waitid", Hex, Hex, Hex, Hex, Rusage), 123 96: makeSyscallInfo("set_tid_address", Hex), 124 97: makeSyscallInfo("unshare", CloneFlags), 125 98: makeSyscallInfo("futex", Hex, FutexOp, Hex, Timespec, Hex, Hex), 126 99: makeSyscallInfo("set_robust_list", Hex, Hex), 127 100: makeSyscallInfo("get_robust_list", Hex, Hex, Hex), 128 101: makeSyscallInfo("nanosleep", Timespec, PostTimespec), 129 102: makeSyscallInfo("getitimer", ItimerType, PostItimerVal), 130 103: makeSyscallInfo("setitimer", ItimerType, ItimerVal, PostItimerVal), 131 104: makeSyscallInfo("kexec_load", Hex, Hex, Hex, Hex), 132 105: makeSyscallInfo("init_module", Hex, Hex, Hex), 133 106: makeSyscallInfo("delete_module", Hex, Hex), 134 107: makeSyscallInfo("timer_create", Hex, Hex, Hex), 135 108: makeSyscallInfo("timer_gettime", Hex, PostItimerSpec), 136 109: makeSyscallInfo("timer_getoverrun", Hex), 137 110: makeSyscallInfo("timer_settime", Hex, Hex, ItimerSpec, PostItimerSpec), 138 111: makeSyscallInfo("timer_delete", Hex), 139 112: makeSyscallInfo("clock_settime", Hex, Timespec), 140 113: makeSyscallInfo("clock_gettime", Hex, PostTimespec), 141 114: makeSyscallInfo("clock_getres", Hex, PostTimespec), 142 115: makeSyscallInfo("clock_nanosleep", Hex, Hex, Timespec, PostTimespec), 143 116: makeSyscallInfo("syslog", Hex, Hex, Hex), 144 117: makeSyscallInfo("ptrace", PtraceRequest, Hex, Hex, Hex), 145 118: makeSyscallInfo("sched_setparam", Hex, Hex), 146 119: makeSyscallInfo("sched_setscheduler", Hex, Hex, Hex), 147 120: makeSyscallInfo("sched_getscheduler", Hex), 148 121: makeSyscallInfo("sched_getparam", Hex, Hex), 149 122: makeSyscallInfo("sched_setaffinity", Hex, Hex, Hex), 150 123: makeSyscallInfo("sched_getaffinity", Hex, Hex, Hex), 151 124: makeSyscallInfo("sched_yield"), 152 125: makeSyscallInfo("sched_get_priority_max", Hex), 153 126: makeSyscallInfo("sched_get_priority_min", Hex), 154 127: makeSyscallInfo("sched_rr_get_interval", Hex, Hex), 155 128: makeSyscallInfo("restart_syscall"), 156 129: makeSyscallInfo("kill", Hex, Signal), 157 130: makeSyscallInfo("tkill", Hex, Signal), 158 131: makeSyscallInfo("tgkill", Hex, Hex, Signal), 159 132: makeSyscallInfo("sigaltstack", Hex, Hex), 160 133: makeSyscallInfo("rt_sigsuspend", Hex), 161 134: makeSyscallInfo("rt_sigaction", Signal, SigAction, PostSigAction, Hex), 162 135: makeSyscallInfo("rt_sigprocmask", SignalMaskAction, SigSet, PostSigSet, Hex), 163 136: makeSyscallInfo("rt_sigpending", Hex), 164 137: makeSyscallInfo("rt_sigtimedwait", SigSet, Hex, Timespec, Hex), 165 138: makeSyscallInfo("rt_sigqueueinfo", Hex, Signal, Hex), 166 139: makeSyscallInfo("rt_sigreturn"), 167 140: makeSyscallInfo("setpriority", Hex, Hex, Hex), 168 141: makeSyscallInfo("getpriority", Hex, Hex), 169 142: makeSyscallInfo("reboot", Hex, Hex, Hex, Hex), 170 143: makeSyscallInfo("setregid", Hex, Hex), 171 144: makeSyscallInfo("setgid", Hex), 172 145: makeSyscallInfo("setreuid", Hex, Hex), 173 146: makeSyscallInfo("setuid", Hex), 174 147: makeSyscallInfo("setresuid", Hex, Hex, Hex), 175 148: makeSyscallInfo("getresuid", Hex, Hex, Hex), 176 149: makeSyscallInfo("setresgid", Hex, Hex, Hex), 177 150: makeSyscallInfo("getresgid", Hex, Hex, Hex), 178 151: makeSyscallInfo("setfsuid", Hex), 179 152: makeSyscallInfo("setfsgid", Hex), 180 153: makeSyscallInfo("times", Hex), 181 154: makeSyscallInfo("setpgid", Hex, Hex), 182 155: makeSyscallInfo("getpgid", Hex), 183 156: makeSyscallInfo("getsid", Hex), 184 157: makeSyscallInfo("setsid"), 185 158: makeSyscallInfo("getgroups", Hex, Hex), 186 159: makeSyscallInfo("setgroups", Hex, Hex), 187 160: makeSyscallInfo("uname", Uname), 188 161: makeSyscallInfo("sethostname", Hex, Hex), 189 162: makeSyscallInfo("setdomainname", Hex, Hex), 190 163: makeSyscallInfo("getrlimit", Hex, Hex), 191 164: makeSyscallInfo("setrlimit", Hex, Hex), 192 165: makeSyscallInfo("getrusage", Hex, Rusage), 193 166: makeSyscallInfo("umask", Hex), 194 167: makeSyscallInfo("prctl", Hex, Hex, Hex, Hex, Hex), 195 168: makeSyscallInfo("getcpu", Hex, Hex, Hex), 196 169: makeSyscallInfo("gettimeofday", Timeval, Hex), 197 170: makeSyscallInfo("settimeofday", Timeval, Hex), 198 171: makeSyscallInfo("adjtimex", Hex), 199 172: makeSyscallInfo("getpid"), 200 173: makeSyscallInfo("getppid"), 201 174: makeSyscallInfo("getuid"), 202 175: makeSyscallInfo("geteuid"), 203 176: makeSyscallInfo("getgid"), 204 177: makeSyscallInfo("getegid"), 205 178: makeSyscallInfo("gettid"), 206 179: makeSyscallInfo("sysinfo", Hex), 207 180: makeSyscallInfo("mq_open", Hex, Hex, Hex, Hex), 208 181: makeSyscallInfo("mq_unlink", Hex), 209 182: makeSyscallInfo("mq_timedsend", Hex, Hex, Hex, Hex, Hex), 210 183: makeSyscallInfo("mq_timedreceive", Hex, Hex, Hex, Hex, Hex), 211 184: makeSyscallInfo("mq_notify", Hex, Hex), 212 185: makeSyscallInfo("mq_getsetattr", Hex, Hex, Hex), 213 186: makeSyscallInfo("msgget", Hex, Hex), 214 187: makeSyscallInfo("msgctl", Hex, Hex, Hex), 215 188: makeSyscallInfo("msgrcv", Hex, Hex, Hex, Hex, Hex), 216 189: makeSyscallInfo("msgsnd", Hex, Hex, Hex, Hex), 217 190: makeSyscallInfo("semget", Hex, Hex, Hex), 218 191: makeSyscallInfo("semctl", Hex, Hex, Hex, Hex), 219 192: makeSyscallInfo("semtimedop", Hex, Hex, Hex, Hex), 220 193: makeSyscallInfo("semop", Hex, Hex, Hex), 221 194: makeSyscallInfo("shmget", Hex, Hex, Hex), 222 195: makeSyscallInfo("shmctl", Hex, Hex, Hex), 223 196: makeSyscallInfo("shmat", Hex, Hex, Hex), 224 197: makeSyscallInfo("shmdt", Hex), 225 198: makeSyscallInfo("socket", SockFamily, SockType, SockProtocol), 226 199: makeSyscallInfo("socketpair", SockFamily, SockType, SockProtocol, Hex), 227 200: makeSyscallInfo("bind", FD, SockAddr, Hex), 228 201: makeSyscallInfo("listen", FD, Hex), 229 202: makeSyscallInfo("accept", FD, PostSockAddr, SockLen), 230 203: makeSyscallInfo("connect", FD, SockAddr, Hex), 231 204: makeSyscallInfo("getsockname", FD, PostSockAddr, SockLen), 232 205: makeSyscallInfo("getpeername", FD, PostSockAddr, SockLen), 233 206: makeSyscallInfo("sendto", FD, Hex, Hex, Hex, SockAddr, Hex), 234 207: makeSyscallInfo("recvfrom", FD, Hex, Hex, Hex, PostSockAddr, SockLen), 235 208: makeSyscallInfo("setsockopt", FD, Hex, Hex, Hex, Hex), 236 209: makeSyscallInfo("getsockopt", FD, Hex, Hex, Hex, Hex), 237 210: makeSyscallInfo("shutdown", FD, Hex), 238 211: makeSyscallInfo("sendmsg", FD, SendMsgHdr, Hex), 239 212: makeSyscallInfo("recvmsg", FD, RecvMsgHdr, Hex), 240 213: makeSyscallInfo("readahead", Hex, Hex, Hex), 241 214: makeSyscallInfo("brk", Hex), 242 215: makeSyscallInfo("munmap", Hex, Hex), 243 216: makeSyscallInfo("mremap", Hex, Hex, Hex, Hex, Hex), 244 217: makeSyscallInfo("add_key", Hex, Hex, Hex, Hex, Hex), 245 218: makeSyscallInfo("request_key", Hex, Hex, Hex, Hex), 246 219: makeSyscallInfo("keyctl", Hex, Hex, Hex, Hex, Hex), 247 220: makeSyscallInfo("clone", CloneFlags, Hex, Hex, Hex, Hex), 248 221: makeSyscallInfo("execve", Path, ExecveStringVector, ExecveStringVector), 249 222: makeSyscallInfo("mmap", Hex, Hex, MmapProt, MmapFlags, FD, Hex), 250 223: makeSyscallInfo("fadvise64", FD, Hex, Hex, Hex), 251 224: makeSyscallInfo("swapon", Hex, Hex), 252 225: makeSyscallInfo("swapoff", Hex), 253 226: makeSyscallInfo("mprotect", Hex, Hex, Hex), 254 227: makeSyscallInfo("msync", Hex, Hex, Hex), 255 228: makeSyscallInfo("mlock", Hex, Hex), 256 229: makeSyscallInfo("munlock", Hex, Hex), 257 230: makeSyscallInfo("mlockall", Hex), 258 231: makeSyscallInfo("munlockall"), 259 232: makeSyscallInfo("mincore", Hex, Hex, Hex), 260 233: makeSyscallInfo("madvise", Hex, Hex, Hex), 261 234: makeSyscallInfo("remap_file_pages", Hex, Hex, Hex, Hex, Hex), 262 235: makeSyscallInfo("mbind", Hex, Hex, Hex, Hex, Hex, Hex), 263 236: makeSyscallInfo("get_mempolicy", Hex, Hex, Hex, Hex, Hex), 264 237: makeSyscallInfo("set_mempolicy", Hex, Hex, Hex), 265 238: makeSyscallInfo("migrate_pages", Hex, Hex, Hex, Hex), 266 239: makeSyscallInfo("move_pages", Hex, Hex, Hex, Hex, Hex, Hex), 267 240: makeSyscallInfo("rt_tgsigqueueinfo", Hex, Hex, Signal, Hex), 268 241: makeSyscallInfo("perf_event_open", Hex, Hex, Hex, Hex, Hex), 269 242: makeSyscallInfo("accept4", FD, PostSockAddr, SockLen, SockFlags), 270 243: makeSyscallInfo("recvmmsg", FD, Hex, Hex, Hex, Hex), 271 272 260: makeSyscallInfo("wait4", Hex, Hex, Hex, Rusage), 273 261: makeSyscallInfo("prlimit64", Hex, Hex, Hex, Hex), 274 262: makeSyscallInfo("fanotify_init", Hex, Hex), 275 263: makeSyscallInfo("fanotify_mark", Hex, Hex, Hex, Hex, Hex), 276 264: makeSyscallInfo("name_to_handle_at", FD, Hex, Hex, Hex, Hex), 277 265: makeSyscallInfo("open_by_handle_at", FD, Hex, Hex), 278 266: makeSyscallInfo("clock_adjtime", Hex, Hex), 279 267: makeSyscallInfo("syncfs", FD), 280 268: makeSyscallInfo("setns", FD, Hex), 281 269: makeSyscallInfo("sendmmsg", FD, Hex, Hex, Hex), 282 270: makeSyscallInfo("process_vm_readv", Hex, ReadIOVec, Hex, IOVec, Hex, Hex), 283 271: makeSyscallInfo("process_vm_writev", Hex, IOVec, Hex, WriteIOVec, Hex, Hex), 284 272: makeSyscallInfo("kcmp", Hex, Hex, Hex, Hex, Hex), 285 273: makeSyscallInfo("finit_module", Hex, Hex, Hex), 286 274: makeSyscallInfo("sched_setattr", Hex, Hex, Hex), 287 275: makeSyscallInfo("sched_getattr", Hex, Hex, Hex), 288 276: makeSyscallInfo("renameat2", FD, Path, Hex, Path, Hex), 289 277: makeSyscallInfo("seccomp", Hex, Hex, Hex), 290 278: makeSyscallInfo("getrandom", Hex, Hex, Hex), 291 279: makeSyscallInfo("memfd_create", Path, Hex), 292 280: makeSyscallInfo("bpf", Hex, Hex, Hex), 293 281: makeSyscallInfo("execveat", FD, Path, Hex, Hex, Hex), 294 282: makeSyscallInfo("userfaultfd", Hex), 295 283: makeSyscallInfo("membarrier", Hex), 296 284: makeSyscallInfo("mlock2", Hex, Hex, Hex), 297 285: makeSyscallInfo("copy_file_range", FD, Hex, FD, Hex, Hex, Hex), 298 286: makeSyscallInfo("preadv2", FD, ReadIOVec, Hex, Hex, Hex), 299 287: makeSyscallInfo("pwritev2", FD, WriteIOVec, Hex, Hex, Hex), 300 291: makeSyscallInfo("statx", FD, Path, Hex, Hex, Hex), 301 292: makeSyscallInfo("io_pgetevents", Hex, Hex, Hex, Hex, Timespec, SigSet), 302 293: makeSyscallInfo("rseq", Hex, Hex, Hex, Hex), 303 424: makeSyscallInfo("pidfd_send_signal", FD, Signal, Hex, Hex), 304 425: makeSyscallInfo("io_uring_setup", Hex, Hex), 305 426: makeSyscallInfo("io_uring_enter", FD, Hex, Hex, Hex, SigSet, Hex), 306 427: makeSyscallInfo("io_uring_register", FD, Hex, Hex, Hex), 307 428: makeSyscallInfo("open_tree", FD, Path, Hex), 308 429: makeSyscallInfo("move_mount", FD, Path, FD, Path, Hex), 309 430: makeSyscallInfo("fsopen", Path, Hex), // Not quite a path, but close. 310 431: makeSyscallInfo("fsconfig", FD, Hex, Hex, Hex, Hex), 311 432: makeSyscallInfo("fsmount", FD, Hex, Hex), 312 433: makeSyscallInfo("fspick", FD, Path, Hex), 313 434: makeSyscallInfo("pidfd_open", Hex, Hex), 314 435: makeSyscallInfo("clone3", Hex, Hex), 315 441: makeSyscallInfo("epoll_pwait2", FD, EpollEvents, Hex, Timespec, SigSet), 316 } 317 318 func init() { 319 syscallTables = append(syscallTables, 320 syscallTable{ 321 os: abi.Linux, 322 arch: arch.ARM64, 323 syscalls: linuxARM64}) 324 }