summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Hromatka <tom.hromatka@oracle.com>2019-11-04 07:45:08 -0700
committerGitHub <noreply@github.com>2019-11-04 07:45:08 -0700
commitcce58b02986b6c65cbf3eda3d685c1f642a1a2c5 (patch)
treebf24fded0a362e20f15e195aa9f6ebe537d76761
parent0f11bb83d92ae74669f4a5e9c240b1e353d5a596 (diff)
parentbe65b26b67099be2b2b4890d736dbd1ad15adf36 (diff)
downloadlibseccomp-cce58b02986b6c65cbf3eda3d685c1f642a1a2c5.tar.gz
Merge pull request #179 from drakenclimber/issues/161-round2
Backports to release-2.4 branch
-rw-r--r--include/Makefile.am2
-rw-r--r--include/seccomp-syscalls.h2292
-rw-r--r--include/seccomp.h.in1068
-rw-r--r--src/arch-aarch64-syscalls.c35
-rw-r--r--src/arch-arm-syscalls.c35
-rw-r--r--src/arch-mips-syscalls.c51
-rw-r--r--src/arch-mips64-syscalls.c31
-rw-r--r--src/arch-mips64n32-syscalls.c31
-rw-r--r--src/arch-parisc-syscalls.c33
-rw-r--r--src/arch-ppc-syscalls.c51
-rw-r--r--src/arch-ppc64-syscalls.c53
-rw-r--r--src/arch-s390-syscalls.c57
-rw-r--r--src/arch-s390.c160
-rw-r--r--src/arch-s390x-syscalls.c59
-rw-r--r--src/arch-s390x.c160
-rw-r--r--src/arch-x32-syscalls.c31
-rw-r--r--src/arch-x86-syscalls.c105
-rw-r--r--src/arch-x86.c161
-rw-r--r--src/arch-x86_64-syscalls.c31
-rw-r--r--tools/Makefile.am2
-rwxr-xr-xtools/check-syntax1
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"