linux-kernel-module-cheat
linux-kernel-module-cheat copied to clipboard
Error with syscall 318 for gem5 in syscall mode SE, when executing with a multi agent reinforcement learning algorithm
I'm trying to execute a python algorithm (https://github.com/shariqiqbal2810/maddpg-pytorch) on gem5 in se mode in X86. But, at first I got an error syscall 318 out of range. So, I tried to import the get random function into the syscalltlb64 source code, like this:
{ 313, "finit_module" }, { 314, "sched_setattr" }, { 315, "sched_getattr" }, { 316, "renameat2" }, { 317, "seccomp" }, { 318, "getrandom"}, { 319, "memfd_create" }, { 320, "kexec_file_load" }, { 321, "bpf" },
I'm trying to execute a python algorithm (https://github.com/shariqiqbal2810/maddpg-pytorch) on gem5 in se mode in X86. But, at first I got an error syscall 318 out of range. So, I tried to import the get random function into the syscalltlb64 source code, like this:
{ 313, "finit_module" }, { 314, "sched_setattr" }, { 315, "sched_getattr" }, { 316, "renameat2" }, { 317, "seccomp" }, { 318, "getrandom"}, { 319, "memfd_create" }, { 320, "kexec_file_load" }, { 321, "bpf" },
Again, I got an error saying syscall 318 unimplemented. So, I just did:
{ 318, "getrandom", getrandomFunc},
Again, the problem continues as I got an error saying:
{318, "getrandom", <expression error>}, {319, "memfd_create"}, {320, "kexec_file_load"}, {321, "bpf"}}' from '<brace-enclosed initializer list>' to 'gem5::SyscallDescTable<gem5::X86ISA::EmuLinux::SyscallABI64>'
374 | };
| ^
| |
| <brace-enclosed initializer list>
scons: *** [build/X86/arch/x86/linux/syscall_tbl64.o] Error 1
scons: building terminated because of errors.
*** Summary of Warnings ***
Can anyone help me how to solve this problem? Note: My linux kernel version is 5.4.0-88-generic and I'm using ubuntu 20.04 LTS. Thanks for the help
You need to have a look at the compilation error closely, there should be something above the lines you gave that explains the problem better. Try to do something more similar to other nearby lines above.
Hello cirosantilli,
This is my compilation error.
scons: Building targets ...
[VER TAGS] -> X86/sim/tags.cc
[ CXX] X86/arch/x86/linux/syscall_tbl64.cc -> .o
build/X86/arch/x86/linux/syscall_tbl64.cc:370:25: error: 'getrandomFunc' was not declared in this scope
370 | { 318, "getrandom", getrandomFunc},
| ^~~~~~~~~~~~~
build/X86/arch/x86/linux/syscall_tbl64.cc:374:1: error: could not convert '{{0, "read", readFuncgem5::X86Linux64}, {1, "write", writeFuncgem5::X86Linux64}, {2, "open", openFuncgem5::X86Linux64}, {3, "close", gem5::closeFunc}, {4, "stat", stat64Funcgem5::X86Linux64}, {5, "fstat", fstat64Funcgem5::X86Linux64}, {6, "lstat", lstat64Funcgem5::X86Linux64}, {7, "poll", pollFuncgem5::X86Linux64}, {8, "lseek", gem5::lseekFunc}, {9, "mmap", mmapFuncgem5::X86Linux64}, {10, "mprotect", gem5::ignoreFunc}, {11, "munmap", gem5::munmapFunc}, {12, "brk", gem5::brkFunc}, {13, "rt_sigaction", gem5::ignoreWarnOnceFunc}, {14, "rt_sigprocmask", gem5::ignoreWarnOnceFunc}, {15, "rt_sigreturn"}, {16, "ioctl", ioctlFuncgem5::X86Linux64}, {17, "pread64", pread64Funcgem5::X86Linux64}, {18, "pwrite64", pwrite64Funcgem5::X86Linux64}, {19, "readv", readvFuncgem5::X86Linux64}, {20, "writev", writevFuncgem5::X86Linux64}, {21, "access", gem5::ignoreFunc}, {22, "pipe", gem5::pipeFunc}, {23, "select", selectFuncgem5::X86Linux64}, {24, "sched_yield", gem5::ignoreWarnOnceFunc}, {25, "mremap", mremapFuncgem5::X86Linux64}, {26, "msync"}, {27, "mincore"}, {28, "madvise", gem5::ignoreFunc}, {29, "shmget"}, {30, "shmat"}, {31, "shmctl"}, {32, "dup", gem5::dupFunc}, {33, "dup2", gem5::dup2Func}, {34, "pause"}, {35, "nanosleep", gem5::ignoreWarnOnceFunc}, {36, "getitimer"}, {37, "alarm"}, {38, "setitimer"}, {39, "getpid", gem5::getpidFunc}, {40, "sendfile"}, {41, "socket", socketFuncgem5::X86Linux64}, {42, "connect", gem5::connectFunc}, {43, "accept", acceptFuncgem5::X86Linux64}, {44, "sendto", gem5::sendtoFunc}, {45, "recvfrom", gem5::recvfromFunc}, {46, "sendmsg", gem5::sendmsgFunc}, {47, "recvmsg", gem5::recvmsgFunc}, {48, "shutdown", gem5::shutdownFunc}, {49, "bind", gem5::bindFunc}, {50, "listen", gem5::listenFunc}, {51, "getsockname", gem5::getsocknameFunc}, {52, "getpeername", gem5::getpeernameFunc}, {53, "socketpair", socketpairFuncgem5::X86Linux64}, {54, "setsockopt", gem5::setsockoptFunc}, {55, "getsockopt", gem5::getsockoptFunc}, {56, "clone", cloneFuncgem5::X86Linux64}, {57, "fork"}, {58, "vfork"}, {59, "execve", execveFuncgem5::X86Linux64}, {60, "exit", gem5::exitFunc}, {61, "wait4", wait4Funcgem5::X86Linux64}, {62, "kill"}, {63, "uname", gem5::X86ISA::unameFunc}, {64, "semget"}, {65, "semop"}, {66, "semctl"}, {67, "shmdt"}, {68, "msgget"}, {69, "msgsnd"}, {70, "msgrcv"}, {71, "msgctl"}, {72, "fcntl", gem5::fcntlFunc}, {73, "flock"}, {74, "fsync"}, {75, "fdatasync", gem5::ignoreFunc}, {76, "truncate", gem5::truncateFunc}, {77, "ftruncate", gem5::ftruncateFunc}, {78, "getdents", gem5::getdentsFunc}, {79, "getcwd", gem5::getcwdFunc}, {80, "chdir", gem5::chdirFunc}, {81, "fchdir"}, {82, "rename", gem5::renameFunc}, {83, "mkdir", gem5::mkdirFunc}, {84, "rmdir", gem5::rmdirFunc}, {85, "creat"}, {86, "link", gem5::linkFunc}, {87, "unlink", gem5::unlinkFunc}, {88, "symlink", gem5::symlinkFunc}, {89, "readlink", gem5::readlinkFunc}, {90, "chmod", gem5::ignoreFunc}, {91, "fchmod"}, {92, "chown"}, {93, "fchown"}, {94, "lchown"}, {95, "umask", gem5::umaskFunc}, {96, "gettimeofday", gettimeofdayFuncgem5::X86Linux64}, {97, "getrlimit", getrlimitFuncgem5::X86Linux64}, {98, "getrusage", getrusageFuncgem5::X86Linux64}, {99, "sysinfo", sysinfoFuncgem5::X86Linux64}, {100, "times", timesFuncgem5::X86Linux64}, {101, "ptrace"}, {102, "getuid", gem5::getuidFunc}, {103, "syslog"}, {104, "getgid", gem5::getgidFunc}, {105, "setuid"}, {106, "setgid"}, {107, "geteuid", gem5::geteuidFunc}, {108, "getegid", gem5::getegidFunc}, {109, "setpgid", gem5::setpgidFunc}, {110, "getppid", gem5::getppidFunc}, {111, "getpgrp", gem5::getpgrpFunc}, {112, "setsid"}, {113, "setreuid"}, {114, "setregid"}, {115, "getgroups"}, {116, "setgroups"}, {117, "setresuid", gem5::ignoreFunc}, {118, "getresuid"}, {119, "setresgid"}, {120, "getresgid"}, {121, "getpgid"}, {122, "setfsuid"}, {123, "setfsgid"}, {124, "getsid"}, {125, "capget"}, {126, "capset"}, {127, "rt_sigpending"}, {128, "rt_sigtimedwait"}, {129, "rt_sigqueueinfo"}, {130, "rt_sigsuspend"}, {131, "sigaltstack", gem5::ignoreFunc}, {132, "utime"}, {133, "mknod", gem5::mknodFunc}, {134, "uselib"}, {135, "personality"}, {136, "ustat"}, {137, "statfs", statfsFuncgem5::X86Linux64}, {138, "fstatfs", fstatfsFuncgem5::X86Linux64}, {139, "sysfs"}, {140, "getpriority"}, {141, "setpriority", gem5::ignoreFunc}, {142, "sched_setparam"}, {143, "sched_getparam"}, {144, "sched_setscheduler"}, {145, "sched_getscheduler"}, {146, "sched_get_priority_max"}, {147, "sched_get_priority_min"}, {148, "sched_rr_get_interval"}, {149, "mlock"}, {150, "munlock"}, {151, "mlockall"}, {152, "munlockall"}, {153, "vhangup"}, {154, "modify_ldt"}, {155, "pivot_root"}, {156, "_sysctl"}, {157, "prctl", gem5::ignoreFunc}, {158, "arch_prctl", gem5::X86ISA::archPrctlFunc}, {159, "adjtimex"}, {160, "setrlimit", gem5::ignoreFunc}, {161, "chroot"}, {162, "sync"}, {163, "acct"}, {164, "settimeofday"}, {165, "mount"}, {166, "umount2"}, {167, "swapon"}, {168, "swapoff"}, {169, "reboot"}, {170, "sethostname"}, {171, "setdomainname"}, {172, "iopl"}, {173, "ioperm"}, {174, "create_module"}, {175, "init_module"}, {176, "delete_module"}, {177, "get_kernel_syms"}, {178, "query_module"}, {179, "quotactl"}, {180, "nfsservctl"}, {181, "getpmsg"}, {182, "putpmsg"}, {183, "afs_syscall"}, {184, "tuxcall"}, {185, "security"}, {186, "gettid", gem5::gettidFunc}, {187, "readahead"}, {188, "setxattr"}, {189, "lsetxattr"}, {190, "fsetxattr"}, {191, "getxattr"}, {192, "lgetxattr"}, {193, "fgetxattr"}, {194, "listxattr"}, {195, "llistxattr"}, {196, "flistxattr"}, {197, "removexattr"}, {198, "lremovexattr"}, {199, "fremovexattr"}, {200, "tkill"}, {201, "time", timeFuncgem5::X86Linux64}, {202, "futex", futexFuncgem5::X86Linux64}, {203, "sched_setaffinity", gem5::ignoreFunc}, {204, "sched_getaffinity", schedGetaffinityFuncgem5::X86Linux64}, {205, "set_thread_area"}, {206, "io_setup"}, {207, "io_destroy"}, {208, "io_getevents"}, {209, "io_submit"}, {210, "io_cancel"}, {211, "get_thread_area"}, {212, "lookup_dcookie"}, {213, "epoll_create"}, {214, "epoll_ctl_old"}, {215, "epoll_wait_old"}, {216, "remap_file_pages"}, {217, "getdents64", gem5::getdents64Func}, {218, "set_tid_address", gem5::setTidAddressFunc}, {219, "restart_syscall"}, {220, "semtimedop"}, {221, "fadvise64", gem5::ignoreFunc}, {222, "timer_create"}, {223, "timer_settime"}, {224, "timer_gettime"}, {225, "timer_getoverrun"}, {226, "timer_delete"}, {227, "clock_settime"}, {228, "clock_gettime", clock_gettimeFuncgem5::X86Linux64}, {229, "clock_getres", clock_getresFuncgem5::X86Linux64}, {230, "clock_nanosleep"}, {231, "exit_group", gem5::exitGroupFunc}, {232, "epoll_wait"}, {233, "epoll_ctl"}, {234, "tgkill", tgkillFuncgem5::X86Linux64}, {235, "utimes"}, {236, "vserver"}, {237, "mbind", gem5::ignoreFunc}, {238, "set_mempolicy"}, {239, "get_mempolicy", gem5::ignoreFunc}, {240, "mq_open"}, {241, "mq_unlink"}, {242, "mq_timedsend"}, {243, "mq_timedreceive"}, {244, "mq_notify"}, {245, "mq_getsetattr"}, {246, "kexec_load"}, {247, "waitid"}, {248, "add_key"}, {249, "request_key"}, {250, "keyctl"}, {251, "ioprio_set"}, {252, "ioprio_get"}, {253, "inotify_init"}, {254, "inotify_add_watch"}, {255, "inotify_rm_watch"}, {256, "migrate_pages"}, {257, "openat", openatFuncgem5::X86Linux64}, {258, "mkdirat"}, {259, "mknodat"}, {260, "fchownat"}, {261, "futimesat"}, {262, "newfstatat"}, {263, "unlinkat"}, {264, "renameat"}, {265, "linkat"}, {266, "symlinkat"}, {267, "readlinkat", gem5::readlinkFunc}, {268, "fchmodat"}, {269, "faccessat"}, {270, "pselect6"}, {271, "ppoll"}, {272, "unshare"}, {273, "set_robust_list", gem5::ignoreFunc}, {274, "get_robust_list"}, {275, "splice"}, {276, "tee"}, {277, "sync_file_range"}, {278, "vmsplice"}, {279, "move_pages"}, {280, "utimensat"}, {281, "epoll_pwait"}, {282, "signalfd"}, {283, "timerfd_create"}, {284, "eventfd", eventfdFuncgem5::X86Linux64}, {285, "fallocate", gem5::fallocateFunc}, {286, "timerfd_settime"}, {287, "timerfd_gettime"}, {288, "accept4"}, {289, "signalfd4"}, {290, "eventfd2", eventfdFuncgem5::X86Linux64}, {291, "epoll_create1"}, {292, "dup3"}, {293, "pipe2", gem5::pipe2Func}, {294, "inotify_init1"}, {295, "preadv"}, {296, "pwritev"}, {297, "rt_tgsigqueueinfo"}, {298, "perf_event_open"}, {299, "recvmmsg"}, {300, "fanotify_init"}, {301, "fanotify_mark"}, {302, "prlimit64", prlimitFuncgem5::X86Linux64}, {303, "name_to_handle_at"}, {304, "open_by_handle_at"}, {305, "clock_adjtime"}, {306, "syncfs"}, {307, "sendmmsg"}, {308, "setns"}, {309, "getcpu", gem5::getcpuFunc}, {310, "proess_vm_readv"}, {311, "proess_vm_writev"}, {312, "kcmp"}, {313, "finit_module"}, {314, "sched_setattr"}, {315, "sched_getattr"}, {316, "renameat2"}, {317, "seccomp"}, {318, "getrandom",
I'm not sure if the importing of getrandom function is correct or if you can point me to any resources that can help in integrating the getrandom function to gem5, that would be a great help. Thanks.