diff options
-rw-r--r-- | include/Makefile.am | 2 | ||||
-rw-r--r-- | include/seccomp-syscalls.h | 2292 | ||||
-rw-r--r-- | include/seccomp.h.in | 1068 | ||||
-rw-r--r-- | src/arch-aarch64-syscalls.c | 35 | ||||
-rw-r--r-- | src/arch-arm-syscalls.c | 35 | ||||
-rw-r--r-- | src/arch-mips-syscalls.c | 51 | ||||
-rw-r--r-- | src/arch-mips64-syscalls.c | 31 | ||||
-rw-r--r-- | src/arch-mips64n32-syscalls.c | 31 | ||||
-rw-r--r-- | src/arch-parisc-syscalls.c | 33 | ||||
-rw-r--r-- | src/arch-ppc-syscalls.c | 51 | ||||
-rw-r--r-- | src/arch-ppc64-syscalls.c | 53 | ||||
-rw-r--r-- | src/arch-s390-syscalls.c | 57 | ||||
-rw-r--r-- | src/arch-s390.c | 160 | ||||
-rw-r--r-- | src/arch-s390x-syscalls.c | 59 | ||||
-rw-r--r-- | src/arch-s390x.c | 160 | ||||
-rw-r--r-- | src/arch-x32-syscalls.c | 31 | ||||
-rw-r--r-- | src/arch-x86-syscalls.c | 105 | ||||
-rw-r--r-- | src/arch-x86.c | 161 | ||||
-rw-r--r-- | src/arch-x86_64-syscalls.c | 31 | ||||
-rw-r--r-- | tools/Makefile.am | 2 | ||||
-rwxr-xr-x | tools/check-syntax | 1 |
21 files changed, 3240 insertions, 1209 deletions
diff --git a/include/Makefile.am b/include/Makefile.am index ba3723f..d996128 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -16,4 +16,4 @@ # along with this library; if not, see <http://www.gnu.org/licenses>. # -include_HEADERS = seccomp.h +include_HEADERS = seccomp.h seccomp-syscalls.h diff --git a/include/seccomp-syscalls.h b/include/seccomp-syscalls.h new file mode 100644 index 0000000..6457592 --- /dev/null +++ b/include/seccomp-syscalls.h @@ -0,0 +1,2292 @@ +/** + * Seccomp Library + * + * Copyright (c) 2019 Cisco Systems <pmoore2@cisco.com> + * Author: Paul Moore <paul@paul-moore.com> + */ + +/* + * This library is free software; you can redistribute it and/or modify it + * under the terms of version 2.1 of the GNU Lesser General Public License as + * published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, see <http://www.gnu.org/licenses>. + */ + +#ifndef _SECCOMP_H +#error "do not include seccomp-syscalls.h directly, use seccomp.h instead" +#endif + +/* + * psuedo syscall definitions + */ + +/* socket syscalls */ + +#define __PNR_socket -101 +#define __PNR_bind -102 +#define __PNR_connect -103 +#define __PNR_listen -104 +#define __PNR_accept -105 +#define __PNR_getsockname -106 +#define __PNR_getpeername -107 +#define __PNR_socketpair -108 +#define __PNR_send -109 +#define __PNR_recv -110 +#define __PNR_sendto -111 +#define __PNR_recvfrom -112 +#define __PNR_shutdown -113 +#define __PNR_setsockopt -114 +#define __PNR_getsockopt -115 +#define __PNR_sendmsg -116 +#define __PNR_recvmsg -117 +#define __PNR_accept4 -118 +#define __PNR_recvmmsg -119 +#define __PNR_sendmmsg -120 + +/* ipc syscalls */ + +#define __PNR_semop -201 +#define __PNR_semget -202 +#define __PNR_semctl -203 +#define __PNR_semtimedop -204 +#define __PNR_msgsnd -211 +#define __PNR_msgrcv -212 +#define __PNR_msgget -213 +#define __PNR_msgctl -214 +#define __PNR_shmat -221 +#define __PNR_shmdt -222 +#define __PNR_shmget -223 +#define __PNR_shmctl -224 + +/* single syscalls */ + +#define __PNR_arch_prctl -10001 +#define __PNR_bdflush -10002 +#define __PNR_break -10003 +#define __PNR_chown32 -10004 +#define __PNR_epoll_ctl_old -10005 +#define __PNR_epoll_wait_old -10006 +#define __PNR_fadvise64_64 -10007 +#define __PNR_fchown32 -10008 +#define __PNR_fcntl64 -10009 +#define __PNR_fstat64 -10010 +#define __PNR_fstatat64 -10011 +#define __PNR_fstatfs64 -10012 +#define __PNR_ftime -10013 +#define __PNR_ftruncate64 -10014 +#define __PNR_getegid32 -10015 +#define __PNR_geteuid32 -10016 +#define __PNR_getgid32 -10017 +#define __PNR_getgroups32 -10018 +#define __PNR_getresgid32 -10019 +#define __PNR_getresuid32 -10020 +#define __PNR_getuid32 -10021 +#define __PNR_gtty -10022 +#define __PNR_idle -10023 +#define __PNR_ipc -10024 +#define __PNR_lchown32 -10025 +#define __PNR__llseek -10026 +#define __PNR_lock -10027 +#define __PNR_lstat64 -10028 +#define __PNR_mmap2 -10029 +#define __PNR_mpx -10030 +#define __PNR_newfstatat -10031 +#define __PNR__newselect -10032 +#define __PNR_nice -10033 +#define __PNR_oldfstat -10034 +#define __PNR_oldlstat -10035 +#define __PNR_oldolduname -10036 +#define __PNR_oldstat -10037 +#define __PNR_olduname -10038 +#define __PNR_prof -10039 +#define __PNR_profil -10040 +#define __PNR_readdir -10041 +#define __PNR_security -10042 +#define __PNR_sendfile64 -10043 +#define __PNR_setfsgid32 -10044 +#define __PNR_setfsuid32 -10045 +#define __PNR_setgid32 -10046 +#define __PNR_setgroups32 -10047 +#define __PNR_setregid32 -10048 +#define __PNR_setresgid32 -10049 +#define __PNR_setresuid32 -10050 +#define __PNR_setreuid32 -10051 +#define __PNR_setuid32 -10052 +#define __PNR_sgetmask -10053 +#define __PNR_sigaction -10054 +#define __PNR_signal -10055 +#define __PNR_sigpending -10056 +#define __PNR_sigprocmask -10057 +#define __PNR_sigreturn -10058 +#define __PNR_sigsuspend -10059 +#define __PNR_socketcall -10060 +#define __PNR_ssetmask -10061 +#define __PNR_stat64 -10062 +#define __PNR_statfs64 -10063 +#define __PNR_stime -10064 +#define __PNR_stty -10065 +#define __PNR_truncate64 -10066 +#define __PNR_tuxcall -10067 +#define __PNR_ugetrlimit -10068 +#define __PNR_ulimit -10069 +#define __PNR_umount -10070 +#define __PNR_vm86 -10071 +#define __PNR_vm86old -10072 +#define __PNR_waitpid -10073 +#define __PNR_create_module -10074 +#define __PNR_get_kernel_syms -10075 +#define __PNR_get_thread_area -10076 +#define __PNR_nfsservctl -10077 +#define __PNR_query_module -10078 +#define __PNR_set_thread_area -10079 +#define __PNR__sysctl -10080 +#define __PNR_uselib -10081 +#define __PNR_vserver -10082 +#define __PNR_arm_fadvise64_64 -10083 +#define __PNR_arm_sync_file_range -10084 +#define __PNR_pciconfig_iobase -10086 +#define __PNR_pciconfig_read -10087 +#define __PNR_pciconfig_write -10088 +#define __PNR_sync_file_range2 -10089 +#define __PNR_syscall -10090 +#define __PNR_afs_syscall -10091 +#define __PNR_fadvise64 -10092 +#define __PNR_getpmsg -10093 +#define __PNR_ioperm -10094 +#define __PNR_iopl -10095 +#define __PNR_migrate_pages -10097 +#define __PNR_modify_ldt -10098 +#define __PNR_putpmsg -10099 +#define __PNR_sync_file_range -10100 +#define __PNR_select -10101 +#define __PNR_vfork -10102 +#define __PNR_cachectl -10103 +#define __PNR_cacheflush -10104 +#define __PNR_sysmips -10106 +#define __PNR_timerfd -10107 +#define __PNR_time -10108 +#define __PNR_getrandom -10109 +#define __PNR_memfd_create -10110 +#define __PNR_kexec_file_load -10111 +#define __PNR_sysfs -10145 +#define __PNR_oldwait4 -10146 +#define __PNR_access -10147 +#define __PNR_alarm -10148 +#define __PNR_chmod -10149 +#define __PNR_chown -10150 +#define __PNR_creat -10151 +#define __PNR_dup2 -10152 +#define __PNR_epoll_create -10153 +#define __PNR_epoll_wait -10154 +#define __PNR_eventfd -10155 +#define __PNR_fork -10156 +#define __PNR_futimesat -10157 +#define __PNR_getdents -10158 +#define __PNR_getpgrp -10159 +#define __PNR_inotify_init -10160 +#define __PNR_lchown -10161 +#define __PNR_link -10162 +#define __PNR_lstat -10163 +#define __PNR_mkdir -10164 +#define __PNR_mknod -10165 +#define __PNR_open -10166 +#define __PNR_pause -10167 +#define __PNR_pipe -10168 +#define __PNR_poll -10169 +#define __PNR_readlink -10170 +#define __PNR_rename -10171 +#define __PNR_rmdir -10172 +#define __PNR_signalfd -10173 +#define __PNR_stat -10174 +#define __PNR_symlink -10175 +#define __PNR_unlink -10176 +#define __PNR_ustat -10177 +#define __PNR_utime -10178 +#define __PNR_utimes -10179 +#define __PNR_getrlimit -10180 +#define __PNR_mmap -10181 +#define __PNR_breakpoint -10182 +#define __PNR_set_tls -10183 +#define __PNR_usr26 -10184 +#define __PNR_usr32 -10185 +#define __PNR_multiplexer -10186 +#define __PNR_rtas -10187 +#define __PNR_spu_create -10188 +#define __PNR_spu_run -10189 +#define __PNR_swapcontext -10190 +#define __PNR_sys_debug_setcontext -10191 +#define __PNR_switch_endian -10191 +#define __PNR_get_mempolicy -10192 +#define __PNR_move_pages -10193 +#define __PNR_mbind -10194 +#define __PNR_set_mempolicy -10195 +#define __PNR_s390_runtime_instr -10196 +#define __PNR_s390_pci_mmio_read -10197 +#define __PNR_s390_pci_mmio_write -10198 +#define __PNR_membarrier -10199 +#define __PNR_userfaultfd -10200 +#define __PNR_pkey_mprotect -10201 +#define __PNR_pkey_alloc -10202 +#define __PNR_pkey_free -10203 +#define __PNR_get_tls -10204 +#define __PNR_s390_guarded_storage -10205 +#define __PNR_s390_sthyi -10206 +#define __PNR_subpage_prot -10207 +#define __PNR_statx -10208 +#define __PNR_io_pgetevents -10209 +#define __PNR_rseq -10210 +#define __PNR_setrlimit -10211 +#define __PNR_clock_adjtime64 -10212 +#define __PNR_clock_getres_time64 -10213 +#define __PNR_clock_gettime64 -10214 +#define __PNR_clock_nanosleep_time64 -10215 +#define __PNR_clock_settime64 -10216 +#define __PNR_clone3 -10217 +#define __PNR_fsconfig -10218 +#define __PNR_fsmount -10219 +#define __PNR_fsopen -10220 +#define __PNR_fspick -10221 +#define __PNR_futex_time64 -10222 +#define __PNR_io_pgetevents_time64 -10223 +#define __PNR_move_mount -10224 +#define __PNR_mq_timedreceive_time64 -10225 +#define __PNR_mq_timedsend_time64 -10226 +#define __PNR_open_tree -10227 +#define __PNR_pidfd_open -10228 +#define __PNR_pidfd_send_signal -10229 +#define __PNR_ppoll_time64 -10230 +#define __PNR_pselect6_time64 -10231 +#define __PNR_recvmmsg_time64 -10232 +#define __PNR_rt_sigtimedwait_time64 -10233 +#define __PNR_sched_rr_get_interval_time64 -10234 +#define __PNR_semtimedop_time64 -10235 +#define __PNR_timer_gettime64 -10236 +#define __PNR_timer_settime64 -10237 +#define __PNR_timerfd_gettime64 -10238 +#define __PNR_timerfd_settime64 -10239 +#define __PNR_utimensat_time64 -10240 + +/* + * libseccomp syscall definitions + */ + +#ifdef __NR__llseek +#define __SNR__llseek __NR__llseek +#else +#define __SNR__llseek __PNR__llseek +#endif + +#ifdef __NR__newselect +#define __SNR__newselect __NR__newselect +#else +#define __SNR__newselect __PNR__newselect +#endif + +#ifdef __NR__sysctl +#define __SNR__sysctl __NR__sysctl +#else +#define __SNR__sysctl __PNR__sysctl +#endif + +#ifdef __NR_accept +#define __SNR_accept __NR_accept +#else +#define __SNR_accept __PNR_accept +#endif + +#ifdef __NR_accept4 +#define __SNR_accept4 __NR_accept4 +#else +#define __SNR_accept4 __PNR_accept4 +#endif + +#ifdef __NR_access +#define __SNR_access __NR_access +#else +#define __SNR_access __PNR_access +#endif + +#define __SNR_acct __NR_acct + +#define __SNR_add_key __NR_add_key + +#define __SNR_adjtimex __NR_adjtimex + +#ifdef __NR_afs_syscall +#define __SNR_afs_syscall __NR_afs_syscall +#else +#define __SNR_afs_syscall __PNR_afs_syscall +#endif + +#ifdef __NR_alarm +#define __SNR_alarm __NR_alarm +#else +#define __SNR_alarm __PNR_alarm +#endif + +#ifdef __NR_arm_fadvise64_64 +#define __SNR_arm_fadvise64_64 __NR_arm_fadvise64_64 +#else +#define __SNR_arm_fadvise64_64 __PNR_arm_fadvise64_64 +#endif + +#ifdef __NR_arm_sync_file_range +#define __SNR_arm_sync_file_range __NR_arm_sync_file_range +#else +#define __SNR_arm_sync_file_range __PNR_arm_sync_file_range +#endif + +#ifdef __NR_arch_prctl +#define __SNR_arch_prctl __NR_arch_prctl +#else +#define __SNR_arch_prctl __PNR_arch_prctl +#endif + +#ifdef __NR_bdflush +#define __SNR_bdflush __NR_bdflush +#else +#define __SNR_bdflush __PNR_bdflush +#endif + +#ifdef __NR_bind +#define __SNR_bind __NR_bind +#else +#define __SNR_bind __PNR_bind +#endif + +#define __SNR_bpf __NR_bpf + +#ifdef __NR_break +#define __SNR_break __NR_break +#else +#define __SNR_break __PNR_break +#endif + +#ifdef __NR_breakpoint +#ifdef __ARM_NR_breakpoint +#define __SNR_breakpoint __ARM_NR_breakpoint +#else +#define __SNR_breakpoint __NR_breakpoint +#endif +#else +#define __SNR_breakpoint __PNR_breakpoint +#endif + +#define __SNR_brk __NR_brk + +#ifdef __NR_cachectl +#define __SNR_cachectl __NR_cachectl +#else +#define __SNR_cachectl __PNR_cachectl +#endif + +#ifdef __NR_cacheflush +#ifdef __ARM_NR_cacheflush +#define __SNR_cacheflush __ARM_NR_cacheflush +#else +#define __SNR_cacheflush __NR_cacheflush +#endif +#else +#define __SNR_cacheflush __PNR_cacheflush +#endif + +#define __SNR_capget __NR_capget + +#define __SNR_capset __NR_capset + +#define __SNR_chdir __NR_chdir + +#ifdef __NR_chmod +#define __SNR_chmod __NR_chmod +#else +#define __SNR_chmod __PNR_chmod +#endif + +#ifdef __NR_chown +#define __SNR_chown __NR_chown +#else +#define __SNR_chown __PNR_chown +#endif + +#ifdef __NR_chown32 +#define __SNR_chown32 __NR_chown32 +#else +#define __SNR_chown32 __PNR_chown32 +#endif + +#define __SNR_chroot __NR_chroot + +#define __SNR_clock_adjtime __NR_clock_adjtime + +#ifdef __NR_clock_adjtime64 +#define __SNR_clock_adjtime64 __NR_clock_adjtime64 +#else +#define __SNR_clock_adjtime64 __PNR_clock_adjtime64 +#endif + +#define __SNR_clock_getres __NR_clock_getres + +#ifdef __NR_clock_getres_time64 +#define __SNR_clock_getres_time64 __NR_clock_getres_time64 +#else +#define __SNR_clock_getres_time64 __PNR_clock_getres_time64 +#endif + +#define __SNR_clock_gettime __NR_clock_gettime + +#ifdef __NR_clock_gettime64 +#define __SNR_clock_gettime64 __NR_clock_gettime64 +#else +#define __SNR_clock_gettime64 __PNR_clock_gettime64 +#endif + +#define __SNR_clock_nanosleep __NR_clock_nanosleep + +#ifdef __NR_clock_nanosleep_time64 +#define __SNR_clock_nanosleep_time64 __NR_clock_nanosleep_time64 +#else +#define __SNR_clock_nanosleep_time64 __PNR_clock_nanosleep_time64 +#endif + +#define __SNR_clock_settime __NR_clock_settime + +#ifdef __NR_clock_settime64 +#define __SNR_clock_settime64 __NR_clock_settime64 +#else +#define __SNR_clock_settime64 __PNR_clock_settime64 +#endif + +#define __SNR_clone __NR_clone + +#ifdef __NR_clone3 +#define __SNR_clone3 __NR_clone3 +#else +#define __SNR_clone3 __PNR_clone3 +#endif + +#define __SNR_close __NR_close + +#ifdef __NR_connect +#define __SNR_connect __NR_connect +#else +#define __SNR_connect __PNR_connect +#endif + +#define __SNR_copy_file_range __NR_copy_file_range + +#ifdef __NR_creat +#define __SNR_creat __NR_creat +#else +#define __SNR_creat __PNR_creat +#endif + +#ifdef __NR_create_module +#define __SNR_create_module __NR_create_module +#else +#define __SNR_create_module __PNR_create_module +#endif + +#define __SNR_delete_module __NR_delete_module + +#ifdef __NR_dup +#define __SNR_dup __NR_dup +#else +#define __SNR_dup __PNR_dup +#endif + +#ifdef __NR_dup2 +#define __SNR_dup2 __NR_dup2 +#else +#define __SNR_dup2 __PNR_dup2 +#endif + +#define __SNR_dup3 __NR_dup3 + +#ifdef __NR_epoll_create +#define __SNR_epoll_create __NR_epoll_create +#else +#define __SNR_epoll_create __PNR_epoll_create +#endif + +#define __SNR_epoll_create1 __NR_epoll_create1 + +#ifdef __NR_epoll_ctl +#define __SNR_epoll_ctl __NR_epoll_ctl +#else +#define __SNR_epoll_ctl __PNR_epoll_ctl +#endif + +#ifdef __NR_epoll_ctl_old +#define __SNR_epoll_ctl_old __NR_epoll_ctl_old +#else +#define __SNR_epoll_ctl_old __PNR_epoll_ctl_old +#endif + +#define __SNR_epoll_pwait __NR_epoll_pwait + +#ifdef __NR_epoll_wait +#define __SNR_epoll_wait __NR_epoll_wait +#else +#define __SNR_epoll_wait __PNR_epoll_wait +#endif + +#ifdef __NR_epoll_wait_old +#define __SNR_epoll_wait_old __NR_epoll_wait_old +#else +#define __SNR_epoll_wait_old __PNR_epoll_wait_old +#endif + +#ifdef __NR_eventfd +#define __SNR_eventfd __NR_eventfd +#else +#define __SNR_eventfd __PNR_eventfd +#endif + +#define __SNR_eventfd2 __NR_eventfd2 + +#define __SNR_execve __NR_execve + +#define __SNR_execveat __NR_execveat + +#define __SNR_exit __NR_exit + +#define __SNR_exit_group __NR_exit_group + +#define __SNR_faccessat __NR_faccessat + +#ifdef __NR_fadvise64 +#define __SNR_fadvise64 __NR_fadvise64 +#else +#define __SNR_fadvise64 __PNR_fadvise64 +#endif + +#ifdef __NR_fadvise64_64 +#define __SNR_fadvise64_64 __NR_fadvise64_64 +#else +#define __SNR_fadvise64_64 __PNR_fadvise64_64 +#endif + +#define __SNR_fallocate __NR_fallocate + +#define __SNR_fanotify_init __NR_fanotify_init + +#define __SNR_fanotify_mark __NR_fanotify_mark + +#define __SNR_fchdir __NR_fchdir + +#define __SNR_fchmod __NR_fchmod + +#define __SNR_fchmodat __NR_fchmodat + +#ifdef __NR_fchown +#define __SNR_fchown __NR_fchown +#else +#define __SNR_fchown __PNR_fchown +#endif + +#ifdef __NR_fchown32 +#define __SNR_fchown32 __NR_fchown32 +#else +#define __SNR_fchown32 __PNR_fchown32 +#endif + +#define __SNR_fchownat __NR_fchownat + +#ifdef __NR_fcntl +#define __SNR_fcntl __NR_fcntl +#else +#define __SNR_fcntl __PNR_fcntl +#endif + +#ifdef __NR_fcntl64 +#define __SNR_fcntl64 __NR_fcntl64 +#else +#define __SNR_fcntl64 __PNR_fcntl64 +#endif + +#define __SNR_fdatasync __NR_fdatasync + +#define __SNR_fgetxattr __NR_fgetxattr + +#define __SNR_finit_module __NR_finit_module + +#define __SNR_flistxattr __NR_flistxattr + +#define __SNR_flock __NR_flock + +#ifdef __NR_fork +#define __SNR_fork __NR_fork +#else +#define __SNR_fork __PNR_fork +#endif + +#define __SNR_fremovexattr __NR_fremovexattr + +#ifdef __NR_fsconfig +#define __SNR_fsconfig __NR_fsconfig +#else +#define __SNR_fsconfig __PNR_fsconfig +#endif + +#define __SNR_fsetxattr __NR_fsetxattr + +#ifdef __NR_fsmount +#define __SNR_fsmount __NR_fsmount +#else +#define __SNR_fsmount __PNR_fsmount +#endif + +#ifdef __NR_fsopen +#define __SNR_fsopen __NR_fsopen +#else +#define __SNR_fsopen __PNR_fsopen +#endif + +#ifdef __NR_fspick +#define __SNR_fspick __NR_fspick +#else +#define __SNR_fspick __PNR_fspick +#endif + +#ifdef __NR_fstat +#define __SNR_fstat __NR_fstat +#else +#define __SNR_fstat __PNR_fstat +#endif + +#ifdef __NR_fstat64 +#define __SNR_fstat64 __NR_fstat64 +#else +#define __SNR_fstat64 __PNR_fstat64 +#endif + +#ifdef __NR_fstatat64 +#define __SNR_fstatat64 __NR_fstatat64 +#else +#define __SNR_fstatat64 __PNR_fstatat64 +#endif + +#ifdef __NR_fstatfs +#define __SNR_fstatfs __NR_fstatfs +#else +#define __SNR_fstatfs __PNR_fstatfs +#endif + +#ifdef __NR_fstatfs64 +#define __SNR_fstatfs64 __NR_fstatfs64 +#else +#define __SNR_fstatfs64 __PNR_fstatfs64 +#endif + +#define __SNR_fsync __NR_fsync + +#ifdef __NR_ftime +#define __SNR_ftime __NR_ftime +#else +#define __SNR_ftime __PNR_ftime +#endif + +#ifdef __NR_ftruncate +#define __SNR_ftruncate __NR_ftruncate +#else +#define __SNR_ftruncate __PNR_ftruncate +#endif + +#ifdef __NR_ftruncate64 +#define __SNR_ftruncate64 __NR_ftruncate64 +#else +#define __SNR_ftruncate64 __PNR_ftruncate64 +#endif + +#define __SNR_futex __NR_futex + +#ifdef __NR_futex_time64 +#define __SNR_futex_time64 __NR_futex_time64 +#else +#define __SNR_futex_time64 __PNR_futex_time64 +#endif + +#ifdef __NR_futimesat +#define __SNR_futimesat __NR_futimesat +#else +#define __SNR_futimesat __PNR_futimesat +#endif + +#ifdef __NR_get_kernel_syms +#define __SNR_get_kernel_syms __NR_get_kernel_syms +#else +#define __SNR_get_kernel_syms __PNR_get_kernel_syms +#endif + +#ifdef __NR_get_mempolicy +#define __SNR_get_mempolicy __NR_get_mempolicy +#else +#define __SNR_get_mempolicy __PNR_get_mempolicy +#endif + +#define __SNR_get_robust_list __NR_get_robust_list + +#ifdef __NR_get_thread_area +#define __SNR_get_thread_area __NR_get_thread_area +#else +#define __SNR_get_thread_area __PNR_get_thread_area +#endif + +#ifdef __NR_get_tls +#ifdef __ARM_NR_get_tls +#define __SNR_get_tls __ARM_NR_get_tls +#else +#define __SNR_get_tls __NR_get_tls +#endif +#else +#define __SNR_get_tls __PNR_get_tls +#endif + +#define __SNR_getcpu __NR_getcpu + +#define __SNR_getcwd __NR_getcwd + +#ifdef __NR_getdents +#define __SNR_getdents __NR_getdents +#else +#define __SNR_getdents __PNR_getdents +#endif + +#define __SNR_getdents64 __NR_getdents64 + +#ifdef __NR_getegid +#define __SNR_getegid __NR_getegid +#else +#define __SNR_getegid __PNR_getegid +#endif + +#ifdef __NR_getegid32 +#define __SNR_getegid32 __NR_getegid32 +#else +#define __SNR_getegid32 __PNR_getegid32 +#endif + +#ifdef __NR_geteuid +#define __SNR_geteuid __NR_geteuid +#else +#define __SNR_geteuid __PNR_geteuid +#endif + +#ifdef __NR_geteuid32 +#define __SNR_geteuid32 __NR_geteuid32 +#else +#define __SNR_geteuid32 __PNR_geteuid32 +#endif + +#ifdef __NR_getgid +#define __SNR_getgid __NR_getgid +#else +#define __SNR_getgid __PNR_getgid +#endif + +#ifdef __NR_getgid32 +#define __SNR_getgid32 __NR_getgid32 +#else +#define __SNR_getgid32 __PNR_getgid32 +#endif + +#ifdef __NR_getgroups +#define __SNR_getgroups __NR_getgroups +#else +#define __SNR_getgroups __PNR_getgroups +#endif + +#ifdef __NR_getgroups32 +#define __SNR_getgroups32 __NR_getgroups32 +#else +#define __SNR_getgroups32 __PNR_getgroups32 +#endif + +#define __SNR_getitimer __NR_getitimer + +#ifdef __NR_getpeername +#define __SNR_getpeername __NR_getpeername +#else +#define __SNR_getpeername __PNR_getpeername +#endif + +#define __SNR_getpgid __NR_getpgid + +#ifdef __NR_getpgrp +#define __SNR_getpgrp __NR_getpgrp +#else +#define __SNR_getpgrp __PNR_getpgrp +#endif + +#define __SNR_getpid __NR_getpid + +#ifdef __NR_getpmsg +#define __SNR_getpmsg __NR_getpmsg +#else +#define __SNR_getpmsg __PNR_getpmsg +#endif + +#define __SNR_getppid __NR_getppid + +#define __SNR_getpriority __NR_getpriority + +#ifdef __NR_getrandom +#define __SNR_getrandom __NR_getrandom +#else +#define __SNR_getrandom __PNR_getrandom +#endif + +#ifdef __NR_getresgid +#define __SNR_getresgid __NR_getresgid +#else +#define __SNR_getresgid __PNR_getresgid +#endif + +#ifdef __NR_getresgid32 +#define __SNR_getresgid32 __NR_getresgid32 +#else +#define __SNR_getresgid32 __PNR_getresgid32 +#endif + +#ifdef __NR_getresuid +#define __SNR_getresuid __NR_getresuid +#else +#define __SNR_getresuid __PNR_getresuid +#endif + +#ifdef __NR_getresuid32 +#define __SNR_getresuid32 __NR_getresuid32 +#else +#define __SNR_getresuid32 __PNR_getresuid32 +#endif + +#ifdef __NR_getrlimit +#define __SNR_getrlimit __NR_getrlimit +#else +#define __SNR_getrlimit __PNR_getrlimit +#endif + +#define __SNR_getrusage __NR_getrusage + +#define __SNR_getsid __NR_getsid + +#ifdef __NR_getsockname +#define __SNR_getsockname __NR_getsockname +#else +#define __SNR_getsockname __PNR_getsockname +#endif + +#ifdef __NR_getsockopt +#define __SNR_getsockopt __NR_getsockopt +#else +#define __SNR_getsockopt __PNR_getsockopt +#endif + +#define __SNR_gettid __NR_gettid + +#define __SNR_gettimeofday __NR_gettimeofday + +#ifdef __NR_getuid +#define __SNR_getuid __NR_getuid +#else +#define __SNR_getuid __PNR_getuid +#endif + +#ifdef __NR_getuid32 +#define __SNR_getuid32 __NR_getuid32 +#else +#define __SNR_getuid32 __PNR_getuid32 +#endif + +#define __SNR_getxattr __NR_getxattr + +#ifdef __NR_gtty +#define __SNR_gtty __NR_gtty +#else +#define __SNR_gtty __PNR_gtty +#endif + +#ifdef __NR_idle +#define __SNR_idle __NR_idle +#else +#define __SNR_idle __PNR_idle +#endif + +#define __SNR_init_module __NR_init_module + +#define __SNR_inotify_add_watch __NR_inotify_add_watch + +#ifdef __NR_inotify_init +#define __SNR_inotify_init __NR_inotify_init +#else +#define __SNR_inotify_init __PNR_inotify_init +#endif + +#define __SNR_inotify_init1 __NR_inotify_init1 + +#define __SNR_inotify_rm_watch __NR_inotify_rm_watch + +#define __SNR_io_cancel __NR_io_cancel + +#define __SNR_io_destroy __NR_io_destroy + +#define __SNR_io_getevents __NR_io_getevents + +#ifdef __NR_io_pgetevents +#define __SNR_io_pgetevents __NR_io_pgetevents +#else +#define __SNR_io_pgetevents __PNR_io_pgetevents +#endif + +#ifdef __NR_io_pgetevents_time64 +#define __SNR_io_pgetevents_time64 __NR_io_pgetevents_time64 +#else +#define __SNR_io_pgetevents_time64 __PNR_io_pgetevents_time64 +#endif + +#define __SNR_io_setup __NR_io_setup + +#define __SNR_io_submit __NR_io_submit + +#define __SNR_io_uring_setup __NR_io_uring_setup + +#define __SNR_io_uring_enter __NR_io_uring_enter + +#define __SNR_io_uring_register __NR_io_uring_register + +#define __SNR_ioctl __NR_ioctl + +#ifdef __NR_ioperm +#define __SNR_ioperm __NR_ioperm +#else +#define __SNR_ioperm __PNR_ioperm +#endif + +#ifdef __NR_iopl +#define __SNR_iopl __NR_iopl +#else +#define __SNR_iopl __PNR_iopl +#endif + +#define __SNR_ioprio_get __NR_ioprio_get + +#define __SNR_ioprio_set __NR_ioprio_set + +#ifdef __NR_ipc +#define __SNR_ipc __NR_ipc +#else +#define __SNR_ipc __PNR_ipc +#endif + +#define __SNR_kcmp __NR_kcmp + +#ifdef __NR_kexec_file_load +#define __SNR_kexec_file_load __NR_kexec_file_load +#else +#define __SNR_kexec_file_load __PNR_kexec_file_load +#endif + +#define __SNR_kexec_load __NR_kexec_load + +#define __SNR_keyctl __NR_keyctl + +#define __SNR_kill __NR_kill + +#ifdef __NR_lchown +#define __SNR_lchown __NR_lchown +#else +#define __SNR_lchown __PNR_lchown +#endif + +#ifdef __NR_lchown32 +#define __SNR_lchown32 __NR_lchown32 +#else +#define __SNR_lchown32 __PNR_lchown32 +#endif + +#define __SNR_lgetxattr __NR_lgetxattr + +#ifdef __NR_link +#define __SNR_link __NR_link +#else +#define __SNR_link __PNR_link +#endif + +#define __SNR_linkat __NR_linkat + +#ifdef __NR_listen +#define __SNR_listen __NR_listen +#else +#define __SNR_listen __PNR_listen +#endif + +#define __SNR_listxattr __NR_listxattr + +#define __SNR_llistxattr __NR_llistxattr + +#ifdef __NR_lock +#define __SNR_lock __NR_lock +#else +#define __SNR_lock __PNR_lock +#endif + +#define __SNR_lookup_dcookie __NR_lookup_dcookie + +#define __SNR_lremovexattr __NR_lremovexattr + +#define __SNR_lseek __NR_lseek + +#define __SNR_lsetxattr __NR_lsetxattr + +#ifdef __NR_lstat +#define __SNR_lstat __NR_lstat +#else +#define __SNR_lstat __PNR_lstat +#endif + +#ifdef __NR_lstat64 +#define __SNR_lstat64 __NR_lstat64 +#else +#define __SNR_lstat64 __PNR_lstat64 +#endif + +#define __SNR_madvise __NR_madvise + +#ifdef __NR_mbind +#define __SNR_mbind __NR_mbind +#else +#define __SNR_mbind __PNR_mbind +#endif + +#ifdef __NR_membarrier +#define __SNR_membarrier __NR_membarrier +#else +#define __SNR_membarrier __PNR_membarrier +#endif + +#ifdef __NR_memfd_create +#define __SNR_memfd_create __NR_memfd_create +#else +#define __SNR_memfd_create __PNR_memfd_create +#endif + +#ifdef __NR_migrate_pages +#define __SNR_migrate_pages __NR_migrate_pages +#else +#define __SNR_migrate_pages __PNR_migrate_pages +#endif + +#define __SNR_mincore __NR_mincore + +#ifdef __NR_mkdir +#define __SNR_mkdir __NR_mkdir +#else +#define __SNR_mkdir __PNR_mkdir +#endif + +#define __SNR_mkdirat __NR_mkdirat + +#ifdef __NR_mknod +#define __SNR_mknod __NR_mknod +#else +#define __SNR_mknod __PNR_mknod +#endif + +#define __SNR_mknodat __NR_mknodat + +#define __SNR_mlock __NR_mlock + +#define __SNR_mlock2 __NR_mlock2 + +#define __SNR_mlockall __NR_mlockall + +#ifdef __NR_mmap +#define __SNR_mmap __NR_mmap +#else +#define __SNR_mmap __PNR_mmap +#endif + +#ifdef __NR_mmap2 +#define __SNR_mmap2 __NR_mmap2 +#else +#define __SNR_mmap2 __PNR_mmap2 +#endif + +#ifdef __NR_modify_ldt +#define __SNR_modify_ldt __NR_modify_ldt +#else +#define __SNR_modify_ldt __PNR_modify_ldt +#endif + +#define __SNR_mount __NR_mount + +#ifdef __NR_move_mount +#define __SNR_move_mount __NR_move_mount +#else +#define __SNR_move_mount __PNR_move_mount +#endif + +#ifdef __NR_move_pages +#define __SNR_move_pages __NR_move_pages +#else +#define __SNR_move_pages __PNR_move_pages +#endif + +#define __SNR_mprotect __NR_mprotect + +#ifdef __NR_mpx +#define __SNR_mpx __NR_mpx +#else +#define __SNR_mpx __PNR_mpx +#endif + +#define __SNR_mq_getsetattr __NR_mq_getsetattr + +#define __SNR_mq_notify __NR_mq_notify + +#define __SNR_mq_open __NR_mq_open + +#define __SNR_mq_timedreceive __NR_mq_timedreceive + +#ifdef __NR_mq_timedreceive_time64 +#define __SNR_mq_timedreceive_time64 __NR_mq_timedreceive_time64 +#else +#define __SNR_mq_timedreceive_time64 __PNR_mq_timedreceive_time64 +#endif + +#define __SNR_mq_timedsend __NR_mq_timedsend + +#ifdef __NR_mq_timedsend_time64 +#define __SNR_mq_timedsend_time64 __NR_mq_timedsend_time64 +#else +#define __SNR_mq_timedsend_time64 __PNR_mq_timedsend_time64 +#endif + +#define __SNR_mq_unlink __NR_mq_unlink + +#define __SNR_mremap __NR_mremap + +#ifdef __NR_msgctl +#define __SNR_msgctl __NR_msgctl +#else +#define __SNR_msgctl __PNR_msgctl +#endif + +#ifdef __NR_msgget +#define __SNR_msgget __NR_msgget +#else +#define __SNR_msgget __PNR_msgget +#endif + +#ifdef __NR_msgrcv +#define __SNR_msgrcv __NR_msgrcv +#else +#define __SNR_msgrcv __PNR_msgrcv +#endif + +#ifdef __NR_msgsnd +#define __SNR_msgsnd __NR_msgsnd +#else +#define __SNR_msgsnd __PNR_msgsnd +#endif + +#define __SNR_msync __NR_msync + +#ifdef __NR_multiplexer +#define __SNR_multiplexer __NR_multiplexer +#else +#define __SNR_multiplexer __PNR_multiplexer +#endif + +#define __SNR_munlock __NR_munlock + +#define __SNR_munlockall __NR_munlockall + +#define __SNR_munmap __NR_munmap + +#define __SNR_name_to_handle_at __NR_name_to_handle_at + +#define __SNR_nanosleep __NR_nanosleep + +#ifdef __NR_newfstatat +#define __SNR_newfstatat __NR_newfstatat +#else +#define __SNR_newfstatat __PNR_newfstatat +#endif + +#ifdef __NR_nfsservctl +#define __SNR_nfsservctl __NR_nfsservctl +#else +#define __SNR_nfsservctl __PNR_nfsservctl +#endif + +#ifdef __NR_nice +#define __SNR_nice __NR_nice +#else +#define __SNR_nice __PNR_nice +#endif + +#ifdef __NR_oldfstat +#define __SNR_oldfstat __NR_oldfstat +#else +#define __SNR_oldfstat __PNR_oldfstat +#endif + +#ifdef __NR_oldlstat +#define __SNR_oldlstat __NR_oldlstat +#else +#define __SNR_oldlstat __PNR_oldlstat +#endif + +#ifdef __NR_oldolduname +#define __SNR_oldolduname __NR_oldolduname +#else +#define __SNR_oldolduname __PNR_oldolduname +#endif + +#ifdef __NR_oldstat +#define __SNR_oldstat __NR_oldstat +#else +#define __SNR_oldstat __PNR_oldstat +#endif + +#ifdef __NR_olduname +#define __SNR_olduname __NR_olduname +#else +#define __SNR_olduname __PNR_olduname +#endif + +#ifdef __NR_oldwait4 +#define __SNR_oldwait4 __NR_oldwait4 +#else +#define __SNR_oldwait4 __PNR_oldwait4 +#endif + +#ifdef __NR_open +#define __SNR_open __NR_open +#else +#define __SNR_open __PNR_open +#endif + +#define __SNR_open_by_handle_at __NR_open_by_handle_at + +#ifdef __NR_open_tree +#define __SNR_open_tree __NR_open_tree +#else +#define __SNR_open_tree __PNR_open_tree +#endif + +#define __SNR_openat __NR_openat + +#ifdef __NR_pause +#define __SNR_pause __NR_pause +#else +#define __SNR_pause __PNR_pause +#endif + +#ifdef __NR_pciconfig_iobase +#define __SNR_pciconfig_iobase __NR_pciconfig_iobase +#else +#define __SNR_pciconfig_iobase __PNR_pciconfig_iobase +#endif + +#ifdef __NR_pciconfig_read +#define __SNR_pciconfig_read __NR_pciconfig_read +#else +#define __SNR_pciconfig_read __PNR_pciconfig_read +#endif + +#ifdef __NR_pciconfig_write +#define __SNR_pciconfig_write __NR_pciconfig_write +#else +#define __SNR_pciconfig_write __PNR_pciconfig_write +#endif + +#define __SNR_perf_event_open __NR_perf_event_open + +#define __SNR_personality __NR_personality + +#ifdef __NR_pidfd_open +#define __SNR_pidfd_open __NR_pidfd_open +#else +#define __SNR_pidfd_open __PNR_pidfd_open +#endif + +#ifdef __NR_pidfd_send_signal +#define __SNR_pidfd_send_signal __NR_pidfd_send_signal +#else +#define __SNR_pidfd_send_signal __PNR_pidfd_send_signal +#endif + +#ifdef __NR_pipe +#define __SNR_pipe __NR_pipe +#else +#define __SNR_pipe __PNR_pipe +#endif + +#define __SNR_pipe2 __NR_pipe2 + +#define __SNR_pivot_root __NR_pivot_root + +#ifdef __NR_pkey_alloc +#define __SNR_pkey_alloc __NR_pkey_alloc +#else +#define __SNR_pkey_alloc __PNR_pkey_alloc +#endif + +#ifdef __NR_pkey_free +#define __SNR_pkey_free __NR_pkey_free +#else +#define __SNR_pkey_free __PNR_pkey_free +#endif + +#ifdef __NR_pkey_mprotect +#define __SNR_pkey_mprotect __NR_pkey_mprotect +#else +#define __SNR_pkey_mprotect __PNR_pkey_mprotect +#endif + +#ifdef __NR_poll +#define __SNR_poll __NR_poll +#else +#define __SNR_poll __PNR_poll +#endif + +#ifdef __NR_ppoll_time64 +#define __SNR_ppoll_time64 __NR_ppoll_time64 +#else +#define __SNR_ppoll_time64 __PNR_ppoll_time64 +#endif + +#define __SNR_prctl __NR_prctl + +#define __SNR_pread64 __NR_pread64 + +#define __SNR_preadv __NR_preadv + +#define __SNR_preadv2 __NR_preadv2 + +#define __SNR_prlimit64 __NR_prlimit64 + +#define __SNR_process_vm_readv __NR_process_vm_readv + +#define __SNR_process_vm_writev __NR_process_vm_writev + +#ifdef __NR_prof +#define __SNR_prof __NR_prof +#else +#define __SNR_prof __PNR_prof +#endif + +#ifdef __NR_profil +#define __SNR_profil __NR_profil +#else +#define __SNR_profil __PNR_profil +#endif + +#define __SNR_pselect6 __NR_pselect6 + +#ifdef __NR_pselect6_time64 +#define __SNR_pselect6_time64 __NR_pselect6_time64 +#else +#define __SNR_pselect6_time64 __PNR_pselect6_time64 +#endif + +#define __SNR_ptrace __NR_ptrace + +#ifdef __NR_putpmsg +#define __SNR_putpmsg __NR_putpmsg +#else +#define __SNR_putpmsg __PNR_putpmsg +#endif + +#define __SNR_pwrite64 __NR_pwrite64 + +#define __SNR_pwritev __NR_pwritev + +#define __SNR_pwritev2 __NR_pwritev2 + +#ifdef __NR_query_module +#define __SNR_query_module __NR_query_module +#else +#define __SNR_query_module __PNR_query_module +#endif + +#define __SNR_quotactl __NR_quotactl + +#ifdef __NR_read +#define __SNR_read __NR_read +#else +#define __SNR_read __PNR_read +#endif + +#define __SNR_readahead __NR_readahead + +#ifdef __NR_readdir +#define __SNR_readdir __NR_readdir +#else +#define __SNR_readdir __PNR_readdir +#endif + +#ifdef __NR_readlink +#define __SNR_readlink __NR_readlink +#else +#define __SNR_readlink __PNR_readlink +#endif + +#define __SNR_readlinkat __NR_readlinkat + +#define __SNR_readv __NR_readv + +#define __SNR_reboot __NR_reboot + +#ifdef __NR_recv +#define __SNR_recv __NR_recv +#else +#define __SNR_recv __PNR_recv +#endif + +#ifdef __NR_recvfrom +#define __SNR_recvfrom __NR_recvfrom +#else +#define __SNR_recvfrom __PNR_recvfrom +#endif + +#ifdef __NR_recvmmsg +#define __SNR_recvmmsg __NR_recvmmsg +#else +#define __SNR_recvmmsg __PNR_recvmmsg +#endif + +#ifdef __NR_recvmmsg_time64 +#define __SNR_recvmmsg_time64 __NR_recvmmsg_time64 +#else +#define __SNR_recvmmsg_time64 __PNR_recvmmsg_time64 +#endif + +#ifdef __NR_recvmsg +#define __SNR_recvmsg __NR_recvmsg +#else +#define __SNR_recvmsg __PNR_recvmsg +#endif + +#define __SNR_remap_file_pages __NR_remap_file_pages + +#define __SNR_removexattr __NR_removexattr + +#ifdef __NR_rename +#define __SNR_rename __NR_rename +#else +#define __SNR_rename __PNR_rename +#endif + +#define __SNR_renameat __NR_renameat + +#define __SNR_renameat2 __NR_renameat2 + +#define __SNR_request_key __NR_request_key + +#define __SNR_restart_syscall __NR_restart_syscall + +#ifdef __NR_rmdir +#define __SNR_rmdir __NR_rmdir +#else +#define __SNR_rmdir __PNR_rmdir +#endif + +#ifdef __NR_rseq +#define __SNR_rseq __NR_rseq +#else +#define __SNR_rseq __PNR_rseq +#endif + +#define __SNR_rt_sigaction __NR_rt_sigaction + +#define __SNR_rt_sigpending __NR_rt_sigpending + +#define __SNR_rt_sigprocmask __NR_rt_sigprocmask + +#define __SNR_rt_sigqueueinfo __NR_rt_sigqueueinfo + +#define __SNR_rt_sigreturn __NR_rt_sigreturn + +#define __SNR_rt_sigsuspend __NR_rt_sigsuspend + +#define __SNR_rt_sigtimedwait __NR_rt_sigtimedwait + +#ifdef __NR_rt_sigtimedwait_time64 +#define __SNR_rt_sigtimedwait_time64 __NR_rt_sigtimedwait_time64 +#else +#define __SNR_rt_sigtimedwait_time64 __PNR_rt_sigtimedwait_time64 +#endif + +#define __SNR_rt_tgsigqueueinfo __NR_rt_tgsigqueueinfo + +#ifdef __NR_rtas +#define __SNR_rtas __NR_rtas +#else +#define __SNR_rtas __PNR_rtas +#endif + +#ifdef __NR_s390_guarded_storage +#define __SNR_s390_guarded_storage __NR_s390_guarded_storage +#else +#define __SNR_s390_guarded_storage __PNR_s390_guarded_storage +#endif + +#ifdef __NR_s390_pci_mmio_read +#define __SNR_s390_pci_mmio_read __NR_s390_pci_mmio_read +#else +#define __SNR_s390_pci_mmio_read __PNR_s390_pci_mmio_read +#endif + +#ifdef __NR_s390_pci_mmio_write +#define __SNR_s390_pci_mmio_write __NR_s390_pci_mmio_write +#else +#define __SNR_s390_pci_mmio_write __PNR_s390_pci_mmio_write +#endif + +#ifdef __NR_s390_runtime_instr +#define __SNR_s390_runtime_instr __NR_s390_runtime_instr +#else +#define __SNR_s390_runtime_instr __PNR_s390_runtime_instr +#endif + +#ifdef __NR_s390_sthyi +#define __SNR_s390_sthyi __NR_s390_sthyi +#else +#define __SNR_s390_sthyi __PNR_s390_sthyi +#endif + +#define __SNR_sched_get_priority_max __NR_sched_get_priority_max + +#define __SNR_sched_get_priority_min __NR_sched_get_priority_min + +#define __SNR_sched_getaffinity __NR_sched_getaffinity + +#define __SNR_sched_getattr __NR_sched_getattr + +#define __SNR_sched_getparam __NR_sched_getparam + +#define __SNR_sched_getscheduler __NR_sched_getscheduler + +#define __SNR_sched_rr_get_interval __NR_sched_rr_get_interval + +#ifdef __NR_sched_rr_get_interval_time64 +#define __SNR_sched_rr_get_interval_time64 __NR_sched_rr_get_interval_time64 +#else +#define __SNR_sched_rr_get_interval_time64 __PNR_sched_rr_get_interval_time64 +#endif + +#define __SNR_sched_setaffinity __NR_sched_setaffinity + +#define __SNR_sched_setattr __NR_sched_setattr + +#define __SNR_sched_setparam __NR_sched_setparam + +#define __SNR_sched_setscheduler __NR_sched_setscheduler + +#define __SNR_sched_yield __NR_sched_yield + +#define __SNR_seccomp __NR_seccomp + +#ifdef __NR_security +#define __SNR_security __NR_security +#else +#define __SNR_security __PNR_security +#endif + +#ifdef __NR_select +#define __SNR_select __NR_select +#else +#define __SNR_select __PNR_select +#endif + +#ifdef __NR_semctl +#define __SNR_semctl __NR_semctl +#else +#define __SNR_semctl __PNR_semctl +#endif + +#ifdef __NR_semget +#define __SNR_semget __NR_semget +#else +#define __SNR_semget __PNR_semget +#endif + +#ifdef __NR_semop +#define __SNR_semop __NR_semop +#else +#define __SNR_semop __PNR_semop +#endif + +#ifdef __NR_semtimedop +#define __SNR_semtimedop __NR_semtimedop +#else +#define __SNR_semtimedop __PNR_semtimedop +#endif + +#ifdef __NR_semtimedop_time64 +#define __SNR_semtimedop_time64 __NR_semtimedop_time64 +#else +#define __SNR_semtimedop_time64 __PNR_semtimedop_time64 +#endif + +#ifdef __NR_send +#define __SNR_send __NR_send +#else +#define __SNR_send __PNR_send +#endif + +#ifdef __NR_sendfile +#define __SNR_sendfile __NR_sendfile +#else +#define __SNR_sendfile __PNR_sendfile +#endif + +#ifdef __NR_sendfile64 +#define __SNR_sendfile64 __NR_sendfile64 +#else +#define __SNR_sendfile64 __PNR_sendfile64 +#endif + +#ifdef __NR_sendmmsg +#define __SNR_sendmmsg __NR_sendmmsg +#else +#define __SNR_sendmmsg __PNR_sendmmsg +#endif + +#ifdef __NR_sendmsg +#define __SNR_sendmsg __NR_sendmsg +#else +#define __SNR_sendmsg __PNR_sendmsg +#endif + +#ifdef __NR_sendto +#define __SNR_sendto __NR_sendto +#else +#define __SNR_sendto __PNR_sendto +#endif + +#ifdef __NR_set_mempolicy +#define __SNR_set_mempolicy __NR_set_mempolicy +#else +#define __SNR_set_mempolicy __PNR_set_mempolicy +#endif + +#define __SNR_set_robust_list __NR_set_robust_list + +#ifdef __NR_set_thread_area +#define __SNR_set_thread_area __NR_set_thread_area +#else +#define __SNR_set_thread_area __PNR_set_thread_area +#endif + +#define __SNR_set_tid_address __NR_set_tid_address + +#ifdef __NR_set_tls +#ifdef __ARM_NR_set_tls +#define __SNR_set_tls __ARM_NR_set_tls +#else +#define __SNR_set_tls __NR_set_tls +#endif +#else +#define __SNR_set_tls __PNR_set_tls +#endif + +#define __SNR_setdomainname __NR_setdomainname + +#ifdef __NR_setfsgid +#define __SNR_setfsgid __NR_setfsgid +#else +#define __SNR_setfsgid __PNR_setfsgid +#endif + +#ifdef __NR_setfsgid32 +#define __SNR_setfsgid32 __NR_setfsgid32 +#else +#define __SNR_setfsgid32 __PNR_setfsgid32 +#endif + +#ifdef __NR_setfsuid +#define __SNR_setfsuid __NR_setfsuid +#else +#define __SNR_setfsuid __PNR_setfsuid +#endif + +#ifdef __NR_setfsuid32 +#define __SNR_setfsuid32 __NR_setfsuid32 +#else +#define __SNR_setfsuid32 __PNR_setfsuid32 +#endif + +#ifdef __NR_setgid +#define __SNR_setgid __NR_setgid +#else +#define __SNR_setgid __PNR_setgid +#endif + +#ifdef __NR_setgid32 +#define __SNR_setgid32 __NR_setgid32 +#else +#define __SNR_setgid32 __PNR_setgid32 +#endif + +#ifdef __NR_setgroups +#define __SNR_setgroups __NR_setgroups +#else +#define __SNR_setgroups __PNR_setgroups +#endif + +#ifdef __NR_setgroups32 +#define __SNR_setgroups32 __NR_setgroups32 +#else +#define __SNR_setgroups32 __PNR_setgroups32 +#endif + +#define __SNR_sethostname __NR_sethostname + +#define __SNR_setitimer __NR_setitimer + +#define __SNR_setns __NR_setns + +#define __SNR_setpgid __NR_setpgid + +#define __SNR_setpriority __NR_setpriority + +#ifdef __NR_setregid +#define __SNR_setregid __NR_setregid +#else +#define __SNR_setregid __PNR_setregid +#endif + +#ifdef __NR_setregid32 +#define __SNR_setregid32 __NR_setregid32 +#else +#define __SNR_setregid32 __PNR_setregid32 +#endif + +#ifdef __NR_setresgid +#define __SNR_setresgid __NR_setresgid +#else +#define __SNR_setresgid __PNR_setresgid +#endif + +#ifdef __NR_setresgid32 +#define __SNR_setresgid32 __NR_setresgid32 +#else +#define __SNR_setresgid32 __PNR_setresgid32 +#endif + +#ifdef __NR_setresuid +#define __SNR_setresuid __NR_setresuid +#else +#define __SNR_setresuid __PNR_setresuid +#endif + +#ifdef __NR_setresuid32 +#define __SNR_setresuid32 __NR_setresuid32 +#else +#define __SNR_setresuid32 __PNR_setresuid32 +#endif + +#ifdef __NR_setreuid +#define __SNR_setreuid __NR_setreuid +#else +#define __SNR_setreuid __PNR_setreuid +#endif + +#ifdef __NR_setreuid32 +#define __SNR_setreuid32 __NR_setreuid32 +#else +#define __SNR_setreuid32 __PNR_setreuid32 +#endif + +#ifdef __NR_setrlimit +#define __SNR_setrlimit __NR_setrlimit +#else +#define __SNR_setrlimit __PNR_setrlimit +#endif + +#define __SNR_setsid __NR_setsid + +#ifdef __NR_setsockopt +#define __SNR_setsockopt __NR_setsockopt +#else +#define __SNR_setsockopt __PNR_setsockopt +#endif + +#define __SNR_settimeofday __NR_settimeofday + +#ifdef __NR_setuid +#define __SNR_setuid __NR_setuid +#else +#define __SNR_setuid __PNR_setuid +#endif + +#ifdef __NR_setuid32 +#define __SNR_setuid32 __NR_setuid32 +#else +#define __SNR_setuid32 __PNR_setuid32 +#endif + +#define __SNR_setxattr __NR_setxattr + +#ifdef __NR_sgetmask +#define __SNR_sgetmask __NR_sgetmask +#else +#define __SNR_sgetmask __PNR_sgetmask +#endif + +#ifdef __NR_shmat +#define __SNR_shmat __NR_shmat +#else +#define __SNR_shmat __PNR_shmat +#endif + +#ifdef __NR_shmctl +#define __SNR_shmctl __NR_shmctl +#else +#define __SNR_shmctl __PNR_shmctl +#endif + +#ifdef __NR_shmdt +#define __SNR_shmdt __NR_shmdt +#else +#define __SNR_shmdt __PNR_shmdt +#endif + +#ifdef __NR_shmget +#define __SNR_shmget __NR_shmget +#else +#define __SNR_shmget __PNR_shmget +#endif + +#ifdef __NR_shutdown +#define __SNR_shutdown __NR_shutdown +#else +#define __SNR_shutdown __PNR_shutdown +#endif + +#ifdef __NR_sigaction +#define __SNR_sigaction __NR_sigaction +#else +#define __SNR_sigaction __PNR_sigaction +#endif + +#define __SNR_sigaltstack __NR_sigaltstack + +#ifdef __NR_signal +#define __SNR_signal __NR_signal +#else +#define __SNR_signal __PNR_signal +#endif + +#ifdef __NR_signalfd +#define __SNR_signalfd __NR_signalfd +#else +#define __SNR_signalfd __PNR_signalfd +#endif + +#define __SNR_signalfd4 __NR_signalfd4 + +#ifdef __NR_sigpending +#define __SNR_sigpending __NR_sigpending +#else +#define __SNR_sigpending __PNR_sigpending +#endif + +#ifdef __NR_sigprocmask +#define __SNR_sigprocmask __NR_sigprocmask +#else +#define __SNR_sigprocmask __PNR_sigprocmask +#endif + +#ifdef __NR_sigreturn +#define __SNR_sigreturn __NR_sigreturn +#else +#define __SNR_sigreturn __PNR_sigreturn +#endif + +#ifdef __NR_sigsuspend +#define __SNR_sigsuspend __NR_sigsuspend +#else +#define __SNR_sigsuspend __PNR_sigsuspend +#endif + +#ifdef __NR_socket +#define __SNR_socket __NR_socket +#else +#define __SNR_socket __PNR_socket +#endif + +#ifdef __NR_socketcall +#define __SNR_socketcall __NR_socketcall +#else +#define __SNR_socketcall __PNR_socketcall +#endif + +#ifdef __NR_socketpair +#define __SNR_socketpair __NR_socketpair +#else +#define __SNR_socketpair __PNR_socketpair +#endif + +#define __SNR_splice __NR_splice + +#ifdef __NR_spu_create +#define __SNR_spu_create __NR_spu_create +#else +#define __SNR_spu_create __PNR_spu_create +#endif + +#ifdef __NR_spu_run +#define __SNR_spu_run __NR_spu_run +#else +#define __SNR_spu_run __PNR_spu_run +#endif + +#ifdef __NR_ssetmask +#define __SNR_ssetmask __NR_ssetmask +#else +#define __SNR_ssetmask __PNR_ssetmask +#endif + +#ifdef __NR_stat +#define __SNR_stat __NR_stat +#else +#define __SNR_stat __PNR_stat +#endif + +#ifdef __NR_stat64 +#define __SNR_stat64 __NR_stat64 +#else +#define __SNR_stat64 __PNR_stat64 +#endif + +#ifdef __NR_statfs +#define __SNR_statfs __NR_statfs +#else +#define __SNR_statfs __PNR_statfs +#endif + +#ifdef __NR_statfs64 +#define __SNR_statfs64 __NR_statfs64 +#else +#define __SNR_statfs64 __PNR_statfs64 +#endif + +#ifdef __NR_statx +#define __SNR_statx __NR_statx +#else +#define __SNR_statx __PNR_statx +#endif + +#ifdef __NR_stime +#define __SNR_stime __NR_stime +#else +#define __SNR_stime __PNR_stime +#endif + +#ifdef __NR_stty +#define __SNR_stty __NR_stty +#else +#define __SNR_stty __PNR_stty +#endif + +#ifdef __NR_subpage_prot +#define __SNR_subpage_prot __NR_subpage_prot +#else +#define __SNR_subpage_prot __PNR_subpage_prot +#endif + +#ifdef __NR_swapcontext +#define __SNR_swapcontext __NR_swapcontext +#else +#define __SNR_swapcontext __PNR_swapcontext +#endif + +#define __SNR_swapoff __NR_swapoff + +#define __SNR_swapon __NR_swapon + +#ifdef __NR_switch_endian +#define __SNR_switch_endian __NR_switch_endian +#else +#define __SNR_switch_endian __PNR_switch_endian +#endif + +#ifdef __NR_symlink +#define __SNR_symlink __NR_symlink +#else +#define __SNR_symlink __PNR_symlink +#endif + +#define __SNR_symlinkat __NR_symlinkat + +#ifdef __NR_sync +#define __SNR_sync __NR_sync +#else +#define __SNR_sync __PNR_sync +#endif + +#ifdef __NR_sync_file_range +#define __SNR_sync_file_range __NR_sync_file_range +#else +#define __SNR_sync_file_range __PNR_sync_file_range +#endif + +#ifdef __NR_sync_file_range2 +#define __SNR_sync_file_range2 __NR_sync_file_range2 +#else +#define __SNR_sync_file_range2 __PNR_sync_file_range2 +#endif + +#define __SNR_syncfs __NR_syncfs + +#ifdef __NR_syscall +#define __SNR_syscall __NR_syscall +#else +#define __SNR_syscall __PNR_syscall +#endif + +#ifdef __NR_sys_debug_setcontext +#define __SNR_sys_debug_setcontext __NR_sys_debug_setcontext +#else +#define __SNR_sys_debug_setcontext __PNR_sys_debug_setcontext +#endif + +#ifdef __NR_sysfs +#define __SNR_sysfs __NR_sysfs +#else +#define __SNR_sysfs __PNR_sysfs +#endif + +#define __SNR_sysinfo __NR_sysinfo + +#define __SNR_syslog __NR_syslog + +#ifdef __NR_sysmips +#define __SNR_sysmips __NR_sysmips +#else +#define __SNR_sysmips __PNR_sysmips +#endif + +#define __SNR_tee __NR_tee + +#define __SNR_tgkill __NR_tgkill + +#ifdef __NR_time +#define __SNR_time __NR_time +#else +#define __SNR_time __PNR_time +#endif + +#define __SNR_timer_create __NR_timer_create + +#define __SNR_timer_delete __NR_timer_delete + +#define __SNR_timer_getoverrun __NR_timer_getoverrun + +#define __SNR_timer_gettime __NR_timer_gettime + +#ifdef __NR_timer_gettime64 +#define __SNR_timer_gettime64 __NR_timer_gettime64 +#else +#define __SNR_timer_gettime64 __PNR_timer_gettime64 +#endif + +#define __SNR_timer_settime __NR_timer_settime + +#ifdef __NR_timer_settime64 +#define __SNR_timer_settime64 __NR_timer_settime64 +#else +#define __SNR_timer_settime64 __PNR_timer_settime64 +#endif + +#ifdef __NR_timerfd +#define __SNR_timerfd __NR_timerfd +#else +#define __SNR_timerfd __PNR_timerfd +#endif + +#define __SNR_timerfd_create __NR_timerfd_create + +#define __SNR_timerfd_gettime __NR_timerfd_gettime + +#ifdef __NR_timerfd_gettime64 +#define __SNR_timerfd_gettime64 __NR_timerfd_gettime64 +#else +#define __SNR_timerfd_gettime64 __PNR_timerfd_gettime64 +#endif + +#define __SNR_timerfd_settime __NR_timerfd_settime + +#ifdef __NR_timerfd_settime64 +#define __SNR_timerfd_settime64 __NR_timerfd_settime64 +#else +#define __SNR_timerfd_settime64 __PNR_timerfd_settime64 +#endif + +#define __SNR_times __NR_times + +#define __SNR_tkill __NR_tkill + +#ifdef __NR_truncate +#define __SNR_truncate __NR_truncate +#else +#define __SNR_truncate __PNR_truncate +#endif + +#ifdef __NR_truncate64 +#define __SNR_truncate64 __NR_truncate64 +#else +#define __SNR_truncate64 __PNR_truncate64 +#endif + +#ifdef __NR_tuxcall +#define __SNR_tuxcall __NR_tuxcall +#else +#define __SNR_tuxcall __PNR_tuxcall +#endif + +#ifdef __NR_ugetrlimit +#define __SNR_ugetrlimit __NR_ugetrlimit +#else +#define __SNR_ugetrlimit __PNR_ugetrlimit +#endif + +#ifdef __NR_ulimit +#define __SNR_ulimit __NR_ulimit +#else +#define __SNR_ulimit __PNR_ulimit +#endif + +#define __SNR_umask __NR_umask + +#ifdef __NR_umount +#define __SNR_umount __NR_umount +#else +#define __SNR_umount __PNR_umount +#endif + +#define __SNR_umount2 __NR_umount2 + +#define __SNR_uname __NR_uname + +#ifdef __NR_unlink +#define __SNR_unlink __NR_unlink +#else +#define __SNR_unlink __PNR_unlink +#endif + +#define __SNR_unlinkat __NR_unlinkat + +#define __SNR_unshare __NR_unshare + +#ifdef __NR_uselib +#define __SNR_uselib __NR_uselib +#else +#define __SNR_uselib __PNR_uselib +#endif + +#ifdef __NR_userfaultfd +#define __SNR_userfaultfd __NR_userfaultfd +#else +#define __SNR_userfaultfd __PNR_userfaultfd +#endif + +#ifdef __NR_usr26 +#ifdef __ARM_NR_usr26 +#define __SNR_usr26 __NR_usr26 +#else +#define __SNR_usr26 __NR_usr26 +#endif +#else +#define __SNR_usr26 __PNR_usr26 +#endif + +#ifdef __NR_usr32 +#ifdef __ARM_NR_usr32 +#define __SNR_usr32 __NR_usr32 +#else +#define __SNR_usr32 __NR_usr32 +#endif +#else +#define __SNR_usr32 __PNR_usr32 +#endif + +#ifdef __NR_ustat +#define __SNR_ustat __NR_ustat +#else +#define __SNR_ustat __PNR_ustat +#endif + +#ifdef __NR_utime +#define __SNR_utime __NR_utime +#else +#define __SNR_utime __PNR_utime +#endif + +#define __SNR_utimensat __NR_utimensat + +#ifdef __NR_utimensat_time64 +#define __SNR_utimensat_time64 __NR_utimensat_time64 +#else +#define __SNR_utimensat_time64 __PNR_utimensat_time64 +#endif + +#ifdef __NR_utimes +#define __SNR_utimes __NR_utimes +#else +#define __SNR_utimes __PNR_utimes +#endif + +#ifdef __NR_vfork +#define __SNR_vfork __NR_vfork +#else +#define __SNR_vfork __PNR_vfork +#endif + +#define __SNR_vhangup __NR_vhangup + +#ifdef __NR_vm86 +#define __SNR_vm86 __NR_vm86 +#else +#define __SNR_vm86 __PNR_vm86 +#endif + +#ifdef __NR_vm86old +#define __SNR_vm86old __NR_vm86old +#else +#define __SNR_vm86old __PNR_vm86old +#endif + +#define __SNR_vmsplice __NR_vmsplice + +#ifdef __NR_vserver +#define __SNR_vserver __NR_vserver +#else +#define __SNR_vserver __PNR_vserver +#endif + +#define __SNR_wait4 __NR_wait4 + +#define __SNR_waitid __NR_waitid + +#ifdef __NR_waitpid +#define __SNR_waitpid __NR_waitpid +#else +#define __SNR_waitpid __PNR_waitpid +#endif + +#define __SNR_write __NR_write + +#define __SNR_writev __NR_writev diff --git a/include/seccomp.h.in b/include/seccomp.h.in index 118d2fd..07a504a 100644 --- a/include/seccomp.h.in +++ b/include/seccomp.h.in @@ -1,6 +1,7 @@ /** * Seccomp Library * + * Copyright (c) 2019 Cisco Systems <pmoore2@cisco.com> * Copyright (c) 2012,2013 Red Hat <pmoore@redhat.com> * Author: Paul Moore <paul@paul-moore.com> */ @@ -196,7 +197,7 @@ struct scmp_arg_cmp { * Convert a syscall name into the associated syscall number * @param x the syscall name */ -#define SCMP_SYS(x) (__NR_##x) +#define SCMP_SYS(x) (__SNR_##x) /* Helpers for the argument comparison macros, DO NOT USE directly */ #define _SCMP_VA_NUM_ARGS(...) _SCMP_VA_NUM_ARGS_IMPL(__VA_ARGS__,2,1) @@ -701,1070 +702,7 @@ int seccomp_export_bpf(const scmp_filter_ctx ctx, int fd); #define __NR_SCMP_ERROR -1 #define __NR_SCMP_UNDEF -2 -/* socket syscalls */ - -#define __PNR_socket -101 -#ifndef __NR_socket -#define __NR_socket __PNR_socket -#endif /* __NR_socket */ - -#define __PNR_bind -102 -#ifndef __NR_bind -#define __NR_bind __PNR_bind -#endif /* __NR_bind */ - -#define __PNR_connect -103 -#ifndef __NR_connect -#define __NR_connect __PNR_connect -#endif /* __NR_connect */ - -#define __PNR_listen -104 -#ifndef __NR_listen -#define __NR_listen __PNR_listen -#endif /* __NR_listen */ - -#define __PNR_accept -105 -#ifndef __NR_accept -#define __NR_accept __PNR_accept -#endif /* __NR_accept */ - -#define __PNR_getsockname -106 -#ifndef __NR_getsockname -#define __NR_getsockname __PNR_getsockname -#endif /* __NR_getsockname */ - -#define __PNR_getpeername -107 -#ifndef __NR_getpeername -#define __NR_getpeername __PNR_getpeername -#endif /* __NR_getpeername */ - -#define __PNR_socketpair -108 -#ifndef __NR_socketpair -#define __NR_socketpair __PNR_socketpair -#endif /* __NR_socketpair */ - -#define __PNR_send -109 -#ifndef __NR_send -#define __NR_send __PNR_send -#endif /* __NR_send */ - -#define __PNR_recv -110 -#ifndef __NR_recv -#define __NR_recv __PNR_recv -#endif /* __NR_recv */ - -#define __PNR_sendto -111 -#ifndef __NR_sendto -#define __NR_sendto __PNR_sendto -#endif /* __NR_sendto */ - -#define __PNR_recvfrom -112 -#ifndef __NR_recvfrom -#define __NR_recvfrom __PNR_recvfrom -#endif /* __NR_recvfrom */ - -#define __PNR_shutdown -113 -#ifndef __NR_shutdown -#define __NR_shutdown __PNR_shutdown -#endif /* __NR_shutdown */ - -#define __PNR_setsockopt -114 -#ifndef __NR_setsockopt -#define __NR_setsockopt __PNR_setsockopt -#endif /* __NR_getsockopt */ - -#define __PNR_getsockopt -115 -#ifndef __NR_getsockopt -#define __NR_getsockopt __PNR_getsockopt -#endif /* __NR_getsockopt */ - -#define __PNR_sendmsg -116 -#ifndef __NR_sendmsg -#define __NR_sendmsg __PNR_sendmsg -#endif /* __NR_sendmsg */ - -#define __PNR_recvmsg -117 -#ifndef __NR_recvmsg -#define __NR_recvmsg __PNR_recvmsg -#endif /* __NR_recvmsg */ - -#define __PNR_accept4 -118 -#ifndef __NR_accept4 -#define __NR_accept4 __PNR_accept4 -#endif /* __NR_accept4 */ - -#define __PNR_recvmmsg -119 -#ifndef __NR_recvmmsg -#define __NR_recvmmsg __PNR_recvmmsg -#endif /* __NR_recvmmsg */ - -#define __PNR_sendmmsg -120 -#ifndef __NR_sendmmsg -#define __NR_sendmmsg __PNR_sendmmsg -#endif /* __NR_sendmmsg */ - -/* ipc syscalls */ - -#define __PNR_semop -201 -#ifndef __NR_semop -#define __NR_semop __PNR_semop -#endif /* __NR_semop */ - -#define __PNR_semget -202 -#ifndef __NR_semget -#define __NR_semget __PNR_semget -#endif /* __NR_semget */ - -#define __PNR_semctl -203 -#ifndef __NR_semctl -#define __NR_semctl __PNR_semctl -#endif /* __NR_semctl */ - -#define __PNR_semtimedop -204 -#ifndef __NR_semtimedop -#define __NR_semtimedop __PNR_semtimedop -#endif /* __NR_semtime */ - -#define __PNR_msgsnd -211 -#ifndef __NR_msgsnd -#define __NR_msgsnd __PNR_msgsnd -#endif /* __NR_msgsnd */ - -#define __PNR_msgrcv -212 -#ifndef __NR_msgrcv -#define __NR_msgrcv __PNR_msgrcv -#endif /* __NR_msgrcv */ - -#define __PNR_msgget -213 -#ifndef __NR_msgget -#define __NR_msgget __PNR_msgget -#endif /* __NR_msgget */ - -#define __PNR_msgctl -214 -#ifndef __NR_msgctl -#define __NR_msgctl __PNR_msgctl -#endif /* __NR_msgctl */ - -#define __PNR_shmat -221 -#ifndef __NR_shmat -#define __NR_shmat __PNR_shmat -#endif /* __NR_shmat */ - -#define __PNR_shmdt -222 -#ifndef __NR_shmdt -#define __NR_shmdt __PNR_shmdt -#endif /* __NR_shmdt */ - -#define __PNR_shmget -223 -#ifndef __NR_shmget -#define __NR_shmget __PNR_shmget -#endif /* __NR_shmget */ - -#define __PNR_shmctl -224 -#ifndef __NR_shmctl -#define __NR_shmctl __PNR_shmctl -#endif /* __NR_shmctl */ - -/* single syscalls */ - -#define __PNR_arch_prctl -10001 -#ifndef __NR_arch_prctl -#define __NR_arch_prctl __PNR_arch_prctl -#endif /* __NR_arch_prctl */ - -#define __PNR_bdflush -10002 -#ifndef __NR_bdflush -#define __NR_bdflush __PNR_bdflush -#endif /* __NR_bdflush */ - -#define __PNR_break -10003 -#ifndef __NR_break -#define __NR_break __PNR_break -#endif /* __NR_break */ - -#define __PNR_chown32 -10004 -#ifndef __NR_chown32 -#define __NR_chown32 __PNR_chown32 -#endif /* __NR_chown32 */ - -#define __PNR_epoll_ctl_old -10005 -#ifndef __NR_epoll_ctl_old -#define __NR_epoll_ctl_old __PNR_epoll_ctl_old -#endif /* __NR_epoll_ctl_old */ - -#define __PNR_epoll_wait_old -10006 -#ifndef __NR_epoll_wait_old -#define __NR_epoll_wait_old __PNR_epoll_wait_old -#endif /* __NR_epoll_wait_old */ - -#define __PNR_fadvise64_64 -10007 -#ifndef __NR_fadvise64_64 -#define __NR_fadvise64_64 __PNR_fadvise64_64 -#endif /* __NR_fadvise64_64 */ - -#define __PNR_fchown32 -10008 -#ifndef __NR_fchown32 -#define __NR_fchown32 __PNR_fchown32 -#endif /* __NR_fchown32 */ - -#define __PNR_fcntl64 -10009 -#ifndef __NR_fcntl64 -#define __NR_fcntl64 __PNR_fcntl64 -#endif /* __NR_fcntl64 */ - -#define __PNR_fstat64 -10010 -#ifndef __NR_fstat64 -#define __NR_fstat64 __PNR_fstat64 -#endif /* __NR_fstat64 */ - -#define __PNR_fstatat64 -10011 -#ifndef __NR_fstatat64 -#define __NR_fstatat64 __PNR_fstatat64 -#endif /* __NR_fstatat64 */ - -#define __PNR_fstatfs64 -10012 -#ifndef __NR_fstatfs64 -#define __NR_fstatfs64 __PNR_fstatfs64 -#endif /* __NR_fstatfs64 */ - -#define __PNR_ftime -10013 -#ifndef __NR_ftime -#define __NR_ftime __PNR_ftime -#endif /* __NR_ftime */ - -#define __PNR_ftruncate64 -10014 -#ifndef __NR_ftruncate64 -#define __NR_ftruncate64 __PNR_ftruncate64 -#endif /* __NR_ftruncate64 */ - -#define __PNR_getegid32 -10015 -#ifndef __NR_getegid32 -#define __NR_getegid32 __PNR_getegid32 -#endif /* __NR_getegid32 */ - -#define __PNR_geteuid32 -10016 -#ifndef __NR_geteuid32 -#define __NR_geteuid32 __PNR_geteuid32 -#endif /* __NR_geteuid32 */ - -#define __PNR_getgid32 -10017 -#ifndef __NR_getgid32 -#define __NR_getgid32 __PNR_getgid32 -#endif /* __NR_getgid32 */ - -#define __PNR_getgroups32 -10018 -#ifndef __NR_getgroups32 -#define __NR_getgroups32 __PNR_getgroups32 -#endif /* __NR_getgroups32 */ - -#define __PNR_getresgid32 -10019 -#ifndef __NR_getresgid32 -#define __NR_getresgid32 __PNR_getresgid32 -#endif /* __NR_getresgid32 */ - -#define __PNR_getresuid32 -10020 -#ifndef __NR_getresuid32 -#define __NR_getresuid32 __PNR_getresuid32 -#endif /* __NR_getresuid32 */ - -#define __PNR_getuid32 -10021 -#ifndef __NR_getuid32 -#define __NR_getuid32 __PNR_getuid32 -#endif /* __NR_getuid32 */ - -#define __PNR_gtty -10022 -#ifndef __NR_gtty -#define __NR_gtty __PNR_gtty -#endif /* __NR_gtty */ - -#define __PNR_idle -10023 -#ifndef __NR_idle -#define __NR_idle __PNR_idle -#endif /* __NR_idle */ - -#define __PNR_ipc -10024 -#ifndef __NR_ipc -#define __NR_ipc __PNR_ipc -#endif /* __NR_ipc */ - -#define __PNR_lchown32 -10025 -#ifndef __NR_lchown32 -#define __NR_lchown32 __PNR_lchown32 -#endif /* __NR_lchown32 */ - -#define __PNR__llseek -10026 -#ifndef __NR__llseek -#define __NR__llseek __PNR__llseek -#endif /* __NR__llseek */ - -#define __PNR_lock -10027 -#ifndef __NR_lock -#define __NR_lock __PNR_lock -#endif /* __NR_lock */ - -#define __PNR_lstat64 -10028 -#ifndef __NR_lstat64 -#define __NR_lstat64 __PNR_lstat64 -#endif /* __NR_lstat64 */ - -#define __PNR_mmap2 -10029 -#ifndef __NR_mmap2 -#define __NR_mmap2 __PNR_mmap2 -#endif /* __NR_mmap2 */ - -#define __PNR_mpx -10030 -#ifndef __NR_mpx -#define __NR_mpx __PNR_mpx -#endif /* __NR_mpx */ - -#define __PNR_newfstatat -10031 -#ifndef __NR_newfstatat -#define __NR_newfstatat __PNR_newfstatat -#endif /* __NR_newfstatat */ - -#define __PNR__newselect -10032 -#ifndef __NR__newselect -#define __NR__newselect __PNR__newselect -#endif /* __NR__newselect */ - -#define __PNR_nice -10033 -#ifndef __NR_nice -#define __NR_nice __PNR_nice -#endif /* __NR_nice */ - -#define __PNR_oldfstat -10034 -#ifndef __NR_oldfstat -#define __NR_oldfstat __PNR_oldfstat -#endif /* __NR_oldfstat */ - -#define __PNR_oldlstat -10035 -#ifndef __NR_oldlstat -#define __NR_oldlstat __PNR_oldlstat -#endif /* __NR_oldlstat */ - -#define __PNR_oldolduname -10036 -#ifndef __NR_oldolduname -#define __NR_oldolduname __PNR_oldolduname -#endif /* __NR_oldolduname */ - -#define __PNR_oldstat -10037 -#ifndef __NR_oldstat -#define __NR_oldstat __PNR_oldstat -#endif /* __NR_oldstat */ - -#define __PNR_olduname -10038 -#ifndef __NR_olduname -#define __NR_olduname __PNR_olduname -#endif /* __NR_olduname */ - -#define __PNR_prof -10039 -#ifndef __NR_prof -#define __NR_prof __PNR_prof -#endif /* __NR_prof */ - -#define __PNR_profil -10040 -#ifndef __NR_profil -#define __NR_profil __PNR_profil -#endif /* __NR_profil */ - -#define __PNR_readdir -10041 -#ifndef __NR_readdir -#define __NR_readdir __PNR_readdir -#endif /* __NR_readdir */ - -#define __PNR_security -10042 -#ifndef __NR_security -#define __NR_security __PNR_security -#endif /* __NR_security */ - -#define __PNR_sendfile64 -10043 -#ifndef __NR_sendfile64 -#define __NR_sendfile64 __PNR_sendfile64 -#endif /* __NR_sendfile64 */ - -#define __PNR_setfsgid32 -10044 -#ifndef __NR_setfsgid32 -#define __NR_setfsgid32 __PNR_setfsgid32 -#endif /* __NR_setfsgid32 */ - -#define __PNR_setfsuid32 -10045 -#ifndef __NR_setfsuid32 -#define __NR_setfsuid32 __PNR_setfsuid32 -#endif /* __NR_setfsuid32 */ - -#define __PNR_setgid32 -10046 -#ifndef __NR_setgid32 -#define __NR_setgid32 __PNR_setgid32 -#endif /* __NR_setgid32 */ - -#define __PNR_setgroups32 -10047 -#ifndef __NR_setgroups32 -#define __NR_setgroups32 __PNR_setgroups32 -#endif /* __NR_setgroups32 */ - -#define __PNR_setregid32 -10048 -#ifndef __NR_setregid32 -#define __NR_setregid32 __PNR_setregid32 -#endif /* __NR_setregid32 */ - -#define __PNR_setresgid32 -10049 -#ifndef __NR_setresgid32 -#define __NR_setresgid32 __PNR_setresgid32 -#endif /* __NR_setresgid32 */ - -#define __PNR_setresuid32 -10050 -#ifndef __NR_setresuid32 -#define __NR_setresuid32 __PNR_setresuid32 -#endif /* __NR_setresuid32 */ - -#define __PNR_setreuid32 -10051 -#ifndef __NR_setreuid32 -#define __NR_setreuid32 __PNR_setreuid32 -#endif /* __NR_setreuid32 */ - -#define __PNR_setuid32 -10052 -#ifndef __NR_setuid32 -#define __NR_setuid32 __PNR_setuid32 -#endif /* __NR_setuid32 */ - -#define __PNR_sgetmask -10053 -#ifndef __NR_sgetmask -#define __NR_sgetmask __PNR_sgetmask -#endif /* __NR_sgetmask */ - -#define __PNR_sigaction -10054 -#ifndef __NR_sigaction -#define __NR_sigaction __PNR_sigaction -#endif /* __NR_sigaction */ - -#define __PNR_signal -10055 -#ifndef __NR_signal -#define __NR_signal __PNR_signal -#endif /* __NR_signal */ - -#define __PNR_sigpending -10056 -#ifndef __NR_sigpending -#define __NR_sigpending __PNR_sigpending -#endif /* __NR_sigpending */ - -#define __PNR_sigprocmask -10057 -#ifndef __NR_sigprocmask -#define __NR_sigprocmask __PNR_sigprocmask -#endif /* __NR_sigprocmask */ - -#define __PNR_sigreturn -10058 -#ifndef __NR_sigreturn -#define __NR_sigreturn __PNR_sigreturn -#endif /* __NR_sigreturn */ - -#define __PNR_sigsuspend -10059 -#ifndef __NR_sigsuspend -#define __NR_sigsuspend __PNR_sigsuspend -#endif /* __NR_sigsuspend */ - -#define __PNR_socketcall -10060 -#ifndef __NR_socketcall -#define __NR_socketcall __PNR_socketcall -#endif /* __NR_socketcall */ - -#define __PNR_ssetmask -10061 -#ifndef __NR_ssetmask -#define __NR_ssetmask __PNR_ssetmask -#endif /* __NR_ssetmask */ - -#define __PNR_stat64 -10062 -#ifndef __NR_stat64 -#define __NR_stat64 __PNR_stat64 -#endif /* __NR_stat64 */ - -#define __PNR_statfs64 -10063 -#ifndef __NR_statfs64 -#define __NR_statfs64 __PNR_statfs64 -#endif /* __NR_statfs64 */ - -#define __PNR_stime -10064 -#ifndef __NR_stime -#define __NR_stime __PNR_stime -#endif /* __NR_stime */ - -#define __PNR_stty -10065 -#ifndef __NR_stty -#define __NR_stty __PNR_stty -#endif /* __NR_stty */ - -#define __PNR_truncate64 -10066 -#ifndef __NR_truncate64 -#define __NR_truncate64 __PNR_truncate64 -#endif /* __NR_truncate64 */ - -#define __PNR_tuxcall -10067 -#ifndef __NR_tuxcall -#define __NR_tuxcall __PNR_tuxcall -#endif /* __NR_tuxcall */ - -#define __PNR_ugetrlimit -10068 -#ifndef __NR_ugetrlimit -#define __NR_ugetrlimit __PNR_ugetrlimit -#endif /* __NR_ugetrlimit */ - -#define __PNR_ulimit -10069 -#ifndef __NR_ulimit -#define __NR_ulimit __PNR_ulimit -#endif /* __NR_ulimit */ - -#define __PNR_umount -10070 -#ifndef __NR_umount -#define __NR_umount __PNR_umount -#endif /* __NR_umount */ - -#define __PNR_vm86 -10071 -#ifndef __NR_vm86 -#define __NR_vm86 __PNR_vm86 -#endif /* __NR_vm86 */ - -#define __PNR_vm86old -10072 -#ifndef __NR_vm86old -#define __NR_vm86old __PNR_vm86old -#endif /* __NR_vm86old */ - -#define __PNR_waitpid -10073 -#ifndef __NR_waitpid -#define __NR_waitpid __PNR_waitpid -#endif /* __NR_waitpid */ - -#define __PNR_create_module -10074 -#ifndef __NR_create_module -#define __NR_create_module __PNR_create_module -#endif /* __NR_create_module */ - -#define __PNR_get_kernel_syms -10075 -#ifndef __NR_get_kernel_syms -#define __NR_get_kernel_syms __PNR_get_kernel_syms -#endif /* __NR_get_kernel_syms */ - -#define __PNR_get_thread_area -10076 -#ifndef __NR_get_thread_area -#define __NR_get_thread_area __PNR_get_thread_area -#endif /* __NR_get_thread_area */ - -#define __PNR_nfsservctl -10077 -#ifndef __NR_nfsservctl -#define __NR_nfsservctl __PNR_nfsservctl -#endif /* __NR_nfsservctl */ - -#define __PNR_query_module -10078 -#ifndef __NR_query_module -#define __NR_query_module __PNR_query_module -#endif /* __NR_query_module */ - -#define __PNR_set_thread_area -10079 -#ifndef __NR_set_thread_area -#define __NR_set_thread_area __PNR_set_thread_area -#endif /* __NR_set_thread_area */ - -#define __PNR__sysctl -10080 -#ifndef __NR__sysctl -#define __NR__sysctl __PNR__sysctl -#endif /* __NR__sysctl */ - -#define __PNR_uselib -10081 -#ifndef __NR_uselib -#define __NR_uselib __PNR_uselib -#endif /* __NR_uselib */ - -#define __PNR_vserver -10082 -#ifndef __NR_vserver -#define __NR_vserver __PNR_vserver -#endif /* __NR_vserver */ - -#define __PNR_arm_fadvise64_64 -10083 -#ifndef __NR_arm_fadvise64_64 -#define __NR_arm_fadvise64_64 __PNR_arm_fadvise64_64 -#endif /* __NR_arm_fadvise64_64 */ - -#define __PNR_arm_sync_file_range -10084 -#ifndef __NR_arm_sync_file_range -#define __NR_arm_sync_file_range __PNR_arm_sync_file_range -#endif /* __NR_arm_sync_file_range */ - -#define __PNR_pciconfig_iobase -10086 -#ifndef __NR_pciconfig_iobase -#define __NR_pciconfig_iobase __PNR_pciconfig_iobase -#endif /* __NR_pciconfig_iobase */ - -#define __PNR_pciconfig_read -10087 -#ifndef __NR_pciconfig_read -#define __NR_pciconfig_read __PNR_pciconfig_read -#endif /* __NR_pciconfig_read */ - -#define __PNR_pciconfig_write -10088 -#ifndef __NR_pciconfig_write -#define __NR_pciconfig_write __PNR_pciconfig_write -#endif /* __NR_pciconfig_write */ - -#define __PNR_sync_file_range2 -10089 -#ifndef __NR_sync_file_range2 -#define __NR_sync_file_range2 __PNR_sync_file_range2 -#endif /* __NR_sync_file_range2 */ - -#define __PNR_syscall -10090 -#ifndef __NR_syscall -#define __NR_syscall __PNR_syscall -#endif /* __NR_syscall */ - -#define __PNR_afs_syscall -10091 -#ifndef __NR_afs_syscall -#define __NR_afs_syscall __PNR_afs_syscall -#endif /* __NR_afs_syscall */ - -#define __PNR_fadvise64 -10092 -#ifndef __NR_fadvise64 -#define __NR_fadvise64 __PNR_fadvise64 -#endif /* __NR_fadvise64 */ - -#define __PNR_getpmsg -10093 -#ifndef __NR_getpmsg -#define __NR_getpmsg __PNR_getpmsg -#endif /* __NR_getpmsg */ - -#define __PNR_ioperm -10094 -#ifndef __NR_ioperm -#define __NR_ioperm __PNR_ioperm -#endif /* __NR_ioperm */ - -#define __PNR_iopl -10095 -#ifndef __NR_iopl -#define __NR_iopl __PNR_iopl -#endif /* __NR_iopl */ - -#define __PNR_migrate_pages -10097 -#ifndef __NR_migrate_pages -#define __NR_migrate_pages __PNR_migrate_pages -#endif /* __NR_migrate_pages */ - -#define __PNR_modify_ldt -10098 -#ifndef __NR_modify_ldt -#define __NR_modify_ldt __PNR_modify_ldt -#endif /* __NR_modify_ldt */ - -#define __PNR_putpmsg -10099 -#ifndef __NR_putpmsg -#define __NR_putpmsg __PNR_putpmsg -#endif /* __NR_putpmsg */ - -#define __PNR_sync_file_range -10100 -#ifndef __NR_sync_file_range -#define __NR_sync_file_range __PNR_sync_file_range -#endif /* __NR_sync_file_range */ - -#define __PNR_select -10101 -#ifndef __NR_select -#define __NR_select __PNR_select -#endif /* __NR_select */ - -#define __PNR_vfork -10102 -#ifndef __NR_vfork -#define __NR_vfork __PNR_vfork -#endif /* __NR_vfork */ - -#define __PNR_cachectl -10103 -#ifndef __NR_cachectl -#define __NR_cachectl __PNR_cachectl -#endif /* __NR_cachectl */ - -#define __PNR_cacheflush -10104 -#ifndef __NR_cacheflush -#ifdef __ARM_NR_cacheflush -#define __NR_cacheflush __ARM_NR_cacheflush -#else -#define __NR_cacheflush __PNR_cacheflush -#endif -#endif /* __NR_cacheflush */ - -#define __PNR_sysmips -10106 -#ifndef __NR_sysmips -#define __NR_sysmips __PNR_sysmips -#endif /* __NR_sysmips */ - -#define __PNR_timerfd -10107 -#ifndef __NR_timerfd -#define __NR_timerfd __PNR_timerfd -#endif /* __NR_timerfd */ - -#define __PNR_time -10108 -#ifndef __NR_time -#define __NR_time __PNR_time -#endif /* __NR_time */ - -#define __PNR_getrandom -10109 -#ifndef __NR_getrandom -#define __NR_getrandom __PNR_getrandom -#endif /* __NR_getrandom - NO LONGER NEEDED */ - -#define __PNR_memfd_create -10110 -#ifndef __NR_memfd_create -#define __NR_memfd_create __PNR_memfd_create -#endif /* __NR_memfd_create - NO LONGER NEEDED */ - -#define __PNR_kexec_file_load -10111 -#ifndef __NR_kexec_file_load -#define __NR_kexec_file_load __PNR_kexec_file_load -#endif /* __NR_kexec_file_load */ - -#define __PNR_sysfs -10145 -#ifndef __NR_sysfs -#define __NR_sysfs __PNR_sysfs -#endif /* __NR_sysfs */ - -#define __PNR_oldwait4 -10146 -#ifndef __NR_oldwait4 -#define __NR_oldwait4 __PNR_oldwait4 -#endif /* __NR_sysfs */ - -#define __PNR_access -10147 -#ifndef __NR_access -#define __NR_access __PNR_access -#endif /* __NR_access */ - -#define __PNR_alarm -10148 -#ifndef __NR_alarm -#define __NR_alarm __PNR_alarm -#endif /* __NR_alarm */ - -#define __PNR_chmod -10149 -#ifndef __NR_chmod -#define __NR_chmod __PNR_chmod -#endif /* __NR_chmod */ - -#define __PNR_chown -10150 -#ifndef __NR_chown -#define __NR_chown __PNR_chown -#endif /* __NR_chown */ - -#define __PNR_creat -10151 -#ifndef __NR_creat -#define __NR_creat __PNR_creat -#endif /* __NR_creat */ - -#define __PNR_dup2 -10152 -#ifndef __NR_dup2 -#define __NR_dup2 __PNR_dup2 -#endif /* __NR_dup2 */ - -#define __PNR_epoll_create -10153 -#ifndef __NR_epoll_create -#define __NR_epoll_create __PNR_epoll_create -#endif /* __NR_epoll_create */ - -#define __PNR_epoll_wait -10154 -#ifndef __NR_epoll_wait -#define __NR_epoll_wait __PNR_epoll_wait -#endif /* __NR_epoll_wait */ - -#define __PNR_eventfd -10155 -#ifndef __NR_eventfd -#define __NR_eventfd __PNR_eventfd -#endif /* __NR_eventfd */ - -#define __PNR_fork -10156 -#ifndef __NR_fork -#define __NR_fork __PNR_fork -#endif /* __NR_fork */ - -#define __PNR_futimesat -10157 -#ifndef __NR_futimesat -#define __NR_futimesat __PNR_futimesat -#endif /* __NR_futimesat */ - -#define __PNR_getdents -10158 -#ifndef __NR_getdents -#define __NR_getdents __PNR_getdents -#endif /* __NR_getdents */ - -#define __PNR_getpgrp -10159 -#ifndef __NR_getpgrp -#define __NR_getpgrp __PNR_getpgrp -#endif /* __NR_getpgrp */ - -#define __PNR_inotify_init -10160 -#ifndef __NR_inotify_init -#define __NR_inotify_init __PNR_inotify_init -#endif /* __NR_inotify_init */ - -#define __PNR_lchown -10161 -#ifndef __NR_lchown -#define __NR_lchown __PNR_lchown -#endif /* __NR_lchown */ - -#define __PNR_link -10162 -#ifndef __NR_link -#define __NR_link __PNR_link -#endif /* __NR_link */ - -#define __PNR_lstat -10163 -#ifndef __NR_lstat -#define __NR_lstat __PNR_lstat -#endif /* __NR_lstat */ - -#define __PNR_mkdir -10164 -#ifndef __NR_mkdir -#define __NR_mkdir __PNR_mkdir -#endif /* __NR_mkdir */ - -#define __PNR_mknod -10165 -#ifndef __NR_mknod -#define __NR_mknod __PNR_mknod -#endif /* __NR_mknod */ - -#define __PNR_open -10166 -#ifndef __NR_open -#define __NR_open __PNR_open -#endif /* __NR_open */ - -#define __PNR_pause -10167 -#ifndef __NR_pause -#define __NR_pause __PNR_pause -#endif /* __NR_pause */ - -#define __PNR_pipe -10168 -#ifndef __NR_pipe -#define __NR_pipe __PNR_pipe -#endif /* __NR_pipe */ - -#define __PNR_poll -10169 -#ifndef __NR_poll -#define __NR_poll __PNR_poll -#endif /* __NR_poll */ - -#define __PNR_readlink -10170 -#ifndef __NR_readlink -#define __NR_readlink __PNR_readlink -#endif /* __NR_readlink */ - -#define __PNR_rename -10171 -#ifndef __NR_rename -#define __NR_rename __PNR_rename -#endif /* __NR_rename */ - -#define __PNR_rmdir -10172 -#ifndef __NR_rmdir -#define __NR_rmdir __PNR_rmdir -#endif /* __NR_rmdir */ - -#define __PNR_signalfd -10173 -#ifndef __NR_signalfd -#define __NR_signalfd __PNR_signalfd -#endif /* __NR_signalfd */ - -#define __PNR_stat -10174 -#ifndef __NR_stat -#define __NR_stat __PNR_stat -#endif /* __NR_stat */ - -#define __PNR_symlink -10175 -#ifndef __NR_symlink -#define __NR_symlink __PNR_symlink -#endif /* __NR_symlink */ - -#define __PNR_unlink -10176 -#ifndef __NR_unlink -#define __NR_unlink __PNR_unlink -#endif /* __NR_unlink */ - -#define __PNR_ustat -10177 -#ifndef __NR_ustat -#define __NR_ustat __PNR_ustat -#endif /* __NR_ustat */ - -#define __PNR_utime -10178 -#ifndef __NR_utime -#define __NR_utime __PNR_utime -#endif /* __NR_utime */ - -#define __PNR_utimes -10179 -#ifndef __NR_utimes -#define __NR_utimes __PNR_utimes -#endif /* __NR_utimes */ - -#define __PNR_getrlimit -10180 -#ifndef __NR_getrlimit -#define __NR_getrlimit __PNR_getrlimit -#endif /* __NR_utimes */ - -#define __PNR_mmap -10181 -#ifndef __NR_mmap -#define __NR_mmap __PNR_mmap -#endif /* __NR_utimes */ - -#define __PNR_breakpoint -10182 -#ifndef __NR_breakpoint -#ifdef __ARM_NR_breakpoint -#define __NR_breakpoint __ARM_NR_breakpoint -#else -#define __NR_breakpoint __PNR_breakpoint -#endif -#endif /* __NR_breakpoint */ - -#define __PNR_set_tls -10183 -#ifndef __NR_set_tls -#ifdef __ARM_NR_set_tls -#define __NR_set_tls __ARM_NR_set_tls -#else -#define __NR_set_tls __PNR_set_tls -#endif -#endif /* __NR_set_tls */ - -#define __PNR_usr26 -10184 -#ifndef __NR_usr26 -#ifdef __ARM_NR_usr26 -#define __NR_usr26 __ARM_NR_usr26 -#else -#define __NR_usr26 __PNR_usr26 -#endif -#endif /* __NR_usr26 */ - -#define __PNR_usr32 -10185 -#ifndef __NR_usr32 -#ifdef __ARM_NR_usr32 -#define __NR_usr32 __ARM_NR_usr32 -#else -#define __NR_usr32 __PNR_usr32 -#endif -#endif /* __NR_usr32 */ - -#define __PNR_multiplexer -10186 -#ifndef __NR_multiplexer -#define __NR_multiplexer __PNR_multiplexer -#endif /* __NR_multiplexer */ - -#define __PNR_rtas -10187 -#ifndef __NR_rtas -#define __NR_rtas __PNR_rtas -#endif /* __NR_rtas */ - -#define __PNR_spu_create -10188 -#ifndef __NR_spu_create -#define __NR_spu_create __PNR_spu_create -#endif /* __NR_spu_create */ - -#define __PNR_spu_run -10189 -#ifndef __NR_spu_run -#define __NR_spu_run __PNR_spu_run -#endif /* __NR_spu_run */ - -#define __PNR_swapcontext -10190 -#ifndef __NR_swapcontext -#define __NR_swapcontext __PNR_swapcontext -#endif /* __NR_swapcontext */ - -#define __PNR_sys_debug_setcontext -10191 -#ifndef __NR_sys_debug_setcontext -#define __NR_sys_debug_setcontext __PNR_sys_debug_setcontext -#endif /* __NR_sys_debug_setcontext */ - -#define __PNR_switch_endian -10191 -#ifndef __NR_switch_endian -#define __NR_switch_endian __PNR_switch_endian -#endif /* __NR_switch_endian */ - -#define __PNR_get_mempolicy -10192 -#ifndef __NR_get_mempolicy -#define __NR_get_mempolicy __PNR_get_mempolicy -#endif /* __NR_get_mempolicy */ - -#define __PNR_move_pages -10193 -#ifndef __NR_move_pages -#define __NR_move_pages __PNR_move_pages -#endif /* __NR_move_pages */ - -#define __PNR_mbind -10194 -#ifndef __NR_mbind -#define __NR_mbind __PNR_mbind -#endif /* __NR_mbind */ - -#define __PNR_set_mempolicy -10195 -#ifndef __NR_set_mempolicy -#define __NR_set_mempolicy __PNR_set_mempolicy -#endif /* __NR_set_mempolicy */ - -#define __PNR_s390_runtime_instr -10196 -#ifndef __NR_s390_runtime_instr -#define __NR_s390_runtime_instr __PNR_s390_runtime_instr -#endif /* __NR_s390_runtime_instr */ - -#define __PNR_s390_pci_mmio_read -10197 -#ifndef __NR_s390_pci_mmio_read -#define __NR_s390_pci_mmio_read __PNR_s390_pci_mmio_read -#endif /* __NR_s390_pci_mmio_read */ - -#define __PNR_s390_pci_mmio_write -10198 -#ifndef __NR_s390_pci_mmio_write -#define __NR_s390_pci_mmio_write __PNR_s390_pci_mmio_write -#endif /* __NR_s390_pci_mmio_write */ - -#define __PNR_membarrier -10199 -#ifndef __NR_membarrier -#define __NR_membarrier __PNR_membarrier -#endif /* __NR_membarrier */ - -#define __PNR_userfaultfd -10200 -#ifndef __NR_userfaultfd -#define __NR_userfaultfd __PNR_userfaultfd -#endif /* __NR_userfaultfd */ - -#define __PNR_pkey_mprotect -10201 -#ifndef __NR_pkey_mprotect -#define __NR_pkey_mprotect __PNR_pkey_mprotect -#endif /* __NR_pkey_mprotect */ - -#define __PNR_pkey_alloc -10202 -#ifndef __NR_pkey_alloc -#define __NR_pkey_alloc __PNR_pkey_alloc -#endif /* __NR_pkey_alloc */ - -#define __PNR_pkey_free -10203 -#ifndef __NR_pkey_free -#define __NR_pkey_free __PNR_pkey_free -#endif /* __NR_pkey_free */ - -#define __PNR_get_tls -10204 -#ifndef __NR_get_tls -#ifdef __ARM_NR_get_tls -#define __NR_get_tls __ARM_NR_get_tls -#else -#define __NR_get_tls __PNR_get_tls -#endif -#endif /* __NR_get_tls */ - -#define __PNR_s390_guarded_storage -10205 -#ifndef __NR_s390_guarded_storage -#define __NR_s390_guarded_storage __PNR_s390_guarded_storage -#endif /* __NR_s390_guarded_storage */ - -#define __PNR_s390_sthyi -10206 -#ifndef __NR_s390_sthyi -#define __NR_s390_sthyi __PNR_s390_sthyi -#endif /* __NR_s390_sthyi */ - -#define __PNR_subpage_prot -10207 -#ifndef __NR_subpage_prot -#define __NR_subpage_prot __PNR_subpage_prot -#endif /* __NR_subpage_prot */ - -#define __PNR_statx -10208 -#ifndef __NR_statx -#define __NR_statx __PNR_statx -#endif /* __NR_statx */ - -#define __PNR_io_pgetevents -10209 -#ifndef __NR_io_pgetevents -#define __NR_io_pgetevents __PNR_io_pgetevents -#endif /* __NR_io_pgetevents */ - -#define __PNR_rseq -10210 -#ifndef __NR_rseq -#define __NR_rseq __PNR_rseq -#endif /* __NR_rseq */ +#include <seccomp-syscalls.h> #ifdef __cplusplus } diff --git a/src/arch-aarch64-syscalls.c b/src/arch-aarch64-syscalls.c index 90de283..02f25eb 100644 --- a/src/arch-aarch64-syscalls.c +++ b/src/arch-aarch64-syscalls.c @@ -26,7 +26,7 @@ #include "arch.h" #include "arch-aarch64.h" -/* NOTE: based on Linux 4.15-rc7 */ +/* NOTE: based on Linux v5.4-rc4 */ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "_llseek", __PNR__llseek }, { "_newselect", __PNR__newselect }, @@ -58,11 +58,17 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "chown32", __PNR_chown32 }, { "chroot", 51 }, { "clock_adjtime", 266 }, + { "clock_adjtime64", __PNR_clock_adjtime64 }, { "clock_getres", 114 }, + { "clock_getres_time64", __PNR_clock_getres_time64 }, { "clock_gettime", 113 }, + { "clock_gettime64", __PNR_clock_gettime64 }, { "clock_nanosleep", 115 }, + { "clock_nanosleep_time64", __PNR_clock_nanosleep_time64 }, { "clock_settime", 112 }, + { "clock_settime64", __PNR_clock_settime64 }, { "clone", 220 }, + { "clone3", __PNR_clone3 }, { "close", 57 }, { "connect", 203 }, { "copy_file_range", 285 }, @@ -106,7 +112,11 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "flock", 32 }, { "fork", __PNR_fork }, { "fremovexattr", 16 }, + { "fsconfig", 431 }, { "fsetxattr", 7 }, + { "fsmount", 432 }, + { "fsopen", 430 }, + { "fspick", 433 }, { "fstat", 80 }, { "fstat64", __PNR_fstat64 }, { "fstatat64", __PNR_fstatat64 }, @@ -117,6 +127,7 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "ftruncate", 46 }, { "ftruncate64", __PNR_ftruncate64 }, { "futex", 98 }, + { "futex_time64", __PNR_futex_time64 }, { "futimesat", __PNR_futimesat }, { "get_kernel_syms", __PNR_get_kernel_syms }, { "get_mempolicy", 236 }, @@ -148,7 +159,7 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "getresgid32", __PNR_getresgid32 }, { "getresuid", 148 }, { "getresuid32", __PNR_getresuid32 }, - { "getrlimit", 163 }, + { "getrlimit", __PNR_getrlimit }, { "getrusage", 165 }, { "getsid", 156 }, { "getsockname", 204 }, @@ -169,6 +180,7 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "io_destroy", 1 }, { "io_getevents", 4 }, { "io_pgetevents", 292 }, + { "io_pgetevents_time64", __PNR_io_pgetevents_time64 }, { "io_setup", 0 }, { "io_submit", 2 }, { "io_uring_setup", 425 }, @@ -217,6 +229,7 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "mmap2", __PNR_mmap2 }, { "modify_ldt", __PNR_modify_ldt }, { "mount", 40 }, + { "move_mount", 429 }, { "move_pages", 239 }, { "mprotect", 226 }, { "mpx", __PNR_mpx }, @@ -224,7 +237,9 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "mq_notify", 184 }, { "mq_open", 180 }, { "mq_timedreceive", 183 }, + { "mq_timedreceive_time64", __PNR_mq_timedreceive_time64 }, { "mq_timedsend", 182 }, + { "mq_timedsend_time64", __PNR_mq_timedsend_time64 }, { "mq_unlink", 181 }, { "mremap", 216 }, { "msgctl", 187 }, @@ -249,6 +264,7 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "oldwait4", __PNR_oldwait4 }, { "open", __PNR_open }, { "open_by_handle_at", 265 }, + { "open_tree", 428 }, { "openat", 56 }, { "pause", __PNR_pause }, { "pciconfig_iobase", __PNR_pciconfig_iobase }, @@ -256,6 +272,8 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "pciconfig_write", __PNR_pciconfig_write }, { "perf_event_open", 241 }, { "personality", 92 }, + { "pidfd_open", 434 }, + { "pidfd_send_signal", 424 }, { "pipe", __PNR_pipe }, { "pipe2", 59 }, { "pivot_root", 41 }, @@ -264,6 +282,7 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "pkey_mprotect", 288 }, { "poll", __PNR_poll }, { "ppoll", 73 }, + { "ppoll_time64", __PNR_ppoll_time64 }, { "prctl", 167 }, { "pread64", 67 }, { "preadv", 69 }, @@ -274,6 +293,7 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "prof", __PNR_prof }, { "profil", __PNR_profil }, { "pselect6", 72 }, + { "pselect6_time64", __PNR_pselect6_time64 }, { "ptrace", 117 }, { "putpmsg", __PNR_putpmsg }, { "pwrite64", 68 }, @@ -291,6 +311,7 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "recv", __PNR_recv }, { "recvfrom", 207 }, { "recvmmsg", 243 }, + { "recvmmsg_time64", __PNR_recvmmsg_time64 }, { "recvmsg", 212 }, { "remap_file_pages", 234 }, { "removexattr", 14 }, @@ -308,6 +329,7 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "rt_sigreturn", 139 }, { "rt_sigsuspend", 133 }, { "rt_sigtimedwait", 137 }, + { "rt_sigtimedwait_time64", __PNR_rt_sigtimedwait_time64 }, { "rt_tgsigqueueinfo", 240 }, { "rtas", __PNR_rtas }, { "s390_guarded_storage", __PNR_s390_guarded_storage }, @@ -322,6 +344,7 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "sched_getparam", 121 }, { "sched_getscheduler", 120 }, { "sched_rr_get_interval", 127 }, + { "sched_rr_get_interval_time64", __PNR_sched_rr_get_interval_time64 }, { "sched_setaffinity", 122 }, { "sched_setattr", 274 }, { "sched_setparam", 118 }, @@ -334,6 +357,7 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "semget", 190 }, { "semop", 193 }, { "semtimedop", 192 }, + { "semtimedop_time64", __PNR_semtimedop_time64 }, { "send", __PNR_send }, { "sendfile", 71 }, { "sendfile64", __PNR_sendfile64 }, @@ -367,7 +391,7 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "setresuid32", __PNR_setresuid32 }, { "setreuid", 145 }, { "setreuid32", __PNR_setreuid32 }, - { "setrlimit", 164 }, + { "setrlimit", __PNR_setrlimit }, { "setsid", 157 }, { "setsockopt", 208 }, { "settimeofday", 170 }, @@ -427,11 +451,15 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "timer_delete", 111 }, { "timer_getoverrun", 109 }, { "timer_gettime", 108 }, + { "timer_gettime64", __PNR_timer_gettime64 }, { "timer_settime", 110 }, + { "timer_settime64", __PNR_timer_settime64 }, { "timerfd", __PNR_timerfd }, { "timerfd_create", 85 }, { "timerfd_gettime", 87 }, + { "timerfd_gettime64", __PNR_timerfd_gettime64 }, { "timerfd_settime", 86 }, + { "timerfd_settime64", __PNR_timerfd_settime64 }, { "times", 153 }, { "tkill", 130 }, { "truncate", 45 }, @@ -453,6 +481,7 @@ const struct arch_syscall_def aarch64_syscall_table[] = { \ { "ustat", __PNR_ustat }, { "utime", __PNR_utime }, { "utimensat", 88 }, + { "utimensat_time64", __PNR_utimensat_time64 }, { "utimes", __PNR_utimes }, { "vfork", __PNR_vfork }, { "vhangup", 58 }, diff --git a/src/arch-arm-syscalls.c b/src/arch-arm-syscalls.c index a0dbd60..923aae9 100644 --- a/src/arch-arm-syscalls.c +++ b/src/arch-arm-syscalls.c @@ -37,7 +37,7 @@ #define __SCMP_NR_BASE __SCMP_NR_OABI_SYSCALL_BASE #endif -/* NOTE: based on Linux 4.15-rc7 */ +/* NOTE: based on Linux v5.4-rc4 */ const struct arch_syscall_def arm_syscall_table[] = { \ /* NOTE: arm_sync_file_range() and sync_file_range2() share values */ { "_llseek", (__SCMP_NR_BASE + 140) }, @@ -70,11 +70,17 @@ const struct arch_syscall_def arm_syscall_table[] = { \ { "chown32", (__SCMP_NR_BASE + 212) }, { "chroot", (__SCMP_NR_BASE + 61) }, { "clock_adjtime", (__SCMP_NR_BASE + 372) }, + { "clock_adjtime64", (__SCMP_NR_BASE + 405) }, { "clock_getres", (__SCMP_NR_BASE + 264) }, + { "clock_getres_time64", (__SCMP_NR_BASE + 406) }, { "clock_gettime", (__SCMP_NR_BASE + 263) }, + { "clock_gettime64", (__SCMP_NR_BASE + 403) }, { "clock_nanosleep", (__SCMP_NR_BASE + 265) }, + { "clock_nanosleep_time64", (__SCMP_NR_BASE + 407) }, { "clock_settime", (__SCMP_NR_BASE + 262) }, + { "clock_settime64", (__SCMP_NR_BASE + 404) }, { "clone", (__SCMP_NR_BASE + 120) }, + { "clone3", (__SCMP_NR_BASE + 435) }, { "close", (__SCMP_NR_BASE + 6) }, { "connect", (__SCMP_NR_BASE + 283) }, { "copy_file_range", (__SCMP_NR_BASE + 391) }, @@ -118,7 +124,11 @@ const struct arch_syscall_def arm_syscall_table[] = { \ { "flock", (__SCMP_NR_BASE + 143) }, { "fork", (__SCMP_NR_BASE + 2) }, { "fremovexattr", (__SCMP_NR_BASE + 237) }, + { "fsconfig", (__SCMP_NR_BASE + 431) }, { "fsetxattr", (__SCMP_NR_BASE + 228) }, + { "fsmount", (__SCMP_NR_BASE + 432) }, + { "fsopen", (__SCMP_NR_BASE + 430) }, + { "fspick", (__SCMP_NR_BASE + 433) }, { "fstat", (__SCMP_NR_BASE + 108) }, { "fstat64", (__SCMP_NR_BASE + 197) }, { "fstatat64", (__SCMP_NR_BASE + 327) }, @@ -129,6 +139,7 @@ const struct arch_syscall_def arm_syscall_table[] = { \ { "ftruncate", (__SCMP_NR_BASE + 93) }, { "ftruncate64", (__SCMP_NR_BASE + 194) }, { "futex", (__SCMP_NR_BASE + 240) }, + { "futex_time64", (__SCMP_NR_BASE + 422) }, { "futimesat", (__SCMP_NR_BASE + 326) }, { "get_kernel_syms", __PNR_get_kernel_syms }, { "get_mempolicy", (__SCMP_NR_BASE + 320) }, @@ -181,6 +192,7 @@ const struct arch_syscall_def arm_syscall_table[] = { \ { "io_destroy", (__SCMP_NR_BASE + 244) }, { "io_getevents", (__SCMP_NR_BASE + 245) }, { "io_pgetevents", (__SCMP_NR_BASE + 399) }, + { "io_pgetevents_time64", (__SCMP_NR_BASE + 416) }, { "io_setup", (__SCMP_NR_BASE + 243) }, { "io_submit", (__SCMP_NR_BASE + 246) }, { "io_uring_setup", (__SCMP_NR_BASE + 425) }, @@ -193,7 +205,7 @@ const struct arch_syscall_def arm_syscall_table[] = { \ { "ioprio_set", (__SCMP_NR_BASE + 314) }, { "ipc", __PNR_ipc }, { "kcmp", (__SCMP_NR_BASE + 378) }, - { "kexec_file_load", __PNR_kexec_file_load }, + { "kexec_file_load", (__SCMP_NR_BASE + 401) }, { "kexec_load", (__SCMP_NR_BASE + 347) }, { "keyctl", (__SCMP_NR_BASE + 311) }, { "kill", (__SCMP_NR_BASE + 37) }, @@ -216,7 +228,7 @@ const struct arch_syscall_def arm_syscall_table[] = { \ { "mbind", (__SCMP_NR_BASE + 319) }, { "membarrier", (__SCMP_NR_BASE + 389) }, { "memfd_create", (__SCMP_NR_BASE + 385) }, - { "migrate_pages", __PNR_migrate_pages }, + { "migrate_pages", (__SCMP_NR_BASE + 400) }, { "mincore", (__SCMP_NR_BASE + 219) }, { "mkdir", (__SCMP_NR_BASE + 39) }, { "mkdirat", (__SCMP_NR_BASE + 323) }, @@ -229,6 +241,7 @@ const struct arch_syscall_def arm_syscall_table[] = { \ { "mmap2", (__SCMP_NR_BASE + 192) }, { "modify_ldt", __PNR_modify_ldt }, { "mount", (__SCMP_NR_BASE + 21) }, + { "move_mount", (__SCMP_NR_BASE + 429) }, { "move_pages", (__SCMP_NR_BASE + 344) }, { "mprotect", (__SCMP_NR_BASE + 125) }, { "mpx", __PNR_mpx }, @@ -236,7 +249,9 @@ const struct arch_syscall_def arm_syscall_table[] = { \ { "mq_notify", (__SCMP_NR_BASE + 278) }, { "mq_open", (__SCMP_NR_BASE + 274) }, { "mq_timedreceive", (__SCMP_NR_BASE + 277) }, + { "mq_timedreceive_time64", (__SCMP_NR_BASE + 419) }, { "mq_timedsend", (__SCMP_NR_BASE + 276) }, + { "mq_timedsend_time64", (__SCMP_NR_BASE + 418) }, { "mq_unlink", (__SCMP_NR_BASE + 275) }, { "mremap", (__SCMP_NR_BASE + 163) }, { "msgctl", (__SCMP_NR_BASE + 304) }, @@ -261,6 +276,7 @@ const struct arch_syscall_def arm_syscall_table[] = { \ { "oldwait4", __PNR_oldwait4 }, { "open", (__SCMP_NR_BASE + 5) }, { "open_by_handle_at", (__SCMP_NR_BASE + 371) }, + { "open_tree", (__SCMP_NR_BASE + 428) }, { "openat", (__SCMP_NR_BASE + 322) }, { "pause", (__SCMP_NR_BASE + 29) }, { "pciconfig_iobase", (__SCMP_NR_BASE + 271) }, @@ -268,6 +284,8 @@ const struct arch_syscall_def arm_syscall_table[] = { \ { "pciconfig_write", (__SCMP_NR_BASE + 273) }, { "perf_event_open", (__SCMP_NR_BASE + 364) }, { "personality", (__SCMP_NR_BASE + 136) }, + { "pidfd_open", (__SCMP_NR_BASE + 434) }, + { "pidfd_send_signal", (__SCMP_NR_BASE + 424) }, { "pipe", (__SCMP_NR_BASE + 42) }, { "pipe2", (__SCMP_NR_BASE + 359) }, { "pivot_root", (__SCMP_NR_BASE + 218) }, @@ -276,6 +294,7 @@ const struct arch_syscall_def arm_syscall_table[] = { \ { "pkey_mprotect", (__SCMP_NR_BASE + 394) }, { "poll", (__SCMP_NR_BASE + 168) }, { "ppoll", (__SCMP_NR_BASE + 336) }, + { "ppoll_time64", (__SCMP_NR_BASE + 414) }, { "prctl", (__SCMP_NR_BASE + 172) }, { "pread64", (__SCMP_NR_BASE + 180) }, { "preadv", (__SCMP_NR_BASE + 361) }, @@ -286,6 +305,7 @@ const struct arch_syscall_def arm_syscall_table[] = { \ { "prof", __PNR_prof }, { "profil", __PNR_profil }, { "pselect6", (__SCMP_NR_BASE + 335) }, + { "pselect6_time64", (__SCMP_NR_BASE + 413) }, { "ptrace", (__SCMP_NR_BASE + 26) }, { "putpmsg", __PNR_putpmsg }, { "pwrite64", (__SCMP_NR_BASE + 181) }, @@ -303,6 +323,7 @@ const struct arch_syscall_def arm_syscall_table[] = { \ { "recv", (__SCMP_NR_BASE + 291) }, { "recvfrom", (__SCMP_NR_BASE + 292) }, { "recvmmsg", (__SCMP_NR_BASE + 365) }, + { "recvmmsg_time64", (__SCMP_NR_BASE + 417) }, { "recvmsg", (__SCMP_NR_BASE + 297) }, { "remap_file_pages", (__SCMP_NR_BASE + 253) }, { "removexattr", (__SCMP_NR_BASE + 235) }, @@ -320,6 +341,7 @@ const struct arch_syscall_def arm_syscall_table[] = { \ { "rt_sigreturn", (__SCMP_NR_BASE + 173) }, { "rt_sigsuspend", (__SCMP_NR_BASE + 179) }, { "rt_sigtimedwait", (__SCMP_NR_BASE + 177) }, + { "rt_sigtimedwait_time64", (__SCMP_NR_BASE + 421) }, { "rt_tgsigqueueinfo", (__SCMP_NR_BASE + 363) }, { "rtas", __PNR_rtas }, { "s390_guarded_storage", __PNR_s390_guarded_storage }, @@ -334,6 +356,7 @@ const struct arch_syscall_def arm_syscall_table[] = { \ { "sched_getparam", (__SCMP_NR_BASE + 155) }, { "sched_getscheduler", (__SCMP_NR_BASE + 157) }, { "sched_rr_get_interval", (__SCMP_NR_BASE + 161) }, + { "sched_rr_get_interval_time64", (__SCMP_NR_BASE + 423) }, { "sched_setaffinity", (__SCMP_NR_BASE + 241) }, { "sched_setattr", (__SCMP_NR_BASE + 380) }, { "sched_setparam", (__SCMP_NR_BASE + 154) }, @@ -346,6 +369,7 @@ const struct arch_syscall_def arm_syscall_table[] = { \ { "semget", (__SCMP_NR_BASE + 299) }, { "semop", (__SCMP_NR_BASE + 298) }, { "semtimedop", (__SCMP_NR_BASE + 312) }, + { "semtimedop_time64", (__SCMP_NR_BASE + 420) }, { "send", (__SCMP_NR_BASE + 289) }, { "sendfile", (__SCMP_NR_BASE + 187) }, { "sendfile64", (__SCMP_NR_BASE + 239) }, @@ -439,11 +463,15 @@ const struct arch_syscall_def arm_syscall_table[] = { \ { "timer_delete", (__SCMP_NR_BASE + 261) }, { "timer_getoverrun", (__SCMP_NR_BASE + 260) }, { "timer_gettime", (__SCMP_NR_BASE + 259) }, + { "timer_gettime64", (__SCMP_NR_BASE + 408) }, { "timer_settime", (__SCMP_NR_BASE + 258) }, + { "timer_settime64", (__SCMP_NR_BASE + 409) }, { "timerfd", __PNR_timerfd }, { "timerfd_create", (__SCMP_NR_BASE + 350) }, { "timerfd_gettime", (__SCMP_NR_BASE + 354) }, + { "timerfd_gettime64", (__SCMP_NR_BASE + 410) }, { "timerfd_settime", (__SCMP_NR_BASE + 353) }, + { "timerfd_settime64", (__SCMP_NR_BASE + 411) }, { "times", (__SCMP_NR_BASE + 43) }, { "tkill", (__SCMP_NR_BASE + 238) }, { "truncate", (__SCMP_NR_BASE + 92) }, @@ -465,6 +493,7 @@ const struct arch_syscall_def arm_syscall_table[] = { \ { "ustat", (__SCMP_NR_BASE + 62) }, { "utime", __PNR_utime }, { "utimensat", (__SCMP_NR_BASE + 348) }, + { "utimensat_time64", (__SCMP_NR_BASE + 412) }, { "utimes", (__SCMP_NR_BASE + 269) }, { "vfork", (__SCMP_NR_BASE + 190) }, { "vhangup", (__SCMP_NR_BASE + 111) }, diff --git a/src/arch-mips-syscalls.c b/src/arch-mips-syscalls.c index 8706ae5..c0c5d40 100644 --- a/src/arch-mips-syscalls.c +++ b/src/arch-mips-syscalls.c @@ -30,7 +30,7 @@ /* O32 ABI */ #define __SCMP_NR_BASE 4000 -/* NOTE: based on Linux 4.15-rc7 */ +/* NOTE: based on Linux v5.4-rc4 */ const struct arch_syscall_def mips_syscall_table[] = { \ { "_llseek", (__SCMP_NR_BASE + 140) }, { "_newselect", (__SCMP_NR_BASE + 142) }, @@ -62,11 +62,17 @@ const struct arch_syscall_def mips_syscall_table[] = { \ { "chown32", (__PNR_chown32) }, { "chroot", (__SCMP_NR_BASE + 61) }, { "clock_adjtime", (__SCMP_NR_BASE + 341) }, + { "clock_adjtime64", (__SCMP_NR_BASE + 405) }, { "clock_getres", (__SCMP_NR_BASE + 264) }, + { "clock_getres_time64", (__SCMP_NR_BASE + 406) }, { "clock_gettime", (__SCMP_NR_BASE + 263) }, + { "clock_gettime64", (__SCMP_NR_BASE + 403) }, { "clock_nanosleep", (__SCMP_NR_BASE + 265) }, + { "clock_nanosleep_time64", (__SCMP_NR_BASE + 407) }, { "clock_settime", (__SCMP_NR_BASE + 262) }, + { "clock_settime64", (__SCMP_NR_BASE + 404) }, { "clone", (__SCMP_NR_BASE + 120) }, + { "clone3", (__SCMP_NR_BASE + 435) }, { "close", (__SCMP_NR_BASE + 6) }, { "connect", (__SCMP_NR_BASE + 170) }, { "copy_file_range", (__SCMP_NR_BASE + 360) }, @@ -110,7 +116,11 @@ const struct arch_syscall_def mips_syscall_table[] = { \ { "flock", (__SCMP_NR_BASE + 143) }, { "fork", (__SCMP_NR_BASE + 2) }, { "fremovexattr", (__SCMP_NR_BASE + 235) }, + { "fsconfig", (__SCMP_NR_BASE + 431) }, { "fsetxattr", (__SCMP_NR_BASE + 226) }, + { "fsmount", (__SCMP_NR_BASE + 432) }, + { "fsopen", (__SCMP_NR_BASE + 430) }, + { "fspick", (__SCMP_NR_BASE + 433) }, { "fstat", (__SCMP_NR_BASE + 108) }, { "fstat64", (__SCMP_NR_BASE + 215) }, { "fstatat64", (__SCMP_NR_BASE + 293) }, @@ -121,6 +131,7 @@ const struct arch_syscall_def mips_syscall_table[] = { \ { "ftruncate", (__SCMP_NR_BASE + 93) }, { "ftruncate64", (__SCMP_NR_BASE + 212) }, { "futex", (__SCMP_NR_BASE + 238) }, + { "futex_time64", (__SCMP_NR_BASE + 422) }, { "futimesat", (__SCMP_NR_BASE + 292) }, { "get_kernel_syms", (__SCMP_NR_BASE + 130) }, { "get_mempolicy", (__SCMP_NR_BASE + 269) }, @@ -173,6 +184,7 @@ const struct arch_syscall_def mips_syscall_table[] = { \ { "io_destroy", (__SCMP_NR_BASE + 242) }, { "io_getevents", (__SCMP_NR_BASE + 243) }, { "io_pgetevents", (__SCMP_NR_BASE + 368) }, + { "io_pgetevents_time64", (__SCMP_NR_BASE + 416) }, { "io_setup", (__SCMP_NR_BASE + 241) }, { "io_submit", (__SCMP_NR_BASE + 244) }, { "io_uring_setup", (__SCMP_NR_BASE + 425) }, @@ -221,6 +233,7 @@ const struct arch_syscall_def mips_syscall_table[] = { \ { "mmap2", (__SCMP_NR_BASE + 210) }, { "modify_ldt", (__SCMP_NR_BASE + 123) }, { "mount", (__SCMP_NR_BASE + 21) }, + { "move_mount", (__SCMP_NR_BASE + 429) }, { "move_pages", (__SCMP_NR_BASE + 308) }, { "mprotect", (__SCMP_NR_BASE + 125) }, { "mpx", (__SCMP_NR_BASE + 56) }, @@ -228,13 +241,15 @@ const struct arch_syscall_def mips_syscall_table[] = { \ { "mq_notify", (__SCMP_NR_BASE + 275) }, { "mq_open", (__SCMP_NR_BASE + 271) }, { "mq_timedreceive", (__SCMP_NR_BASE + 274) }, + { "mq_timedreceive_time64", (__SCMP_NR_BASE + 419) }, { "mq_timedsend", (__SCMP_NR_BASE + 273) }, + { "mq_timedsend_time64", (__SCMP_NR_BASE + 418) }, { "mq_unlink", (__SCMP_NR_BASE + 272) }, { "mremap", (__SCMP_NR_BASE + 167) }, - { "msgctl", __PNR_msgctl }, - { "msgget", __PNR_msgget }, - { "msgrcv", __PNR_msgrcv }, - { "msgsnd", __PNR_msgsnd }, + { "msgctl", (__SCMP_NR_BASE + 402) }, + { "msgget", (__SCMP_NR_BASE + 399) }, + { "msgrcv", (__SCMP_NR_BASE + 401) }, + { "msgsnd", (__SCMP_NR_BASE + 400) }, { "msync", (__SCMP_NR_BASE + 144) }, { "multiplexer", __PNR_multiplexer }, { "munlock", (__SCMP_NR_BASE + 155) }, @@ -253,6 +268,7 @@ const struct arch_syscall_def mips_syscall_table[] = { \ { "oldwait4", __PNR_oldwait4 }, { "open", (__SCMP_NR_BASE + 5) }, { "open_by_handle_at", (__SCMP_NR_BASE + 340) }, + { "open_tree", (__SCMP_NR_BASE + 428) }, { "openat", (__SCMP_NR_BASE + 288) }, { "pause", (__SCMP_NR_BASE + 29) }, { "pciconfig_iobase", __PNR_pciconfig_iobase }, @@ -260,6 +276,8 @@ const struct arch_syscall_def mips_syscall_table[] = { \ { "pciconfig_write", __PNR_pciconfig_write }, { "perf_event_open", (__SCMP_NR_BASE + 333) }, { "personality", (__SCMP_NR_BASE + 136) }, + { "pidfd_open", (__SCMP_NR_BASE + 434) }, + { "pidfd_send_signal", (__SCMP_NR_BASE + 424) }, { "pipe", (__SCMP_NR_BASE + 42) }, { "pipe2", (__SCMP_NR_BASE + 328) }, { "pivot_root", (__SCMP_NR_BASE + 216) }, @@ -268,6 +286,7 @@ const struct arch_syscall_def mips_syscall_table[] = { \ { "pkey_mprotect", (__SCMP_NR_BASE + 363) }, { "poll", (__SCMP_NR_BASE + 188) }, { "ppoll", (__SCMP_NR_BASE + 302) }, + { "ppoll_time64", (__SCMP_NR_BASE + 414) }, { "prctl", (__SCMP_NR_BASE + 192) }, { "pread64", (__SCMP_NR_BASE + 200) }, { "preadv", (__SCMP_NR_BASE + 330) }, @@ -278,6 +297,7 @@ const struct arch_syscall_def mips_syscall_table[] = { \ { "prof", (__SCMP_NR_BASE + 44) }, { "profil", (__SCMP_NR_BASE + 98) }, { "pselect6", (__SCMP_NR_BASE + 301) }, + { "pselect6_time64", (__SCMP_NR_BASE + 413) }, { "ptrace", (__SCMP_NR_BASE + 26) }, { "putpmsg", (__SCMP_NR_BASE + 209) }, { "pwrite64", (__SCMP_NR_BASE + 201) }, @@ -295,6 +315,7 @@ const struct arch_syscall_def mips_syscall_table[] = { \ { "recv", (__SCMP_NR_BASE + 175) }, { "recvfrom", (__SCMP_NR_BASE + 176) }, { "recvmmsg", (__SCMP_NR_BASE + 335) }, + { "recvmmsg_time64", (__SCMP_NR_BASE + 417) }, { "recvmsg", (__SCMP_NR_BASE + 177) }, { "remap_file_pages", (__SCMP_NR_BASE + 251) }, { "removexattr", (__SCMP_NR_BASE + 233) }, @@ -312,6 +333,7 @@ const struct arch_syscall_def mips_syscall_table[] = { \ { "rt_sigreturn", (__SCMP_NR_BASE + 193) }, { "rt_sigsuspend", (__SCMP_NR_BASE + 199) }, { "rt_sigtimedwait", (__SCMP_NR_BASE + 197) }, + { "rt_sigtimedwait_time64", (__SCMP_NR_BASE + 421) }, { "rt_tgsigqueueinfo", (__SCMP_NR_BASE + 332) }, { "rtas", __PNR_rtas }, { "s390_guarded_storage", __PNR_s390_guarded_storage }, @@ -326,6 +348,7 @@ const struct arch_syscall_def mips_syscall_table[] = { \ { "sched_getparam", (__SCMP_NR_BASE + 159) }, { "sched_getscheduler", (__SCMP_NR_BASE + 161) }, { "sched_rr_get_interval", (__SCMP_NR_BASE + 165) }, + { "sched_rr_get_interval_time64", (__SCMP_NR_BASE + 423) }, { "sched_setaffinity", (__SCMP_NR_BASE + 239) }, { "sched_setattr", (__SCMP_NR_BASE + 349) }, { "sched_setparam", (__SCMP_NR_BASE + 158) }, @@ -334,10 +357,11 @@ const struct arch_syscall_def mips_syscall_table[] = { \ { "seccomp", (__SCMP_NR_BASE + 352) }, { "security", __PNR_security }, { "select", __PNR_select }, - { "semctl", __PNR_semctl }, - { "semget", __PNR_semget }, + { "semctl", (__SCMP_NR_BASE + 394) }, + { "semget", (__SCMP_NR_BASE + 393) }, { "semop", __PNR_semop }, { "semtimedop", __PNR_semtimedop }, + { "semtimedop_time64", (__SCMP_NR_BASE + 420) }, { "send", (__SCMP_NR_BASE + 178) }, { "sendfile", (__SCMP_NR_BASE + 207) }, { "sendfile64", (__SCMP_NR_BASE + 237) }, @@ -379,10 +403,10 @@ const struct arch_syscall_def mips_syscall_table[] = { \ { "setuid32", __PNR_setuid32 }, { "setxattr", (__SCMP_NR_BASE + 224) }, { "sgetmask", (__SCMP_NR_BASE + 68) }, - { "shmat", __PNR_shmat }, - { "shmctl", __PNR_shmctl }, - { "shmdt", __PNR_shmdt }, - { "shmget", __PNR_shmget }, + { "shmat", (__SCMP_NR_BASE + 397) }, + { "shmctl", (__SCMP_NR_BASE + 396) }, + { "shmdt", (__SCMP_NR_BASE + 398) }, + { "shmget", (__SCMP_NR_BASE + 395) }, { "shutdown", (__SCMP_NR_BASE + 182) }, { "sigaction", (__SCMP_NR_BASE + 67) }, { "sigaltstack", (__SCMP_NR_BASE + 206) }, @@ -431,11 +455,15 @@ const struct arch_syscall_def mips_syscall_table[] = { \ { "timer_delete", (__SCMP_NR_BASE + 261) }, { "timer_getoverrun", (__SCMP_NR_BASE + 260) }, { "timer_gettime", (__SCMP_NR_BASE + 259) }, + { "timer_gettime64", (__SCMP_NR_BASE + 408) }, { "timer_settime", (__SCMP_NR_BASE + 258) }, + { "timer_settime64", (__SCMP_NR_BASE + 409) }, { "timerfd", (__SCMP_NR_BASE + 318) }, { "timerfd_create", (__SCMP_NR_BASE + 321) }, { "timerfd_gettime", (__SCMP_NR_BASE + 322) }, + { "timerfd_gettime64", (__SCMP_NR_BASE + 410) }, { "timerfd_settime", (__SCMP_NR_BASE + 323) }, + { "timerfd_settime64", (__SCMP_NR_BASE + 411) }, { "times", (__SCMP_NR_BASE + 43) }, { "tkill", (__SCMP_NR_BASE + 236) }, { "truncate", (__SCMP_NR_BASE + 92) }, @@ -457,6 +485,7 @@ const struct arch_syscall_def mips_syscall_table[] = { \ { "ustat", (__SCMP_NR_BASE + 62) }, { "utime", (__SCMP_NR_BASE + 30) }, { "utimensat", (__SCMP_NR_BASE + 316) }, + { "utimensat_time64", (__SCMP_NR_BASE + 412) }, { "utimes", (__SCMP_NR_BASE + 267) }, { "vfork", __PNR_vfork }, { "vhangup", (__SCMP_NR_BASE + 111) }, diff --git a/src/arch-mips64-syscalls.c b/src/arch-mips64-syscalls.c index b267072..af23ff4 100644 --- a/src/arch-mips64-syscalls.c +++ b/src/arch-mips64-syscalls.c @@ -30,7 +30,7 @@ /* 64 ABI */ #define __SCMP_NR_BASE 5000 -/* NOTE: based on Linux 4.15-rc7 */ +/* NOTE: based on Linux v5.4-rc4 */ const struct arch_syscall_def mips64_syscall_table[] = { \ { "_llseek", __PNR__llseek }, { "_newselect", (__SCMP_NR_BASE + 22) }, @@ -62,11 +62,17 @@ const struct arch_syscall_def mips64_syscall_table[] = { \ { "chown32", __PNR_chown32 }, { "chroot", (__SCMP_NR_BASE + 156) }, { "clock_adjtime", (__SCMP_NR_BASE + 300) }, + { "clock_adjtime64", __PNR_clock_adjtime64 }, { "clock_getres", (__SCMP_NR_BASE + 223) }, + { "clock_getres_time64", __PNR_clock_getres_time64 }, { "clock_gettime", (__SCMP_NR_BASE + 222) }, + { "clock_gettime64", __PNR_clock_gettime64 }, { "clock_nanosleep", (__SCMP_NR_BASE + 224) }, + { "clock_nanosleep_time64", __PNR_clock_nanosleep_time64 }, { "clock_settime", (__SCMP_NR_BASE + 221) }, + { "clock_settime64", __PNR_clock_settime64 }, { "clone", (__SCMP_NR_BASE + 55) }, + { "clone3", (__SCMP_NR_BASE + 435) }, { "close", (__SCMP_NR_BASE + 3) }, { "connect", (__SCMP_NR_BASE + 41) }, { "copy_file_range", (__SCMP_NR_BASE + 320) }, @@ -110,7 +116,11 @@ const struct arch_syscall_def mips64_syscall_table[] = { \ { "flock", (__SCMP_NR_BASE + 71) }, { "fork", (__SCMP_NR_BASE + 56) }, { "fremovexattr", (__SCMP_NR_BASE + 191) }, + { "fsconfig", (__SCMP_NR_BASE + 431) }, { "fsetxattr", (__SCMP_NR_BASE + 182) }, + { "fsmount", (__SCMP_NR_BASE + 432) }, + { "fsopen", (__SCMP_NR_BASE + 430) }, + { "fspick", (__SCMP_NR_BASE + 433) }, { "fstat", (__SCMP_NR_BASE + 5) }, { "fstat64", __PNR_fstat64 }, { "fstatat64", __PNR_fstat64 }, @@ -121,6 +131,7 @@ const struct arch_syscall_def mips64_syscall_table[] = { \ { "ftruncate", (__SCMP_NR_BASE + 75) }, { "ftruncate64", __PNR_ftruncate64 }, { "futex", (__SCMP_NR_BASE + 194) }, + { "futex_time64", __PNR_futex_time64 }, { "futimesat", (__SCMP_NR_BASE + 251) }, { "get_kernel_syms", (__SCMP_NR_BASE + 170) }, { "get_mempolicy", (__SCMP_NR_BASE + 228) }, @@ -173,6 +184,7 @@ const struct arch_syscall_def mips64_syscall_table[] = { \ { "io_destroy", (__SCMP_NR_BASE + 201) }, { "io_getevents", (__SCMP_NR_BASE + 202) }, { "io_pgetevents", (__SCMP_NR_BASE + 328) }, + { "io_pgetevents_time64", __PNR_io_pgetevents_time64 }, { "io_setup", (__SCMP_NR_BASE + 200) }, { "io_submit", (__SCMP_NR_BASE + 203) }, { "io_uring_setup", (__SCMP_NR_BASE + 425) }, @@ -221,6 +233,7 @@ const struct arch_syscall_def mips64_syscall_table[] = { \ { "mmap2", __PNR_mmap2 }, { "modify_ldt", __PNR_modify_ldt }, { "mount", (__SCMP_NR_BASE + 160) }, + { "move_mount", (__SCMP_NR_BASE + 429) }, { "move_pages", (__SCMP_NR_BASE + 267) }, { "mprotect", (__SCMP_NR_BASE + 10) }, { "mpx", __PNR_mpx }, @@ -228,7 +241,9 @@ const struct arch_syscall_def mips64_syscall_table[] = { \ { "mq_notify", (__SCMP_NR_BASE + 234) }, { "mq_open", (__SCMP_NR_BASE + 230) }, { "mq_timedreceive", (__SCMP_NR_BASE + 233) }, + { "mq_timedreceive_time64", __PNR_mq_timedreceive_time64 }, { "mq_timedsend", (__SCMP_NR_BASE + 232) }, + { "mq_timedsend_time64", __PNR_mq_timedsend_time64 }, { "mq_unlink", (__SCMP_NR_BASE + 231) }, { "mremap", (__SCMP_NR_BASE + 24) }, { "msgctl", (__SCMP_NR_BASE + 69) }, @@ -253,6 +268,7 @@ const struct arch_syscall_def mips64_syscall_table[] = { \ { "oldwait4", __PNR_oldwait4 }, { "open", (__SCMP_NR_BASE + 2) }, { "open_by_handle_at", (__SCMP_NR_BASE + 299) }, + { "open_tree", (__SCMP_NR_BASE + 428) }, { "openat", (__SCMP_NR_BASE + 247) }, { "pause", (__SCMP_NR_BASE + 33) }, { "pciconfig_iobase", __PNR_pciconfig_iobase }, @@ -260,6 +276,8 @@ const struct arch_syscall_def mips64_syscall_table[] = { \ { "pciconfig_write", __PNR_pciconfig_write }, { "perf_event_open", (__SCMP_NR_BASE + 292) }, { "personality", (__SCMP_NR_BASE + 132) }, + { "pidfd_open", (__SCMP_NR_BASE + 434) }, + { "pidfd_send_signal", (__SCMP_NR_BASE + 424) }, { "pipe", (__SCMP_NR_BASE + 21) }, { "pipe2", (__SCMP_NR_BASE + 287) }, { "pivot_root", (__SCMP_NR_BASE + 151) }, @@ -268,6 +286,7 @@ const struct arch_syscall_def mips64_syscall_table[] = { \ { "pkey_mprotect", (__SCMP_NR_BASE + 323) }, { "poll", (__SCMP_NR_BASE + 7) }, { "ppoll", (__SCMP_NR_BASE + 261) }, + { "ppoll_time64", __PNR_ppoll_time64 }, { "prctl", (__SCMP_NR_BASE + 153) }, { "pread64", (__SCMP_NR_BASE + 16) }, { "preadv", (__SCMP_NR_BASE + 289) }, @@ -278,6 +297,7 @@ const struct arch_syscall_def mips64_syscall_table[] = { \ { "prof", __PNR_prof }, { "profil", __PNR_profil }, { "pselect6", (__SCMP_NR_BASE + 260) }, + { "pselect6_time64", __PNR_pselect6_time64 }, { "ptrace", (__SCMP_NR_BASE + 99) }, { "putpmsg", (__SCMP_NR_BASE + 175) }, { "pwrite64", (__SCMP_NR_BASE + 17) }, @@ -295,6 +315,7 @@ const struct arch_syscall_def mips64_syscall_table[] = { \ { "recv", __PNR_recv }, { "recvfrom", (__SCMP_NR_BASE + 44) }, { "recvmmsg", (__SCMP_NR_BASE + 294) }, + { "recvmmsg_time64", __PNR_recvmmsg_time64 }, { "recvmsg", (__SCMP_NR_BASE + 46) }, { "remap_file_pages", (__SCMP_NR_BASE + 210) }, { "removexattr", (__SCMP_NR_BASE + 189) }, @@ -312,6 +333,7 @@ const struct arch_syscall_def mips64_syscall_table[] = { \ { "rt_sigreturn", (__SCMP_NR_BASE + 211) }, { "rt_sigsuspend", (__SCMP_NR_BASE + 128) }, { "rt_sigtimedwait", (__SCMP_NR_BASE + 126) }, + { "rt_sigtimedwait_time64", __PNR_rt_sigtimedwait_time64 }, { "rt_tgsigqueueinfo", (__SCMP_NR_BASE + 291) }, { "rtas", __PNR_rtas }, { "s390_guarded_storage", __PNR_s390_guarded_storage }, @@ -326,6 +348,7 @@ const struct arch_syscall_def mips64_syscall_table[] = { \ { "sched_getparam", (__SCMP_NR_BASE + 140) }, { "sched_getscheduler", (__SCMP_NR_BASE + 142) }, { "sched_rr_get_interval", (__SCMP_NR_BASE + 145) }, + { "sched_rr_get_interval_time64", __PNR_sched_rr_get_interval_time64 }, { "sched_setaffinity", (__SCMP_NR_BASE + 195) }, { "sched_setattr", (__SCMP_NR_BASE + 309) }, { "sched_setparam", (__SCMP_NR_BASE + 139) }, @@ -338,6 +361,7 @@ const struct arch_syscall_def mips64_syscall_table[] = { \ { "semget", (__SCMP_NR_BASE + 62) }, { "semop", (__SCMP_NR_BASE + 63) }, { "semtimedop", (__SCMP_NR_BASE + 214) }, + { "semtimedop_time64", __PNR_semtimedop_time64 }, { "send", __PNR_send }, { "sendfile", (__SCMP_NR_BASE + 39) }, { "sendfile64", __PNR_sendfile64 }, @@ -431,11 +455,15 @@ const struct arch_syscall_def mips64_syscall_table[] = { \ { "timer_delete", (__SCMP_NR_BASE + 220) }, { "timer_getoverrun", (__SCMP_NR_BASE + 219) }, { "timer_gettime", (__SCMP_NR_BASE + 218) }, + { "timer_gettime64", __PNR_timer_gettime64 }, { "timer_settime", (__SCMP_NR_BASE + 217) }, + { "timer_settime64", __PNR_timer_settime64 }, { "timerfd", (__SCMP_NR_BASE + 277) }, { "timerfd_create", (__SCMP_NR_BASE + 280) }, { "timerfd_gettime", (__SCMP_NR_BASE + 281) }, + { "timerfd_gettime64", __PNR_timerfd_gettime64 }, { "timerfd_settime", (__SCMP_NR_BASE + 282) }, + { "timerfd_settime64", __PNR_timerfd_settime64 }, { "times", (__SCMP_NR_BASE + 98) }, { "tkill", (__SCMP_NR_BASE + 192) }, { "truncate", (__SCMP_NR_BASE + 74) }, @@ -457,6 +485,7 @@ const struct arch_syscall_def mips64_syscall_table[] = { \ { "ustat", (__SCMP_NR_BASE + 133) }, { "utime", (__SCMP_NR_BASE + 130) }, { "utimensat", (__SCMP_NR_BASE + 275) }, + { "utimensat_time64", __PNR_utimensat_time64 }, { "utimes", (__SCMP_NR_BASE + 226) }, { "vfork", __PNR_vfork }, { "vhangup", (__SCMP_NR_BASE + 150) }, diff --git a/src/arch-mips64n32-syscalls.c b/src/arch-mips64n32-syscalls.c index 8af6b3e..2159bcc 100644 --- a/src/arch-mips64n32-syscalls.c +++ b/src/arch-mips64n32-syscalls.c @@ -30,7 +30,7 @@ /* N32 ABI */ #define __SCMP_NR_BASE 6000 -/* NOTE: based on Linux 4.15-rc7 */ +/* NOTE: based on Linux v5.4-rc4 */ const struct arch_syscall_def mips64n32_syscall_table[] = { \ { "_llseek", __PNR__llseek }, { "_newselect", (__SCMP_NR_BASE + 22) }, @@ -62,11 +62,17 @@ const struct arch_syscall_def mips64n32_syscall_table[] = { \ { "chown32", __PNR_chown32 }, { "chroot", (__SCMP_NR_BASE + 156) }, { "clock_adjtime", (__SCMP_NR_BASE + 305) }, + { "clock_adjtime64", (__SCMP_NR_BASE + 405) }, { "clock_getres", (__SCMP_NR_BASE + 227) }, + { "clock_getres_time64", (__SCMP_NR_BASE + 406) }, { "clock_gettime", (__SCMP_NR_BASE + 226) }, + { "clock_gettime64", (__SCMP_NR_BASE + 403) }, { "clock_nanosleep", (__SCMP_NR_BASE + 228) }, + { "clock_nanosleep_time64", (__SCMP_NR_BASE + 407) }, { "clock_settime", (__SCMP_NR_BASE + 225) }, + { "clock_settime64", (__SCMP_NR_BASE + 404) }, { "clone", (__SCMP_NR_BASE + 55) }, + { "clone3", (__SCMP_NR_BASE + 435) }, { "close", (__SCMP_NR_BASE + 3) }, { "connect", (__SCMP_NR_BASE + 41) }, { "copy_file_range", (__SCMP_NR_BASE + 324) }, @@ -110,7 +116,11 @@ const struct arch_syscall_def mips64n32_syscall_table[] = { \ { "flock", (__SCMP_NR_BASE + 71) }, { "fork", (__SCMP_NR_BASE + 56) }, { "fremovexattr", (__SCMP_NR_BASE + 191) }, + { "fsconfig", (__SCMP_NR_BASE + 431) }, { "fsetxattr", (__SCMP_NR_BASE + 182) }, + { "fsmount", (__SCMP_NR_BASE + 432) }, + { "fsopen", (__SCMP_NR_BASE + 430) }, + { "fspick", (__SCMP_NR_BASE + 433) }, { "fstat", (__SCMP_NR_BASE + 5) }, { "fstat64", __PNR_fstat64 }, { "fstatat64", __PNR_fstat64 }, @@ -121,6 +131,7 @@ const struct arch_syscall_def mips64n32_syscall_table[] = { \ { "ftruncate", (__SCMP_NR_BASE + 75) }, { "ftruncate64", __PNR_ftruncate64 }, { "futex", (__SCMP_NR_BASE + 194) }, + { "futex_time64", (__SCMP_NR_BASE + 422) }, { "futimesat", (__SCMP_NR_BASE + 255) }, { "get_kernel_syms", (__SCMP_NR_BASE + 170) }, { "get_mempolicy", (__SCMP_NR_BASE + 232) }, @@ -173,6 +184,7 @@ const struct arch_syscall_def mips64n32_syscall_table[] = { \ { "io_destroy", (__SCMP_NR_BASE + 201) }, { "io_getevents", (__SCMP_NR_BASE + 202) }, { "io_pgetevents", (__SCMP_NR_BASE + 332) }, + { "io_pgetevents_time64", (__SCMP_NR_BASE + 416) }, { "io_setup", (__SCMP_NR_BASE + 200) }, { "io_submit", (__SCMP_NR_BASE + 203) }, { "io_uring_setup", (__SCMP_NR_BASE + 425) }, @@ -221,6 +233,7 @@ const struct arch_syscall_def mips64n32_syscall_table[] = { \ { "mmap2", __PNR_mmap2 }, { "modify_ldt", __PNR_modify_ldt }, { "mount", (__SCMP_NR_BASE + 160) }, + { "move_mount", (__SCMP_NR_BASE + 429) }, { "move_pages", (__SCMP_NR_BASE + 271) }, { "mprotect", (__SCMP_NR_BASE + 10) }, { "mpx", __PNR_mpx }, @@ -228,7 +241,9 @@ const struct arch_syscall_def mips64n32_syscall_table[] = { \ { "mq_notify", (__SCMP_NR_BASE + 238) }, { "mq_open", (__SCMP_NR_BASE + 234) }, { "mq_timedreceive", (__SCMP_NR_BASE + 237) }, + { "mq_timedreceive_time64", (__SCMP_NR_BASE + 419) }, { "mq_timedsend", (__SCMP_NR_BASE + 236) }, + { "mq_timedsend_time64", (__SCMP_NR_BASE + 418) }, { "mq_unlink", (__SCMP_NR_BASE + 235) }, { "mremap", (__SCMP_NR_BASE + 24) }, { "msgctl", (__SCMP_NR_BASE + 69) }, @@ -253,6 +268,7 @@ const struct arch_syscall_def mips64n32_syscall_table[] = { \ { "oldwait4", __PNR_oldwait4 }, { "open", (__SCMP_NR_BASE + 2) }, { "open_by_handle_at", (__SCMP_NR_BASE + 304) }, + { "open_tree", (__SCMP_NR_BASE + 428) }, { "openat", (__SCMP_NR_BASE + 251) }, { "pause", (__SCMP_NR_BASE + 33) }, { "pciconfig_iobase", __PNR_pciconfig_iobase }, @@ -260,6 +276,8 @@ const struct arch_syscall_def mips64n32_syscall_table[] = { \ { "pciconfig_write", __PNR_pciconfig_write }, { "perf_event_open", (__SCMP_NR_BASE + 296) }, { "personality", (__SCMP_NR_BASE + 132) }, + { "pidfd_open", (__SCMP_NR_BASE + 434) }, + { "pidfd_send_signal", (__SCMP_NR_BASE + 424) }, { "pipe", (__SCMP_NR_BASE + 21) }, { "pipe2", (__SCMP_NR_BASE + 291) }, { "pivot_root", (__SCMP_NR_BASE + 151) }, @@ -268,6 +286,7 @@ const struct arch_syscall_def mips64n32_syscall_table[] = { \ { "pkey_mprotect", (__SCMP_NR_BASE + 327) }, { "poll", (__SCMP_NR_BASE + 7) }, { "ppoll", (__SCMP_NR_BASE + 265) }, + { "ppoll_time64", (__SCMP_NR_BASE + 414) }, { "prctl", (__SCMP_NR_BASE + 153) }, { "pread64", (__SCMP_NR_BASE + 16) }, { "preadv", (__SCMP_NR_BASE + 293) }, @@ -278,6 +297,7 @@ const struct arch_syscall_def mips64n32_syscall_table[] = { \ { "prof", __PNR_prof }, { "profil", __PNR_profil }, { "pselect6", (__SCMP_NR_BASE + 264) }, + { "pselect6_time64", (__SCMP_NR_BASE + 413) }, { "ptrace", (__SCMP_NR_BASE + 99) }, { "putpmsg", (__SCMP_NR_BASE + 175) }, { "pwrite64", (__SCMP_NR_BASE + 17) }, @@ -295,6 +315,7 @@ const struct arch_syscall_def mips64n32_syscall_table[] = { \ { "recv", __PNR_recv }, { "recvfrom", (__SCMP_NR_BASE + 44) }, { "recvmmsg", (__SCMP_NR_BASE + 298) }, + { "recvmmsg_time64", (__SCMP_NR_BASE + 417) }, { "recvmsg", (__SCMP_NR_BASE + 46) }, { "remap_file_pages", (__SCMP_NR_BASE + 210) }, { "removexattr", (__SCMP_NR_BASE + 189) }, @@ -312,6 +333,7 @@ const struct arch_syscall_def mips64n32_syscall_table[] = { \ { "rt_sigreturn", (__SCMP_NR_BASE + 211) }, { "rt_sigsuspend", (__SCMP_NR_BASE + 128) }, { "rt_sigtimedwait", (__SCMP_NR_BASE + 126) }, + { "rt_sigtimedwait_time64", (__SCMP_NR_BASE + 421) }, { "rt_tgsigqueueinfo", (__SCMP_NR_BASE + 295) }, { "rtas", __PNR_rtas }, { "s390_guarded_storage", __PNR_s390_guarded_storage }, @@ -326,6 +348,7 @@ const struct arch_syscall_def mips64n32_syscall_table[] = { \ { "sched_getparam", (__SCMP_NR_BASE + 140) }, { "sched_getscheduler", (__SCMP_NR_BASE + 142) }, { "sched_rr_get_interval", (__SCMP_NR_BASE + 145) }, + { "sched_rr_get_interval_time64", (__SCMP_NR_BASE + 423) }, { "sched_setaffinity", (__SCMP_NR_BASE + 195) }, { "sched_setattr", (__SCMP_NR_BASE + 313) }, { "sched_setparam", (__SCMP_NR_BASE + 139) }, @@ -338,6 +361,7 @@ const struct arch_syscall_def mips64n32_syscall_table[] = { \ { "semget", (__SCMP_NR_BASE + 62) }, { "semop", (__SCMP_NR_BASE + 63) }, { "semtimedop", (__SCMP_NR_BASE + 215) }, + { "semtimedop_time64", (__SCMP_NR_BASE + 420) }, { "send", __PNR_send }, { "sendfile", (__SCMP_NR_BASE + 39) }, { "sendfile64", (__SCMP_NR_BASE + 219) }, @@ -431,11 +455,15 @@ const struct arch_syscall_def mips64n32_syscall_table[] = { \ { "timer_delete", (__SCMP_NR_BASE + 224) }, { "timer_getoverrun", (__SCMP_NR_BASE + 223) }, { "timer_gettime", (__SCMP_NR_BASE + 222) }, + { "timer_gettime64", (__SCMP_NR_BASE + 408) }, { "timer_settime", (__SCMP_NR_BASE + 221) }, + { "timer_settime64", (__SCMP_NR_BASE + 409) }, { "timerfd", (__SCMP_NR_BASE + 281) }, { "timerfd_create", (__SCMP_NR_BASE + 284) }, { "timerfd_gettime", (__SCMP_NR_BASE + 285) }, + { "timerfd_gettime64", (__SCMP_NR_BASE + 410) }, { "timerfd_settime", (__SCMP_NR_BASE + 286) }, + { "timerfd_settime64", (__SCMP_NR_BASE + 411) }, { "times", (__SCMP_NR_BASE + 98) }, { "tkill", (__SCMP_NR_BASE + 192) }, { "truncate", (__SCMP_NR_BASE + 74) }, @@ -457,6 +485,7 @@ const struct arch_syscall_def mips64n32_syscall_table[] = { \ { "ustat", (__SCMP_NR_BASE + 133) }, { "utime", (__SCMP_NR_BASE + 130) }, { "utimensat", (__SCMP_NR_BASE + 279) }, + { "utimensat_time64", (__SCMP_NR_BASE + 412) }, { "utimes", (__SCMP_NR_BASE + 230) }, { "vfork", __PNR_vfork }, { "vhangup", (__SCMP_NR_BASE + 150) }, diff --git a/src/arch-parisc-syscalls.c b/src/arch-parisc-syscalls.c index 8f19a03..c516c16 100644 --- a/src/arch-parisc-syscalls.c +++ b/src/arch-parisc-syscalls.c @@ -10,7 +10,7 @@ #include "arch.h" #include "arch-parisc.h" -/* NOTE: based on Linux 4.15-rc7 */ +/* NOTE: based on Linux v5.4-rc4 */ const struct arch_syscall_def parisc_syscall_table[] = { \ { "_llseek", 140 }, { "_newselect", 142 }, @@ -42,11 +42,17 @@ const struct arch_syscall_def parisc_syscall_table[] = { \ { "chown32", __PNR_chown32 }, { "chroot", 61 }, { "clock_adjtime", 324 }, + { "clock_adjtime64", __PNR_clock_adjtime64 }, { "clock_getres", 257 }, + { "clock_getres_time64", __PNR_clock_getres_time64 }, { "clock_gettime", 256 }, + { "clock_gettime64", __PNR_clock_gettime64 }, { "clock_nanosleep", 258 }, + { "clock_nanosleep_time64", __PNR_clock_nanosleep_time64 }, { "clock_settime", 255 }, + { "clock_settime64", __PNR_clock_settime64 }, { "clone", 120 }, + { "clone3", __PNR_clone3 }, { "close", 6 }, { "connect", 31 }, { "copy_file_range", 346 }, @@ -90,7 +96,11 @@ const struct arch_syscall_def parisc_syscall_table[] = { \ { "flock", 143 }, { "fork", 2 }, { "fremovexattr", 249 }, + { "fsconfig", __PNR_fsconfig }, { "fsetxattr", 240 }, + { "fsmount", __PNR_fsmount }, + { "fsopen", __PNR_fsopen }, + { "fspick", __PNR_fspick }, { "fstat", 28 }, { "fstat64", 112 }, { "fstatat64", 280 }, @@ -101,6 +111,7 @@ const struct arch_syscall_def parisc_syscall_table[] = { \ { "ftruncate", 93 }, { "ftruncate64", 200 }, { "futex", 210 }, + { "futex_time64", __PNR_futex_time64 }, { "futimesat", 279 }, { "get_kernel_syms", 130 }, { "get_mempolicy", 261 }, @@ -152,7 +163,8 @@ const struct arch_syscall_def parisc_syscall_table[] = { \ { "io_cancel", 219 }, { "io_destroy", 216 }, { "io_getevents", 217 }, - { "io_pgetevents", __PNR_io_pgetevents }, + { "io_pgetevents", __PNR_io_pgetevents }, + { "io_pgetevents_time64", __PNR_io_pgetevents_time64 }, { "io_setup", 215 }, { "io_submit", 218 }, { "io_uring_setup", 425 }, @@ -201,6 +213,7 @@ const struct arch_syscall_def parisc_syscall_table[] = { \ { "mmap2", 89 }, { "modify_ldt", __PNR_modify_ldt }, { "mount", 21 }, + { "move_mount", __PNR_move_mount }, { "move_pages", 295 }, { "mprotect", 125 }, { "mpx", __PNR_mpx }, @@ -208,7 +221,9 @@ const struct arch_syscall_def parisc_syscall_table[] = { \ { "mq_notify", 233 }, { "mq_open", 229 }, { "mq_timedreceive", 232 }, + { "mq_timedreceive_time64", __PNR_mq_timedreceive_time64 }, { "mq_timedsend", 231 }, + { "mq_timedsend_time64", __PNR_mq_timedsend_time64 }, { "mq_unlink", 230 }, { "mremap", 163 }, { "msgctl", 191 }, @@ -233,6 +248,7 @@ const struct arch_syscall_def parisc_syscall_table[] = { \ { "oldwait4", __PNR_oldwait4 }, { "open", 5 }, { "open_by_handle_at", 326 }, + { "open_tree", __PNR_open_tree }, { "openat", 275 }, { "pause", 29 }, { "pciconfig_iobase", __PNR_pciconfig_iobase }, @@ -240,6 +256,8 @@ const struct arch_syscall_def parisc_syscall_table[] = { \ { "pciconfig_write", __PNR_pciconfig_write }, { "perf_event_open", 318 }, { "personality", 136 }, + { "pidfd_open", __PNR_pidfd_open }, + { "pidfd_send_signal", __PNR_pidfd_send_signal }, { "pipe", 42 }, { "pipe2", 313 }, { "pivot_root", 67 }, @@ -248,6 +266,7 @@ const struct arch_syscall_def parisc_syscall_table[] = { \ { "pkey_mprotect", __PNR_pkey_mprotect }, { "poll", 168 }, { "ppoll", 274 }, + { "ppoll_time64", __PNR_ppoll_time64 }, { "prctl", 172 }, { "pread64", 108 }, { "preadv", 315 }, @@ -258,6 +277,7 @@ const struct arch_syscall_def parisc_syscall_table[] = { \ { "prof", __PNR_prof }, { "profil", __PNR_profil }, { "pselect6", 273 }, + { "pselect6_time64", __PNR_pselect6_time64 }, { "ptrace", 26 }, { "putpmsg", 197 }, { "pwrite64", 109 }, @@ -275,6 +295,7 @@ const struct arch_syscall_def parisc_syscall_table[] = { \ { "recv", 98 }, { "recvfrom", 123 }, { "recvmmsg", 319 }, + { "recvmmsg_time64", __PNR_recvmmsg_time64 }, { "recvmsg", 184 }, { "remap_file_pages", 227 }, { "removexattr", 247 }, @@ -292,6 +313,7 @@ const struct arch_syscall_def parisc_syscall_table[] = { \ { "rt_sigreturn", 173 }, { "rt_sigsuspend", 179 }, { "rt_sigtimedwait", 177 }, + { "rt_sigtimedwait_time64", __PNR_rt_sigtimedwait_time64 }, { "rt_tgsigqueueinfo", 317 }, { "rtas", __PNR_rtas }, { "s390_guarded_storage", __PNR_s390_guarded_storage }, @@ -306,6 +328,7 @@ const struct arch_syscall_def parisc_syscall_table[] = { \ { "sched_getparam", 155 }, { "sched_getscheduler", 157 }, { "sched_rr_get_interval", 161 }, + { "sched_rr_get_interval_time64", __PNR_sched_rr_get_interval_time64 }, { "sched_setaffinity", 211 }, { "sched_setattr", 334 }, { "sched_setparam", 154 }, @@ -318,6 +341,7 @@ const struct arch_syscall_def parisc_syscall_table[] = { \ { "semget", 186 }, { "semop", 185 }, { "semtimedop", 228 }, + { "semtimedop_time64", __PNR_semtimedop_time64 }, { "send", 58 }, { "sendfile", 122 }, { "sendfile64", 209 }, @@ -411,11 +435,15 @@ const struct arch_syscall_def parisc_syscall_table[] = { \ { "timer_delete", 254 }, { "timer_getoverrun", 253 }, { "timer_gettime", 252 }, + { "timer_gettime64", __PNR_timer_gettime64 }, { "timer_settime", 251 }, + { "timer_settime64", __PNR_timer_settime64 }, { "timerfd", 303 }, { "timerfd_create", 306 }, { "timerfd_gettime", 308 }, + { "timerfd_gettime64", __PNR_timerfd_gettime64 }, { "timerfd_settime", 307 }, + { "timerfd_settime64", __PNR_timerfd_settime64 }, { "times", 43 }, { "tkill", 208 }, { "truncate", 92 }, @@ -437,6 +465,7 @@ const struct arch_syscall_def parisc_syscall_table[] = { \ { "ustat", 62 }, { "utime", 30 }, { "utimensat", 301 }, + { "utimensat_time64", __PNR_utimensat_time64 }, { "utimes", 336 }, { "vfork", 113 }, { "vhangup", 111 }, diff --git a/src/arch-ppc-syscalls.c b/src/arch-ppc-syscalls.c index 8275b38..fbfa1df 100644 --- a/src/arch-ppc-syscalls.c +++ b/src/arch-ppc-syscalls.c @@ -27,7 +27,7 @@ #include "arch.h" #include "arch-ppc.h" -/* NOTE: based on Linux 4.15-rc7 */ +/* NOTE: based on Linux v5.4-rc4 */ const struct arch_syscall_def ppc_syscall_table[] = { \ { "_llseek", 140 }, { "_newselect", 142 }, @@ -59,11 +59,17 @@ const struct arch_syscall_def ppc_syscall_table[] = { \ { "chown32", __PNR_chown32 }, { "chroot", 61 }, { "clock_adjtime", 347 }, + { "clock_adjtime64", 405 }, { "clock_getres", 247 }, + { "clock_getres_time64", 406 }, { "clock_gettime", 246 }, + { "clock_gettime64", 403 }, { "clock_nanosleep", 248 }, + { "clock_nanosleep_time64", 407 }, { "clock_settime", 245 }, + { "clock_settime64", 404 }, { "clone", 120 }, + { "clone3", 435 }, { "close", 6 }, { "connect", 328 }, { "copy_file_range", 379 }, @@ -107,7 +113,11 @@ const struct arch_syscall_def ppc_syscall_table[] = { \ { "flock", 143 }, { "fork", 2 }, { "fremovexattr", 220 }, + { "fsconfig", 431 }, { "fsetxattr", 211 }, + { "fsmount", 432 }, + { "fsopen", 430 }, + { "fspick", 433 }, { "fstat", 108 }, { "fstat64", 197 }, { "fstatat64", 291 }, @@ -118,6 +128,7 @@ const struct arch_syscall_def ppc_syscall_table[] = { \ { "ftruncate", 93 }, { "ftruncate64", 194 }, { "futex", 221 }, + { "futex_time64", 422 }, { "futimesat", 290 }, { "get_kernel_syms", 130 }, { "get_mempolicy", 260 }, @@ -170,6 +181,7 @@ const struct arch_syscall_def ppc_syscall_table[] = { \ { "io_destroy", 228 }, { "io_getevents", 229 }, { "io_pgetevents", 388 }, + { "io_pgetevents_time64", 416 }, { "io_setup", 227 }, { "io_submit", 230 }, { "io_uring_setup", 425 }, @@ -218,6 +230,7 @@ const struct arch_syscall_def ppc_syscall_table[] = { \ { "mmap2", 192 }, { "modify_ldt", 123 }, { "mount", 21 }, + { "move_mount", 429 }, { "move_pages", 301 }, { "mprotect", 125 }, { "mpx", 56 }, @@ -225,13 +238,15 @@ const struct arch_syscall_def ppc_syscall_table[] = { \ { "mq_notify", 266 }, { "mq_open", 262 }, { "mq_timedreceive", 265 }, + { "mq_timedreceive_time64", 419 }, { "mq_timedsend", 264 }, + { "mq_timedsend_time64", 418 }, { "mq_unlink", 263 }, { "mremap", 163 }, - { "msgctl", __PNR_msgctl }, - { "msgget", __PNR_msgget }, - { "msgrcv", __PNR_msgrcv }, - { "msgsnd", __PNR_msgsnd }, + { "msgctl", 402 }, + { "msgget", 399 }, + { "msgrcv", 401 }, + { "msgsnd", 400 }, { "msync", 144 }, { "multiplexer", 201 }, { "munlock", 151 }, @@ -250,6 +265,7 @@ const struct arch_syscall_def ppc_syscall_table[] = { \ { "oldwait4", __PNR_oldwait4 }, { "open", 5 }, { "open_by_handle_at", 346 }, + { "open_tree", 428 }, { "openat", 286 }, { "pause", 29 }, { "pciconfig_iobase", 200 }, @@ -257,6 +273,8 @@ const struct arch_syscall_def ppc_syscall_table[] = { \ { "pciconfig_write", 199 }, { "perf_event_open", 319 }, { "personality", 136 }, + { "pidfd_open", 434 }, + { "pidfd_send_signal", 424 }, { "pipe", 42 }, { "pipe2", 317 }, { "pivot_root", 203 }, @@ -265,6 +283,7 @@ const struct arch_syscall_def ppc_syscall_table[] = { \ { "pkey_mprotect", 386 }, { "poll", 167 }, { "ppoll", 281 }, + { "ppoll_time64", 414 }, { "prctl", 171 }, { "pread64", 179 }, { "preadv", 320 }, @@ -275,6 +294,7 @@ const struct arch_syscall_def ppc_syscall_table[] = { \ { "prof", 44 }, { "profil", 98 }, { "pselect6", 280 }, + { "pselect6_time64", 413 }, { "ptrace", 26 }, { "putpmsg", 188 }, { "pwrite64", 180 }, @@ -292,6 +312,7 @@ const struct arch_syscall_def ppc_syscall_table[] = { \ { "recv", 336 }, { "recvfrom", 337 }, { "recvmmsg", 343 }, + { "recvmmsg_time64", 417 }, { "recvmsg", 342 }, { "remap_file_pages", 239 }, { "removexattr", 218 }, @@ -309,6 +330,7 @@ const struct arch_syscall_def ppc_syscall_table[] = { \ { "rt_sigreturn", 172 }, { "rt_sigsuspend", 178 }, { "rt_sigtimedwait", 176 }, + { "rt_sigtimedwait_time64", 421 }, { "rt_tgsigqueueinfo", 322 }, { "rtas", 255 }, { "s390_guarded_storage", __PNR_s390_guarded_storage }, @@ -323,6 +345,7 @@ const struct arch_syscall_def ppc_syscall_table[] = { \ { "sched_getparam", 155 }, { "sched_getscheduler", 157 }, { "sched_rr_get_interval", 161 }, + { "sched_rr_get_interval_time64", 423 }, { "sched_setaffinity", 222 }, { "sched_setattr", 355 }, { "sched_setparam", 154 }, @@ -331,10 +354,11 @@ const struct arch_syscall_def ppc_syscall_table[] = { \ { "seccomp", 358 }, { "security", __PNR_security }, { "select", 82 }, - { "semctl", __PNR_semctl }, - { "semget", __PNR_semget }, + { "semctl", 394 }, + { "semget", 393 }, { "semop", __PNR_semop }, { "semtimedop", __PNR_semtimedop }, + { "semtimedop_time64", 420 }, { "send", 334 }, { "sendfile", 186 }, { "sendfile64", 226 }, @@ -376,10 +400,10 @@ const struct arch_syscall_def ppc_syscall_table[] = { \ { "setuid32", __PNR_setuid32 }, { "setxattr", 209 }, { "sgetmask", 68 }, - { "shmat", __PNR_shmat }, - { "shmctl", __PNR_shmctl }, - { "shmdt", __PNR_shmdt }, - { "shmget", __PNR_shmget }, + { "shmat", 397 }, + { "shmctl", 396 }, + { "shmdt", 398 }, + { "shmget", 395 }, { "shutdown", 338 }, { "sigaction", 67 }, { "sigaltstack", 185 }, @@ -428,11 +452,15 @@ const struct arch_syscall_def ppc_syscall_table[] = { \ { "timer_delete", 244 }, { "timer_getoverrun", 243 }, { "timer_gettime", 242 }, + { "timer_gettime64", 408 }, { "timer_settime", 241 }, + { "timer_settime64", 409 }, { "timerfd", __PNR_timerfd }, { "timerfd_create", 306 }, { "timerfd_gettime", 312 }, + { "timerfd_gettime64", 410 }, { "timerfd_settime", 311 }, + { "timerfd_settime64", 411 }, { "times", 43 }, { "tkill", 208 }, { "truncate", 92 }, @@ -454,6 +482,7 @@ const struct arch_syscall_def ppc_syscall_table[] = { \ { "ustat", 62 }, { "utime", 30 }, { "utimensat", 304 }, + { "utimensat_time64", 412 }, { "utimes", 251 }, { "vfork", 189 }, { "vhangup", 111 }, diff --git a/src/arch-ppc64-syscalls.c b/src/arch-ppc64-syscalls.c index 2a8f387..41f82af 100644 --- a/src/arch-ppc64-syscalls.c +++ b/src/arch-ppc64-syscalls.c @@ -27,7 +27,7 @@ #include "arch.h" #include "arch-ppc64.h" -/* NOTE: based on Linux 4.15-rc7 */ +/* NOTE: based on Linux v5.4-rc4 */ const struct arch_syscall_def ppc64_syscall_table[] = { \ { "_llseek", 140 }, { "_newselect", 142 }, @@ -59,11 +59,17 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \ { "chown32", __PNR_chown32 }, { "chroot", 61 }, { "clock_adjtime", 347 }, + { "clock_adjtime64", __PNR_clock_adjtime64 }, { "clock_getres", 247 }, + { "clock_getres_time64", __PNR_clock_getres_time64 }, { "clock_gettime", 246 }, + { "clock_gettime64", __PNR_clock_gettime64 }, { "clock_nanosleep", 248 }, + { "clock_nanosleep_time64", __PNR_clock_nanosleep_time64 }, { "clock_settime", 245 }, + { "clock_settime64", __PNR_clock_settime64 }, { "clone", 120 }, + { "clone3", 435 }, { "close", 6 }, { "connect", 328 }, { "copy_file_range", 379 }, @@ -107,7 +113,11 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \ { "flock", 143 }, { "fork", 2 }, { "fremovexattr", 220 }, + { "fsconfig", 431 }, { "fsetxattr", 211 }, + { "fsmount", 432 }, + { "fsopen", 430 }, + { "fspick", 433 }, { "fstat", 108 }, { "fstat64", __PNR_fstat64 }, { "fstatat64", __PNR_fstatat64 }, @@ -118,6 +128,7 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \ { "ftruncate", 93 }, { "ftruncate64", __PNR_ftruncate64 }, { "futex", 221 }, + { "futex_time64", __PNR_futex_time64 }, { "futimesat", 290 }, { "get_kernel_syms", 130 }, { "get_mempolicy", 260 }, @@ -170,6 +181,7 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \ { "io_destroy", 228 }, { "io_getevents", 229 }, { "io_pgetevents", 388 }, + { "io_pgetevents_time64", __PNR_io_pgetevents_time64 }, { "io_setup", 227 }, { "io_submit", 230 }, { "io_uring_setup", 425 }, @@ -218,6 +230,7 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \ { "mmap2", __PNR_mmap2 }, { "modify_ldt", 123 }, { "mount", 21 }, + { "move_mount", 429 }, { "move_pages", 301 }, { "mprotect", 125 }, { "mpx", 56 }, @@ -225,13 +238,15 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \ { "mq_notify", 266 }, { "mq_open", 262 }, { "mq_timedreceive", 265 }, + { "mq_timedreceive_time64", __PNR_mq_timedreceive_time64 }, { "mq_timedsend", 264 }, + { "mq_timedsend_time64", __PNR_mq_timedsend_time64 }, { "mq_unlink", 263 }, { "mremap", 163 }, - { "msgctl", __PNR_msgctl }, - { "msgget", __PNR_msgget }, - { "msgrcv", __PNR_msgrcv }, - { "msgsnd", __PNR_msgsnd }, + { "msgctl", 402 }, + { "msgget", 399 }, + { "msgrcv", 401 }, + { "msgsnd", 400 }, { "msync", 144 }, { "multiplexer", 201 }, { "munlock", 151 }, @@ -250,6 +265,7 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \ { "oldwait4", __PNR_oldwait4 }, { "open", 5 }, { "open_by_handle_at", 346 }, + { "open_tree", 428 }, { "openat", 286 }, { "pause", 29 }, { "pciconfig_iobase", 200 }, @@ -257,6 +273,8 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \ { "pciconfig_write", 199 }, { "perf_event_open", 319 }, { "personality", 136 }, + { "pidfd_open", 434 }, + { "pidfd_send_signal", 424 }, { "pipe", 42 }, { "pipe2", 317 }, { "pivot_root", 203 }, @@ -265,6 +283,7 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \ { "pkey_mprotect", 386 }, { "poll", 167 }, { "ppoll", 281 }, + { "ppoll_time64", __PNR_ppoll_time64 }, { "prctl", 171 }, { "pread64", 179 }, { "preadv", 320 }, @@ -275,6 +294,7 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \ { "prof", 44 }, { "profil", 98 }, { "pselect6", 280 }, + { "pselect6_time64", __PNR_pselect6_time64 }, { "ptrace", 26 }, { "putpmsg", 188 }, { "pwrite64", 180 }, @@ -292,6 +312,7 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \ { "recv", 336 }, { "recvfrom", 337 }, { "recvmmsg", 343 }, + { "recvmmsg_time64", __PNR_recvmmsg_time64 }, { "recvmsg", 342 }, { "remap_file_pages", 239 }, { "removexattr", 218 }, @@ -309,6 +330,7 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \ { "rt_sigreturn", 172 }, { "rt_sigsuspend", 178 }, { "rt_sigtimedwait", 176 }, + { "rt_sigtimedwait_time64", __PNR_rt_sigtimedwait_time64 }, { "rt_tgsigqueueinfo", 322 }, { "rtas", 255 }, { "s390_guarded_storage", __PNR_s390_guarded_storage }, @@ -323,6 +345,7 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \ { "sched_getparam", 155 }, { "sched_getscheduler", 157 }, { "sched_rr_get_interval", 161 }, + { "sched_rr_get_interval_time64", __PNR_sched_rr_get_interval_time64 }, { "sched_setaffinity", 222 }, { "sched_setattr", 355 }, { "sched_setparam", 154 }, @@ -331,10 +354,11 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \ { "seccomp", 358 }, { "security", __PNR_security }, { "select", 82 }, - { "semctl", __PNR_semctl }, - { "semget", __PNR_semget }, + { "semctl", 394 }, + { "semget", 393 }, { "semop", __PNR_semop }, - { "semtimedop", __PNR_semtimedop }, + { "semtimedop", 392 }, + { "semtimedop_time64", __PNR_semtimedop_time64 }, { "send", 334 }, { "sendfile", 186 }, { "sendfile64", __PNR_sendfile64 }, @@ -376,10 +400,10 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \ { "setuid32", __PNR_setuid32 }, { "setxattr", 209 }, { "sgetmask", 68 }, - { "shmat", __PNR_shmat }, - { "shmctl", __PNR_shmctl }, - { "shmdt", __PNR_shmdt }, - { "shmget", __PNR_shmget }, + { "shmat", 397 }, + { "shmctl", 396 }, + { "shmdt", 398 }, + { "shmget", 395 }, { "shutdown", 338 }, { "sigaction", 67 }, { "sigaltstack", 185 }, @@ -428,11 +452,15 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \ { "timer_delete", 244 }, { "timer_getoverrun", 243 }, { "timer_gettime", 242 }, + { "timer_gettime64", __PNR_timer_gettime64 }, { "timer_settime", 241 }, + { "timer_settime64", __PNR_timer_settime64 }, { "timerfd", __PNR_timerfd }, { "timerfd_create", 306 }, { "timerfd_gettime", 312 }, + { "timerfd_gettime64", __PNR_timerfd_gettime64 }, { "timerfd_settime", 311 }, + { "timerfd_settime64", __PNR_timerfd_settime64 }, { "times", 43 }, { "tkill", 208 }, { "truncate", 92 }, @@ -454,6 +482,7 @@ const struct arch_syscall_def ppc64_syscall_table[] = { \ { "ustat", 62 }, { "utime", 30 }, { "utimensat", 304 }, + { "utimensat_time64", __PNR_utimensat_time64 }, { "utimes", 251 }, { "vfork", 189 }, { "vhangup", 111 }, diff --git a/src/arch-s390-syscalls.c b/src/arch-s390-syscalls.c index c2e3439..247bb46 100644 --- a/src/arch-s390-syscalls.c +++ b/src/arch-s390-syscalls.c @@ -10,7 +10,7 @@ #include "arch.h" #include "arch-s390.h" -/* NOTE: based on Linux 4.15-rc7 */ +/* NOTE: based on Linux v5.4-rc4 */ const struct arch_syscall_def s390_syscall_table[] = { \ { "_llseek", 140 }, { "_newselect", 142 }, @@ -42,11 +42,17 @@ const struct arch_syscall_def s390_syscall_table[] = { \ { "chown32", 212 }, { "chroot", 61 }, { "clock_adjtime", 337 }, + { "clock_adjtime64", 405 }, { "clock_getres", 261 }, + { "clock_getres_time64", 406 }, { "clock_gettime", 260 }, + { "clock_gettime64", 403 }, { "clock_nanosleep", 262 }, + { "clock_nanosleep_time64", 407 }, { "clock_settime", 259 }, + { "clock_settime64", 404 }, { "clone", 120 }, + { "clone3", 435 }, { "close", 6 }, { "connect", 362 }, { "copy_file_range", 375 }, @@ -90,7 +96,11 @@ const struct arch_syscall_def s390_syscall_table[] = { \ { "flock", 143 }, { "fork", 2 }, { "fremovexattr", 235 }, + { "fsconfig", 431 }, { "fsetxattr", 226 }, + { "fsmount", 432 }, + { "fsopen", 430 }, + { "fspick", 433 }, { "fstat", 108 }, { "fstat64", 197 }, { "fstatat64", 293 }, @@ -101,6 +111,7 @@ const struct arch_syscall_def s390_syscall_table[] = { \ { "ftruncate", 93 }, { "ftruncate64", 194 }, { "futex", 238 }, + { "futex_time64", 422 }, { "futimesat", 292 }, { "get_kernel_syms", 130 }, { "get_mempolicy", 269 }, @@ -153,6 +164,7 @@ const struct arch_syscall_def s390_syscall_table[] = { \ { "io_destroy", 244 }, { "io_getevents", 245 }, { "io_pgetevents", 382 }, + { "io_pgetevents_time64", 416 }, { "io_setup", 243 }, { "io_submit", 246 }, { "io_uring_setup", 425 }, @@ -201,6 +213,7 @@ const struct arch_syscall_def s390_syscall_table[] = { \ { "mmap2", 192 }, { "modify_ldt", __PNR_modify_ldt }, { "mount", 21 }, + { "move_mount", 429 }, { "move_pages", 310 }, { "mprotect", 125 }, { "mpx", __PNR_mpx }, @@ -208,13 +221,15 @@ const struct arch_syscall_def s390_syscall_table[] = { \ { "mq_notify", 275 }, { "mq_open", 271 }, { "mq_timedreceive", 274 }, + { "mq_timedreceive_time64", 419 }, { "mq_timedsend", 273 }, + { "mq_timedsend_time64", 418 }, { "mq_unlink", 272 }, { "mremap", 163 }, - { "msgctl", __PNR_msgctl }, - { "msgget", __PNR_msgget }, - { "msgrcv", __PNR_msgrcv }, - { "msgsnd", __PNR_msgsnd }, + { "msgctl", 402 }, + { "msgget", 399 }, + { "msgrcv", 401 }, + { "msgsnd", 400 }, { "msync", 144 }, { "multiplexer", __PNR_multiplexer }, { "munlock", 151 }, @@ -233,6 +248,7 @@ const struct arch_syscall_def s390_syscall_table[] = { \ { "oldwait4", __PNR_oldwait4 }, { "open", 5 }, { "open_by_handle_at", 336 }, + { "open_tree", 428 }, { "openat", 288 }, { "pause", 29 }, { "pciconfig_iobase", __PNR_pciconfig_iobase }, @@ -240,14 +256,17 @@ const struct arch_syscall_def s390_syscall_table[] = { \ { "pciconfig_write", __PNR_pciconfig_write }, { "perf_event_open", 331 }, { "personality", 136 }, + { "pidfd_open", 434 }, + { "pidfd_send_signal", 424 }, { "pipe", 42 }, { "pipe2", 325 }, { "pivot_root", 217 }, - { "pkey_alloc", __PNR_pkey_alloc }, - { "pkey_free", __PNR_pkey_free }, - { "pkey_mprotect", __PNR_pkey_mprotect }, + { "pkey_alloc", 385 }, + { "pkey_free", 386 }, + { "pkey_mprotect", 384 }, { "poll", 168 }, { "ppoll", 302 }, + { "ppoll_time64", 414 }, { "prctl", 172 }, { "pread64", 180 }, { "preadv", 328 }, @@ -258,6 +277,7 @@ const struct arch_syscall_def s390_syscall_table[] = { \ { "prof", __PNR_prof }, { "profil", __PNR_profil }, { "pselect6", 301 }, + { "pselect6_time64", 413 }, { "ptrace", 26 }, { "putpmsg", 189 }, { "pwrite64", 181 }, @@ -275,6 +295,7 @@ const struct arch_syscall_def s390_syscall_table[] = { \ { "recv", __PNR_recv }, { "recvfrom", 371 }, { "recvmmsg", 357 }, + { "recvmmsg_time64", 417 }, { "recvmsg", 372 }, { "remap_file_pages", 267 }, { "removexattr", 233 }, @@ -292,6 +313,7 @@ const struct arch_syscall_def s390_syscall_table[] = { \ { "rt_sigreturn", 173 }, { "rt_sigsuspend", 179 }, { "rt_sigtimedwait", 177 }, + { "rt_sigtimedwait_time64", 421 }, { "rt_tgsigqueueinfo", 330 }, { "rtas", __PNR_rtas }, { "s390_guarded_storage", 378 }, @@ -306,6 +328,7 @@ const struct arch_syscall_def s390_syscall_table[] = { \ { "sched_getparam", 155 }, { "sched_getscheduler", 157 }, { "sched_rr_get_interval", 161 }, + { "sched_rr_get_interval_time64", 423 }, { "sched_setaffinity", 239 }, { "sched_setattr", 345 }, { "sched_setparam", 154 }, @@ -314,10 +337,11 @@ const struct arch_syscall_def s390_syscall_table[] = { \ { "seccomp", 348 }, { "security", __PNR_security }, { "select", __PNR_select }, - { "semctl", __PNR_semctl }, - { "semget", __PNR_semget }, + { "semctl", 394 }, + { "semget", 393 }, { "semop", __PNR_semop }, { "semtimedop", __PNR_semtimedop }, + { "semtimedop_time64", 420 }, { "send", __PNR_send }, { "sendfile", 187 }, { "sendfile64", 223 }, @@ -359,10 +383,10 @@ const struct arch_syscall_def s390_syscall_table[] = { \ { "setuid32", 213 }, { "setxattr", 224 }, { "sgetmask", __PNR_sgetmask }, - { "shmat", __PNR_shmat }, - { "shmctl", __PNR_shmctl }, - { "shmdt", __PNR_shmdt }, - { "shmget", __PNR_shmget }, + { "shmat", 397 }, + { "shmctl", 396 }, + { "shmdt", 398 }, + { "shmget", 395 }, { "shutdown", 373 }, { "sigaction", 67 }, { "sigaltstack", 186 }, @@ -411,11 +435,15 @@ const struct arch_syscall_def s390_syscall_table[] = { \ { "timer_delete", 258 }, { "timer_getoverrun", 257 }, { "timer_gettime", 256 }, + { "timer_gettime64", 408 }, { "timer_settime", 255 }, + { "timer_settime64", 409 }, { "timerfd", 317 }, { "timerfd_create", 319 }, { "timerfd_gettime", 321 }, + { "timerfd_gettime64", 410 }, { "timerfd_settime", 320 }, + { "timerfd_settime64", 411 }, { "times", 43 }, { "tkill", 237 }, { "truncate", 92 }, @@ -437,6 +465,7 @@ const struct arch_syscall_def s390_syscall_table[] = { \ { "ustat", 62 }, { "utime", 30 }, { "utimensat", 315 }, + { "utimensat_time64", 412 }, { "utimes", 313 }, { "vfork", 190 }, { "vhangup", 111 }, diff --git a/src/arch-s390.c b/src/arch-s390.c index 2e49fb2..6c13368 100644 --- a/src/arch-s390.c +++ b/src/arch-s390.c @@ -27,16 +27,16 @@ const struct arch_def arch_def_s390 = { }; /** - * Convert a multiplexed pseudo socket syscall into a direct syscall - * @param socketcall the multiplexed pseudo syscall number + * Convert a multiplexed pseudo syscall into a direct syscall + * @param syscall the multiplexed pseudo syscall number * * Return the related direct syscall number, __NR_SCMP_UNDEF is there is * no related syscall, or __NR_SCMP_ERROR otherwise. * */ -static int _s390_sock_demux(int socketcall) +static int _s390_syscall_demux(int syscall) { - switch (socketcall) { + switch (syscall) { case -101: /* socket */ return 359; @@ -97,6 +97,43 @@ static int _s390_sock_demux(int socketcall) case -120: /* sendmmsg */ return 345; + case -201: + /* semop - not defined */ + return __NR_SCMP_UNDEF; + case -202: + /* semget */ + return 393; + case -203: + /* semctl */ + return 394; + case -204: + /* semtimedop - not defined */ + return __NR_SCMP_UNDEF; + case -211: + /* msgsnd */ + return 400; + case -212: + /* msgrcv */ + return 401; + case -213: + /* msgget */ + return 399; + case -214: + /* msgctl */ + return 402; + case -221: + /* shmat */ + return 397; + case -222: + /* shmdt */ + return 398; + case -223: + /* shmget */ + return 395; + case -224: + /* shmctl */ + return 396; + } return __NR_SCMP_ERROR; @@ -110,7 +147,7 @@ static int _s390_sock_demux(int socketcall) * there is no related pseudo syscall, or __NR_SCMP_ERROR otherwise. * */ -static int _s390_sock_mux(int syscall) +static int _s390_syscall_mux(int syscall) { switch (syscall) { case 337: @@ -164,6 +201,36 @@ static int _s390_sock_mux(int syscall) case 373: /* shutdown */ return -113; + case 393: + /* semget */ + return -202; + case 394: + /* semctl */ + return -203; + case 400: + /* msgsnd */ + return -211; + case 401: + /* msgrcv */ + return -212; + case 399: + /* msgget */ + return -213; + case 402: + /* msgctl */ + return -214; + case 397: + /* shmat */ + return -221; + case 398: + /* shmdt */ + return -222; + case 395: + /* shmget */ + return -223; + case 396: + /* shmctl */ + return -224; } return __NR_SCMP_ERROR; @@ -228,7 +295,7 @@ int s390_rule_add(struct db_filter *db, struct db_api_rule_list *rule) /* determine both the muxed and direct syscall numbers */ if (sys > 0) { - sys_a = _s390_sock_mux(sys); + sys_a = _s390_syscall_mux(sys); if (sys_a == __NR_SCMP_ERROR) { rc = __NR_SCMP_ERROR; goto add_return; @@ -236,7 +303,7 @@ int s390_rule_add(struct db_filter *db, struct db_api_rule_list *rule) sys_b = sys; } else { sys_a = sys; - sys_b = _s390_sock_demux(sys); + sys_b = _s390_syscall_demux(sys); if (sys_b == __NR_SCMP_ERROR) { rc = __NR_SCMP_ERROR; goto add_return; @@ -291,24 +358,81 @@ int s390_rule_add(struct db_filter *db, struct db_api_rule_list *rule) if (rc < 0) goto add_return; } - } else if (sys <= -200 && sys >= -224) { - /* multiplexed ipc syscalls */ + } else if ((sys <= -200 && sys >= -224) || (sys >= 393 && sys <= 402)) { + /* (-200 to -224) : multiplexed ipc syscalls + (393 to 402) : direct ipc syscalls */ + + /* strict check for the multiplexed socket syscalls */ for (iter = 0; iter < ARG_COUNT_MAX; iter++) { if ((rule->args[iter].valid != 0) && (rule->strict)) { rc = -EINVAL; goto add_return; } } - rule->args[0].arg = 0; - rule->args[0].op = SCMP_CMP_EQ; - rule->args[0].mask = DATUM_MAX; - rule->args[0].datum = abs(sys) % 200; - rule->args[0].valid = 1; - rule->syscall = __s390_NR_ipc; - rc = db_rule_add(db, rule); - if (rc < 0) - goto add_return; + /* determine both the muxed and direct syscall numbers */ + if (sys > 0) { + sys_a = _s390_syscall_mux(sys); + if (sys_a == __NR_SCMP_ERROR) { + rc = __NR_SCMP_ERROR; + goto add_return; + } + sys_b = sys; + } else { + sys_a = sys; + sys_b = _s390_syscall_demux(sys); + if (sys_b == __NR_SCMP_ERROR) { + rc = __NR_SCMP_ERROR; + goto add_return; + } + } + + /* use rule_a for the multiplexed syscall and use rule_b for + * the direct wired syscall */ + + if (sys_a == __NR_SCMP_UNDEF) { + rule_a = NULL; + rule_b = rule; + } else if (sys_b == __NR_SCMP_UNDEF) { + rule_a = rule; + rule_b = NULL; + } else { + /* need two rules, dup the first and link together */ + rule_a = rule; + rule_dup = db_rule_dup(rule_a); + rule_b = rule_dup; + if (rule_b == NULL) + goto add_return; + rule_b->prev = rule_a; + rule_b->next = NULL; + rule_a->next = rule_b; + } + + /* multiplexed socket syscalls */ + if (rule_a != NULL) { + rule_a->syscall = __s390_NR_ipc; + rule_a->args[0].arg = 0; + rule_a->args[0].op = SCMP_CMP_EQ; + rule_a->args[0].mask = DATUM_MAX; + rule_a->args[0].datum = (-sys_a) % 200; + rule_a->args[0].valid = 1; + } + + /* direct wired socket syscalls */ + if (rule_b != NULL) + rule_b->syscall = sys_b; + + /* we should be protected by a transaction checkpoint */ + if (rule_a != NULL) { + rc = db_rule_add(db, rule_a); + if (rc < 0) + goto add_return; + } + if (rule_b != NULL) { + rc = db_rule_add(db, rule_b); + if (rc < 0) + goto add_return; + } } else if (sys >= 0) { /* normal syscall processing */ rc = db_rule_add(db, rule); diff --git a/src/arch-s390x-syscalls.c b/src/arch-s390x-syscalls.c index e0a39f1..1ada38e 100644 --- a/src/arch-s390x-syscalls.c +++ b/src/arch-s390x-syscalls.c @@ -10,7 +10,7 @@ #include "arch.h" #include "arch-s390x.h" -/* NOTE: based on Linux 4.15-rc7 */ +/* NOTE: based on Linux v5.4-rc4 */ const struct arch_syscall_def s390x_syscall_table[] = { \ { "_llseek", __PNR__llseek }, { "_newselect", __PNR__newselect }, @@ -42,11 +42,17 @@ const struct arch_syscall_def s390x_syscall_table[] = { \ { "chown32", __PNR_chown32 }, { "chroot", 61 }, { "clock_adjtime", 337 }, + { "clock_adjtime64", __PNR_clock_adjtime64 }, { "clock_getres", 261 }, + { "clock_getres_time64", __PNR_clock_getres_time64 }, { "clock_gettime", 260 }, + { "clock_gettime64", __PNR_clock_gettime64 }, { "clock_nanosleep", 262 }, + { "clock_nanosleep_time64", __PNR_clock_nanosleep_time64 }, { "clock_settime", 259 }, + { "clock_settime64", __PNR_clock_settime64 }, { "clone", 120 }, + { "clone3", 435 }, { "close", 6 }, { "connect", 362 }, { "copy_file_range", 375 }, @@ -90,7 +96,11 @@ const struct arch_syscall_def s390x_syscall_table[] = { \ { "flock", 143 }, { "fork", 2 }, { "fremovexattr", 235 }, + { "fsconfig", 431 }, { "fsetxattr", 226 }, + { "fsmount", 432 }, + { "fsopen", 430 }, + { "fspick", 433 }, { "fstat", 108 }, { "fstat64", __PNR_fstat64 }, { "fstatat64", __PNR_fstatat64 }, @@ -101,6 +111,7 @@ const struct arch_syscall_def s390x_syscall_table[] = { \ { "ftruncate", 93 }, { "ftruncate64", __PNR_ftruncate64 }, { "futex", 238 }, + { "futex_time64", __PNR_futex_time64 }, { "futimesat", 292 }, { "get_kernel_syms", 130 }, { "get_mempolicy", 269 }, @@ -153,6 +164,7 @@ const struct arch_syscall_def s390x_syscall_table[] = { \ { "io_destroy", 244 }, { "io_getevents", 245 }, { "io_pgetevents", 382 }, + { "io_pgetevents_time64", __PNR_io_pgetevents_time64 }, { "io_setup", 243 }, { "io_submit", 246 }, { "io_uring_setup", 425 }, @@ -201,6 +213,7 @@ const struct arch_syscall_def s390x_syscall_table[] = { \ { "mmap2", __PNR_mmap2 }, { "modify_ldt", __PNR_modify_ldt }, { "mount", 21 }, + { "move_mount", 429 }, { "move_pages", 310 }, { "mprotect", 125 }, { "mpx", __PNR_mpx }, @@ -208,13 +221,15 @@ const struct arch_syscall_def s390x_syscall_table[] = { \ { "mq_notify", 275 }, { "mq_open", 271 }, { "mq_timedreceive", 274 }, + { "mq_timedreceive_time64", __PNR_mq_timedreceive_time64 }, { "mq_timedsend", 273 }, + { "mq_timedsend_time64", __PNR_mq_timedsend_time64 }, { "mq_unlink", 272 }, { "mremap", 163 }, - { "msgctl", __PNR_msgctl }, - { "msgget", __PNR_msgget }, - { "msgrcv", __PNR_msgrcv }, - { "msgsnd", __PNR_msgsnd }, + { "msgctl", 402 }, + { "msgget", 399 }, + { "msgrcv", 401 }, + { "msgsnd", 400 }, { "msync", 144 }, { "multiplexer", __PNR_multiplexer }, { "munlock", 151 }, @@ -233,6 +248,7 @@ const struct arch_syscall_def s390x_syscall_table[] = { \ { "oldwait4", __PNR_oldwait4 }, { "open", 5 }, { "open_by_handle_at", 336 }, + { "open_tree", 428 }, { "openat", 288 }, { "pause", 29 }, { "pciconfig_iobase", __PNR_pciconfig_iobase }, @@ -240,14 +256,17 @@ const struct arch_syscall_def s390x_syscall_table[] = { \ { "pciconfig_write", __PNR_pciconfig_write }, { "perf_event_open", 331 }, { "personality", 136 }, + { "pidfd_open", 434 }, + { "pidfd_send_signal", 424 }, { "pipe", 42 }, { "pipe2", 325 }, { "pivot_root", 217 }, - { "pkey_alloc", __PNR_pkey_alloc }, - { "pkey_free", __PNR_pkey_free }, - { "pkey_mprotect", __PNR_pkey_mprotect }, + { "pkey_alloc", 385 }, + { "pkey_free", 386 }, + { "pkey_mprotect", 384 }, { "poll", 168 }, { "ppoll", 302 }, + { "ppoll_time64", __PNR_ppoll_time64 }, { "prctl", 172 }, { "pread64", 180 }, { "preadv", 328 }, @@ -258,6 +277,7 @@ const struct arch_syscall_def s390x_syscall_table[] = { \ { "prof", __PNR_prof }, { "profil", __PNR_profil }, { "pselect6", 301 }, + { "pselect6_time64", __PNR_pselect6_time64 }, { "ptrace", 26 }, { "putpmsg", 189 }, { "pwrite64", 181 }, @@ -275,6 +295,7 @@ const struct arch_syscall_def s390x_syscall_table[] = { \ { "recv", __PNR_recv }, { "recvfrom", 371 }, { "recvmmsg", 357 }, + { "recvmmsg_time64", __PNR_recvmmsg_time64 }, { "recvmsg", 372 }, { "remap_file_pages", 267 }, { "removexattr", 233 }, @@ -292,6 +313,7 @@ const struct arch_syscall_def s390x_syscall_table[] = { \ { "rt_sigreturn", 173 }, { "rt_sigsuspend", 179 }, { "rt_sigtimedwait", 177 }, + { "rt_sigtimedwait_time64", __PNR_rt_sigtimedwait_time64 }, { "rt_tgsigqueueinfo", 330 }, { "rtas", __PNR_rtas }, { "s390_guarded_storage", 378 }, @@ -306,6 +328,7 @@ const struct arch_syscall_def s390x_syscall_table[] = { \ { "sched_getparam", 155 }, { "sched_getscheduler", 157 }, { "sched_rr_get_interval", 161 }, + { "sched_rr_get_interval_time64", __PNR_sched_rr_get_interval_time64 }, { "sched_setaffinity", 239 }, { "sched_setattr", 345 }, { "sched_setparam", 154 }, @@ -314,10 +337,11 @@ const struct arch_syscall_def s390x_syscall_table[] = { \ { "seccomp", 348 }, { "security", __PNR_security }, { "select", 142 }, - { "semctl", __PNR_semctl }, - { "semget", __PNR_semget }, + { "semctl", 394 }, + { "semget", 393 }, { "semop", __PNR_semop }, - { "semtimedop", __PNR_semtimedop }, + { "semtimedop", 392 }, + { "semtimedop_time64", __PNR_semtimedop_time64 }, { "send", __PNR_send }, { "sendfile", 187 }, { "sendfile64", __PNR_sendfile64 }, @@ -359,10 +383,10 @@ const struct arch_syscall_def s390x_syscall_table[] = { \ { "setuid32", __PNR_setuid32 }, { "setxattr", 224 }, { "sgetmask", __PNR_sgetmask }, - { "shmat", __PNR_shmat }, - { "shmctl", __PNR_shmctl }, - { "shmdt", __PNR_shmdt }, - { "shmget", __PNR_shmget }, + { "shmat", 397 }, + { "shmctl", 396 }, + { "shmdt", 398 }, + { "shmget", 395 }, { "shutdown", 373 }, { "sigaction", 67 }, { "sigaltstack", 186 }, @@ -411,11 +435,15 @@ const struct arch_syscall_def s390x_syscall_table[] = { \ { "timer_delete", 258 }, { "timer_getoverrun", 257 }, { "timer_gettime", 256 }, + { "timer_gettime64", __PNR_timer_gettime64 }, { "timer_settime", 255 }, + { "timer_settime64", __PNR_timer_settime64 }, { "timerfd", 317 }, { "timerfd_create", 319 }, { "timerfd_gettime", 321 }, + { "timerfd_gettime64", __PNR_timerfd_gettime64 }, { "timerfd_settime", 320 }, + { "timerfd_settime64", __PNR_timerfd_settime64 }, { "times", 43 }, { "tkill", 237 }, { "truncate", 92 }, @@ -437,6 +465,7 @@ const struct arch_syscall_def s390x_syscall_table[] = { \ { "ustat", 62 }, { "utime", 30 }, { "utimensat", 315 }, + { "utimensat_time64", __PNR_utimensat_time64 }, { "utimes", 313 }, { "vfork", 190 }, { "vhangup", 111 }, diff --git a/src/arch-s390x.c b/src/arch-s390x.c index acc6258..8815e6a 100644 --- a/src/arch-s390x.c +++ b/src/arch-s390x.c @@ -28,15 +28,15 @@ const struct arch_def arch_def_s390x = { /** * Convert a multiplexed pseudo socket syscall into a direct syscall - * @param socketcall the multiplexed pseudo syscall number + * @param syscall the multiplexed pseudo syscall number * * Return the related direct syscall number, __NR_SCMP_UNDEF is there is * no related syscall, or __NR_SCMP_ERROR otherwise. * */ -static int _s390x_sock_demux(int socketcall) +static int _s390x_syscall_demux(int syscall) { - switch (socketcall) { + switch (syscall) { case -101: /* socket */ return 359; @@ -97,6 +97,42 @@ static int _s390x_sock_demux(int socketcall) case -120: /* sendmmsg */ return 345; + case -201: + /* semop - not defined */ + return __NR_SCMP_UNDEF; + case -202: + /* semget */ + return 393; + case -203: + /* semctl */ + return 394; + case -204: + /* semtimedop */ + return 392; + case -211: + /* msgsnd */ + return 400; + case -212: + /* msgrcv */ + return 401; + case -213: + /* msgget */ + return 399; + case -214: + /* msgctl */ + return 402; + case -221: + /* shmat */ + return 397; + case -222: + /* shmdt */ + return 398; + case -223: + /* shmget */ + return 395; + case -224: + /* shmctl */ + return 396; } return __NR_SCMP_ERROR; @@ -110,7 +146,7 @@ static int _s390x_sock_demux(int socketcall) * there is no related pseudo syscall, or __NR_SCMP_ERROR otherwise. * */ -static int _s390x_sock_mux(int syscall) +static int _s390x_syscall_mux(int syscall) { switch (syscall) { case 337: @@ -164,6 +200,39 @@ static int _s390x_sock_mux(int syscall) case 373: /* shutdown */ return -113; + case 392: + /* semtimedop */ + return -204; + case 393: + /* semget */ + return -202; + case 394: + /* semctl */ + return -203; + case 400: + /* msgsnd */ + return -211; + case 401: + /* msgrcv */ + return -212; + case 399: + /* msgget */ + return -213; + case 402: + /* msgctl */ + return -214; + case 397: + /* shmat */ + return -221; + case 398: + /* shmdt */ + return -222; + case 395: + /* shmget */ + return -223; + case 396: + /* shmctl */ + return -224; } return __NR_SCMP_ERROR; @@ -228,7 +297,7 @@ int s390x_rule_add(struct db_filter *db, struct db_api_rule_list *rule) /* determine both the muxed and direct syscall numbers */ if (sys > 0) { - sys_a = _s390x_sock_mux(sys); + sys_a = _s390x_syscall_mux(sys); if (sys_a == __NR_SCMP_ERROR) { rc = __NR_SCMP_ERROR; goto add_return; @@ -236,7 +305,7 @@ int s390x_rule_add(struct db_filter *db, struct db_api_rule_list *rule) sys_b = sys; } else { sys_a = sys; - sys_b = _s390x_sock_demux(sys); + sys_b = _s390x_syscall_demux(sys); if (sys_b == __NR_SCMP_ERROR) { rc = __NR_SCMP_ERROR; goto add_return; @@ -291,24 +360,81 @@ int s390x_rule_add(struct db_filter *db, struct db_api_rule_list *rule) if (rc < 0) goto add_return; } - } else if (sys <= -200 && sys >= -224) { - /* multiplexed ipc syscalls */ + } else if ((sys <= -200 && sys >= -224) || (sys >= 392 && sys <= 402)) { + /* (-200 to -224) : multiplexed ipc syscalls + (392 to 402) : direct ipc syscalls */ + + /* strict check for the multiplexed socket syscalls */ for (iter = 0; iter < ARG_COUNT_MAX; iter++) { if ((rule->args[iter].valid != 0) && (rule->strict)) { rc = -EINVAL; goto add_return; } } - rule->args[0].arg = 0; - rule->args[0].op = SCMP_CMP_EQ; - rule->args[0].mask = DATUM_MAX; - rule->args[0].datum = abs(sys) % 200; - rule->args[0].valid = 1; - rule->syscall = __s390x_NR_ipc; - rc = db_rule_add(db, rule); - if (rc < 0) - goto add_return; + /* determine both the muxed and direct syscall numbers */ + if (sys > 0) { + sys_a = _s390x_syscall_mux(sys); + if (sys_a == __NR_SCMP_ERROR) { + rc = __NR_SCMP_ERROR; + goto add_return; + } + sys_b = sys; + } else { + sys_a = sys; + sys_b = _s390x_syscall_demux(sys); + if (sys_b == __NR_SCMP_ERROR) { + rc = __NR_SCMP_ERROR; + goto add_return; + } + } + + /* use rule_a for the multiplexed syscall and use rule_b for + * the direct wired syscall */ + + if (sys_a == __NR_SCMP_UNDEF) { + rule_a = NULL; + rule_b = rule; + } else if (sys_b == __NR_SCMP_UNDEF) { + rule_a = rule; + rule_b = NULL; + } else { + /* need two rules, dup the first and link together */ + rule_a = rule; + rule_dup = db_rule_dup(rule_a); + rule_b = rule_dup; + if (rule_b == NULL) + goto add_return; + rule_b->prev = rule_a; + rule_b->next = NULL; + rule_a->next = rule_b; + } + + /* multiplexed socket syscalls */ + if (rule_a != NULL) { + rule_a->syscall = __s390x_NR_ipc; + rule_a->args[0].arg = 0; + rule_a->args[0].op = SCMP_CMP_EQ; + rule_a->args[0].mask = DATUM_MAX; + rule_a->args[0].datum = (-sys_a) % 200; + rule_a->args[0].valid = 1; + } + + /* direct wired socket syscalls */ + if (rule_b != NULL) + rule_b->syscall = sys_b; + + /* we should be protected by a transaction checkpoint */ + if (rule_a != NULL) { + rc = db_rule_add(db, rule_a); + if (rc < 0) + goto add_return; + } + if (rule_b != NULL) { + rc = db_rule_add(db, rule_b); + if (rc < 0) + goto add_return; + } } else if (sys >= 0) { /* normal syscall processing */ rc = db_rule_add(db, rule); diff --git a/src/arch-x32-syscalls.c b/src/arch-x32-syscalls.c index f6b941b..e5cfadb 100644 --- a/src/arch-x32-syscalls.c +++ b/src/arch-x32-syscalls.c @@ -26,7 +26,7 @@ #include "arch.h" #include "arch-x32.h" -/* NOTE: based on Linux 4.15-rc7 */ +/* NOTE: based on Linux v5.4-rc4 */ const struct arch_syscall_def x32_syscall_table[] = { \ { "_llseek", __PNR__llseek }, { "_newselect", __PNR__newselect }, @@ -58,11 +58,17 @@ const struct arch_syscall_def x32_syscall_table[] = { \ { "chown32", __PNR_chown32 }, { "chroot", (X32_SYSCALL_BIT + 161) }, { "clock_adjtime", (X32_SYSCALL_BIT + 305) }, + { "clock_adjtime64", __PNR_clock_adjtime64 }, { "clock_getres", (X32_SYSCALL_BIT + 229) }, + { "clock_getres_time64", __PNR_clock_getres_time64 }, { "clock_gettime", (X32_SYSCALL_BIT + 228) }, + { "clock_gettime64", __PNR_clock_gettime64 }, { "clock_nanosleep", (X32_SYSCALL_BIT + 230) }, + { "clock_nanosleep_time64", __PNR_clock_nanosleep_time64 }, { "clock_settime", (X32_SYSCALL_BIT + 227) }, + { "clock_settime64", __PNR_clock_settime64 }, { "clone", (X32_SYSCALL_BIT + 56) }, + { "clone3", (X32_SYSCALL_BIT + 435) }, { "close", (X32_SYSCALL_BIT + 3) }, { "connect", (X32_SYSCALL_BIT + 42) }, { "copy_file_range", (X32_SYSCALL_BIT + 326) }, @@ -106,7 +112,11 @@ const struct arch_syscall_def x32_syscall_table[] = { \ { "flock", (X32_SYSCALL_BIT + 73) }, { "fork", (X32_SYSCALL_BIT + 57) }, { "fremovexattr", (X32_SYSCALL_BIT + 199) }, + { "fsconfig", (X32_SYSCALL_BIT + 431) }, { "fsetxattr", (X32_SYSCALL_BIT + 190) }, + { "fsmount", (X32_SYSCALL_BIT + 432) }, + { "fsopen", (X32_SYSCALL_BIT + 430) }, + { "fspick", (X32_SYSCALL_BIT + 433) }, { "fstat", (X32_SYSCALL_BIT + 5) }, { "fstat64", __PNR_fstat64 }, { "fstatat64", __PNR_fstatat64 }, @@ -117,6 +127,7 @@ const struct arch_syscall_def x32_syscall_table[] = { \ { "ftruncate", (X32_SYSCALL_BIT + 77) }, { "ftruncate64", __PNR_ftruncate64 }, { "futex", (X32_SYSCALL_BIT + 202) }, + { "futex_time64", __PNR_futex_time64 }, { "futimesat", (X32_SYSCALL_BIT + 261) }, { "get_kernel_syms", __PNR_get_kernel_syms }, { "get_mempolicy", (X32_SYSCALL_BIT + 239) }, @@ -169,6 +180,7 @@ const struct arch_syscall_def x32_syscall_table[] = { \ { "io_destroy", (X32_SYSCALL_BIT + 207) }, { "io_getevents", (X32_SYSCALL_BIT + 208) }, { "io_pgetevents", (X32_SYSCALL_BIT + 333) }, + { "io_pgetevents_time64", __PNR_io_pgetevents_time64 }, { "io_setup", (X32_SYSCALL_BIT + 543) }, { "io_submit", (X32_SYSCALL_BIT + 544) }, { "io_uring_setup", (X32_SYSCALL_BIT + 425) }, @@ -217,6 +229,7 @@ const struct arch_syscall_def x32_syscall_table[] = { \ { "mmap2", __PNR_mmap2 }, { "modify_ldt", (X32_SYSCALL_BIT + 154) }, { "mount", (X32_SYSCALL_BIT + 165) }, + { "move_mount", (X32_SYSCALL_BIT + 429) }, { "move_pages", (X32_SYSCALL_BIT + 533) }, { "mprotect", (X32_SYSCALL_BIT + 10) }, { "mpx", __PNR_mpx }, @@ -224,7 +237,9 @@ const struct arch_syscall_def x32_syscall_table[] = { \ { "mq_notify", (X32_SYSCALL_BIT + 527) }, { "mq_open", (X32_SYSCALL_BIT + 240) }, { "mq_timedreceive", (X32_SYSCALL_BIT + 243) }, + { "mq_timedreceive_time64", __PNR_mq_timedreceive_time64 }, { "mq_timedsend", (X32_SYSCALL_BIT + 242) }, + { "mq_timedsend_time64", __PNR_mq_timedsend_time64 }, { "mq_unlink", (X32_SYSCALL_BIT + 241) }, { "mremap", (X32_SYSCALL_BIT + 25) }, { "msgctl", (X32_SYSCALL_BIT + 71) }, @@ -249,6 +264,7 @@ const struct arch_syscall_def x32_syscall_table[] = { \ { "oldwait4", __PNR_oldwait4 }, { "open", (X32_SYSCALL_BIT + 2) }, { "open_by_handle_at", (X32_SYSCALL_BIT + 304) }, + { "open_tree", (X32_SYSCALL_BIT + 428) }, { "openat", (X32_SYSCALL_BIT + 257) }, { "pause", (X32_SYSCALL_BIT + 34) }, { "pciconfig_iobase", __PNR_pciconfig_iobase }, @@ -256,6 +272,8 @@ const struct arch_syscall_def x32_syscall_table[] = { \ { "pciconfig_write", __PNR_pciconfig_write }, { "perf_event_open", (X32_SYSCALL_BIT + 298) }, { "personality", (X32_SYSCALL_BIT + 135) }, + { "pidfd_open", (X32_SYSCALL_BIT + 434) }, + { "pidfd_send_signal", (X32_SYSCALL_BIT + 424) }, { "pipe", (X32_SYSCALL_BIT + 22) }, { "pipe2", (X32_SYSCALL_BIT + 293) }, { "pivot_root", (X32_SYSCALL_BIT + 155) }, @@ -264,6 +282,7 @@ const struct arch_syscall_def x32_syscall_table[] = { \ { "pkey_mprotect", (X32_SYSCALL_BIT + 329) }, { "poll", (X32_SYSCALL_BIT + 7) }, { "ppoll", (X32_SYSCALL_BIT + 271) }, + { "ppoll_time64", __PNR_ppoll_time64 }, { "prctl", (X32_SYSCALL_BIT + 157) }, { "pread64", (X32_SYSCALL_BIT + 17) }, { "preadv", (X32_SYSCALL_BIT + 534) }, @@ -274,6 +293,7 @@ const struct arch_syscall_def x32_syscall_table[] = { \ { "prof", __PNR_prof }, { "profil", __PNR_profil }, { "pselect6", (X32_SYSCALL_BIT + 270) }, + { "pselect6_time64", __PNR_pselect6_time64 }, { "ptrace", (X32_SYSCALL_BIT + 521) }, { "putpmsg", (X32_SYSCALL_BIT + 182) }, { "pwrite64", (X32_SYSCALL_BIT + 18) }, @@ -291,6 +311,7 @@ const struct arch_syscall_def x32_syscall_table[] = { \ { "recv", __PNR_recv }, { "recvfrom", (X32_SYSCALL_BIT + 517) }, { "recvmmsg", (X32_SYSCALL_BIT + 537) }, + { "recvmmsg_time64", __PNR_recvmmsg_time64 }, { "recvmsg", (X32_SYSCALL_BIT + 519) }, { "remap_file_pages", (X32_SYSCALL_BIT + 216) }, { "removexattr", (X32_SYSCALL_BIT + 197) }, @@ -308,6 +329,7 @@ const struct arch_syscall_def x32_syscall_table[] = { \ { "rt_sigreturn", (X32_SYSCALL_BIT + 513) }, { "rt_sigsuspend", (X32_SYSCALL_BIT + 130) }, { "rt_sigtimedwait", (X32_SYSCALL_BIT + 523) }, + { "rt_sigtimedwait_time64", __PNR_rt_sigtimedwait_time64 }, { "rt_tgsigqueueinfo", (X32_SYSCALL_BIT + 536) }, { "rtas", __PNR_rtas }, { "s390_guarded_storage", __PNR_s390_guarded_storage }, @@ -322,6 +344,7 @@ const struct arch_syscall_def x32_syscall_table[] = { \ { "sched_getparam", (X32_SYSCALL_BIT + 143) }, { "sched_getscheduler", (X32_SYSCALL_BIT + 145) }, { "sched_rr_get_interval", (X32_SYSCALL_BIT + 148) }, + { "sched_rr_get_interval_time64", __PNR_sched_rr_get_interval_time64 }, { "sched_setaffinity", (X32_SYSCALL_BIT + 203) }, { "sched_setattr", (X32_SYSCALL_BIT + 314) }, { "sched_setparam", (X32_SYSCALL_BIT + 142) }, @@ -334,6 +357,7 @@ const struct arch_syscall_def x32_syscall_table[] = { \ { "semget", (X32_SYSCALL_BIT + 64) }, { "semop", (X32_SYSCALL_BIT + 65) }, { "semtimedop", (X32_SYSCALL_BIT + 220) }, + { "semtimedop_time64", __PNR_semtimedop_time64 }, { "send", __PNR_send }, { "sendfile", (X32_SYSCALL_BIT + 40) }, { "sendfile64", __PNR_sendfile64 }, @@ -427,11 +451,15 @@ const struct arch_syscall_def x32_syscall_table[] = { \ { "timer_delete", (X32_SYSCALL_BIT + 226) }, { "timer_getoverrun", (X32_SYSCALL_BIT + 225) }, { "timer_gettime", (X32_SYSCALL_BIT + 224) }, + { "timer_gettime64", __PNR_timer_gettime64 }, { "timer_settime", (X32_SYSCALL_BIT + 223) }, + { "timer_settime64", __PNR_timer_settime64 }, { "timerfd", __PNR_timerfd }, { "timerfd_create", (X32_SYSCALL_BIT + 283) }, { "timerfd_gettime", (X32_SYSCALL_BIT + 287) }, + { "timerfd_gettime64", __PNR_timerfd_gettime64 }, { "timerfd_settime", (X32_SYSCALL_BIT + 286) }, + { "timerfd_settime64", __PNR_timerfd_settime64 }, { "times", (X32_SYSCALL_BIT + 100) }, { "tkill", (X32_SYSCALL_BIT + 200) }, { "truncate", (X32_SYSCALL_BIT + 76) }, @@ -453,6 +481,7 @@ const struct arch_syscall_def x32_syscall_table[] = { \ { "ustat", (X32_SYSCALL_BIT + 136) }, { "utime", (X32_SYSCALL_BIT + 132) }, { "utimensat", (X32_SYSCALL_BIT + 280) }, + { "utimensat_time64", __PNR_utimensat_time64 }, { "utimes", (X32_SYSCALL_BIT + 235) }, { "vfork", (X32_SYSCALL_BIT + 58) }, { "vhangup", (X32_SYSCALL_BIT + 153) }, diff --git a/src/arch-x86-syscalls.c b/src/arch-x86-syscalls.c index 5bd0ca2..ffaac7f 100644 --- a/src/arch-x86-syscalls.c +++ b/src/arch-x86-syscalls.c @@ -26,7 +26,7 @@ #include "arch.h" #include "arch-x86.h" -/* NOTE: based on Linux 4.15-rc7 */ +/* NOTE: based on Linux v5.4-rc4 */ const struct arch_syscall_def x86_syscall_table[] = { \ { "_llseek", 140 }, { "_newselect", 142 }, @@ -58,11 +58,17 @@ const struct arch_syscall_def x86_syscall_table[] = { \ { "chown32", 212 }, { "chroot", 61 }, { "clock_adjtime", 343 }, + { "clock_adjtime64", 405 }, { "clock_getres", 266 }, + { "clock_getres_time64", 406 }, { "clock_gettime", 265 }, + { "clock_gettime64", 403 }, { "clock_nanosleep", 267 }, + { "clock_nanosleep_time64", 407 }, { "clock_settime", 264 }, + { "clock_settime64", 404 }, { "clone", 120 }, + { "clone3", 435 }, { "close", 6 }, { "connect", 362 }, { "copy_file_range", 377 }, @@ -106,7 +112,11 @@ const struct arch_syscall_def x86_syscall_table[] = { \ { "flock", 143 }, { "fork", 2 }, { "fremovexattr", 237 }, + { "fsconfig", 431 }, { "fsetxattr", 228 }, + { "fsmount", 432 }, + { "fsopen", 430 }, + { "fspick", 433 }, { "fstat", 108 }, { "fstat64", 197 }, { "fstatat64", 300 }, @@ -117,6 +127,7 @@ const struct arch_syscall_def x86_syscall_table[] = { \ { "ftruncate", 93 }, { "ftruncate64", 194 }, { "futex", 240 }, + { "futex_time64", 422 }, { "futimesat", 299 }, { "get_kernel_syms", 130 }, { "get_mempolicy", 275 }, @@ -169,6 +180,7 @@ const struct arch_syscall_def x86_syscall_table[] = { \ { "io_destroy", 246 }, { "io_getevents", 247 }, { "io_pgetevents", 385 }, + { "io_pgetevents_time64", 416 }, { "io_setup", 245 }, { "io_submit", 248 }, { "io_uring_setup", 425 }, @@ -217,6 +229,7 @@ const struct arch_syscall_def x86_syscall_table[] = { \ { "mmap2", 192 }, { "modify_ldt", 123 }, { "mount", 21 }, + { "move_mount", 429 }, { "move_pages", 317 }, { "mprotect", 125 }, { "mpx", 56 }, @@ -224,13 +237,15 @@ const struct arch_syscall_def x86_syscall_table[] = { \ { "mq_notify", 281 }, { "mq_open", 277 }, { "mq_timedreceive", 280 }, + { "mq_timedreceive_time64", 419 }, { "mq_timedsend", 279 }, + { "mq_timedsend_time64", 418 }, { "mq_unlink", 278 }, { "mremap", 163 }, - { "msgctl", __PNR_msgctl }, - { "msgget", __PNR_msgget }, - { "msgrcv", __PNR_msgrcv }, - { "msgsnd", __PNR_msgsnd }, + { "msgctl", 402 }, + { "msgget", 399 }, + { "msgrcv", 401 }, + { "msgsnd", 400 }, { "msync", 144 }, { "multiplexer", __PNR_multiplexer }, { "munlock", 151 }, @@ -249,6 +264,7 @@ const struct arch_syscall_def x86_syscall_table[] = { \ { "oldwait4", __PNR_oldwait4 }, { "open", 5 }, { "open_by_handle_at", 342 }, + { "open_tree", 428 }, { "openat", 295 }, { "pause", 29 }, { "pciconfig_iobase", __PNR_pciconfig_iobase }, @@ -256,6 +272,8 @@ const struct arch_syscall_def x86_syscall_table[] = { \ { "pciconfig_write", __PNR_pciconfig_write }, { "perf_event_open", 336 }, { "personality", 136 }, + { "pidfd_open", 434 }, + { "pidfd_send_signal", 424 }, { "pipe", 42 }, { "pipe2", 331 }, { "pivot_root", 217 }, @@ -264,6 +282,7 @@ const struct arch_syscall_def x86_syscall_table[] = { \ { "pkey_mprotect", 380 }, { "poll", 168 }, { "ppoll", 309 }, + { "ppoll_time64", 414 }, { "prctl", 172 }, { "pread64", 180 }, { "preadv", 333 }, @@ -274,6 +293,7 @@ const struct arch_syscall_def x86_syscall_table[] = { \ { "prof", 44 }, { "profil", 98 }, { "pselect6", 308 }, + { "pselect6_time64", 413 }, { "ptrace", 26 }, { "putpmsg", 189 }, { "pwrite64", 181 }, @@ -291,6 +311,7 @@ const struct arch_syscall_def x86_syscall_table[] = { \ { "recv", __PNR_recv }, { "recvfrom", 371 }, { "recvmmsg", 337 }, + { "recvmmsg_time64", 417 }, { "recvmsg", 372 }, { "remap_file_pages", 257 }, { "removexattr", 235 }, @@ -308,6 +329,7 @@ const struct arch_syscall_def x86_syscall_table[] = { \ { "rt_sigreturn", 173 }, { "rt_sigsuspend", 179 }, { "rt_sigtimedwait", 177 }, + { "rt_sigtimedwait_time64", 421 }, { "rt_tgsigqueueinfo", 335 }, { "rtas", __PNR_rtas }, { "s390_guarded_storage", __PNR_s390_guarded_storage }, @@ -322,6 +344,7 @@ const struct arch_syscall_def x86_syscall_table[] = { \ { "sched_getparam", 155 }, { "sched_getscheduler", 157 }, { "sched_rr_get_interval", 161 }, + { "sched_rr_get_interval_time64", 423 }, { "sched_setaffinity", 241 }, { "sched_setattr", 351 }, { "sched_setparam", 154 }, @@ -330,10 +353,11 @@ const struct arch_syscall_def x86_syscall_table[] = { \ { "seccomp", 354 }, { "security", __PNR_security }, { "select", 82 }, - { "semctl", __PNR_semctl }, - { "semget", __PNR_semget }, + { "semctl", 394 }, + { "semget", 393 }, { "semop", __PNR_semop }, { "semtimedop", __PNR_semtimedop }, + { "semtimedop_time64", 420 }, { "send", __PNR_send }, { "sendfile", 187 }, { "sendfile64", 239 }, @@ -375,10 +399,10 @@ const struct arch_syscall_def x86_syscall_table[] = { \ { "setuid32", 213 }, { "setxattr", 226 }, { "sgetmask", 68 }, - { "shmat", __PNR_shmat }, - { "shmctl", __PNR_shmctl }, - { "shmdt", __PNR_shmdt }, - { "shmget", __PNR_shmget }, + { "shmat", 397 }, + { "shmctl", 396 }, + { "shmdt", 398 }, + { "shmget", 395 }, { "shutdown", 373 }, { "sigaction", 67 }, { "sigaltstack", 186 }, @@ -427,11 +451,15 @@ const struct arch_syscall_def x86_syscall_table[] = { \ { "timer_delete", 263 }, { "timer_getoverrun", 262 }, { "timer_gettime", 261 }, + { "timer_gettime64", 408 }, { "timer_settime", 260 }, + { "timer_settime64", 409 }, { "timerfd", __PNR_timerfd }, { "timerfd_create", 322 }, { "timerfd_gettime", 326 }, + { "timerfd_gettime64", 410 }, { "timerfd_settime", 325 }, + { "timerfd_settime64", 411 }, { "times", 43 }, { "tkill", 238 }, { "truncate", 92 }, @@ -453,6 +481,7 @@ const struct arch_syscall_def x86_syscall_table[] = { \ { "ustat", 62 }, { "utime", 30 }, { "utimensat", 320 }, + { "utimensat_time64", 412 }, { "utimes", 271 }, { "vfork", 190 }, { "vhangup", 111 }, @@ -486,7 +515,7 @@ int x86_syscall_resolve_name(const char *name) if (strcmp(name, "accept") == 0) return __PNR_accept; - if (strcmp(name, "accept4") == 0) + else if (strcmp(name, "accept4") == 0) return __PNR_accept4; else if (strcmp(name, "bind") == 0) return __PNR_bind; @@ -525,6 +554,31 @@ int x86_syscall_resolve_name(const char *name) else if (strcmp(name, "socketpair") == 0) return __PNR_socketpair; + if (strcmp(name, "semop") == 0) + return __PNR_semop; + else if (strcmp(name, "semget") == 0) + return __PNR_semget; + else if (strcmp(name, "semctl") == 0) + return __PNR_semctl; + else if (strcmp(name, "semtimedop") == 0) + return __PNR_semtimedop; + else if (strcmp(name, "msgsnd") == 0) + return __PNR_msgsnd; + else if (strcmp(name, "msgrcv") == 0) + return __PNR_msgrcv; + else if (strcmp(name, "msgget") == 0) + return __PNR_msgget; + else if (strcmp(name, "msgctl") == 0) + return __PNR_msgctl; + else if (strcmp(name, "shmat") == 0) + return __PNR_shmat; + else if (strcmp(name, "shmdt") == 0) + return __PNR_shmdt; + else if (strcmp(name, "shmget") == 0) + return __PNR_shmget; + else if (strcmp(name, "shmctl") == 0) + return __PNR_shmctl; + for (iter = 0; table[iter].name != NULL; iter++) { if (strcmp(name, table[iter].name) == 0) return table[iter].num; @@ -590,6 +644,33 @@ const char *x86_syscall_resolve_num(int num) else if (num == __PNR_socketpair) return "socketpair"; + if (num == __PNR_semop) + return "semop"; + else if (num == __PNR_semget) + return "semget"; + else if (num == __PNR_semctl) + return "semctl"; + else if (num == __PNR_semtimedop) + return "semtimedop"; + else if (num == __PNR_msgsnd) + return "msgsnd"; + else if (num == __PNR_msgrcv) + return "msgrcv"; + else if (num == __PNR_msgget) + return "msgget"; + else if (num == __PNR_msgctl) + return "msgctl"; + else if (num == __PNR_shmat) + return "shmat"; + else if (num == __PNR_shmdt) + return "shmdt"; + else if (num == __PNR_shmdt) + return "shmget"; + else if (num == __PNR_shmget) + return "shmget"; + else if (num == __PNR_shmctl) + return "shmctl"; + for (iter = 0; table[iter].num != __NR_SCMP_ERROR; iter++) { if (num == table[iter].num) return table[iter].name; diff --git a/src/arch-x86.c b/src/arch-x86.c index 4126737..fc0deaa 100644 --- a/src/arch-x86.c +++ b/src/arch-x86.c @@ -43,16 +43,16 @@ const struct arch_def arch_def_x86 = { }; /** - * Convert a multiplexed pseudo socket syscall into a direct syscall - * @param socketcall the multiplexed pseudo syscall number + * Convert a multiplexed pseudo syscall into a direct syscall + * @param syscall the multiplexed pseudo syscall number * * Return the related direct syscall number, __NR_SCMP_UNDEF is there is * no related syscall, or __NR_SCMP_ERROR otherwise. * */ -static int _x86_sock_demux(int socketcall) +static int _x86_syscall_demux(int syscall) { - switch (socketcall) { + switch (syscall) { case -101: /* socket */ return 359; @@ -113,20 +113,56 @@ static int _x86_sock_demux(int socketcall) case -120: /* sendmmsg */ return 345; + case -201: + /* semop - not defined */ + return __NR_SCMP_UNDEF; + case -202: + /* semget */ + return 393; + case -203: + /* semctl */ + return 394; + case -204: + /* semtimedop - not defined */ + return __NR_SCMP_UNDEF; + case -211: + /* msgsnd */ + return 400; + case -212: + /* msgrcv */ + return 401; + case -213: + /* msgget */ + return 399; + case -214: + /* msgctl */ + return 402; + case -221: + /* shmat */ + return 397; + case -222: + /* shmdt */ + return 398; + case -223: + /* shmget */ + return 395; + case -224: + /* shmctl */ + return 396; } return __NR_SCMP_ERROR; } /** - * Convert a direct socket syscall into multiplexed pseudo socket syscall + * Convert a direct syscall into multiplexed pseudo socket syscall * @param syscall the direct syscall * * Return the related multiplexed pseduo syscall number, __NR_SCMP_UNDEF is * there is no related pseudo syscall, or __NR_SCMP_ERROR otherwise. * */ -static int _x86_sock_mux(int syscall) +static int _x86_syscall_mux(int syscall) { switch (syscall) { case 337: @@ -180,6 +216,36 @@ static int _x86_sock_mux(int syscall) case 373: /* shutdown */ return -113; + case 393: + /* semget */ + return -202; + case 394: + /* semctl */ + return -203; + case 400: + /* msgsnd */ + return -211; + case 401: + /* msgrcv */ + return -212; + case 399: + /* msgget */ + return -213; + case 402: + /* msgctl */ + return -214; + case 397: + /* shmat */ + return -221; + case 398: + /* shmdt */ + return -222; + case 395: + /* shmget */ + return -223; + case 396: + /* shmctl */ + return -224; } return __NR_SCMP_ERROR; @@ -244,7 +310,7 @@ int x86_rule_add(struct db_filter *db, struct db_api_rule_list *rule) /* determine both the muxed and direct syscall numbers */ if (sys > 0) { - sys_a = _x86_sock_mux(sys); + sys_a = _x86_syscall_mux(sys); if (sys_a == __NR_SCMP_ERROR) { rc = __NR_SCMP_ERROR; goto add_return; @@ -252,7 +318,7 @@ int x86_rule_add(struct db_filter *db, struct db_api_rule_list *rule) sys_b = sys; } else { sys_a = sys; - sys_b = _x86_sock_demux(sys); + sys_b = _x86_syscall_demux(sys); if (sys_b == __NR_SCMP_ERROR) { rc = __NR_SCMP_ERROR; goto add_return; @@ -305,24 +371,81 @@ int x86_rule_add(struct db_filter *db, struct db_api_rule_list *rule) if (rc < 0) goto add_return; } - } else if (sys <= -200 && sys >= -224) { - /* multiplexed ipc syscalls */ + } else if ((sys <= -200 && sys >= -224) || (sys >= 393 && sys <= 402)) { + /* (-200 to -224) : multiplexed ipc syscalls + (393 to 402) : direct ipc syscalls */ + + /* strict check for the multiplexed socket syscalls */ for (iter = 0; iter < ARG_COUNT_MAX; iter++) { if ((rule->args[iter].valid != 0) && (rule->strict)) { rc = -EINVAL; goto add_return; } } - rule->args[0].arg = 0; - rule->args[0].op = SCMP_CMP_EQ; - rule->args[0].mask = DATUM_MAX; - rule->args[0].datum = abs(sys) % 200; - rule->args[0].valid = 1; - rule->syscall = __x86_NR_ipc; - rc = db_rule_add(db, rule); - if (rc < 0) - goto add_return; + /* determine both the muxed and direct syscall numbers */ + if (sys > 0) { + sys_a = _x86_syscall_mux(sys); + if (sys_a == __NR_SCMP_ERROR) { + rc = __NR_SCMP_ERROR; + goto add_return; + } + sys_b = sys; + } else { + sys_a = sys; + sys_b = _x86_syscall_demux(sys); + if (sys_b == __NR_SCMP_ERROR) { + rc = __NR_SCMP_ERROR; + goto add_return; + } + } + + /* use rule_a for the multiplexed syscall and use rule_b for + * the direct wired syscall */ + + if (sys_a == __NR_SCMP_UNDEF) { + rule_a = NULL; + rule_b = rule; + } else if (sys_b == __NR_SCMP_UNDEF) { + rule_a = rule; + rule_b = NULL; + } else { + /* need two rules, dup the first and link together */ + rule_a = rule; + rule_dup = db_rule_dup(rule_a); + rule_b = rule_dup; + if (rule_b == NULL) + goto add_return; + rule_b->prev = rule_a; + rule_b->next = NULL; + rule_a->next = rule_b; + } + + /* multiplexed socket syscalls */ + if (rule_a != NULL) { + rule_a->syscall = __x86_NR_ipc; + rule_a->args[0].arg = 0; + rule_a->args[0].op = SCMP_CMP_EQ; + rule_a->args[0].mask = DATUM_MAX; + rule_a->args[0].datum = (-sys_a) % 200; + rule_a->args[0].valid = 1; + } + + /* direct wired socket syscalls */ + if (rule_b != NULL) + rule_b->syscall = sys_b; + + /* we should be protected by a transaction checkpoint */ + if (rule_a != NULL) { + rc = db_rule_add(db, rule_a); + if (rc < 0) + goto add_return; + } + if (rule_b != NULL) { + rc = db_rule_add(db, rule_b); + if (rc < 0) + goto add_return; + } } else if (sys >= 0) { /* normal syscall processing */ rc = db_rule_add(db, rule); diff --git a/src/arch-x86_64-syscalls.c b/src/arch-x86_64-syscalls.c index f7c8ce6..a2fdef8 100644 --- a/src/arch-x86_64-syscalls.c +++ b/src/arch-x86_64-syscalls.c @@ -26,7 +26,7 @@ #include "arch.h" #include "arch-x86_64.h" -/* NOTE: based on Linux 4.15-rc7 */ +/* NOTE: based on Linux v5.4-rc4 */ const struct arch_syscall_def x86_64_syscall_table[] = { \ { "_llseek", __PNR__llseek }, { "_newselect", __PNR__newselect }, @@ -58,11 +58,17 @@ const struct arch_syscall_def x86_64_syscall_table[] = { \ { "chown32", __PNR_chown32 }, { "chroot", 161 }, { "clock_adjtime", 305 }, + { "clock_adjtime64", __PNR_clock_adjtime64 }, { "clock_getres", 229 }, + { "clock_getres_time64", __PNR_clock_getres_time64 }, { "clock_gettime", 228 }, + { "clock_gettime64", __PNR_clock_gettime64 }, { "clock_nanosleep", 230 }, + { "clock_nanosleep_time64", __PNR_clock_nanosleep_time64 }, { "clock_settime", 227 }, + { "clock_settime64", __PNR_clock_settime64 }, { "clone", 56 }, + { "clone3", 435 }, { "close", 3 }, { "connect", 42 }, { "copy_file_range", 326 }, @@ -106,7 +112,11 @@ const struct arch_syscall_def x86_64_syscall_table[] = { \ { "flock", 73 }, { "fork", 57 }, { "fremovexattr", 199 }, + { "fsconfig", 431 }, { "fsetxattr", 190 }, + { "fsmount", 432 }, + { "fsopen", 430 }, + { "fspick", 433 }, { "fstat", 5 }, { "fstat64", __PNR_fstat64 }, { "fstatat64", __PNR_fstatat64 }, @@ -117,6 +127,7 @@ const struct arch_syscall_def x86_64_syscall_table[] = { \ { "ftruncate", 77 }, { "ftruncate64", __PNR_ftruncate64 }, { "futex", 202 }, + { "futex_time64", __PNR_futex_time64 }, { "futimesat", 261 }, { "get_kernel_syms", 177 }, { "get_mempolicy", 239 }, @@ -169,6 +180,7 @@ const struct arch_syscall_def x86_64_syscall_table[] = { \ { "io_destroy", 207 }, { "io_getevents", 208 }, { "io_pgetevents", 333 }, + { "io_pgetevents_time64", __PNR_io_pgetevents_time64 }, { "io_setup", 206 }, { "io_submit", 209 }, { "io_uring_setup", 425 }, @@ -217,6 +229,7 @@ const struct arch_syscall_def x86_64_syscall_table[] = { \ { "mmap2", __PNR_mmap2 }, { "modify_ldt", 154 }, { "mount", 165 }, + { "move_mount", 429 }, { "move_pages", 279 }, { "mprotect", 10 }, { "mpx", __PNR_mpx }, @@ -224,7 +237,9 @@ const struct arch_syscall_def x86_64_syscall_table[] = { \ { "mq_notify", 244 }, { "mq_open", 240 }, { "mq_timedreceive", 243 }, + { "mq_timedreceive_time64", __PNR_mq_timedreceive_time64 }, { "mq_timedsend", 242 }, + { "mq_timedsend_time64", __PNR_mq_timedsend_time64 }, { "mq_unlink", 241 }, { "mremap", 25 }, { "msgctl", 71 }, @@ -249,6 +264,7 @@ const struct arch_syscall_def x86_64_syscall_table[] = { \ { "oldwait4", __PNR_oldwait4 }, { "open", 2 }, { "open_by_handle_at", 304 }, + { "open_tree", 428 }, { "openat", 257 }, { "pause", 34 }, { "pciconfig_iobase", __PNR_pciconfig_iobase }, @@ -256,6 +272,8 @@ const struct arch_syscall_def x86_64_syscall_table[] = { \ { "pciconfig_write", __PNR_pciconfig_write }, { "perf_event_open", 298 }, { "personality", 135 }, + { "pidfd_open", 434 }, + { "pidfd_send_signal", 424 }, { "pipe", 22 }, { "pipe2", 293 }, { "pivot_root", 155 }, @@ -264,6 +282,7 @@ const struct arch_syscall_def x86_64_syscall_table[] = { \ { "pkey_mprotect", 329 }, { "poll", 7 }, { "ppoll", 271 }, + { "ppoll_time64", __PNR_ppoll_time64 }, { "prctl", 157 }, { "pread64", 17 }, { "preadv", 295 }, @@ -274,6 +293,7 @@ const struct arch_syscall_def x86_64_syscall_table[] = { \ { "prof", __PNR_prof }, { "profil", __PNR_profil }, { "pselect6", 270 }, + { "pselect6_time64", __PNR_pselect6_time64 }, { "ptrace", 101 }, { "putpmsg", 182 }, { "pwrite64", 18 }, @@ -291,6 +311,7 @@ const struct arch_syscall_def x86_64_syscall_table[] = { \ { "recv", __PNR_recv }, { "recvfrom", 45 }, { "recvmmsg", 299 }, + { "recvmmsg_time64", __PNR_recvmmsg_time64 }, { "recvmsg", 47 }, { "remap_file_pages", 216 }, { "removexattr", 197 }, @@ -308,6 +329,7 @@ const struct arch_syscall_def x86_64_syscall_table[] = { \ { "rt_sigreturn", 15 }, { "rt_sigsuspend", 130 }, { "rt_sigtimedwait", 128 }, + { "rt_sigtimedwait_time64", __PNR_rt_sigtimedwait_time64 }, { "rt_tgsigqueueinfo", 297 }, { "rtas", __PNR_rtas }, { "s390_guarded_storage", __PNR_s390_guarded_storage }, @@ -322,6 +344,7 @@ const struct arch_syscall_def x86_64_syscall_table[] = { \ { "sched_getparam", 143 }, { "sched_getscheduler", 145 }, { "sched_rr_get_interval", 148 }, + { "sched_rr_get_interval_time64", __PNR_sched_rr_get_interval_time64 }, { "sched_setaffinity", 203 }, { "sched_setattr", 314 }, { "sched_setparam", 142 }, @@ -334,6 +357,7 @@ const struct arch_syscall_def x86_64_syscall_table[] = { \ { "semget", 64 }, { "semop", 65 }, { "semtimedop", 220 }, + { "semtimedop_time64", __PNR_semtimedop_time64 }, { "send", __PNR_send }, { "sendfile", 40 }, { "sendfile64", __PNR_sendfile64 }, @@ -427,11 +451,15 @@ const struct arch_syscall_def x86_64_syscall_table[] = { \ { "timer_delete", 226 }, { "timer_getoverrun", 225 }, { "timer_gettime", 224 }, + { "timer_gettime64", __PNR_timer_gettime64 }, { "timer_settime", 223 }, + { "timer_settime64", __PNR_timer_settime64 }, { "timerfd", __PNR_timerfd }, { "timerfd_create", 283 }, { "timerfd_gettime", 287 }, + { "timerfd_gettime64", __PNR_timerfd_gettime64 }, { "timerfd_settime", 286 }, + { "timerfd_settime64", __PNR_timerfd_settime64 }, { "times", 100 }, { "tkill", 200 }, { "truncate", 76 }, @@ -453,6 +481,7 @@ const struct arch_syscall_def x86_64_syscall_table[] = { \ { "ustat", 136 }, { "utime", 132 }, { "utimensat", 280 }, + { "utimensat_time64", __PNR_utimensat_time64 }, { "utimes", 235 }, { "vfork", 58 }, { "vhangup", 153 }, diff --git a/tools/Makefile.am b/tools/Makefile.am index f768365..f35b0a5 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -16,8 +16,6 @@ # along with this library; if not, see <http://www.gnu.org/licenses>. # -AM_CPPFLAGS = -I${top_builddir}/include - noinst_LTLIBRARIES = util.la util_la_SOURCES = util.c util.h bpf.h util_la_LDFLAGS = -module diff --git a/tools/check-syntax b/tools/check-syntax index 4369e93..7429334 100755 --- a/tools/check-syntax +++ b/tools/check-syntax @@ -22,6 +22,7 @@ # CHK_C_LIST="include/seccomp.h.in \ + include/seccomp-syscalls.h \ src/*.c src/*.h \ tests/*.c tests/*.h \ tools/*.c tools/*.h" |