54/// Target uname() handler. 55static SyscallReturn 56unameFunc64(SyscallDesc *desc, int callnum, Process *process, 57 ThreadContext *tc) 58{ 59 int index = 0; 60 TypedBufferArg<Linux::utsname> name(process->getSyscallArg(tc, index)); 61 62 strcpy(name->sysname, "Linux"); 63 strcpy(name->nodename,"sim.gem5.org"); 64 strcpy(name->release, "3.0.0"); 65 strcpy(name->version, "#1 Mon Aug 18 11:32:15 EDT 2003"); 66 strcpy(name->machine, "riscv64"); 67 68 name.copyOut(tc->getMemProxy()); 69 return 0; 70} 71 72/// Target uname() handler. 73static SyscallReturn 74unameFunc32(SyscallDesc *desc, int callnum, Process *process, 75 ThreadContext *tc) 76{ 77 int index = 0; 78 TypedBufferArg<Linux::utsname> name(process->getSyscallArg(tc, index)); 79 80 strcpy(name->sysname, "Linux"); 81 strcpy(name->nodename,"sim.gem5.org"); 82 strcpy(name->release, "3.0.0"); 83 strcpy(name->version, "#1 Mon Aug 18 11:32:15 EDT 2003"); 84 strcpy(name->machine, "riscv32"); 85 86 name.copyOut(tc->getMemProxy()); 87 return 0; 88} 89 90std::map<int, SyscallDesc> RiscvLinuxProcess64::syscallDescs = { 91 {0, SyscallDesc("io_setup")}, 92 {1, SyscallDesc("io_destroy")}, 93 {2, SyscallDesc("io_submit")}, 94 {3, SyscallDesc("io_cancel")}, 95 {4, SyscallDesc("io_getevents")}, 96 {5, SyscallDesc("setxattr")}, 97 {6, SyscallDesc("lsetxattr")}, 98 {7, SyscallDesc("fsetxattr")}, 99 {8, SyscallDesc("getxattr")}, 100 {9, SyscallDesc("lgetxattr")}, 101 {10, SyscallDesc("fgetxattr")}, 102 {11, SyscallDesc("listxattr")}, 103 {12, SyscallDesc("llistxattr")}, 104 {13, SyscallDesc("flistxattr")}, 105 {14, SyscallDesc("removexattr")}, 106 {15, SyscallDesc("lremovexattr")}, 107 {16, SyscallDesc("fremovexattr")}, 108 {17, SyscallDesc("getcwd", getcwdFunc)}, 109 {18, SyscallDesc("lookup_dcookie")}, 110 {19, SyscallDesc("eventfd2")}, 111 {20, SyscallDesc("epoll_create1")}, 112 {21, SyscallDesc("epoll_ctl")}, 113 {22, SyscallDesc("epoll_pwait")}, 114 {23, SyscallDesc("dup", dupFunc)}, 115 {24, SyscallDesc("dup3")}, 116 {25, SyscallDesc("fcntl", fcntl64Func)}, 117 {26, SyscallDesc("inotify_init1")}, 118 {27, SyscallDesc("inotify_add_watch")}, 119 {28, SyscallDesc("inotify_rm_watch")}, 120 {29, SyscallDesc("ioctl", ioctlFunc<RiscvLinux64>)}, 121 {30, SyscallDesc("ioprio_get")}, 122 {31, SyscallDesc("ioprio_set")}, 123 {32, SyscallDesc("flock")}, 124 {33, SyscallDesc("mknodat")}, 125 {34, SyscallDesc("mkdirat")}, 126 {35, SyscallDesc("unlinkat", unlinkatFunc<RiscvLinux64>)}, 127 {36, SyscallDesc("symlinkat")}, 128 {37, SyscallDesc("linkat")}, 129 {38, SyscallDesc("renameat", renameatFunc<RiscvLinux64>)}, 130 {39, SyscallDesc("umount2")}, 131 {40, SyscallDesc("mount")}, 132 {41, SyscallDesc("pivot_root")}, 133 {42, SyscallDesc("nfsservctl")}, 134 {43, SyscallDesc("statfs", statfsFunc<RiscvLinux64>)}, 135 {44, SyscallDesc("fstatfs", fstatfsFunc<RiscvLinux64>)}, 136 {45, SyscallDesc("truncate", truncateFunc)}, 137 {46, SyscallDesc("ftruncate", ftruncate64Func)}, 138 {47, SyscallDesc("fallocate", fallocateFunc)}, 139 {48, SyscallDesc("faccessat", faccessatFunc<RiscvLinux64>)}, 140 {49, SyscallDesc("chdir")}, 141 {50, SyscallDesc("fchdir")}, 142 {51, SyscallDesc("chroot")}, 143 {52, SyscallDesc("fchmod", fchmodFunc<RiscvLinux64>)}, 144 {53, SyscallDesc("fchmodat")}, 145 {54, SyscallDesc("fchownat")}, 146 {55, SyscallDesc("fchown", fchownFunc)}, 147 {56, SyscallDesc("openat", openatFunc<RiscvLinux64>)}, 148 {57, SyscallDesc("close", closeFunc)}, 149 {58, SyscallDesc("vhangup")}, 150 {59, SyscallDesc("pipe2")}, 151 {60, SyscallDesc("quotactl")}, 152 {61, SyscallDesc("getdents64")}, 153 {62, SyscallDesc("lseek", lseekFunc)}, 154 {63, SyscallDesc("read", readFunc<RiscvLinux64>)}, 155 {64, SyscallDesc("write", writeFunc<RiscvLinux64>)}, 156 {66, SyscallDesc("writev", writevFunc<RiscvLinux64>)}, 157 {67, SyscallDesc("pread64")}, 158 {68, SyscallDesc("pwrite64", pwrite64Func<RiscvLinux64>)}, 159 {69, SyscallDesc("preadv")}, 160 {70, SyscallDesc("pwritev")}, 161 {71, SyscallDesc("sendfile")}, 162 {72, SyscallDesc("pselect6")}, 163 {73, SyscallDesc("ppoll")}, 164 {74, SyscallDesc("signalfd64")}, 165 {75, SyscallDesc("vmsplice")}, 166 {76, SyscallDesc("splice")}, 167 {77, SyscallDesc("tee")}, 168 {78, SyscallDesc("readlinkat", readlinkatFunc<RiscvLinux64>)}, 169 {79, SyscallDesc("fstatat", fstatat64Func<RiscvLinux64>)}, 170 {80, SyscallDesc("fstat", fstat64Func<RiscvLinux64>)}, 171 {81, SyscallDesc("sync")}, 172 {82, SyscallDesc("fsync")}, 173 {83, SyscallDesc("fdatasync")}, 174 {84, SyscallDesc("sync_file_range2")}, 175 {85, SyscallDesc("timerfd_create")}, 176 {86, SyscallDesc("timerfd_settime")}, 177 {87, SyscallDesc("timerfd_gettime")}, 178 {88, SyscallDesc("utimensat")}, 179 {89, SyscallDesc("acct")}, 180 {90, SyscallDesc("capget")}, 181 {91, SyscallDesc("capset")}, 182 {92, SyscallDesc("personality")}, 183 {93, SyscallDesc("exit", exitFunc)}, 184 {94, SyscallDesc("exit_group", exitGroupFunc)}, 185 {95, SyscallDesc("waitid")}, 186 {96, SyscallDesc("set_tid_address", setTidAddressFunc)}, 187 {97, SyscallDesc("unshare")}, 188 {98, SyscallDesc("futex", futexFunc<RiscvLinux64>)}, 189 {99, SyscallDesc("set_robust_list", ignoreFunc, SyscallDesc::WarnOnce)}, 190 {100, SyscallDesc("get_robust_list", ignoreFunc, SyscallDesc::WarnOnce)}, 191 {101, SyscallDesc("nanosleep", ignoreFunc, SyscallDesc::WarnOnce)}, 192 {102, SyscallDesc("getitimer")}, 193 {103, SyscallDesc("setitimer")}, 194 {104, SyscallDesc("kexec_load")}, 195 {105, SyscallDesc("init_module")}, 196 {106, SyscallDesc("delete_module")}, 197 {107, SyscallDesc("timer_create")}, 198 {108, SyscallDesc("timer_gettime")}, 199 {109, SyscallDesc("timer_getoverrun")}, 200 {110, SyscallDesc("timer_settime")}, 201 {111, SyscallDesc("timer_delete")}, 202 {112, SyscallDesc("clock_settime")}, 203 {113, SyscallDesc("clock_gettime", clock_gettimeFunc<RiscvLinux64>)}, 204 {114, SyscallDesc("clock_getres", clock_getresFunc<RiscvLinux64>)}, 205 {115, SyscallDesc("clock_nanosleep")}, 206 {116, SyscallDesc("syslog")}, 207 {117, SyscallDesc("ptrace")}, 208 {118, SyscallDesc("sched_setparam")}, 209 {119, SyscallDesc("sched_setscheduler")}, 210 {120, SyscallDesc("sched_getscheduler")}, 211 {121, SyscallDesc("sched_getparam")}, 212 {122, SyscallDesc("sched_setaffinity")}, 213 {123, SyscallDesc("sched_getaffinity")}, 214 {124, SyscallDesc("sched_yield", ignoreFunc, SyscallDesc::WarnOnce)}, 215 {125, SyscallDesc("sched_get_priority_max")}, 216 {126, SyscallDesc("sched_get_priority_min")}, 217 {127, SyscallDesc("scheD_rr_get_interval")}, 218 {128, SyscallDesc("restart_syscall")}, 219 {129, SyscallDesc("kill")}, 220 {130, SyscallDesc("tkill")}, 221 {131, SyscallDesc("tgkill", tgkillFunc<RiscvLinux64>)}, 222 {132, SyscallDesc("sigaltstack")}, 223 {133, SyscallDesc("rt_sigsuspend", ignoreFunc, SyscallDesc::WarnOnce)}, 224 {134, SyscallDesc("rt_sigaction", ignoreFunc, SyscallDesc::WarnOnce)}, 225 {135, SyscallDesc("rt_sigprocmask", ignoreFunc, SyscallDesc::WarnOnce)}, 226 {136, SyscallDesc("rt_sigpending", ignoreFunc, SyscallDesc::WarnOnce)}, 227 {137, SyscallDesc("rt_sigtimedwait", ignoreFunc,SyscallDesc::WarnOnce)}, 228 {138, SyscallDesc("rt_sigqueueinfo", ignoreFunc,SyscallDesc::WarnOnce)}, 229 {139, SyscallDesc("rt_sigreturn", ignoreFunc, SyscallDesc::WarnOnce)}, 230 {140, SyscallDesc("setpriority")}, 231 {141, SyscallDesc("getpriority")}, 232 {142, SyscallDesc("reboot")}, 233 {143, SyscallDesc("setregid")}, 234 {144, SyscallDesc("setgid")}, 235 {145, SyscallDesc("setreuid")}, 236 {146, SyscallDesc("setuid", setuidFunc)}, 237 {147, SyscallDesc("setresuid")}, 238 {148, SyscallDesc("getresuid")}, 239 {149, SyscallDesc("getresgid")}, 240 {150, SyscallDesc("getresgid")}, 241 {151, SyscallDesc("setfsuid")}, 242 {152, SyscallDesc("setfsgid")}, 243 {153, SyscallDesc("times", timesFunc<RiscvLinux64>)}, 244 {154, SyscallDesc("setpgid", setpgidFunc)}, 245 {155, SyscallDesc("getpgid")}, 246 {156, SyscallDesc("getsid")}, 247 {157, SyscallDesc("setsid")}, 248 {158, SyscallDesc("getgroups")}, 249 {159, SyscallDesc("setgroups")}, 250 {160, SyscallDesc("uname", unameFunc64)}, 251 {161, SyscallDesc("sethostname")}, 252 {162, SyscallDesc("setdomainname")}, 253 {163, SyscallDesc("getrlimit", getrlimitFunc<RiscvLinux64>)}, 254 {164, SyscallDesc("setrlimit", ignoreFunc)}, 255 {165, SyscallDesc("getrusage", getrusageFunc<RiscvLinux64>)}, 256 {166, SyscallDesc("umask", umaskFunc)}, 257 {167, SyscallDesc("prctl")}, 258 {168, SyscallDesc("getcpu")}, 259 {169, SyscallDesc("gettimeofday", gettimeofdayFunc<RiscvLinux64>)}, 260 {170, SyscallDesc("settimeofday")}, 261 {171, SyscallDesc("adjtimex")}, 262 {172, SyscallDesc("getpid", getpidFunc)}, 263 {173, SyscallDesc("getppid", getppidFunc)}, 264 {174, SyscallDesc("getuid", getuidFunc)}, 265 {175, SyscallDesc("geteuid", geteuidFunc)}, 266 {176, SyscallDesc("getgid", getgidFunc)}, 267 {177, SyscallDesc("getegid", getegidFunc)}, 268 {178, SyscallDesc("gettid", gettidFunc)}, 269 {179, SyscallDesc("sysinfo", sysinfoFunc<RiscvLinux64>)}, 270 {180, SyscallDesc("mq_open")}, 271 {181, SyscallDesc("mq_unlink")}, 272 {182, SyscallDesc("mq_timedsend")}, 273 {183, SyscallDesc("mq_timedrecieve")}, 274 {184, SyscallDesc("mq_notify")}, 275 {185, SyscallDesc("mq_getsetattr")}, 276 {186, SyscallDesc("msgget")}, 277 {187, SyscallDesc("msgctl")}, 278 {188, SyscallDesc("msgrcv")}, 279 {189, SyscallDesc("msgsnd")}, 280 {190, SyscallDesc("semget")}, 281 {191, SyscallDesc("semctl")}, 282 {192, SyscallDesc("semtimedop")}, 283 {193, SyscallDesc("semop")}, 284 {194, SyscallDesc("shmget")}, 285 {195, SyscallDesc("shmctl")}, 286 {196, SyscallDesc("shmat")}, 287 {197, SyscallDesc("shmdt")}, 288 {198, SyscallDesc("socket")}, 289 {199, SyscallDesc("socketpair")}, 290 {200, SyscallDesc("bind")}, 291 {201, SyscallDesc("listen")}, 292 {202, SyscallDesc("accept")}, 293 {203, SyscallDesc("connect")}, 294 {204, SyscallDesc("getsockname")}, 295 {205, SyscallDesc("getpeername")}, 296 {206, SyscallDesc("sendo")}, 297 {207, SyscallDesc("recvfrom")}, 298 {208, SyscallDesc("setsockopt")}, 299 {209, SyscallDesc("getsockopt")}, 300 {210, SyscallDesc("shutdown")}, 301 {211, SyscallDesc("sendmsg")}, 302 {212, SyscallDesc("recvmsg")}, 303 {213, SyscallDesc("readahead")}, 304 {214, SyscallDesc("brk", brkFunc)}, 305 {215, SyscallDesc("munmap", munmapFunc)}, 306 {216, SyscallDesc("mremap", mremapFunc<RiscvLinux64>)}, 307 {217, SyscallDesc("add_key")}, 308 {218, SyscallDesc("request_key")}, 309 {219, SyscallDesc("keyctl")}, 310 {220, SyscallDesc("clone", cloneFunc<RiscvLinux64>)}, 311 {221, SyscallDesc("execve", execveFunc<RiscvLinux64>)}, 312 {222, SyscallDesc("mmap", mmapFunc<RiscvLinux64>)}, 313 {223, SyscallDesc("fadvise64")}, 314 {224, SyscallDesc("swapon")}, 315 {225, SyscallDesc("swapoff")}, 316 {226, SyscallDesc("mprotect", ignoreFunc)}, 317 {227, SyscallDesc("msync", ignoreFunc)}, 318 {228, SyscallDesc("mlock", ignoreFunc)}, 319 {229, SyscallDesc("munlock", ignoreFunc)}, 320 {230, SyscallDesc("mlockall", ignoreFunc)}, 321 {231, SyscallDesc("munlockall", ignoreFunc)}, 322 {232, SyscallDesc("mincore", ignoreFunc)}, 323 {233, SyscallDesc("madvise", ignoreFunc)}, 324 {234, SyscallDesc("remap_file_pages")}, 325 {235, SyscallDesc("mbind", ignoreFunc)}, 326 {236, SyscallDesc("get_mempolicy")}, 327 {237, SyscallDesc("set_mempolicy")}, 328 {238, SyscallDesc("migrate_pages")}, 329 {239, SyscallDesc("move_pages")}, 330 {240, SyscallDesc("tgsigqueueinfo")}, 331 {241, SyscallDesc("perf_event_open")}, 332 {242, SyscallDesc("accept4")}, 333 {243, SyscallDesc("recvmmsg")}, 334 {260, SyscallDesc("wait4")}, 335 {261, SyscallDesc("prlimit64", prlimitFunc<RiscvLinux64>)}, 336 {262, SyscallDesc("fanotify_init")}, 337 {263, SyscallDesc("fanotify_mark")}, 338 {264, SyscallDesc("name_to_handle_at")}, 339 {265, SyscallDesc("open_by_handle_at")}, 340 {266, SyscallDesc("clock_adjtime")}, 341 {267, SyscallDesc("syncfs")}, 342 {268, SyscallDesc("setns")}, 343 {269, SyscallDesc("sendmmsg")}, 344 {270, SyscallDesc("process_vm_ready")}, 345 {271, SyscallDesc("process_vm_writev")}, 346 {272, SyscallDesc("kcmp")}, 347 {273, SyscallDesc("finit_module")}, 348 {274, SyscallDesc("sched_setattr")}, 349 {275, SyscallDesc("sched_getattr")}, 350 {276, SyscallDesc("renameat2")}, 351 {277, SyscallDesc("seccomp")}, 352 {278, SyscallDesc("getrandom")}, 353 {279, SyscallDesc("memfd_create")}, 354 {280, SyscallDesc("bpf")}, 355 {281, SyscallDesc("execveat")}, 356 {282, SyscallDesc("userfaultid")}, 357 {283, SyscallDesc("membarrier")}, 358 {284, SyscallDesc("mlock2")}, 359 {285, SyscallDesc("copy_file_range")}, 360 {286, SyscallDesc("preadv2")}, 361 {287, SyscallDesc("pwritev2")}, 362 {1024, SyscallDesc("open", openFunc<RiscvLinux64>)}, 363 {1025, SyscallDesc("link")}, 364 {1026, SyscallDesc("unlink", unlinkFunc)}, 365 {1027, SyscallDesc("mknod")}, 366 {1028, SyscallDesc("chmod", chmodFunc<RiscvLinux64>)}, 367 {1029, SyscallDesc("chown", chownFunc)}, 368 {1030, SyscallDesc("mkdir", mkdirFunc)}, 369 {1031, SyscallDesc("rmdir")}, 370 {1032, SyscallDesc("lchown")}, 371 {1033, SyscallDesc("access", accessFunc)}, 372 {1034, SyscallDesc("rename", renameFunc)}, 373 {1035, SyscallDesc("readlink", readlinkFunc)}, 374 {1036, SyscallDesc("symlink")}, 375 {1037, SyscallDesc("utimes", utimesFunc<RiscvLinux64>)}, 376 {1038, SyscallDesc("stat", stat64Func<RiscvLinux64>)}, 377 {1039, SyscallDesc("lstat", lstat64Func<RiscvLinux64>)}, 378 {1040, SyscallDesc("pipe", pipeFunc)}, 379 {1041, SyscallDesc("dup2", dup2Func)}, 380 {1042, SyscallDesc("epoll_create")}, 381 {1043, SyscallDesc("inotifiy_init")}, 382 {1044, SyscallDesc("eventfd")}, 383 {1045, SyscallDesc("signalfd")}, 384 {1046, SyscallDesc("sendfile")}, 385 {1047, SyscallDesc("ftruncate", ftruncate64Func)}, 386 {1048, SyscallDesc("truncate", truncate64Func)}, 387 {1049, SyscallDesc("stat", stat64Func<RiscvLinux64>)}, 388 {1050, SyscallDesc("lstat", lstat64Func<RiscvLinux64>)}, 389 {1051, SyscallDesc("fstat", fstat64Func<RiscvLinux64>)}, 390 {1052, SyscallDesc("fcntl", fcntl64Func)}, 391 {1053, SyscallDesc("fadvise64")}, 392 {1054, SyscallDesc("newfstatat")}, 393 {1055, SyscallDesc("fstatfs", fstatfsFunc<RiscvLinux64>)}, 394 {1056, SyscallDesc("statfs", statfsFunc<RiscvLinux64>)}, 395 {1057, SyscallDesc("lseek", lseekFunc)}, 396 {1058, SyscallDesc("mmap", mmapFunc<RiscvLinux64>)}, 397 {1059, SyscallDesc("alarm")}, 398 {1060, SyscallDesc("getpgrp")}, 399 {1061, SyscallDesc("pause")}, 400 {1062, SyscallDesc("time", timeFunc<RiscvLinux64>)}, 401 {1063, SyscallDesc("utime")}, 402 {1064, SyscallDesc("creat")}, 403 {1065, SyscallDesc("getdents")}, 404 {1066, SyscallDesc("futimesat")}, 405 {1067, SyscallDesc("select")}, 406 {1068, SyscallDesc("poll")}, 407 {1069, SyscallDesc("epoll_wait")}, 408 {1070, SyscallDesc("ustat")}, 409 {1071, SyscallDesc("vfork")}, 410 {1072, SyscallDesc("oldwait4")}, 411 {1073, SyscallDesc("recv")}, 412 {1074, SyscallDesc("send")}, 413 {1075, SyscallDesc("bdflush")}, 414 {1076, SyscallDesc("umount")}, 415 {1077, SyscallDesc("uselib")}, 416 {1078, SyscallDesc("sysctl")}, 417 {1079, SyscallDesc("fork")}, 418 {2011, SyscallDesc("getmainvars")} 419}; 420 421std::map<int, SyscallDesc> RiscvLinuxProcess32::syscallDescs = { 422 {0, SyscallDesc("io_setup")}, 423 {1, SyscallDesc("io_destroy")}, 424 {2, SyscallDesc("io_submit")}, 425 {3, SyscallDesc("io_cancel")}, 426 {4, SyscallDesc("io_getevents")}, 427 {5, SyscallDesc("setxattr")}, 428 {6, SyscallDesc("lsetxattr")}, 429 {7, SyscallDesc("fsetxattr")}, 430 {8, SyscallDesc("getxattr")}, 431 {9, SyscallDesc("lgetxattr")}, 432 {10, SyscallDesc("fgetxattr")}, 433 {11, SyscallDesc("listxattr")}, 434 {12, SyscallDesc("llistxattr")}, 435 {13, SyscallDesc("flistxattr")}, 436 {14, SyscallDesc("removexattr")}, 437 {15, SyscallDesc("lremovexattr")}, 438 {16, SyscallDesc("fremovexattr")}, 439 {17, SyscallDesc("getcwd", getcwdFunc)}, 440 {18, SyscallDesc("lookup_dcookie")}, 441 {19, SyscallDesc("eventfd2")}, 442 {20, SyscallDesc("epoll_create1")}, 443 {21, SyscallDesc("epoll_ctl")}, 444 {22, SyscallDesc("epoll_pwait")}, 445 {23, SyscallDesc("dup", dupFunc)}, 446 {24, SyscallDesc("dup3")}, 447 {25, SyscallDesc("fcntl", fcntlFunc)}, 448 {26, SyscallDesc("inotify_init1")}, 449 {27, SyscallDesc("inotify_add_watch")}, 450 {28, SyscallDesc("inotify_rm_watch")}, 451 {29, SyscallDesc("ioctl", ioctlFunc<RiscvLinux32>)}, 452 {30, SyscallDesc("ioprio_get")}, 453 {31, SyscallDesc("ioprio_set")}, 454 {32, SyscallDesc("flock")}, 455 {33, SyscallDesc("mknodat")}, 456 {34, SyscallDesc("mkdirat")}, 457 {35, SyscallDesc("unlinkat", unlinkatFunc<RiscvLinux32>)}, 458 {36, SyscallDesc("symlinkat")}, 459 {37, SyscallDesc("linkat")}, 460 {38, SyscallDesc("renameat", renameatFunc<RiscvLinux32>)}, 461 {39, SyscallDesc("umount2")}, 462 {40, SyscallDesc("mount")}, 463 {41, SyscallDesc("pivot_root")}, 464 {42, SyscallDesc("nfsservctl")}, 465 {43, SyscallDesc("statfs", statfsFunc<RiscvLinux32>)}, 466 {44, SyscallDesc("fstatfs", fstatfsFunc<RiscvLinux32>)}, 467 {45, SyscallDesc("truncate", truncateFunc)}, 468 {46, SyscallDesc("ftruncate", ftruncateFunc)}, 469 {47, SyscallDesc("fallocate", fallocateFunc)}, 470 {48, SyscallDesc("faccessat", faccessatFunc<RiscvLinux32>)}, 471 {49, SyscallDesc("chdir")}, 472 {50, SyscallDesc("fchdir")}, 473 {51, SyscallDesc("chroot")}, 474 {52, SyscallDesc("fchmod", fchmodFunc<RiscvLinux32>)}, 475 {53, SyscallDesc("fchmodat")}, 476 {54, SyscallDesc("fchownat")}, 477 {55, SyscallDesc("fchown", fchownFunc)}, 478 {56, SyscallDesc("openat", openatFunc<RiscvLinux32>)}, 479 {57, SyscallDesc("close", closeFunc)}, 480 {58, SyscallDesc("vhangup")}, 481 {59, SyscallDesc("pipe2")}, 482 {60, SyscallDesc("quotactl")}, 483 {61, SyscallDesc("getdents64")}, 484 {62, SyscallDesc("lseek", lseekFunc)}, 485 {63, SyscallDesc("read", readFunc<RiscvLinux32>)}, 486 {64, SyscallDesc("write", writeFunc<RiscvLinux32>)}, 487 {66, SyscallDesc("writev", writevFunc<RiscvLinux32>)}, 488 {67, SyscallDesc("pread64")}, 489 {68, SyscallDesc("pwrite64", pwrite64Func<RiscvLinux32>)}, 490 {69, SyscallDesc("preadv")}, 491 {70, SyscallDesc("pwritev")}, 492 {71, SyscallDesc("sendfile")}, 493 {72, SyscallDesc("pselect6")}, 494 {73, SyscallDesc("ppoll")}, 495 {74, SyscallDesc("signalfd64")}, 496 {75, SyscallDesc("vmsplice")}, 497 {76, SyscallDesc("splice")}, 498 {77, SyscallDesc("tee")}, 499 {78, SyscallDesc("readlinkat", readlinkatFunc<RiscvLinux32>)}, 500 {79, SyscallDesc("fstatat")}, 501 {80, SyscallDesc("fstat", fstatFunc<RiscvLinux32>)}, 502 {81, SyscallDesc("sync")}, 503 {82, SyscallDesc("fsync")}, 504 {83, SyscallDesc("fdatasync")}, 505 {84, SyscallDesc("sync_file_range2")}, 506 {85, SyscallDesc("timerfd_create")}, 507 {86, SyscallDesc("timerfd_settime")}, 508 {87, SyscallDesc("timerfd_gettime")}, 509 {88, SyscallDesc("utimensat")}, 510 {89, SyscallDesc("acct")}, 511 {90, SyscallDesc("capget")}, 512 {91, SyscallDesc("capset")}, 513 {92, SyscallDesc("personality")}, 514 {93, SyscallDesc("exit", exitFunc)}, 515 {94, SyscallDesc("exit_group", exitGroupFunc)}, 516 {95, SyscallDesc("waitid")}, 517 {96, SyscallDesc("set_tid_address", setTidAddressFunc)}, 518 {97, SyscallDesc("unshare")}, 519 {98, SyscallDesc("futex", futexFunc<RiscvLinux32>)}, 520 {99, SyscallDesc("set_robust_list", ignoreFunc, SyscallDesc::WarnOnce)}, 521 {100, SyscallDesc("get_robust_list", ignoreFunc, SyscallDesc::WarnOnce)}, 522 {101, SyscallDesc("nanosleep")}, 523 {102, SyscallDesc("getitimer")}, 524 {103, SyscallDesc("setitimer")}, 525 {104, SyscallDesc("kexec_load")}, 526 {105, SyscallDesc("init_module")}, 527 {106, SyscallDesc("delete_module")}, 528 {107, SyscallDesc("timer_create")}, 529 {108, SyscallDesc("timer_gettime")}, 530 {109, SyscallDesc("timer_getoverrun")}, 531 {110, SyscallDesc("timer_settime")}, 532 {111, SyscallDesc("timer_delete")}, 533 {112, SyscallDesc("clock_settime")}, 534 {113, SyscallDesc("clock_gettime", clock_gettimeFunc<RiscvLinux32>)}, 535 {114, SyscallDesc("clock_getres", clock_getresFunc<RiscvLinux32>)}, 536 {115, SyscallDesc("clock_nanosleep")}, 537 {116, SyscallDesc("syslog")}, 538 {117, SyscallDesc("ptrace")}, 539 {118, SyscallDesc("sched_setparam")}, 540 {119, SyscallDesc("sched_setscheduler")}, 541 {120, SyscallDesc("sched_getscheduler")}, 542 {121, SyscallDesc("sched_getparam")}, 543 {122, SyscallDesc("sched_setaffinity")}, 544 {123, SyscallDesc("sched_getaffinity")}, 545 {124, SyscallDesc("sched_yield", ignoreFunc, SyscallDesc::WarnOnce)}, 546 {125, SyscallDesc("sched_get_priority_max")}, 547 {126, SyscallDesc("sched_get_priority_min")}, 548 {127, SyscallDesc("scheD_rr_get_interval")}, 549 {128, SyscallDesc("restart_syscall")}, 550 {129, SyscallDesc("kill")}, 551 {130, SyscallDesc("tkill")}, 552 {131, SyscallDesc("tgkill", tgkillFunc<RiscvLinux32>)}, 553 {132, SyscallDesc("sigaltstack")}, 554 {133, SyscallDesc("rt_sigsuspend", ignoreFunc, SyscallDesc::WarnOnce)}, 555 {134, SyscallDesc("rt_sigaction", ignoreFunc, SyscallDesc::WarnOnce)}, 556 {135, SyscallDesc("rt_sigprocmask", ignoreFunc, SyscallDesc::WarnOnce)}, 557 {136, SyscallDesc("rt_sigpending", ignoreFunc, SyscallDesc::WarnOnce)}, 558 {137, SyscallDesc("rt_sigtimedwait", ignoreFunc,SyscallDesc::WarnOnce)}, 559 {138, SyscallDesc("rt_sigqueueinfo", ignoreFunc,SyscallDesc::WarnOnce)}, 560 {139, SyscallDesc("rt_sigreturn", ignoreFunc, SyscallDesc::WarnOnce)}, 561 {140, SyscallDesc("setpriority")}, 562 {141, SyscallDesc("getpriority")}, 563 {142, SyscallDesc("reboot")}, 564 {143, SyscallDesc("setregid")}, 565 {144, SyscallDesc("setgid")}, 566 {145, SyscallDesc("setreuid")}, 567 {146, SyscallDesc("setuid", setuidFunc)}, 568 {147, SyscallDesc("setresuid")}, 569 {148, SyscallDesc("getresuid")}, 570 {149, SyscallDesc("getresgid")}, 571 {150, SyscallDesc("getresgid")}, 572 {151, SyscallDesc("setfsuid")}, 573 {152, SyscallDesc("setfsgid")}, 574 {153, SyscallDesc("times", timesFunc<RiscvLinux32>)}, 575 {154, SyscallDesc("setpgid", setpgidFunc)}, 576 {155, SyscallDesc("getpgid")}, 577 {156, SyscallDesc("getsid")}, 578 {157, SyscallDesc("setsid")}, 579 {158, SyscallDesc("getgroups")}, 580 {159, SyscallDesc("setgroups")}, 581 {160, SyscallDesc("uname", unameFunc32)}, 582 {161, SyscallDesc("sethostname")}, 583 {162, SyscallDesc("setdomainname")}, 584 {163, SyscallDesc("getrlimit", getrlimitFunc<RiscvLinux32>)}, 585 {164, SyscallDesc("setrlimit", ignoreFunc)}, 586 {165, SyscallDesc("getrusage", getrusageFunc<RiscvLinux32>)}, 587 {166, SyscallDesc("umask", umaskFunc)}, 588 {167, SyscallDesc("prctl")}, 589 {168, SyscallDesc("getcpu")}, 590 {169, SyscallDesc("gettimeofday", gettimeofdayFunc<RiscvLinux32>)}, 591 {170, SyscallDesc("settimeofday")}, 592 {171, SyscallDesc("adjtimex")}, 593 {172, SyscallDesc("getpid", getpidFunc)}, 594 {173, SyscallDesc("getppid", getppidFunc)}, 595 {174, SyscallDesc("getuid", getuidFunc)}, 596 {175, SyscallDesc("geteuid", geteuidFunc)}, 597 {176, SyscallDesc("getgid", getgidFunc)}, 598 {177, SyscallDesc("getegid", getegidFunc)}, 599 {178, SyscallDesc("gettid", gettidFunc)}, 600 {179, SyscallDesc("sysinfo", sysinfoFunc<RiscvLinux32>)}, 601 {180, SyscallDesc("mq_open")}, 602 {181, SyscallDesc("mq_unlink")}, 603 {182, SyscallDesc("mq_timedsend")}, 604 {183, SyscallDesc("mq_timedrecieve")}, 605 {184, SyscallDesc("mq_notify")}, 606 {185, SyscallDesc("mq_getsetattr")}, 607 {186, SyscallDesc("msgget")}, 608 {187, SyscallDesc("msgctl")}, 609 {188, SyscallDesc("msgrcv")}, 610 {189, SyscallDesc("msgsnd")}, 611 {190, SyscallDesc("semget")}, 612 {191, SyscallDesc("semctl")}, 613 {192, SyscallDesc("semtimedop")}, 614 {193, SyscallDesc("semop")}, 615 {194, SyscallDesc("shmget")}, 616 {195, SyscallDesc("shmctl")}, 617 {196, SyscallDesc("shmat")}, 618 {197, SyscallDesc("shmdt")}, 619 {198, SyscallDesc("socket")}, 620 {199, SyscallDesc("socketpair")}, 621 {200, SyscallDesc("bind")}, 622 {201, SyscallDesc("listen")}, 623 {202, SyscallDesc("accept")}, 624 {203, SyscallDesc("connect")}, 625 {204, SyscallDesc("getsockname")}, 626 {205, SyscallDesc("getpeername")}, 627 {206, SyscallDesc("sendo")}, 628 {207, SyscallDesc("recvfrom")}, 629 {208, SyscallDesc("setsockopt")}, 630 {209, SyscallDesc("getsockopt")}, 631 {210, SyscallDesc("shutdown")}, 632 {211, SyscallDesc("sendmsg")}, 633 {212, SyscallDesc("recvmsg")}, 634 {213, SyscallDesc("readahead")}, 635 {214, SyscallDesc("brk", brkFunc)}, 636 {215, SyscallDesc("munmap", munmapFunc)}, 637 {216, SyscallDesc("mremap", mremapFunc<RiscvLinux32>)}, 638 {217, SyscallDesc("add_key")}, 639 {218, SyscallDesc("request_key")}, 640 {219, SyscallDesc("keyctl")}, 641 {220, SyscallDesc("clone", cloneFunc<RiscvLinux32>)}, 642 {221, SyscallDesc("execve", execveFunc<RiscvLinux32>)}, 643 {222, SyscallDesc("mmap", mmapFunc<RiscvLinux32>)}, 644 {223, SyscallDesc("fadvise64")}, 645 {224, SyscallDesc("swapon")}, 646 {225, SyscallDesc("swapoff")}, 647 {226, SyscallDesc("mprotect", ignoreFunc)}, 648 {227, SyscallDesc("msync", ignoreFunc)}, 649 {228, SyscallDesc("mlock", ignoreFunc)}, 650 {229, SyscallDesc("munlock", ignoreFunc)}, 651 {230, SyscallDesc("mlockall", ignoreFunc)}, 652 {231, SyscallDesc("munlockall", ignoreFunc)}, 653 {232, SyscallDesc("mincore", ignoreFunc)}, 654 {233, SyscallDesc("madvise", ignoreFunc)}, 655 {234, SyscallDesc("remap_file_pages")}, 656 {235, SyscallDesc("mbind", ignoreFunc)}, 657 {236, SyscallDesc("get_mempolicy")}, 658 {237, SyscallDesc("set_mempolicy")}, 659 {238, SyscallDesc("migrate_pages")}, 660 {239, SyscallDesc("move_pages")}, 661 {240, SyscallDesc("tgsigqueueinfo")}, 662 {241, SyscallDesc("perf_event_open")}, 663 {242, SyscallDesc("accept4")}, 664 {243, SyscallDesc("recvmmsg")}, 665 {260, SyscallDesc("wait4")}, 666 {261, SyscallDesc("prlimit64", prlimitFunc<RiscvLinux32>)}, 667 {262, SyscallDesc("fanotify_init")}, 668 {263, SyscallDesc("fanotify_mark")}, 669 {264, SyscallDesc("name_to_handle_at")}, 670 {265, SyscallDesc("open_by_handle_at")}, 671 {266, SyscallDesc("clock_adjtime")}, 672 {267, SyscallDesc("syncfs")}, 673 {268, SyscallDesc("setns")}, 674 {269, SyscallDesc("sendmmsg")}, 675 {270, SyscallDesc("process_vm_ready")}, 676 {271, SyscallDesc("process_vm_writev")}, 677 {272, SyscallDesc("kcmp")}, 678 {273, SyscallDesc("finit_module")}, 679 {274, SyscallDesc("sched_setattr")}, 680 {275, SyscallDesc("sched_getattr")}, 681 {276, SyscallDesc("renameat2")}, 682 {277, SyscallDesc("seccomp")}, 683 {278, SyscallDesc("getrandom")}, 684 {279, SyscallDesc("memfd_create")}, 685 {280, SyscallDesc("bpf")}, 686 {281, SyscallDesc("execveat")}, 687 {282, SyscallDesc("userfaultid")}, 688 {283, SyscallDesc("membarrier")}, 689 {284, SyscallDesc("mlock2")}, 690 {285, SyscallDesc("copy_file_range")}, 691 {286, SyscallDesc("preadv2")}, 692 {287, SyscallDesc("pwritev2")}, 693 {1024, SyscallDesc("open", openFunc<RiscvLinux32>)}, 694 {1025, SyscallDesc("link")}, 695 {1026, SyscallDesc("unlink", unlinkFunc)}, 696 {1027, SyscallDesc("mknod")}, 697 {1028, SyscallDesc("chmod", chmodFunc<RiscvLinux32>)}, 698 {1029, SyscallDesc("chown", chownFunc)}, 699 {1030, SyscallDesc("mkdir", mkdirFunc)}, 700 {1031, SyscallDesc("rmdir")}, 701 {1032, SyscallDesc("lchown")}, 702 {1033, SyscallDesc("access", accessFunc)}, 703 {1034, SyscallDesc("rename", renameFunc)}, 704 {1035, SyscallDesc("readlink", readlinkFunc)}, 705 {1036, SyscallDesc("symlink")}, 706 {1037, SyscallDesc("utimes", utimesFunc<RiscvLinux32>)}, 707 {1038, SyscallDesc("stat", statFunc<RiscvLinux32>)}, 708 {1039, SyscallDesc("lstat", lstatFunc<RiscvLinux32>)}, 709 {1040, SyscallDesc("pipe", pipeFunc)}, 710 {1041, SyscallDesc("dup2", dup2Func)}, 711 {1042, SyscallDesc("epoll_create")}, 712 {1043, SyscallDesc("inotifiy_init")}, 713 {1044, SyscallDesc("eventfd")}, 714 {1045, SyscallDesc("signalfd")}, 715 {1046, SyscallDesc("sendfile")}, 716 {1047, SyscallDesc("ftruncate", ftruncateFunc)}, 717 {1048, SyscallDesc("truncate", truncateFunc)}, 718 {1049, SyscallDesc("stat", statFunc<RiscvLinux32>)}, 719 {1050, SyscallDesc("lstat", lstatFunc<RiscvLinux32>)}, 720 {1051, SyscallDesc("fstat", fstatFunc<RiscvLinux32>)}, 721 {1052, SyscallDesc("fcntl", fcntlFunc)}, 722 {1053, SyscallDesc("fadvise64")}, 723 {1054, SyscallDesc("newfstatat")}, 724 {1055, SyscallDesc("fstatfs", fstatfsFunc<RiscvLinux32>)}, 725 {1056, SyscallDesc("statfs", statfsFunc<RiscvLinux32>)}, 726 {1057, SyscallDesc("lseek", lseekFunc)}, 727 {1058, SyscallDesc("mmap", mmapFunc<RiscvLinux32>)}, 728 {1059, SyscallDesc("alarm")}, 729 {1060, SyscallDesc("getpgrp")}, 730 {1061, SyscallDesc("pause")}, 731 {1062, SyscallDesc("time", timeFunc<RiscvLinux32>)}, 732 {1063, SyscallDesc("utime")}, 733 {1064, SyscallDesc("creat")}, 734 {1065, SyscallDesc("getdents")}, 735 {1066, SyscallDesc("futimesat")}, 736 {1067, SyscallDesc("select")}, 737 {1068, SyscallDesc("poll")}, 738 {1069, SyscallDesc("epoll_wait")}, 739 {1070, SyscallDesc("ustat")}, 740 {1071, SyscallDesc("vfork")}, 741 {1072, SyscallDesc("oldwait4")}, 742 {1073, SyscallDesc("recv")}, 743 {1074, SyscallDesc("send")}, 744 {1075, SyscallDesc("bdflush")}, 745 {1076, SyscallDesc("umount")}, 746 {1077, SyscallDesc("uselib")}, 747 {1078, SyscallDesc("sysctl")}, 748 {1079, SyscallDesc("fork")}, 749 {2011, SyscallDesc("getmainvars")} 750}; 751 752RiscvLinuxProcess64::RiscvLinuxProcess64(ProcessParams * params, 753 ObjectFile *objFile) : RiscvProcess64(params, objFile) 754{} 755 756SyscallDesc* 757RiscvLinuxProcess64::getDesc(int callnum) 758{ 759 return syscallDescs.find(callnum) != syscallDescs.end() ? 760 &syscallDescs.at(callnum) : nullptr; 761} 762 763RiscvLinuxProcess32::RiscvLinuxProcess32(ProcessParams * params, 764 ObjectFile *objFile) : RiscvProcess32(params, objFile) 765{} 766 767SyscallDesc* 768RiscvLinuxProcess32::getDesc(int callnum) 769{ 770 return syscallDescs.find(callnum) != syscallDescs.end() ? 771 &syscallDescs.at(callnum) : nullptr; 772}
| 89/// Target uname() handler. 90static SyscallReturn 91unameFunc64(SyscallDesc *desc, int callnum, Process *process, 92 ThreadContext *tc) 93{ 94 int index = 0; 95 TypedBufferArg<Linux::utsname> name(process->getSyscallArg(tc, index)); 96 97 strcpy(name->sysname, "Linux"); 98 strcpy(name->nodename,"sim.gem5.org"); 99 strcpy(name->release, "3.0.0"); 100 strcpy(name->version, "#1 Mon Aug 18 11:32:15 EDT 2003"); 101 strcpy(name->machine, "riscv64"); 102 103 name.copyOut(tc->getMemProxy()); 104 return 0; 105} 106 107/// Target uname() handler. 108static SyscallReturn 109unameFunc32(SyscallDesc *desc, int callnum, Process *process, 110 ThreadContext *tc) 111{ 112 int index = 0; 113 TypedBufferArg<Linux::utsname> name(process->getSyscallArg(tc, index)); 114 115 strcpy(name->sysname, "Linux"); 116 strcpy(name->nodename,"sim.gem5.org"); 117 strcpy(name->release, "3.0.0"); 118 strcpy(name->version, "#1 Mon Aug 18 11:32:15 EDT 2003"); 119 strcpy(name->machine, "riscv32"); 120 121 name.copyOut(tc->getMemProxy()); 122 return 0; 123} 124 125std::map<int, SyscallDesc> RiscvLinuxProcess64::syscallDescs = { 126 {0, SyscallDesc("io_setup")}, 127 {1, SyscallDesc("io_destroy")}, 128 {2, SyscallDesc("io_submit")}, 129 {3, SyscallDesc("io_cancel")}, 130 {4, SyscallDesc("io_getevents")}, 131 {5, SyscallDesc("setxattr")}, 132 {6, SyscallDesc("lsetxattr")}, 133 {7, SyscallDesc("fsetxattr")}, 134 {8, SyscallDesc("getxattr")}, 135 {9, SyscallDesc("lgetxattr")}, 136 {10, SyscallDesc("fgetxattr")}, 137 {11, SyscallDesc("listxattr")}, 138 {12, SyscallDesc("llistxattr")}, 139 {13, SyscallDesc("flistxattr")}, 140 {14, SyscallDesc("removexattr")}, 141 {15, SyscallDesc("lremovexattr")}, 142 {16, SyscallDesc("fremovexattr")}, 143 {17, SyscallDesc("getcwd", getcwdFunc)}, 144 {18, SyscallDesc("lookup_dcookie")}, 145 {19, SyscallDesc("eventfd2")}, 146 {20, SyscallDesc("epoll_create1")}, 147 {21, SyscallDesc("epoll_ctl")}, 148 {22, SyscallDesc("epoll_pwait")}, 149 {23, SyscallDesc("dup", dupFunc)}, 150 {24, SyscallDesc("dup3")}, 151 {25, SyscallDesc("fcntl", fcntl64Func)}, 152 {26, SyscallDesc("inotify_init1")}, 153 {27, SyscallDesc("inotify_add_watch")}, 154 {28, SyscallDesc("inotify_rm_watch")}, 155 {29, SyscallDesc("ioctl", ioctlFunc<RiscvLinux64>)}, 156 {30, SyscallDesc("ioprio_get")}, 157 {31, SyscallDesc("ioprio_set")}, 158 {32, SyscallDesc("flock")}, 159 {33, SyscallDesc("mknodat")}, 160 {34, SyscallDesc("mkdirat")}, 161 {35, SyscallDesc("unlinkat", unlinkatFunc<RiscvLinux64>)}, 162 {36, SyscallDesc("symlinkat")}, 163 {37, SyscallDesc("linkat")}, 164 {38, SyscallDesc("renameat", renameatFunc<RiscvLinux64>)}, 165 {39, SyscallDesc("umount2")}, 166 {40, SyscallDesc("mount")}, 167 {41, SyscallDesc("pivot_root")}, 168 {42, SyscallDesc("nfsservctl")}, 169 {43, SyscallDesc("statfs", statfsFunc<RiscvLinux64>)}, 170 {44, SyscallDesc("fstatfs", fstatfsFunc<RiscvLinux64>)}, 171 {45, SyscallDesc("truncate", truncateFunc)}, 172 {46, SyscallDesc("ftruncate", ftruncate64Func)}, 173 {47, SyscallDesc("fallocate", fallocateFunc)}, 174 {48, SyscallDesc("faccessat", faccessatFunc<RiscvLinux64>)}, 175 {49, SyscallDesc("chdir")}, 176 {50, SyscallDesc("fchdir")}, 177 {51, SyscallDesc("chroot")}, 178 {52, SyscallDesc("fchmod", fchmodFunc<RiscvLinux64>)}, 179 {53, SyscallDesc("fchmodat")}, 180 {54, SyscallDesc("fchownat")}, 181 {55, SyscallDesc("fchown", fchownFunc)}, 182 {56, SyscallDesc("openat", openatFunc<RiscvLinux64>)}, 183 {57, SyscallDesc("close", closeFunc)}, 184 {58, SyscallDesc("vhangup")}, 185 {59, SyscallDesc("pipe2")}, 186 {60, SyscallDesc("quotactl")}, 187 {61, SyscallDesc("getdents64")}, 188 {62, SyscallDesc("lseek", lseekFunc)}, 189 {63, SyscallDesc("read", readFunc<RiscvLinux64>)}, 190 {64, SyscallDesc("write", writeFunc<RiscvLinux64>)}, 191 {66, SyscallDesc("writev", writevFunc<RiscvLinux64>)}, 192 {67, SyscallDesc("pread64")}, 193 {68, SyscallDesc("pwrite64", pwrite64Func<RiscvLinux64>)}, 194 {69, SyscallDesc("preadv")}, 195 {70, SyscallDesc("pwritev")}, 196 {71, SyscallDesc("sendfile")}, 197 {72, SyscallDesc("pselect6")}, 198 {73, SyscallDesc("ppoll")}, 199 {74, SyscallDesc("signalfd64")}, 200 {75, SyscallDesc("vmsplice")}, 201 {76, SyscallDesc("splice")}, 202 {77, SyscallDesc("tee")}, 203 {78, SyscallDesc("readlinkat", readlinkatFunc<RiscvLinux64>)}, 204 {79, SyscallDesc("fstatat", fstatat64Func<RiscvLinux64>)}, 205 {80, SyscallDesc("fstat", fstat64Func<RiscvLinux64>)}, 206 {81, SyscallDesc("sync")}, 207 {82, SyscallDesc("fsync")}, 208 {83, SyscallDesc("fdatasync")}, 209 {84, SyscallDesc("sync_file_range2")}, 210 {85, SyscallDesc("timerfd_create")}, 211 {86, SyscallDesc("timerfd_settime")}, 212 {87, SyscallDesc("timerfd_gettime")}, 213 {88, SyscallDesc("utimensat")}, 214 {89, SyscallDesc("acct")}, 215 {90, SyscallDesc("capget")}, 216 {91, SyscallDesc("capset")}, 217 {92, SyscallDesc("personality")}, 218 {93, SyscallDesc("exit", exitFunc)}, 219 {94, SyscallDesc("exit_group", exitGroupFunc)}, 220 {95, SyscallDesc("waitid")}, 221 {96, SyscallDesc("set_tid_address", setTidAddressFunc)}, 222 {97, SyscallDesc("unshare")}, 223 {98, SyscallDesc("futex", futexFunc<RiscvLinux64>)}, 224 {99, SyscallDesc("set_robust_list", ignoreFunc, SyscallDesc::WarnOnce)}, 225 {100, SyscallDesc("get_robust_list", ignoreFunc, SyscallDesc::WarnOnce)}, 226 {101, SyscallDesc("nanosleep", ignoreFunc, SyscallDesc::WarnOnce)}, 227 {102, SyscallDesc("getitimer")}, 228 {103, SyscallDesc("setitimer")}, 229 {104, SyscallDesc("kexec_load")}, 230 {105, SyscallDesc("init_module")}, 231 {106, SyscallDesc("delete_module")}, 232 {107, SyscallDesc("timer_create")}, 233 {108, SyscallDesc("timer_gettime")}, 234 {109, SyscallDesc("timer_getoverrun")}, 235 {110, SyscallDesc("timer_settime")}, 236 {111, SyscallDesc("timer_delete")}, 237 {112, SyscallDesc("clock_settime")}, 238 {113, SyscallDesc("clock_gettime", clock_gettimeFunc<RiscvLinux64>)}, 239 {114, SyscallDesc("clock_getres", clock_getresFunc<RiscvLinux64>)}, 240 {115, SyscallDesc("clock_nanosleep")}, 241 {116, SyscallDesc("syslog")}, 242 {117, SyscallDesc("ptrace")}, 243 {118, SyscallDesc("sched_setparam")}, 244 {119, SyscallDesc("sched_setscheduler")}, 245 {120, SyscallDesc("sched_getscheduler")}, 246 {121, SyscallDesc("sched_getparam")}, 247 {122, SyscallDesc("sched_setaffinity")}, 248 {123, SyscallDesc("sched_getaffinity")}, 249 {124, SyscallDesc("sched_yield", ignoreFunc, SyscallDesc::WarnOnce)}, 250 {125, SyscallDesc("sched_get_priority_max")}, 251 {126, SyscallDesc("sched_get_priority_min")}, 252 {127, SyscallDesc("scheD_rr_get_interval")}, 253 {128, SyscallDesc("restart_syscall")}, 254 {129, SyscallDesc("kill")}, 255 {130, SyscallDesc("tkill")}, 256 {131, SyscallDesc("tgkill", tgkillFunc<RiscvLinux64>)}, 257 {132, SyscallDesc("sigaltstack")}, 258 {133, SyscallDesc("rt_sigsuspend", ignoreFunc, SyscallDesc::WarnOnce)}, 259 {134, SyscallDesc("rt_sigaction", ignoreFunc, SyscallDesc::WarnOnce)}, 260 {135, SyscallDesc("rt_sigprocmask", ignoreFunc, SyscallDesc::WarnOnce)}, 261 {136, SyscallDesc("rt_sigpending", ignoreFunc, SyscallDesc::WarnOnce)}, 262 {137, SyscallDesc("rt_sigtimedwait", ignoreFunc,SyscallDesc::WarnOnce)}, 263 {138, SyscallDesc("rt_sigqueueinfo", ignoreFunc,SyscallDesc::WarnOnce)}, 264 {139, SyscallDesc("rt_sigreturn", ignoreFunc, SyscallDesc::WarnOnce)}, 265 {140, SyscallDesc("setpriority")}, 266 {141, SyscallDesc("getpriority")}, 267 {142, SyscallDesc("reboot")}, 268 {143, SyscallDesc("setregid")}, 269 {144, SyscallDesc("setgid")}, 270 {145, SyscallDesc("setreuid")}, 271 {146, SyscallDesc("setuid", setuidFunc)}, 272 {147, SyscallDesc("setresuid")}, 273 {148, SyscallDesc("getresuid")}, 274 {149, SyscallDesc("getresgid")}, 275 {150, SyscallDesc("getresgid")}, 276 {151, SyscallDesc("setfsuid")}, 277 {152, SyscallDesc("setfsgid")}, 278 {153, SyscallDesc("times", timesFunc<RiscvLinux64>)}, 279 {154, SyscallDesc("setpgid", setpgidFunc)}, 280 {155, SyscallDesc("getpgid")}, 281 {156, SyscallDesc("getsid")}, 282 {157, SyscallDesc("setsid")}, 283 {158, SyscallDesc("getgroups")}, 284 {159, SyscallDesc("setgroups")}, 285 {160, SyscallDesc("uname", unameFunc64)}, 286 {161, SyscallDesc("sethostname")}, 287 {162, SyscallDesc("setdomainname")}, 288 {163, SyscallDesc("getrlimit", getrlimitFunc<RiscvLinux64>)}, 289 {164, SyscallDesc("setrlimit", ignoreFunc)}, 290 {165, SyscallDesc("getrusage", getrusageFunc<RiscvLinux64>)}, 291 {166, SyscallDesc("umask", umaskFunc)}, 292 {167, SyscallDesc("prctl")}, 293 {168, SyscallDesc("getcpu")}, 294 {169, SyscallDesc("gettimeofday", gettimeofdayFunc<RiscvLinux64>)}, 295 {170, SyscallDesc("settimeofday")}, 296 {171, SyscallDesc("adjtimex")}, 297 {172, SyscallDesc("getpid", getpidFunc)}, 298 {173, SyscallDesc("getppid", getppidFunc)}, 299 {174, SyscallDesc("getuid", getuidFunc)}, 300 {175, SyscallDesc("geteuid", geteuidFunc)}, 301 {176, SyscallDesc("getgid", getgidFunc)}, 302 {177, SyscallDesc("getegid", getegidFunc)}, 303 {178, SyscallDesc("gettid", gettidFunc)}, 304 {179, SyscallDesc("sysinfo", sysinfoFunc<RiscvLinux64>)}, 305 {180, SyscallDesc("mq_open")}, 306 {181, SyscallDesc("mq_unlink")}, 307 {182, SyscallDesc("mq_timedsend")}, 308 {183, SyscallDesc("mq_timedrecieve")}, 309 {184, SyscallDesc("mq_notify")}, 310 {185, SyscallDesc("mq_getsetattr")}, 311 {186, SyscallDesc("msgget")}, 312 {187, SyscallDesc("msgctl")}, 313 {188, SyscallDesc("msgrcv")}, 314 {189, SyscallDesc("msgsnd")}, 315 {190, SyscallDesc("semget")}, 316 {191, SyscallDesc("semctl")}, 317 {192, SyscallDesc("semtimedop")}, 318 {193, SyscallDesc("semop")}, 319 {194, SyscallDesc("shmget")}, 320 {195, SyscallDesc("shmctl")}, 321 {196, SyscallDesc("shmat")}, 322 {197, SyscallDesc("shmdt")}, 323 {198, SyscallDesc("socket")}, 324 {199, SyscallDesc("socketpair")}, 325 {200, SyscallDesc("bind")}, 326 {201, SyscallDesc("listen")}, 327 {202, SyscallDesc("accept")}, 328 {203, SyscallDesc("connect")}, 329 {204, SyscallDesc("getsockname")}, 330 {205, SyscallDesc("getpeername")}, 331 {206, SyscallDesc("sendo")}, 332 {207, SyscallDesc("recvfrom")}, 333 {208, SyscallDesc("setsockopt")}, 334 {209, SyscallDesc("getsockopt")}, 335 {210, SyscallDesc("shutdown")}, 336 {211, SyscallDesc("sendmsg")}, 337 {212, SyscallDesc("recvmsg")}, 338 {213, SyscallDesc("readahead")}, 339 {214, SyscallDesc("brk", brkFunc)}, 340 {215, SyscallDesc("munmap", munmapFunc)}, 341 {216, SyscallDesc("mremap", mremapFunc<RiscvLinux64>)}, 342 {217, SyscallDesc("add_key")}, 343 {218, SyscallDesc("request_key")}, 344 {219, SyscallDesc("keyctl")}, 345 {220, SyscallDesc("clone", cloneFunc<RiscvLinux64>)}, 346 {221, SyscallDesc("execve", execveFunc<RiscvLinux64>)}, 347 {222, SyscallDesc("mmap", mmapFunc<RiscvLinux64>)}, 348 {223, SyscallDesc("fadvise64")}, 349 {224, SyscallDesc("swapon")}, 350 {225, SyscallDesc("swapoff")}, 351 {226, SyscallDesc("mprotect", ignoreFunc)}, 352 {227, SyscallDesc("msync", ignoreFunc)}, 353 {228, SyscallDesc("mlock", ignoreFunc)}, 354 {229, SyscallDesc("munlock", ignoreFunc)}, 355 {230, SyscallDesc("mlockall", ignoreFunc)}, 356 {231, SyscallDesc("munlockall", ignoreFunc)}, 357 {232, SyscallDesc("mincore", ignoreFunc)}, 358 {233, SyscallDesc("madvise", ignoreFunc)}, 359 {234, SyscallDesc("remap_file_pages")}, 360 {235, SyscallDesc("mbind", ignoreFunc)}, 361 {236, SyscallDesc("get_mempolicy")}, 362 {237, SyscallDesc("set_mempolicy")}, 363 {238, SyscallDesc("migrate_pages")}, 364 {239, SyscallDesc("move_pages")}, 365 {240, SyscallDesc("tgsigqueueinfo")}, 366 {241, SyscallDesc("perf_event_open")}, 367 {242, SyscallDesc("accept4")}, 368 {243, SyscallDesc("recvmmsg")}, 369 {260, SyscallDesc("wait4")}, 370 {261, SyscallDesc("prlimit64", prlimitFunc<RiscvLinux64>)}, 371 {262, SyscallDesc("fanotify_init")}, 372 {263, SyscallDesc("fanotify_mark")}, 373 {264, SyscallDesc("name_to_handle_at")}, 374 {265, SyscallDesc("open_by_handle_at")}, 375 {266, SyscallDesc("clock_adjtime")}, 376 {267, SyscallDesc("syncfs")}, 377 {268, SyscallDesc("setns")}, 378 {269, SyscallDesc("sendmmsg")}, 379 {270, SyscallDesc("process_vm_ready")}, 380 {271, SyscallDesc("process_vm_writev")}, 381 {272, SyscallDesc("kcmp")}, 382 {273, SyscallDesc("finit_module")}, 383 {274, SyscallDesc("sched_setattr")}, 384 {275, SyscallDesc("sched_getattr")}, 385 {276, SyscallDesc("renameat2")}, 386 {277, SyscallDesc("seccomp")}, 387 {278, SyscallDesc("getrandom")}, 388 {279, SyscallDesc("memfd_create")}, 389 {280, SyscallDesc("bpf")}, 390 {281, SyscallDesc("execveat")}, 391 {282, SyscallDesc("userfaultid")}, 392 {283, SyscallDesc("membarrier")}, 393 {284, SyscallDesc("mlock2")}, 394 {285, SyscallDesc("copy_file_range")}, 395 {286, SyscallDesc("preadv2")}, 396 {287, SyscallDesc("pwritev2")}, 397 {1024, SyscallDesc("open", openFunc<RiscvLinux64>)}, 398 {1025, SyscallDesc("link")}, 399 {1026, SyscallDesc("unlink", unlinkFunc)}, 400 {1027, SyscallDesc("mknod")}, 401 {1028, SyscallDesc("chmod", chmodFunc<RiscvLinux64>)}, 402 {1029, SyscallDesc("chown", chownFunc)}, 403 {1030, SyscallDesc("mkdir", mkdirFunc)}, 404 {1031, SyscallDesc("rmdir")}, 405 {1032, SyscallDesc("lchown")}, 406 {1033, SyscallDesc("access", accessFunc)}, 407 {1034, SyscallDesc("rename", renameFunc)}, 408 {1035, SyscallDesc("readlink", readlinkFunc)}, 409 {1036, SyscallDesc("symlink")}, 410 {1037, SyscallDesc("utimes", utimesFunc<RiscvLinux64>)}, 411 {1038, SyscallDesc("stat", stat64Func<RiscvLinux64>)}, 412 {1039, SyscallDesc("lstat", lstat64Func<RiscvLinux64>)}, 413 {1040, SyscallDesc("pipe", pipeFunc)}, 414 {1041, SyscallDesc("dup2", dup2Func)}, 415 {1042, SyscallDesc("epoll_create")}, 416 {1043, SyscallDesc("inotifiy_init")}, 417 {1044, SyscallDesc("eventfd")}, 418 {1045, SyscallDesc("signalfd")}, 419 {1046, SyscallDesc("sendfile")}, 420 {1047, SyscallDesc("ftruncate", ftruncate64Func)}, 421 {1048, SyscallDesc("truncate", truncate64Func)}, 422 {1049, SyscallDesc("stat", stat64Func<RiscvLinux64>)}, 423 {1050, SyscallDesc("lstat", lstat64Func<RiscvLinux64>)}, 424 {1051, SyscallDesc("fstat", fstat64Func<RiscvLinux64>)}, 425 {1052, SyscallDesc("fcntl", fcntl64Func)}, 426 {1053, SyscallDesc("fadvise64")}, 427 {1054, SyscallDesc("newfstatat")}, 428 {1055, SyscallDesc("fstatfs", fstatfsFunc<RiscvLinux64>)}, 429 {1056, SyscallDesc("statfs", statfsFunc<RiscvLinux64>)}, 430 {1057, SyscallDesc("lseek", lseekFunc)}, 431 {1058, SyscallDesc("mmap", mmapFunc<RiscvLinux64>)}, 432 {1059, SyscallDesc("alarm")}, 433 {1060, SyscallDesc("getpgrp")}, 434 {1061, SyscallDesc("pause")}, 435 {1062, SyscallDesc("time", timeFunc<RiscvLinux64>)}, 436 {1063, SyscallDesc("utime")}, 437 {1064, SyscallDesc("creat")}, 438 {1065, SyscallDesc("getdents")}, 439 {1066, SyscallDesc("futimesat")}, 440 {1067, SyscallDesc("select")}, 441 {1068, SyscallDesc("poll")}, 442 {1069, SyscallDesc("epoll_wait")}, 443 {1070, SyscallDesc("ustat")}, 444 {1071, SyscallDesc("vfork")}, 445 {1072, SyscallDesc("oldwait4")}, 446 {1073, SyscallDesc("recv")}, 447 {1074, SyscallDesc("send")}, 448 {1075, SyscallDesc("bdflush")}, 449 {1076, SyscallDesc("umount")}, 450 {1077, SyscallDesc("uselib")}, 451 {1078, SyscallDesc("sysctl")}, 452 {1079, SyscallDesc("fork")}, 453 {2011, SyscallDesc("getmainvars")} 454}; 455 456std::map<int, SyscallDesc> RiscvLinuxProcess32::syscallDescs = { 457 {0, SyscallDesc("io_setup")}, 458 {1, SyscallDesc("io_destroy")}, 459 {2, SyscallDesc("io_submit")}, 460 {3, SyscallDesc("io_cancel")}, 461 {4, SyscallDesc("io_getevents")}, 462 {5, SyscallDesc("setxattr")}, 463 {6, SyscallDesc("lsetxattr")}, 464 {7, SyscallDesc("fsetxattr")}, 465 {8, SyscallDesc("getxattr")}, 466 {9, SyscallDesc("lgetxattr")}, 467 {10, SyscallDesc("fgetxattr")}, 468 {11, SyscallDesc("listxattr")}, 469 {12, SyscallDesc("llistxattr")}, 470 {13, SyscallDesc("flistxattr")}, 471 {14, SyscallDesc("removexattr")}, 472 {15, SyscallDesc("lremovexattr")}, 473 {16, SyscallDesc("fremovexattr")}, 474 {17, SyscallDesc("getcwd", getcwdFunc)}, 475 {18, SyscallDesc("lookup_dcookie")}, 476 {19, SyscallDesc("eventfd2")}, 477 {20, SyscallDesc("epoll_create1")}, 478 {21, SyscallDesc("epoll_ctl")}, 479 {22, SyscallDesc("epoll_pwait")}, 480 {23, SyscallDesc("dup", dupFunc)}, 481 {24, SyscallDesc("dup3")}, 482 {25, SyscallDesc("fcntl", fcntlFunc)}, 483 {26, SyscallDesc("inotify_init1")}, 484 {27, SyscallDesc("inotify_add_watch")}, 485 {28, SyscallDesc("inotify_rm_watch")}, 486 {29, SyscallDesc("ioctl", ioctlFunc<RiscvLinux32>)}, 487 {30, SyscallDesc("ioprio_get")}, 488 {31, SyscallDesc("ioprio_set")}, 489 {32, SyscallDesc("flock")}, 490 {33, SyscallDesc("mknodat")}, 491 {34, SyscallDesc("mkdirat")}, 492 {35, SyscallDesc("unlinkat", unlinkatFunc<RiscvLinux32>)}, 493 {36, SyscallDesc("symlinkat")}, 494 {37, SyscallDesc("linkat")}, 495 {38, SyscallDesc("renameat", renameatFunc<RiscvLinux32>)}, 496 {39, SyscallDesc("umount2")}, 497 {40, SyscallDesc("mount")}, 498 {41, SyscallDesc("pivot_root")}, 499 {42, SyscallDesc("nfsservctl")}, 500 {43, SyscallDesc("statfs", statfsFunc<RiscvLinux32>)}, 501 {44, SyscallDesc("fstatfs", fstatfsFunc<RiscvLinux32>)}, 502 {45, SyscallDesc("truncate", truncateFunc)}, 503 {46, SyscallDesc("ftruncate", ftruncateFunc)}, 504 {47, SyscallDesc("fallocate", fallocateFunc)}, 505 {48, SyscallDesc("faccessat", faccessatFunc<RiscvLinux32>)}, 506 {49, SyscallDesc("chdir")}, 507 {50, SyscallDesc("fchdir")}, 508 {51, SyscallDesc("chroot")}, 509 {52, SyscallDesc("fchmod", fchmodFunc<RiscvLinux32>)}, 510 {53, SyscallDesc("fchmodat")}, 511 {54, SyscallDesc("fchownat")}, 512 {55, SyscallDesc("fchown", fchownFunc)}, 513 {56, SyscallDesc("openat", openatFunc<RiscvLinux32>)}, 514 {57, SyscallDesc("close", closeFunc)}, 515 {58, SyscallDesc("vhangup")}, 516 {59, SyscallDesc("pipe2")}, 517 {60, SyscallDesc("quotactl")}, 518 {61, SyscallDesc("getdents64")}, 519 {62, SyscallDesc("lseek", lseekFunc)}, 520 {63, SyscallDesc("read", readFunc<RiscvLinux32>)}, 521 {64, SyscallDesc("write", writeFunc<RiscvLinux32>)}, 522 {66, SyscallDesc("writev", writevFunc<RiscvLinux32>)}, 523 {67, SyscallDesc("pread64")}, 524 {68, SyscallDesc("pwrite64", pwrite64Func<RiscvLinux32>)}, 525 {69, SyscallDesc("preadv")}, 526 {70, SyscallDesc("pwritev")}, 527 {71, SyscallDesc("sendfile")}, 528 {72, SyscallDesc("pselect6")}, 529 {73, SyscallDesc("ppoll")}, 530 {74, SyscallDesc("signalfd64")}, 531 {75, SyscallDesc("vmsplice")}, 532 {76, SyscallDesc("splice")}, 533 {77, SyscallDesc("tee")}, 534 {78, SyscallDesc("readlinkat", readlinkatFunc<RiscvLinux32>)}, 535 {79, SyscallDesc("fstatat")}, 536 {80, SyscallDesc("fstat", fstatFunc<RiscvLinux32>)}, 537 {81, SyscallDesc("sync")}, 538 {82, SyscallDesc("fsync")}, 539 {83, SyscallDesc("fdatasync")}, 540 {84, SyscallDesc("sync_file_range2")}, 541 {85, SyscallDesc("timerfd_create")}, 542 {86, SyscallDesc("timerfd_settime")}, 543 {87, SyscallDesc("timerfd_gettime")}, 544 {88, SyscallDesc("utimensat")}, 545 {89, SyscallDesc("acct")}, 546 {90, SyscallDesc("capget")}, 547 {91, SyscallDesc("capset")}, 548 {92, SyscallDesc("personality")}, 549 {93, SyscallDesc("exit", exitFunc)}, 550 {94, SyscallDesc("exit_group", exitGroupFunc)}, 551 {95, SyscallDesc("waitid")}, 552 {96, SyscallDesc("set_tid_address", setTidAddressFunc)}, 553 {97, SyscallDesc("unshare")}, 554 {98, SyscallDesc("futex", futexFunc<RiscvLinux32>)}, 555 {99, SyscallDesc("set_robust_list", ignoreFunc, SyscallDesc::WarnOnce)}, 556 {100, SyscallDesc("get_robust_list", ignoreFunc, SyscallDesc::WarnOnce)}, 557 {101, SyscallDesc("nanosleep")}, 558 {102, SyscallDesc("getitimer")}, 559 {103, SyscallDesc("setitimer")}, 560 {104, SyscallDesc("kexec_load")}, 561 {105, SyscallDesc("init_module")}, 562 {106, SyscallDesc("delete_module")}, 563 {107, SyscallDesc("timer_create")}, 564 {108, SyscallDesc("timer_gettime")}, 565 {109, SyscallDesc("timer_getoverrun")}, 566 {110, SyscallDesc("timer_settime")}, 567 {111, SyscallDesc("timer_delete")}, 568 {112, SyscallDesc("clock_settime")}, 569 {113, SyscallDesc("clock_gettime", clock_gettimeFunc<RiscvLinux32>)}, 570 {114, SyscallDesc("clock_getres", clock_getresFunc<RiscvLinux32>)}, 571 {115, SyscallDesc("clock_nanosleep")}, 572 {116, SyscallDesc("syslog")}, 573 {117, SyscallDesc("ptrace")}, 574 {118, SyscallDesc("sched_setparam")}, 575 {119, SyscallDesc("sched_setscheduler")}, 576 {120, SyscallDesc("sched_getscheduler")}, 577 {121, SyscallDesc("sched_getparam")}, 578 {122, SyscallDesc("sched_setaffinity")}, 579 {123, SyscallDesc("sched_getaffinity")}, 580 {124, SyscallDesc("sched_yield", ignoreFunc, SyscallDesc::WarnOnce)}, 581 {125, SyscallDesc("sched_get_priority_max")}, 582 {126, SyscallDesc("sched_get_priority_min")}, 583 {127, SyscallDesc("scheD_rr_get_interval")}, 584 {128, SyscallDesc("restart_syscall")}, 585 {129, SyscallDesc("kill")}, 586 {130, SyscallDesc("tkill")}, 587 {131, SyscallDesc("tgkill", tgkillFunc<RiscvLinux32>)}, 588 {132, SyscallDesc("sigaltstack")}, 589 {133, SyscallDesc("rt_sigsuspend", ignoreFunc, SyscallDesc::WarnOnce)}, 590 {134, SyscallDesc("rt_sigaction", ignoreFunc, SyscallDesc::WarnOnce)}, 591 {135, SyscallDesc("rt_sigprocmask", ignoreFunc, SyscallDesc::WarnOnce)}, 592 {136, SyscallDesc("rt_sigpending", ignoreFunc, SyscallDesc::WarnOnce)}, 593 {137, SyscallDesc("rt_sigtimedwait", ignoreFunc,SyscallDesc::WarnOnce)}, 594 {138, SyscallDesc("rt_sigqueueinfo", ignoreFunc,SyscallDesc::WarnOnce)}, 595 {139, SyscallDesc("rt_sigreturn", ignoreFunc, SyscallDesc::WarnOnce)}, 596 {140, SyscallDesc("setpriority")}, 597 {141, SyscallDesc("getpriority")}, 598 {142, SyscallDesc("reboot")}, 599 {143, SyscallDesc("setregid")}, 600 {144, SyscallDesc("setgid")}, 601 {145, SyscallDesc("setreuid")}, 602 {146, SyscallDesc("setuid", setuidFunc)}, 603 {147, SyscallDesc("setresuid")}, 604 {148, SyscallDesc("getresuid")}, 605 {149, SyscallDesc("getresgid")}, 606 {150, SyscallDesc("getresgid")}, 607 {151, SyscallDesc("setfsuid")}, 608 {152, SyscallDesc("setfsgid")}, 609 {153, SyscallDesc("times", timesFunc<RiscvLinux32>)}, 610 {154, SyscallDesc("setpgid", setpgidFunc)}, 611 {155, SyscallDesc("getpgid")}, 612 {156, SyscallDesc("getsid")}, 613 {157, SyscallDesc("setsid")}, 614 {158, SyscallDesc("getgroups")}, 615 {159, SyscallDesc("setgroups")}, 616 {160, SyscallDesc("uname", unameFunc32)}, 617 {161, SyscallDesc("sethostname")}, 618 {162, SyscallDesc("setdomainname")}, 619 {163, SyscallDesc("getrlimit", getrlimitFunc<RiscvLinux32>)}, 620 {164, SyscallDesc("setrlimit", ignoreFunc)}, 621 {165, SyscallDesc("getrusage", getrusageFunc<RiscvLinux32>)}, 622 {166, SyscallDesc("umask", umaskFunc)}, 623 {167, SyscallDesc("prctl")}, 624 {168, SyscallDesc("getcpu")}, 625 {169, SyscallDesc("gettimeofday", gettimeofdayFunc<RiscvLinux32>)}, 626 {170, SyscallDesc("settimeofday")}, 627 {171, SyscallDesc("adjtimex")}, 628 {172, SyscallDesc("getpid", getpidFunc)}, 629 {173, SyscallDesc("getppid", getppidFunc)}, 630 {174, SyscallDesc("getuid", getuidFunc)}, 631 {175, SyscallDesc("geteuid", geteuidFunc)}, 632 {176, SyscallDesc("getgid", getgidFunc)}, 633 {177, SyscallDesc("getegid", getegidFunc)}, 634 {178, SyscallDesc("gettid", gettidFunc)}, 635 {179, SyscallDesc("sysinfo", sysinfoFunc<RiscvLinux32>)}, 636 {180, SyscallDesc("mq_open")}, 637 {181, SyscallDesc("mq_unlink")}, 638 {182, SyscallDesc("mq_timedsend")}, 639 {183, SyscallDesc("mq_timedrecieve")}, 640 {184, SyscallDesc("mq_notify")}, 641 {185, SyscallDesc("mq_getsetattr")}, 642 {186, SyscallDesc("msgget")}, 643 {187, SyscallDesc("msgctl")}, 644 {188, SyscallDesc("msgrcv")}, 645 {189, SyscallDesc("msgsnd")}, 646 {190, SyscallDesc("semget")}, 647 {191, SyscallDesc("semctl")}, 648 {192, SyscallDesc("semtimedop")}, 649 {193, SyscallDesc("semop")}, 650 {194, SyscallDesc("shmget")}, 651 {195, SyscallDesc("shmctl")}, 652 {196, SyscallDesc("shmat")}, 653 {197, SyscallDesc("shmdt")}, 654 {198, SyscallDesc("socket")}, 655 {199, SyscallDesc("socketpair")}, 656 {200, SyscallDesc("bind")}, 657 {201, SyscallDesc("listen")}, 658 {202, SyscallDesc("accept")}, 659 {203, SyscallDesc("connect")}, 660 {204, SyscallDesc("getsockname")}, 661 {205, SyscallDesc("getpeername")}, 662 {206, SyscallDesc("sendo")}, 663 {207, SyscallDesc("recvfrom")}, 664 {208, SyscallDesc("setsockopt")}, 665 {209, SyscallDesc("getsockopt")}, 666 {210, SyscallDesc("shutdown")}, 667 {211, SyscallDesc("sendmsg")}, 668 {212, SyscallDesc("recvmsg")}, 669 {213, SyscallDesc("readahead")}, 670 {214, SyscallDesc("brk", brkFunc)}, 671 {215, SyscallDesc("munmap", munmapFunc)}, 672 {216, SyscallDesc("mremap", mremapFunc<RiscvLinux32>)}, 673 {217, SyscallDesc("add_key")}, 674 {218, SyscallDesc("request_key")}, 675 {219, SyscallDesc("keyctl")}, 676 {220, SyscallDesc("clone", cloneFunc<RiscvLinux32>)}, 677 {221, SyscallDesc("execve", execveFunc<RiscvLinux32>)}, 678 {222, SyscallDesc("mmap", mmapFunc<RiscvLinux32>)}, 679 {223, SyscallDesc("fadvise64")}, 680 {224, SyscallDesc("swapon")}, 681 {225, SyscallDesc("swapoff")}, 682 {226, SyscallDesc("mprotect", ignoreFunc)}, 683 {227, SyscallDesc("msync", ignoreFunc)}, 684 {228, SyscallDesc("mlock", ignoreFunc)}, 685 {229, SyscallDesc("munlock", ignoreFunc)}, 686 {230, SyscallDesc("mlockall", ignoreFunc)}, 687 {231, SyscallDesc("munlockall", ignoreFunc)}, 688 {232, SyscallDesc("mincore", ignoreFunc)}, 689 {233, SyscallDesc("madvise", ignoreFunc)}, 690 {234, SyscallDesc("remap_file_pages")}, 691 {235, SyscallDesc("mbind", ignoreFunc)}, 692 {236, SyscallDesc("get_mempolicy")}, 693 {237, SyscallDesc("set_mempolicy")}, 694 {238, SyscallDesc("migrate_pages")}, 695 {239, SyscallDesc("move_pages")}, 696 {240, SyscallDesc("tgsigqueueinfo")}, 697 {241, SyscallDesc("perf_event_open")}, 698 {242, SyscallDesc("accept4")}, 699 {243, SyscallDesc("recvmmsg")}, 700 {260, SyscallDesc("wait4")}, 701 {261, SyscallDesc("prlimit64", prlimitFunc<RiscvLinux32>)}, 702 {262, SyscallDesc("fanotify_init")}, 703 {263, SyscallDesc("fanotify_mark")}, 704 {264, SyscallDesc("name_to_handle_at")}, 705 {265, SyscallDesc("open_by_handle_at")}, 706 {266, SyscallDesc("clock_adjtime")}, 707 {267, SyscallDesc("syncfs")}, 708 {268, SyscallDesc("setns")}, 709 {269, SyscallDesc("sendmmsg")}, 710 {270, SyscallDesc("process_vm_ready")}, 711 {271, SyscallDesc("process_vm_writev")}, 712 {272, SyscallDesc("kcmp")}, 713 {273, SyscallDesc("finit_module")}, 714 {274, SyscallDesc("sched_setattr")}, 715 {275, SyscallDesc("sched_getattr")}, 716 {276, SyscallDesc("renameat2")}, 717 {277, SyscallDesc("seccomp")}, 718 {278, SyscallDesc("getrandom")}, 719 {279, SyscallDesc("memfd_create")}, 720 {280, SyscallDesc("bpf")}, 721 {281, SyscallDesc("execveat")}, 722 {282, SyscallDesc("userfaultid")}, 723 {283, SyscallDesc("membarrier")}, 724 {284, SyscallDesc("mlock2")}, 725 {285, SyscallDesc("copy_file_range")}, 726 {286, SyscallDesc("preadv2")}, 727 {287, SyscallDesc("pwritev2")}, 728 {1024, SyscallDesc("open", openFunc<RiscvLinux32>)}, 729 {1025, SyscallDesc("link")}, 730 {1026, SyscallDesc("unlink", unlinkFunc)}, 731 {1027, SyscallDesc("mknod")}, 732 {1028, SyscallDesc("chmod", chmodFunc<RiscvLinux32>)}, 733 {1029, SyscallDesc("chown", chownFunc)}, 734 {1030, SyscallDesc("mkdir", mkdirFunc)}, 735 {1031, SyscallDesc("rmdir")}, 736 {1032, SyscallDesc("lchown")}, 737 {1033, SyscallDesc("access", accessFunc)}, 738 {1034, SyscallDesc("rename", renameFunc)}, 739 {1035, SyscallDesc("readlink", readlinkFunc)}, 740 {1036, SyscallDesc("symlink")}, 741 {1037, SyscallDesc("utimes", utimesFunc<RiscvLinux32>)}, 742 {1038, SyscallDesc("stat", statFunc<RiscvLinux32>)}, 743 {1039, SyscallDesc("lstat", lstatFunc<RiscvLinux32>)}, 744 {1040, SyscallDesc("pipe", pipeFunc)}, 745 {1041, SyscallDesc("dup2", dup2Func)}, 746 {1042, SyscallDesc("epoll_create")}, 747 {1043, SyscallDesc("inotifiy_init")}, 748 {1044, SyscallDesc("eventfd")}, 749 {1045, SyscallDesc("signalfd")}, 750 {1046, SyscallDesc("sendfile")}, 751 {1047, SyscallDesc("ftruncate", ftruncateFunc)}, 752 {1048, SyscallDesc("truncate", truncateFunc)}, 753 {1049, SyscallDesc("stat", statFunc<RiscvLinux32>)}, 754 {1050, SyscallDesc("lstat", lstatFunc<RiscvLinux32>)}, 755 {1051, SyscallDesc("fstat", fstatFunc<RiscvLinux32>)}, 756 {1052, SyscallDesc("fcntl", fcntlFunc)}, 757 {1053, SyscallDesc("fadvise64")}, 758 {1054, SyscallDesc("newfstatat")}, 759 {1055, SyscallDesc("fstatfs", fstatfsFunc<RiscvLinux32>)}, 760 {1056, SyscallDesc("statfs", statfsFunc<RiscvLinux32>)}, 761 {1057, SyscallDesc("lseek", lseekFunc)}, 762 {1058, SyscallDesc("mmap", mmapFunc<RiscvLinux32>)}, 763 {1059, SyscallDesc("alarm")}, 764 {1060, SyscallDesc("getpgrp")}, 765 {1061, SyscallDesc("pause")}, 766 {1062, SyscallDesc("time", timeFunc<RiscvLinux32>)}, 767 {1063, SyscallDesc("utime")}, 768 {1064, SyscallDesc("creat")}, 769 {1065, SyscallDesc("getdents")}, 770 {1066, SyscallDesc("futimesat")}, 771 {1067, SyscallDesc("select")}, 772 {1068, SyscallDesc("poll")}, 773 {1069, SyscallDesc("epoll_wait")}, 774 {1070, SyscallDesc("ustat")}, 775 {1071, SyscallDesc("vfork")}, 776 {1072, SyscallDesc("oldwait4")}, 777 {1073, SyscallDesc("recv")}, 778 {1074, SyscallDesc("send")}, 779 {1075, SyscallDesc("bdflush")}, 780 {1076, SyscallDesc("umount")}, 781 {1077, SyscallDesc("uselib")}, 782 {1078, SyscallDesc("sysctl")}, 783 {1079, SyscallDesc("fork")}, 784 {2011, SyscallDesc("getmainvars")} 785}; 786 787RiscvLinuxProcess64::RiscvLinuxProcess64(ProcessParams * params, 788 ObjectFile *objFile) : RiscvProcess64(params, objFile) 789{} 790 791SyscallDesc* 792RiscvLinuxProcess64::getDesc(int callnum) 793{ 794 return syscallDescs.find(callnum) != syscallDescs.end() ? 795 &syscallDescs.at(callnum) : nullptr; 796} 797 798RiscvLinuxProcess32::RiscvLinuxProcess32(ProcessParams * params, 799 ObjectFile *objFile) : RiscvProcess32(params, objFile) 800{} 801 802SyscallDesc* 803RiscvLinuxProcess32::getDesc(int callnum) 804{ 805 return syscallDescs.find(callnum) != syscallDescs.end() ? 806 &syscallDescs.at(callnum) : nullptr; 807}
|