From 89cbc071c1357a8e905df9911594d2abcc2596af Mon Sep 17 00:00:00 2001 From: Anas Nashif Date: Wed, 28 Aug 2013 07:46:56 -0400 Subject: [PATCH] Imported Upstream version 4.8 --- .tarball-version | 1 + .version | 1 + COPYRIGHT => COPYING | 0 CREDITS | 11 + ChangeLog | 2304 +++++++++ Makefile.am | 295 +- Makefile.in | 334 +- NEWS | 69 +- README | 2 +- aclocal.m4 | 18 +- bjm.c | 21 +- block.c | 2 +- config.guess | 178 +- config.h.in | 32 + config.sub | 97 +- configure | 189 +- configure.ac | 43 +- count.c | 96 +- debian/changelog | 13 +- debian/strace.docs | 1 - defs.h | 480 +- desc.c | 127 +- file.c | 445 +- io.c | 41 +- ioctl.c | 13 +- ipc.c | 28 +- linux/aarch64/errnoent1.h | 2 + linux/aarch64/ioctlent.h.in | 1 + linux/aarch64/ioctlent1.h | 1 + linux/aarch64/signalent1.h | 1 + linux/aarch64/syscallent.h | 1 + linux/aarch64/syscallent1.h | 330 ++ linux/alpha/syscallent.h | 82 +- linux/arm/errnoent1.h | 2 - linux/arm/ioctlent1.h | 2 - linux/arm/signalent1.h | 2 - linux/arm/syscallent.h | 164 +- linux/arm/syscallent1.h | 7 - linux/avr32/syscallent.h | 36 +- linux/bfin/ioctlent.h.in | 78 - linux/bfin/syscallent.h | 50 +- linux/dummy.h | 28 +- linux/errnoent.h | 4 +- linux/hppa/syscallent.h | 74 +- linux/i386/ioctlent.h.in | 77 - linux/i386/syscallent.h | 90 +- linux/ia64/syscallent.h | 76 +- linux/ioctlent-filter.awk | 19 + linux/ioctlent.h.in | 364 +- linux/ioctlent.sh | 9 +- linux/m68k/syscallent.h | 132 +- linux/metag/ioctlent.h.in | 1 + linux/metag/syscallent.h | 266 ++ linux/microblaze/syscallent.h | 126 +- linux/mips/syscallent-compat.h | 870 ++++ linux/mips/syscallent-n32.h | 630 +++ linux/mips/syscallent-n64.h | 621 +++ linux/mips/syscallent-o32.h | 703 +++ linux/mips/syscallent.h | 7983 +------------------------------- linux/mtd-abi.h | 2 +- linux/or1k/ioctlent.h.in | 1 + linux/or1k/syscallent.h | 262 ++ linux/powerpc/ioctlent.h.in | 30 - linux/powerpc/ioctlent1.h | 2 +- linux/powerpc/syscallent.h | 70 +- linux/s390/ioctlent.h.in | 76 - linux/s390/syscallent.h | 64 +- linux/s390x/syscallent.h | 72 +- linux/sh/syscallent.h | 70 +- linux/sh64/syscallent.h | 78 +- linux/sparc/ioctlent.h.in | 53 - linux/sparc/syscallent.h | 77 +- linux/sparc/syscallent1.h | 2 +- linux/subcall.h | 6 + linux/syscall.h | 51 +- linux/tile/errnoent1.h | 2 + linux/tile/ioctlent1.h | 2 + linux/tile/signalent1.h | 2 + linux/tile/syscallent.h | 576 ++- linux/tile/syscallent1.h | 278 ++ linux/ubi-user.h | 420 ++ linux/x32/errnoent1.h | 2 +- linux/x32/ioctlent1.h | 4 +- linux/x32/signalent1.h | 2 +- linux/x32/syscallent.h | 168 +- linux/x32/syscallent1.h | 12 +- linux/x86_64/errnoent1.h | 2 +- linux/x86_64/errnoent2.h | 2 +- linux/x86_64/ioctlent1.h | 4 +- linux/x86_64/ioctlent2.h | 4 +- linux/x86_64/signalent1.h | 2 +- linux/x86_64/signalent2.h | 2 +- linux/x86_64/syscallent.h | 60 +- linux/x86_64/syscallent1.h | 8 +- linux/x86_64/syscallent2.h | 4 +- linux/xtensa/ioctlent.h.in | 1 + linux/xtensa/syscallent.h | 326 ++ loop.c | 4 +- mem.c | 293 +- mtd.c | 128 +- net.c | 459 +- pathtrace.c | 94 +- process.c | 476 +- quota.c | 2 +- resource.c | 3 +- signal.c | 265 +- strace.1 | 52 +- strace.c | 428 +- strace.spec | 17 +- stream.c | 78 +- syscall.c | 1541 ++++-- system.c | 108 +- tests/Makefile.am | 6 +- tests/Makefile.in | 146 +- tests/init.sh | 12 +- tests/net | 47 + tests/net-accept-connect.c | 49 + tests/ptrace_setoptions | 11 +- tests/qual_syscall | 27 + tests/stat | 37 + tests/strace-f | 5 +- util.c | 815 ++-- vsprintf.c | 6 +- 123 files changed, 13237 insertions(+), 12344 deletions(-) create mode 100644 .tarball-version create mode 100644 .version rename COPYRIGHT => COPYING (100%) create mode 100644 linux/aarch64/errnoent1.h create mode 100644 linux/aarch64/ioctlent.h.in create mode 100644 linux/aarch64/ioctlent1.h create mode 100644 linux/aarch64/signalent1.h create mode 100644 linux/aarch64/syscallent.h create mode 100644 linux/aarch64/syscallent1.h delete mode 100644 linux/arm/errnoent1.h delete mode 100644 linux/arm/ioctlent1.h delete mode 100644 linux/arm/signalent1.h delete mode 100644 linux/arm/syscallent1.h create mode 100644 linux/ioctlent-filter.awk create mode 100644 linux/metag/ioctlent.h.in create mode 100644 linux/metag/syscallent.h create mode 100644 linux/mips/syscallent-compat.h create mode 100644 linux/mips/syscallent-n32.h create mode 100644 linux/mips/syscallent-n64.h create mode 100644 linux/mips/syscallent-o32.h create mode 100644 linux/or1k/ioctlent.h.in create mode 100644 linux/or1k/syscallent.h create mode 100644 linux/subcall.h create mode 100644 linux/tile/errnoent1.h create mode 100644 linux/tile/ioctlent1.h create mode 100644 linux/tile/signalent1.h create mode 100644 linux/tile/syscallent1.h create mode 100644 linux/ubi-user.h create mode 100644 linux/xtensa/ioctlent.h.in create mode 100644 linux/xtensa/syscallent.h create mode 100755 tests/net create mode 100644 tests/net-accept-connect.c create mode 100755 tests/qual_syscall create mode 100755 tests/stat diff --git a/.tarball-version b/.tarball-version new file mode 100644 index 00000000..ef216a53 --- /dev/null +++ b/.tarball-version @@ -0,0 +1 @@ +4.8 diff --git a/.version b/.version new file mode 100644 index 00000000..ef216a53 --- /dev/null +++ b/.version @@ -0,0 +1 @@ +4.8 diff --git a/COPYRIGHT b/COPYING similarity index 100% rename from COPYRIGHT rename to COPYING diff --git a/CREDITS b/CREDITS index 98eb5323..399bcafd 100644 --- a/CREDITS +++ b/CREDITS @@ -19,14 +19,18 @@ strace-devel@lists.sourceforge.net mailing list. Anton Blanchard Arkadiusz Miskiewicz Bai Weidong + Ben Noordhuis Bernhard Reutner-Fischer Bo Kullmar Cai Fei Carlos O'Donell Carmelo AMOROSO Chris Metcalf + Chris Zankel + Christian Svensson D.J. Barrow Damir Shayhutdinov + Daniel P. Berrange David Daney David Mosberger-Tang David S. Miller @@ -50,11 +54,13 @@ strace-devel@lists.sourceforge.net mailing list. Holger Hans Peter Freyther Jakub Bogusz Jakub Jelinek + James Hogan Jan Kratochvil Jeff Mahoney Joe Ilacqua Johannes Stezenbach John Hughes + John Spencer Ju"rgen Fluk Juergen Weigert Keith Thompson @@ -69,6 +75,7 @@ strace-devel@lists.sourceforge.net mailing list. Matt Day Matthias Pfaller Maxim Shchetynin + Maxin B. John Michael E Chastain Michael Holzheu Michail Litvak @@ -76,6 +83,7 @@ strace-devel@lists.sourceforge.net mailing list. Mike Frysinger Mike Stroyan Muttley Meen + Namhyung Kim Nate Eldredge Nate Sammons Neil Campbell @@ -100,7 +108,9 @@ strace-devel@lists.sourceforge.net mailing list. Simon Murray Solar Designer Srinivasa Ds + Stanislav Brabec Steve Bennett + Steve McIntyre Thanh Ma Thiemo Seufer Thomas Bogendoerfer @@ -115,5 +125,6 @@ strace-devel@lists.sourceforge.net mailing list. Xiaoning Ding Yang Zhiguo Zach Brown + Zev Weiss Zhang Le Марк Коренберг diff --git a/ChangeLog b/ChangeLog index 408a5541..c135d858 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,2309 @@ +2013-06-03 Dmitry V. Levin + + ioctlent: add UAPI support. + * Makefile.am (IOCTLSORT_INCLUDEDIR): Define. + (ioctlsort): Use it. + * linux/ioctlent.sh (lookup_ioctls): Look into uapi directory tree. + Strip "uapi/" prefix from output path names. + * linux/ioctlent.h.in: Regenerate from v3.9 headers. + * NEWS: Mention it. + + Prepare for 4.8 release. + * NEWS: Update for 4.8 release. + * debian/changelog: 4.8-1. + * strace.spec: 4.8-1. + +2013-06-02 Dmitry V. Levin + + Fix "make dist" on recently added architectures. + * Makefile.am (EXTRA_DIST): Add linux/aarch64/errnoent1.h, + linux/aarch64/ioctlent.h.in, linux/aarch64/ioctlent1.h, + linux/aarch64/signalent1.h, linux/aarch64/syscallent.h, + linux/aarch64/syscallent1.h, linux/metag/ioctlent.h.in, + linux/metag/syscallent.h, linux/or1k/ioctlent.h.in, + linux/or1k/syscallent.h, linux/tile/errnoent1.h, linux/tile/ioctlent1.h, + linux/tile/signalent1.h, linux/tile/syscallent1.h, linux/ubi-user.h, + linux/xtensa/ioctlent.h.in, and linux/xtensa/syscallent.h. + + Fix "make dist" regression introduced by commit v4.7-184-gd648f29. + * Makefile.am (EXTRA_DIST): Add linux/ubi-user.h. + +2013-05-28 Dmitry V. Levin + + Do not suppress signal delivery messages with -qq. + Current implementation of -qq does not allow suppressing exit status + messages without suppressing signal delivery messages, which is not + good. There is a traditional "-e signal=none" syntax that can be used + to suppress all signal delivery messages. + This partially reverts commit v4.7-222-g01997cf. + + * strace.c (trace): Do not suppress signal delivery messages with -qq. + * strace.1: Update documentation about -qq option. + +2013-05-23 Chris Metcalf + + tile: use siginfo_t, not struct siginfo. + As of glibc 2.16, "struct siginfo" is no longer supported, + and "siginfo_t" must be used instead. + + tile: remove MAP_CACHE_xxx support in mem.c. + These flags support functionality in mmap() that has not been + pushed back to the community, and which may or may not eventually + end up being the final community model. In the interim, having + these flags unconditionally present for "#ifdef TILE" just means + that the TILE build breaks if using the community versions of + the kernel and glibc, so just revert the code until such time + as it may end up in the community. + +2013-05-17 Mike Frysinger + + Rename COPYRIGHT to COPYING. + The standard name people have adopted is "COPYING" rather than + "COPYRIGHT". Use that as a lot of license scanning tools look for it. + + * COPYRIGHT: Rename to ... + * COPYING: ... this. + * Makefile.am (EXTRA_DIST): Rename COPYRIGHT to COPYING. + * README: Likewise. + * strace.spec (%files): Likewise. + +2013-05-17 Dmitry V. Levin + + Sync strace.spec and debian/ with packages. + * debian/changelog: Sync with 4.7-1. + * debian/strace.docs: Likewise. + * strace.spec: Sync with 4.7-3. + + Update PTRACE_O_* constants. + * process.c (ptrace_setoptions_flags): Sync with Linux 3.9. + + Update AF_*, PF_*, MSG_*, and TCP_* constants. + * net.c (domains, addrfams, protocols, socktcpoptions): Sync with + Linux 3.9. + +2013-05-14 Dmitry V. Levin + + NOMMU: do not hide startup syscalls unless in -D mode. + On NOMMU systems in "strace PROG" case, we have no way to attach to + the tracee before it calls execve unless in -D mode. That is, the + first execve call is very likely to be missed, and setting + hide_log_until_execve just results to empty log. + + * strace.c (init) [NOMMU_SYSTEM]: Do not set hide_log_until_execve + unless in -D mode. + + Make -D mode work when the Yama LSM is enabled. + * strace.c [HAVE_PRCTL]: Include sys/prctl.h. + (startup_child) [HAVE_PRCTL && PR_SET_PTRACER && PR_SET_PTRACER_ANY]: + In -D mode, allow tracing the process that is going to become the + tracee. + + Update PR_* constants. + * process.c (prctl_options): Add PR_SET_PTRACER. + +2013-05-14 Denys Vlasenko + + Hide startup syscalls. + Tested with "./strace [-D] [-q] [-bexecve] env true", + all cases seem to work. + + * defs.h: Declare new variable: bool hide_log_until_execve. + * strace.c: Define hide_log_until_execve. + Rename skip_startup_execve to skip_one_b_execve. + (startup_child): Do not set skip_one_b_execve = 1 here. + (init): If "strace PROG" case (as opposed to "strace -pPID"), + set skip_one_b_execve and hide_log_until_execve to 1. + (trace): Don't print signal messages if hide_log_until_execve == 1. + * syscall.c (trace_syscall_entering): + Skip syscall printing if hide_log_until_execve == 1. + Reset hide_log_until_execve if we enter execve syscall. + (trace_syscall_exiting): Skip syscall printing if hide_log_until_execve == 1. + +2013-05-13 Daniel P. Berrange + + Allow -q to be repeated for very quiet output. + Even with the -q flag specified, tracing output is still mixed + with messages about signals and process exit status, which is + often irrelevant. Allow the -q option to be repeated to force + the suppression of signals / exit status info too. + + * defs.h: Change 'qflag' from 'bool' to 'unsigned int'. + * strace.1: Document ability to repeat '-q' option. + * strace.c: Allow '-q' to be repeated to quieten process + exit status and signal messages. + +2013-05-11 Dmitry V. Levin + + mips o32: fix syscall table. + * linux/mips/syscallent-o32.h: Add entries for getpmsg, putpmsg, + get_mempolicy, set_mempolicy and vserver. Fix names for umount, + umount2, mmap, mmap2, pread64, pwrite64, sigaltstack and fstatat64 + syscalls. + +2013-05-10 Dmitry V. Levin + + mips n64: fix syscall table. + * linux/mips/syscallent-n64.h: Add entries for get_mempolicy, + set_mempolicy and timerfd syscalls. Fix entry for socket syscall. + Fix names for pread64, pwrite64, shmat, rt_sigsuspend, sigaltstack + and umount2 syscalls. + + mips n32: fix syscall table. + * linux/mips/syscallent-n32.h: Add entries for mbind, get_mempolicy, + set_mempolicy and timerfd syscalls. Fix entry for socket syscall. + Fix handlers for truncate, ftruncate and getdents64 syscalls. + Fix names for pread64, pwrite64, shmat, rt_sigsuspend, sigaltstack, + umount2, and getdents64 syscalls. + +2013-05-08 Dmitry V. Levin + + sync_file_range: fix number of syscall arguments. + * linux/avr32/syscallent.h: Set the number of sync_file_range arguments + to 6. + * linux/bfin/syscallent.h: Likewise. + * linux/hppa/syscallent.h: Likewise. + * linux/i386/syscallent.h: Likewise. + * linux/m68k/syscallent.h: Likewise. + * linux/microblaze/syscallent.h: Likewise. + * linux/mips/syscallent-o32.h: Likewise. + * linux/or1k/syscallent.h: Likewise. + * linux/s390/syscallent.h: Likewise. + * linux/sh/syscallent.h: Likewise. + * linux/powerpc/syscallent.h: Change sync_file_range to + sync_file_range2, set the number of sync_file_range2 arguments to 6. + * linux/tile/syscallent.h: Change sync_file_range to sync_file_range2, + set the number of sync_file_range2 arguments to 4. + * linux/tile/syscallent1.h: Change sync_file_range to sync_file_range2. + update handler. + * linux/xtensa/syscallent.h: Likewise. + + Add syscall entries for new linux syscalls. + * linux/dummy.h: Add printargs aliases for sys_finit_module, sys_kcmp + and sys_sync_file_range2. + * linux/alpha/syscallent.h: Add entries for process_vm_readv + and process_vm_writev. + * linux/bfin/syscallent.h: Likewise. + * linux/arm/syscallent.h: Add entries for sync_file_range2, kcmp + and finit_module. + * linux/hppa/syscallent.h: Add entries for process_vm_readv, + process_vm_writev, kcmp and finit_module. + * linux/tile/syscallent.h: Likewise. + * linux/tile/syscallent1.h: Likewise. + * linux/ia64/syscallent.h: Add entry for finit_module. + * linux/i386/syscallent.h: Add entries for kcmp and finit_module. + * linux/m68k/syscallent.h: Likewise. + * linux/metag/syscallent.h: Likewise. + * linux/microblaze/syscallent.h: Likewise. + * linux/mips/syscallent-n32.h: Likewise. + * linux/mips/syscallent-n64.h: Likewise. + * linux/mips/syscallent-o32.h: Likewise. + * linux/or1k/syscallent.h: Likewise. + * linux/powerpc/syscallent.h: Likewise. + * linux/sh/syscallent.h: Likewise. + * linux/sh64/syscallent.h: Likewise. + * linux/x32/syscallent.h: Likewise. + * linux/x86_64/syscallent.h: Likewise. + * linux/xtensa/syscallent.h: Likewise. + * linux/s390/syscallent.h: Add entries for s390_runtime_instr, kcmp + and finit_module. + * linux/s390x/syscallent.h: Likewise. + * linux/sparc/syscallent.h: Add entries for kern_features, kcmp + and finit_module. + + tests/net: fix portability issues. + * tests/net-accept-connect.c: Fix address length passed to bind() + and connect(). + * tests/net: Update regexps. + + tests: add a test for basic network syscalls. + * tests/.gitignore: Add net-accept-connect, *.o and *.log.*. + * tests/Makefile.am (AM_CFLAGS): New variable. + (check_PROGRAMS): Add net-accept-connect. + (TESTS): Add net. + * tests/net-accept-connect.c: New file. + * tests/net: New file. + + tests: do not skip tests when timeout utility is not available. + * tests/init.sh (check_timeout): New function. + * tests/ptrace_setoptions: Use it. + * tests/qual_syscall: Likewise. + * tests/stat: Likewise. + * tests/strace-f: Likewise. + +2013-05-07 Dmitry V. Levin + + Move subcall decoding configuration out of the common code. + * Makefile.am (EXTRA_DIST): Add linux/subcall.h. + * linux/syscall.h (SYS_socket_subcall): Remove. + (SYS_socket_nsubcalls, SYS_ipc_subcall, SYS_ipc_nsubcalls): Move to ... + * linux/subcall.h: ... new file. + * linux/arm/syscallent.h: Define SYS_socket_subcall, include subcall.h. + * linux/i386/syscallent.h: Likewise. + * linux/m68k/syscallent.h: Likewise. + * linux/powerpc/syscallent.h: Likewise. + * linux/s390/syscallent.h: Likewise. + * linux/s390x/syscallent.h: Likewise. + * linux/sh/syscallent.h: Likewise. + * linux/sh64/syscallent.h: Likewise. + * linux/sparc/syscallent.h: Likewise. + + Suggested by Mike Frysinger and Chris Metcalf. + + sparc: remove some unused declarations and macros. + * linux/syscall.h [SPARC || SPARC64] (sys_msgsys, sys_semsys, + sys_shmsys): Remove declarations. + [SPARC || SPARC64] (SYS_semsys_subcall, SYS_semsys_nsubcalls, + SYS_msgsys_subcall, SYS_msgsys_nsubcalls, SYS_shmsys_subcall, + SYS_shmsys_nsubcalls): Remove macros. + +2013-05-07 Mike Frysinger + + mips: fix build regression. + The recent commit (2690fadc8b35190dddd29274a7405bac13adc469) shuffled + the mips headers around causing it to check the ABI defines before it + included the header which set those up. Now all mips builds fail with: + In file included from count.c:36:0: + defs.h:48:4: error: #error Unsupported _MIPS_SIM + + * defs.h [MIPS]: Move sgidefs.h above _MIPS_SIM check. + +2013-05-07 James Hogan + + metag: rename llseek syscall to _llseek. + The raw llseek syscall is called _llseek from userland, so fix the + naming of it for metag to allow the stat test to pass. + + * linux/metag/syscallent.h: Rename llseek syscall to _llseek. + + metag: disable socket and ipc subcall support. + The metag architecture also uses dedicated syscalls and doesn't need to + multiplex ipc and socket subcalls. + + * linux/syscall.h [METAG]: Do not define SYS_socket_subcall and + SYS_ipc_subcall. + +2013-05-07 Dmitry V. Levin + + pread, pwrite: fix number of syscall arguments. + The number of pread and pwrite arguments depends on architecture and + personality. For 64bit and ilp32 it equals to 4, for unaligned + 32bit it equals to 5, and for aligned 32bit it equals to 6. + + * linux/aarch64/syscallent1.h: Change the number of pread and pwrite + arguments to 4. + * linux/alpha/syscallent.h: Likewise. + * linux/mips/syscallent-n32.h: Likewise. + * linux/mips/syscallent-n64.h: Likewise. + * linux/s390x/syscallent.h: Likewise. + * linux/sh64/syscallent.h: Likewise. + * linux/tile/syscallent.h: Likewise. + * linux/x32/syscallent.h: Likewise. + * linux/x86_64/syscallent.h: Likewise. + * linux/or1k/syscallent.h: Change the number of pread and pwrite + arguments to 5. + + preadv, pwritev: fix number of syscall arguments. + The number of preadv and pwritev arguments depends on architecture and + personality. For 64bit and ilp32 it equals to 4, for unaligned 32bit + it equals to 5, and for aligned 32bit it equals to 6. + + * linux/aarch64/syscallent1.h: Change the number of preadv and pwritev + arguments to 4. + * linux/alpha/syscallent.h: Likewise. + * linux/ia64/syscallent.h: Likewise. + * linux/mips/syscallent-n32.h: Likewise. + * linux/mips/syscallent-n64.h: Likewise. + * linux/s390x/syscallent.h: Likewise. + * linux/sh64/syscallent.h: Likewise. + * linux/tile/syscallent.h: Likewise. + * linux/x32/syscallent.h: Likewise. + * linux/x86_64/syscallent.h: Likewise. + * linux/powerpc/syscallent.h: Change the number of preadv and pwritev + arguments to 6. + * linux/sh/syscallent.h: Likewise. + * linux/xtensa/syscallent.h: Likewise. + + ftruncate64, truncate64: fix number of syscall arguments. + The number of ftruncate64/truncate64 arguments depends on architecture + and personality. For 64bit and ilp32 it equals to 2, for unaligned + 32bit it equals to 3, and for aligned 32bit it equals to 4. + + * linux/or1k/syscallent.h: Change the number of ftruncate64 and + truncate64 arguments to 3. + * linux/sh/syscallent.h: Likewise. + * linux/sh64/syscallent.h: Change ftruncate64 and truncate64 handlers. + * linux/sparc/syscallent.h: Change ftruncate64 handler, change the + number of its arguments to 3. + * linux/xtensa/syscallent.h: Change the number of ftruncate64 and + truncate64 arguments to 4. + + fallocate: fix number of syscall arguments. + The number of fallocate arguments depends on architecture and + personality. For 64bit and ilp32 it equals to 4, + for 32bit it equals to 6. + + * linux/aarch64/syscallent1.h: Change the number of fallocate arguments + to 4. + * linux/alpha/syscallent.h: Likewise. + * linux/mips/syscallent-n32.h: Likewise. + * linux/mips/syscallent-n64.h: Likewise. + * linux/s390x/syscallent.h: Likewise. + * linux/sh64/syscallent.h: Likewise. + * linux/tile/syscallent.h: Likewise. + * linux/x32/syscallent.h: Likewise. + * linux/x86_64/syscallent.h: Likewise. + * linux/microblaze/syscallent.h: Set fallocate handler and flags. + + fadvise64, fadvise64_64: fix handlers and number of syscall arguments. + The number of fadvise64 arguments depends on architecture and + personality. For 64bit and ilp32 it equals to 4, for unaligned + 32bit it equals to 5, and for aligned 32bit it equals to 6. + + The number of fadvise64_64 arguments is 4 for 64bit and ilp32, for + unaligned 32bit and most of aligned 32bit it equals to 6, and for + mips o32 it equals to 7. + + * linux/alpha/syscallent.h: Set fadvise64 handler. + * linux/s390/syscallent.h: Likewise. + * linux/hppa/syscallent.h: Set fadvise64_64 handler, change the number + of syscall arguments to 6. + * linux/ia64/syscallent.h: Change the number of fadvise64 arguments + to 4. + * linux/mips/syscallent-n32.h: Likewise. + * linux/tile/syscallent1.h: Change the number of fadvise64 arguments + to 5. + * linux/mips/syscallent-o32.h: Change the number of fadvise64_64 + arguments to 7. + * linux/s390x/syscallent.h: Change fadvise64_64 handler. Set fadvise64 + handler. Change numbers of fadvise64 and fadvise64_64 arguments to 4. + * linux/sh64/syscallent.h: Change fadvise64_64 handler. + Change numbers of fadvise64 and fadvise64_64 arguments to 4. + * linux/sparc/syscallent.h: Set fadvise64 and fadvise64_64 handlers, + change numbers of their arguments to 5 and 6. + * linux/x86_64/syscallent.h: Change fadvise64 handler. + + mips o32: raise the max number of syscall arguments to 7. + On mips o32, fadvise64_64 takes 7 arguments. + + * defs.h [LINUX_MIPSO32]: Raise MAX_ARGS to 7. + + mips: split syscallent.h. + linux/mips/syscallent.h consisted of several parts that had little in + common. Split them into separate files to ease maintenance. + + * linux/mips/syscallent-compat.h: New file. + * linux/mips/syscallent-n32.h: Likewise. + * linux/mips/syscallent-n64.h: Likewise. + * linux/mips/syscallent-o32.h: Likewise. + * linux/mips/syscallent.h: Include them. + * Makefile.am (EXTRA_DIST): Add them. + + readahead: fix number of syscall arguments. + The number of readahead arguments depends on architecture and + personality. For 64bit and ilp32 it equals to 3, for unaligned 32bit it + equals to 4, and for aligned 32bit it equals to 5. + + * linux/aarch64/syscallent1.h: Set number of readahead arguments to 3. + * linux/alpha/syscallent.h: Likewise. + * linux/ia64/syscallent.h: Likewise. + * linux/s390x/syscallent.h: Likewise. + * linux/sh64/syscallent.h: Likewise. + * linux/x32/syscallent.h: Likewise. + * linux/x86_64/syscallent.h: Likewise. + * linux/or1k/syscallent.h: Set number of readahead arguments to 4. + * linux/sh/syscallent.h: Likewise. + * linux/tile/syscallent.h: Likewise. + * linux/xtensa/syscallent.h: Set number of readahead arguments to 5. + +2013-05-06 Dmitry V. Levin + + linux/syscall.h: make subcall decoding configuration more readable. + * linux/syscall.h: Inverse and sort the subcall ifdef, + add a comment why subcall decoding support is not enabled + on some architectures. + +2013-05-06 Chris Zankel + + xtensa: disable socket and ipc subcall support. + The Xtensa architecture also uses dedicated syscalls and doesn't + need to multiplex ipc and socket subcalls. + + * linux/syscall.h [XTENSA]: Do not define SYS_socket_subcall and + SYS_ipc_subcall. + +2013-05-06 Dmitry V. Levin + + Fix syscall flags. + * linux/aarch64/syscallent1.h: Fix syscall flags for send. + * linux/alpha/syscallent.h: Fix syscall flags for fchdir, getcwd, + oldumount, sigaltstack, umount, uselib, and utimes. + * linux/arm/syscallent.h: Fix syscall flags for close, creat, dup, dup2, + fchdir, fchmod, fchown, fchown32, fcntl, fcntl64, fdatasync, flock, + fsetxattr, fsync, getdents, getdents64, ioctl, oldfstat, oldselect, + open, pipe, poll, pread, pwrite, read, readahead, readdir, readv, + select, socketcall, write, and writev. + * linux/avr32/syscallent.h: Fix syscall flags for inotify_init and + unshare. + * linux/bfin/syscallent.h: Fix syscall flags for pread64 and pwrite64. + * linux/hppa/syscallent.h: Fix syscall flags for fchdir, flistxattr, + getcwd, pause, signal, umount2, uselib, utime, and vfork. + * linux/ia64/syscallent.h: Fix syscall flags for creat, fchdir, + lstat, umount, uselib, and utimes. Fix syscall handlers for + fgetxattr, flistxattr, fremovexattr, and fsetxattr. + * linux/m68k/syscallent.h: Fix syscall flags for close, creat, dup, + dup2, fchdir, fchmod, fchown, fchown32, fcntl, fcntl64, fdatasync, + flock, fsetxattr, getdents, ioctl, oldfstat, oldselect, open, pipe, + poll, pread64, pwrite64, read, readahead, readdir, readv, select, + socketcall, write, and writev. + * linux/metag/syscallent.h: Fix syscall flags for fanotify_init, + prlimit64, process_vm_readv, process_vm_writev, and quotactl. + * linux/microblaze/syscallent.h: Fix syscall flags for close, creat, + dup, dup2, fchdir, fchmod, fchown, fchown32, fcntl, fcntl64, + fdatasync, flock, fsetxattr, getdents, ioctl, oldfstat, oldselect, + open, perf_event_open, pipe, poll, pread64, pwrite64, read, readahead, + readdir, readv, select, socketcall, write, and writev. + * linux/mips/syscallent.h: Fix syscall flags for close, creat, dup, + dup2, fchdir, fchmod, fchown, fcntl, fcntl64, fdatasync, flock, + fsetxattr, getdents, getdents64, getxattr, ioctl, lgetxattr, + listxattr, llistxattr, lremovexattr, lsetxattr, oldfstat, open, pipe, + pivot_root, poll, pread, pwrite, read, readahead, readv, removexattr, + select, setxattr, socketcall, statfs, write, and writev. + * linux/or1k/syscallent.h: Fix syscall flags for fchdir and quotactl. + * linux/powerpc/syscallent.h: Fix syscall flags for fchdir. + * linux/sh/syscallent.h: Fix syscall flags for getcwd. + * linux/sparc/syscallent.h: Fix syscall flags for getresgid, getresuid, + setresgid, setresgid32, and setresuid. + * linux/xtensa/syscallent.h: Fix syscall flags for close, creat, dup, + dup2, fallocate, fchdir, fchmod, fchown, fcntl, fcntl64, fdatasync, + flock, fsetxattr, fstatfs, fstatfs64, fsync, getdents, getdents64, + ioctl, open, pipe, pivot_root, poll, pread64, pwrite64, read, + readahead, readv, rt_sigreturn, select, setfsgid, setfsuid, setuid, + swapoff, times, utime, write, and writev. + + tests/stat: enhance regexps. + * tests/stat: Enhance regexps that check tracing of stat/stat64 and + fstatat/fstatat64 syscalls. + +2013-05-06 Chris Metcalf + + tests/stat: support fstatat syscall for stat() + Newer Linux architectures don't support the stat/stat64 syscalls. + Instead they use fstatat() with AT_FDCWD and an extra flags argument. + Support seeing this output in the 'strace -efile' test. + + As part of this change, use "grep -E -x" syntax consistently for + all stat tests, since the number of \(foo\)\? expressions was becoming + pretty unwieldy. + + * tests/stat: Update stat/stat64 check regexp to handle architectures + that use fstatat instead. Use "grep -E -x" syntax consistently. + +2013-05-06 Dmitry V. Levin + + ARM OABI: fix 64-bit arguments decoding. + ARM OABI and ARM EABI have different function parameters passing rules, + see commit v4.6-11-g7a5b08f for details. + + * util.c (printllval): Do not align argument number in case of ARM OABI. + * file.c (sys_fadvise64_64): Likewise. + +2013-05-06 Mike Frysinger + + printllval: fix 64bit unpacking on mips/o32 and xtensa. + The mips/o32 ABI and xtensa arch also do 64bit aligning, so add it to the + printllval list for this. + + Normally for sys_fadvise64_64 we'd handle the same list of arches, but + mips/o32 ABI is funky and doesn't shift -- it has 7 args. So just add + xtensa to it. + + * file.c (sys_fadvise64_64): Add XTENSA to the shifted list. + * util.c (printllval): Add LINUX_MIPSO32 and XTENSA to the shifted list. + +2013-05-06 Chris Metcalf + + tile: disable socket and ipc subcall support. + The tile arch just has the dedicated syscalls, so disable + the logic for parsing subcalls. + + * linux/syscall.h [TILE]: Do not define SYS_socket_subcall and + SYS_ipc_subcall. + +2013-05-06 Mike Frysinger + + Blackfin: disable socketcall and ipc subcall support. + The Blackfin arch does not have a socketcall or ipc subcall + (it has dedicated syscalls broken out), so disable the logic for it. + + * linux/syscall.h [BFIN]: Do not define SYS_socket_subcall and + SYS_ipc_subcall. + +2013-05-05 Mike Frysinger + + s390: fix # of args truncate64/ftruncate64 takes. + * linux/s390/syscallent.h: Change nargs to 3 for truncate64/ftruncate64. + + mtd: clamp ubi name strings. + Since the length fields with the ubi volnames are signed 16bit values, + make sure we clamp that number to the size of the buffer we've allocated + on the stack to prevent buffer overflows. + + * mtd.c (ubi_ioctl): Clamp length to string_quote to 0/UBI_MAX_VOLUME_NAME. + Check the return of string_quote and tweak the output accordingly. + +2013-05-04 Dmitry V. Levin + + printxval: support more architectures. + * configure.ac: Define SIZEOF_LONG_LONG. + * util.c (printllval): Handle all architectures with sizeof(long) > 4 + and sizeof(long) == sizeof(long long). + +2013-05-04 Mike Frysinger + + Fix building for sparc64 targets. + * util.c (printllval): Handle SPARC64 define. + + Fix building for mips n64 targets. + * util.c (printllval): Handle LINUX_MIPSN64 define. + +2013-05-03 Dmitry V. Levin + + hppa: fix stat64 and fstat64 decoding. + * file.c [HPPA]: Do not redefine stat64 to hpux_stat64. + + arm, aarch64, ppc: fix printllval-based decoders. + * util.c (printllval) [ARM || POWERPC]: Align argument number. + [AARCH64]: Align argument number in 32bit mode. + * file.c (sys_fadvise64_64) [ARM || POWERPC]: Remove no longer needed + printllval workaround. + [AARCH64]: Fix printing POSIX_FADV_* constants in 32bit mode. + +2013-05-02 Mike Frysinger + + Decode mtd/ubi ioctls. + Been playing with UBI of late and it'd help if I could see what it was + doing. Not entirely sure about the decoding of UBI_IOCVOLUP -- it takes + a pointer to a 64bit value, not a strict. + + * util.c (MAX, MIN): Move to ... + * defs.h (MAX, MIN): ... here. + (CLAMP): Define. + (ubi_ioctl): New prototype. + * ioctl.c (ioctl_decode): Call ubi_ioctl when code is 'o' or 'O'. + * mtd.c: Include ubi user API header. + (ubi_volume_types): New enum decode. + (ubi_volume_props): Likewise. + (ubi_ioctl): Define. + * linux/ubi-user.h: Import from linux 3.8. + + test: add mtd/ubi test helpers. + I used these to develop the mtd/ubi ioctl decoders. + + * test/.gitignore: Add mtd/ubi. + * test/Makefile: Declare all tests in a PROGS var. + Declare build targets .PHONY. + (all): Depend on $(PROGS) instead of hardcoded list. + (clean): Remove $(PROGS) instead of hardcoded list. + * test/mtd.c: New file. + * test/ubi.c: Likewise. + + test: include headers for used funcs. + These funcs use things like wait/write/read/strcmp but sometimes + don't include the right header for them. + + * test/Makefile: Add -Wall to CFLAGS. + * test/clone.c: Include unistd.h. + * test/fork.c: Include sys/wait.h. + * test/sig.c: Include unistd.h. + * test/sigkill_rain.c: Include sys/wait.h. + * test/vfork.c: Include sys/wait.h. + * test/wait_must_be_interruptible.c: Include string.h + +2013-05-02 Dmitry V. Levin + + ia64: fix compilation warnings introduced by commit v4.7-174-g44f0ed1. + * linux/ia64/syscallent.h: Undefine sys_oldlstat, sys_lstat and + sys_lstat64 before redefining them to printargs. + + Reported-by: Mike Frysinger + +2013-05-02 Mike Frysinger + + tests: stat: fix clean up of sample file. + * tests/stat: Also rm the sample file at the end of the test. + + Ignore more files. + * .gitignore: Add gdb related files. + * tests/.gitignore: Ignore test logs. + +2013-05-02 Dmitry V. Levin + + x32: fix decoding of i386 truncate and ftruncate syscalls. + * linux/x32/syscallent1.h: Remove sys_*truncate64 redirections. + + x32: fix printllval-based decoders of i386 syscalls. + * util.c (printllval) [X32]: Handle i386 personality. + + tests: add basic test for ftruncate, lseek and stat family syscalls. + * tests/stat: New test. + * tests/Makefile.am (TESTS): Add stat. + +2013-05-01 Dmitry V. Levin + + x32: fix build regressions introduced by commit v4.7-96-g8435d67. + * desc.c (printflock) [X32]: Add special handling required for + this architecture with sizeof(long) < sizeof(off_t). + * file.c [X32] (struct stat64): Add __attribute__((packed)). + [X32] (HAVE_STAT64): Define. + (printstat) [X32]: Redirect to printstat64. + (printstat64) [X32]: Use "struct stat" instead of "struct stat64". + [X32] (realprintstat64): Rename to printstat64_x32. + (sys_stat64, sys_fstat64) [X32]: Remove second definitions of these + functions. Call printstat64_x32 instead of printstat64 + * linux/x32/syscallent.h: Fix handlers for truncate and ftruncate. + + Alias sys_*lstat* syscall printing functions. + * file.c (sys_lstat, sys_lstat64, sys_oldlstat): Remove. + * linux/dummy.h: Move !HAVE_STRUCT___OLD_KERNEL_STAT aliases forward. + (sys_lstat): Alias to sys_stat. + (sys_lstat64): Alias to sys_stat64. + (sys_oldlstat): Alias to sys_oldstat. + * linux/syscall.h (sys_lstat, sys_lstat64, sys_oldlstat): Remove. + * linux/x32/syscallent1.h (sys_lstat64): Remove. + + x86_64: decode __old_kernel_stat based syscalls. + * linux/x86_64/syscallent1.h: Remove sys_old*stat redirections. + + x32: fix decoding of __old_kernel_stat based syscalls. + * file.c [X32] (struct __old_kernel_stat): Define. + * linux/x32/syscallent1.h: Remove sys_old*stat redirections. + +2013-05-01 James Hogan + + test/threaded_execve: fix on metag. + The metag ABI has stacks growing upwards so clone expects the stack + argument to point at the bottom of the stack instead of the top. + + * test/threaded_execve.c [__metag__]: Define clone2 differently + to avoid a segfault at runtime. + + test/skodic: make a bit more portable. + * test/skodic.c (main): Don't use MAP_FIXED since valid virtual addresses + vary between architectures (as far as I can tell the use of MAP_FIXED is + not relevant to the test). Also don't assume the file desriptor returned + by open call is 3 when passing it to mmap. + +2013-05-01 Mike Frysinger + + printllval: handle s390x. + This is a 64bit arch w/no personalities, so fix printing. + It can now trace a simple call like readahead: + $ cat test.c + main(){readahead(-1, (unsigned long long)1 << 50, 0);} + $ gcc test.c + $ ./strace -ereadahead ./a.out + readahead(-1, 1125899906842624, 0) = -1 EBADF (Bad file descriptor) + + * util.c (printllval): Handle S390X define. + + Stop using old AM_CONFIG_HEADER macro. + Building with automake-1.13 throws an error: + configure.ac:6: error: 'AM_CONFIG_HEADER': this macro is obsolete. + You should use the 'AC_CONFIG_HEADERS' macro instead. + + * configure.ac (AM_CONFIG_HEADER): Rename to AC_CONFIG_HEADERS. + +2013-04-30 Dmitry V. Levin + + build: introduce git-version-gen. + * .gitignore: Add .version. + * Makefile.am (EXTRA_DIST, BUILT_SOURCES): Add $(srcdir)/.version. + Add rules to check NEWS, generate $(srcdir)/.version and + $(distdir)/.tarball-version files. + Change ChangeLog and CREDITS generation rules to depend on + $(srcdir)/.version instead of $(srcdir)/.git/refs/heads/*. + * NEWS: Add dates to recent releases. + * configure.ac (AC_INIT): Use git-version-gen. + (AM_INIT_AUTOMAKE): Remove check-news. + * git-version-gen: Import from gnulib. + * make-dist: Check NEWS. + + Makefile.am: sort long lists to ease maintenance. + * Makefile.am (strace_SOURCES, EXTRA_DIST): Sort, place one list element + per line. + + build: fix "make dist" regression introduced by commit v4.7-105-g7270de5 + * Makefile.am (EXTRA_DIST): Remove linux/arm/syscallent1.h, + linux/arm/signalent1.h, linux/arm/ioctlent1.h and linux/arm/errnoent1.h. + + build: fix "make dist" regression introduced by commit v4.7-29-g17e3860. + * Makefile.am (EXTRA_DIST): Add linux/ioctlent-filter.awk. + +2013-04-30 Mike Frysinger + + Blackfin: tweak sram_alloc syscall decode. + * system.c (sys_sram_alloc): The 2nd argument of sram_alloc syscall + is a bit field, not a specific value, so decode it as such. + +2013-03-31 Zev Weiss + + Print io_submit() offsets in decimal. + This makes output formatting more consistent with pread()/pwrite(), + which print their offset parameters in decimal. + + * desc.c (sys_io_submit): Change offset output format from %llx to %lld. + +2013-03-30 Andreas Schwab + + Fix building outside source directory. + The file linux/ioctlent.h is generated in the build directory, so + "../ioctlent.h" won't find it. + + * linux/aarch64/ioctlent1.h: Remove "../" from include file name. + * linux/powerpc/ioctlent1.h: Likewise. + * linux/tile/ioctlent1.h: Likewise. + * linux/x32/ioctlent1.h: Likewise. + * linux/x86_64/ioctlent1.h: Likewise. + * linux/x86_64/ioctlent2.h: Likewise. + + AArch64: Fix printing of long long value. + * util.c (printllval): Fix printing of long long values on + AArch64. + +2013-03-27 Dmitry V. Levin + + Update PR_* constants. + * process.c (prctl_options): Add more PR_* constants from linux/prctl.h. + +2013-03-25 Chris Zankel + + Add support for the XTENSA architecture. + * configure.ac: Add XTENSA to the list of supported architectures. + * defs.h: Add XTENSA support. + * linux/xtensa/syscallent.h: New file. + * linux/xtensa/ioctlent.h.in: Likewise. + * process.c (struct_user_offsets): Add XTENSA support. + * signal.c (sys_sigreturn): Likewise. + * syscall.c (printcall, get_scno, get_syscall_args, + get_syscall_result, get_error): Likewise. + * util.c (change_syscall): Likewise. + +2013-03-22 Denys Vlasenko + + Add example script which builds static (possibly cross-compiled) strace. + +2013-03-21 Dmitry V. Levin + + Use 64-bit versions of stat, readdir and setrlimit functions when available + strace already has a mechanism to use fopen64 for output when the 64-bit + version of fopen is available on 32-bit architectures. Apply this + mechanism for other three functions to make strace fully adopted for + 64-bit types. + + * strace.c (struct_stat, stat_file, struct_dirent, read_dir, + struct_rlimit, set_rlimit): New macros. + (startup_attach): Use read_dir. + (startup_child): Use struct_stat and stat_file. + (main): Use struct_rlimit and set_rlimit. + +2013-03-20 Dmitry V. Levin + + Do not use struct dirent in readdir decoding. + struct dirent from libc should not be used for umove'ing into because it + contains fixed size d_name. + + * file.c (printdir): Rename to print_old_dirent. + [SH64]: Decode using struct kernel_dirent. + [!SH64]: Decode using an open-coded struct with 32-bit d_ino and d_off. + (sys_readdir): Update. + + Do not use off_t in sendfile decoding. + sendfile parser used to decode off_t* parameter as a pointer to host + off_t type. With this change, it is decoded as a pointer to target long + type. + + * io.c (print_off_t): New function. + (sys_sendfile): Use it. + * linux/aarch64/syscallent1.h: Use sys_sendfile64 for sendfile decoding. + * linux/tile/syscallent.h: Likewise. + * linux/x32/syscallent.h: Likewise. + * linux/x86_64/syscallent.h: Likewise. + * linux/hppa/syscallent.h: Use sys_sendfile64 for sendfile64 decoding. + * linux/metag/syscallent.h: Correct sendfile syscall name. + * linux/or1k/syscallent.h: Likewise. + +2013-03-18 Dmitry V. Levin + + Fix build with older versions of libaio.h. + * configure.ac: When libaio.h is available, check for + struct iocb.u.c.flags, IO_CMD_PWRITE and IO_CMD_PWRITEV. + * desc.c (print_common_flags): Check for HAVE_STRUCT_IOCB_U_C_FLAGS. + (sys_io_submit): Check for HAVE_DECL_IO_CMD_PWRITE and + HAVE_DECL_IO_CMD_PWRITEV. + + Fix io_submit decoding. + * desc.c (print_common_flags, sys_io_submit): Add missing ", " to + SUB_COMMON output, remove extra ", " from SUB_VECTOR output. + +2013-03-18 Maxin B. John + + tests: relax check_prog to allow timeout command provided by busybox. + Busybox version of timeout doesn't have --version option. + Relax check_prog to handle those cases. + + * tests/init.sh (check_prog): Use type builtin to check program + availability. + +2013-03-18 Dmitry V. Levin + + Reorganize get_regs code, hopefully without functional changes. + * syscall.c [I386 || ARM || OR1K || METAG] (ARCH_REGS_FOR_GETREGSET): + New macro. + (get_regset): Implement for AARCH64, METAG, OR1K and X32. + (get_regs) [AARCH64 || METAG || OR1K || X32]: Use it. + + arm, i386: use PTRACE_GETREGSET if available. + * syscall.c [ARM || I386 || X86_64] (get_regset): New function. + (get_regs) [ARM || I386 || X86_64]: Use it. + + Include and on all architectures. + * syscall.c: Include and on all architectures. + + x86-64: enhance PTRACE_GETREGSET test. + * syscall.c (get_regs) [X86_64]: Check whether PTRACE_GETREGSET + works regardless of the kernel version. + + x32: use PTRACE_GETREGSET unconditionally. + * syscall.c (get_regs) [X32]: Assume that PTRACE_GETREGSET always works + regardless of the kernel version. + + x86-64, x32: do not include linux/ptrace.h unnecessarily. + * syscall.c [X86_64 || X32]: Stop including linux/ptrace.h. + + i386, tile, x32: do not redefine ptrace prototype. + * defs.h [I386 || TILE || X32]: Use ptrace prototype from sys/ptrace.h. + + ptrace: decode note segment descriptor types. + * configure.ac (AC_CHECK_HEADERS): Add elf.h. + * process.c: Include elf.h. + (nt_descriptor_types): New xlat structure. + (sys_ptrace): Use it. + +2013-03-14 Dmitry V. Levin + + Update MADV_* constants. + * mem.c (madvise_cmds): Add more MADV_* constants from + asm-generic/mman-common.h + + Reported-by: Robin Hack + +2013-03-07 Denys Vlasenko + + Tweaks for -c: fixed setitimer/getitimer hack; optimized call_summary_pers() + count_syscall() was calling setitimer/getitimer once in order to find + smallest "tick" OS uses in time accounting, in order to use it + for syscalls which apparently spent less than that time in syscall. + The code assumed that this "tick" is not zero... but it is zero + on linux-3.6.11. Which means that this hack doesn't work... + + At least this change prevents this measurement from being done + _repeatedly_, by initializing one_tick to -1, not 0. + + While at it, added comments in count_syscall() explaining what we are doing. + + Optimized call_summary_pers() a bit, by eliminating redundant tv -> float + conversions, and prevented 0.0/0.0 which was resulting in "% time" + being shown as "-nan" if total CPU time spent was 0.000000 + (try "strace -c /bin/true"). + + The code seems to seriously underestimate CPU usage: + "strace -c ls -lR /usr/share >/dev/null" shows total time spent + in syscalls to be only ~10..20% of what "time ls -lR /usr/share >/dev/null" + shows. + + It might be useful to have a mode where we show wall clock time + spent in syscalls, not CPU time. It might also be more accurate. + + text data bss dec hex filename + 245019 676 5708 251403 3d60b strace_old + 244923 684 5676 251283 3d593 strace + +2013-03-06 Denys Vlasenko + + Open-code isprint(c) and isspace(c) + We don't call setlocale, thus we always use C locale. + But libc supports various other locales, and therefore + its ctype interface is general and at times inefficient. + For example, in glibc these macros result in function call, + whereas for e.g. isprint(c) just c >= ' ' && c <= 0x7e + suffices. + + By open-coding ctype checks (we have only 4 of them) + we avoid function calls, we get smaller code: + + text data bss dec hex filename + 245127 680 5708 251515 3d67b strace_old + 245019 676 5708 251403 3d60b strace + + and we don't link in ctype tables (beneficial for static builds). + + Makefile: add commented-out tweak to generate link map. + + Stop using a large static buffer in getfdpath. + text data bss dec hex filename + 245075 680 9836 255591 3e667 strace_old + 245143 680 5708 251531 3d68b strace + +2013-03-05 Denys Vlasenko + + Fix wrongly indented closing curly brace. No code changes. + + strace_vfprintf: if malloc fails, exit gracefully. + +2013-03-05 Dmitry V. Levin + + Use sysconf(_SC_PAGESIZE) instead of hardcoded PAGE_SHIFT. + PAGE_SHIFT couldn't be reliably obtained at compile time, + thanks to Chris Metcalf for the hint. + + * mem.c: Do not include . + [SH64] Do not include . + (get_pagesize): New function. + (sys_mmap_pgoff, sys_old_mmap_pgoff): Use it. + +2013-03-05 Denys Vlasenko + + Emit better message for ERESTARTNOHAND return. + + Disable STREAMS syscalls for non-SPARC. + text data bss dec hex filename + 3002 0 1024 4026 fba stream.o.old + 1729 0 1024 2753 ac1 stream.o + + Fix printstrbufarg's address argument to be long, not int. + + Remove variable tracing_paths and check in pathtrace_match. + + Use dynamically-sized selected[] array for -P PATH. + While at it, added a small optimization of not remembering + the path twice if it happens to be the same. + + text data bss dec hex filename + 245111 680 10860 256651 3ea8b strace_old + 245075 680 9804 255559 3e647 strace + + metag,or1k: whitesace style fix. no code changes. + + Assorted fixes to syscallent.h. + or1k was missing TM on many memory-related syscalls + sys_lookup_dcookie is 3-arg on 64-bit arches, and isn't TF + sys_recvmsg is 3-arg on all arches + sys_nfsservctl is 3-arg on all arches + sys_timerfd_create is 2-arg on all arches + sys_[f]truncate64 is 4-arg or 3-arg, never 5-arg + truncate64 is TF + sys_[l]lseek is TD + fstat[64] is TD + +2013-03-05 James Hogan + + Add support for Imagination Technologies Meta. + Add support for Imagination Technologies Meta architecture (the + architecture/ABI is usually referred to as metag in code). The Meta + Linux kernel port is in the process of being upstreamed for v3.9 so it + uses generic system call numbers. + + sys_lookup_dcookie writes a filename to buffer argument, so I've set + TF flag. + nfsservctl appears to be set to sys_ni_syscall in asm-generic/unistd.h + so I've left it blank. + truncate64/ftruncate64/pread64/pwrite64/readahead have unaligned 64bit + args which are packed tightly on metag, so less arguments on metag. + fchdir/llseek takes a file descriptor so s/TF/TD/ + sync_file_range has 2 64bit args so uses 6 args, so s/4/6/ + timerfd_create/msgget/msgctl/msgrcv/semget/segtimedop/semop/shmget/ + shmctl/shmat/shmdt/recvmsg/migrate_pages have different number of args. + oldgetrlimit is just getrlimit for metag. + add TM flag to various memory syscalls. + metag doesn't directly use sys_mmap_pgoff for mmap2. + prlimit64/process_vm_readv/process_vm_writev take a pid so add TP flag. + fanotify_init doesn't appear to take a file descriptor so remove TD. + Add kcmp syscall. + + Cc: Christian Svensson + +2013-03-01 Denys Vlasenko + + umovestr: speed up check for NUL byte in the fetched word. + +2013-03-01 Dmitry V. Levin + + Fix trace=set regression introduced by commit v4.7-111-g9cbc15b. + * syscall.c (qual_syscall, qualify): Pass personality down to + qualify_one. + * tests/qual_syscall: New test. + * tests/Makefile.am (TESTS): Add qual_syscall. + +2013-03-01 Chris Metcalf + + tile: handle printllval like x86_64 or powerpc64. + Without this fix the tilegx build fails when it hits the new #error + about SIZEOF_LONG > 4. + + * util.c (printllval): Fix printing of long long values on TILE. + +2013-02-27 Denys Vlasenko + + Make -b take SYSCALL param, document it in --help and in manpage. + To not waste an option letter for just one trick, + extend -b to take a parameter: + "on which syscalls do you want to detach?". + Currently supports only execve. + + While at it, fixed (by removing non-Linux and stale info) + and extended manpage text about -f. + +2013-02-26 Dmitry V. Levin + + Cleanup umoven and umovestr. + Cleanup sloppy error handling. + + First, EFAULT kind of errors from process_vm_readv by itself is not + something unusual, so a warning message will not be issued unless a + short read is detected. + + Second, clients of umoven and umovestr are not prepared to detect and + handle short reads that can happen in these functions. The most safe + way to handle them is to return an error code. + + * util.c (umoven, umovestr): Cleanup handling of errors coming from + process_vm_readv and PTRACE_PEEKDATA. + + pathtrace: fix umovestr return code check. + * pathtrace.c (upathmatch): Only NUL-terminated strings can be + path-matched, so fix the umovestr return code check to filter out + unsuitable strings. + + Fix compilation errors uncovered by -Werror=enum-compare. + This fixes regression introduced by commit v4.7-111-g9cbc15b. + + * syscall.c: Merge all nsyscalls* enums into single enum. + Likewise merge nerrnos*, nsignals*, and nioctlents* into single enums. + +2013-02-26 Denys Vlasenko + + Mass replace error_msg("%s", "literal") -> error_msg("literal") + There is no need to print literal strings through "%s". + Only untrusted strings such as filenames need that. + +2013-02-26 Ben Noordhuis + + Make umoven report success as 0, not >=0, stop returning success on partial reads + umoven() uses process_vm_readv() when available but it returns the + return value of that syscall, which is the number of bytes copied, + while its callers expect it to simply return zero on success. + + It was causing syscalls that take a user-space argument to print + the abbreviated version, e.g.: + + epoll_ctl(5, EPOLL_CTL_ADD, 10, {...}) + + Instead of: + + epoll_ctl(5, EPOLL_CTL_ADD, 10, {EPOLLIN, {u32=10, u64=10}}) + + * util.c (umoven): Make umove[n] report success as 0, not >=0, + stop returning "success" on partial reads. + +2013-02-26 Denys Vlasenko + + Assorted NOMMU fixes. + With -D, strdup'ing of pathname is necessary only on NOMMU. + + Don't set skip_startup_execve to 1 if NOMMU and not in daemonized mode + (try "strace [-D] -b env echo HI" to see whether we detach on correct execve). + + Fix test_ptrace_FOO shortcuts on NOMMU to always assume success + and _properly_ set all variables. + + Shorten help text - no need to show deprecated option -F. + +2013-02-23 Denys Vlasenko + + Merge adjacent tprint's. + + Correct i > MAX_NSYSCALLS commparison: should be i >= MAX_NSYSCALLS. + +2013-02-22 Denys Vlasenko + + Fix wrong offset display in dumpstr. + BTW, the new code from prev commit is 5 times faster + than old one :) + + Fix a bug in dumpstr (no null termination). Essentially rewrote dumpstr. + This is a 14 year old bug (!). + + It wasn't biting us merely because outstr[80] was static, thus ended up + in bss and whatever was after it "accidentally" provided the NUL byte. + When dumpstr was changed to use on-stack buffer, the bug reared its ugly head. + + This is a rewrite which is smaller and should be significantly faster + for _long_ strings. + + text data bss dec hex filename + 244627 680 10860 256167 3e8a7 strace.t9/strace + 244563 680 10860 256103 3e867 strace.ta/strace + + * util.c (dumpstr): Rewrite to be faster and smaller. + + Eliminate MAX_QUALS, make qualifier array dynamic. + MAX_QUALS was 2048, even though most arches used less than 500 entries + in it. MAX_QUALS had to be maintained by hand to be higher than syscall + count. It also limited the highest possible fd to track. + + This change makes qual_flagsN[] arrays start sized to the required minimum + (number of syscalls) and grow dynamically if user requested + -e read=BIGNUM. As a precaution, BIGNUM should be < 2^15, but this limit + can be raised with no cost for normal strace invocations. + + qual_flags is now a define to qual_vec[current_personality]. + + As a bonus, this patch aliases sysent, errnoent, signalent, ioctlent + names in one-personality arches to their corresponding 0 arrays, + removing one indirection level. + + text data bss dec hex filename + 244471 700 12928 258099 3f033 strace.t7/strace + 244627 680 10860 256167 3e8a7 strace.t8/strace + + Create and use struct_sysent and struct_ioctlent typedefs. + This is a preparatory mass replace patch with no code changes. + + The future change will need to typedef sysent to sysent0, + which results in compile failures when "struct sysent" string + gets mangled into "struct sysent0". + + Use tcp->qual_flg instead of qual_flags[] in verbose() and abbrev() + We have hundreds of uses of these macros. + Result is more efficient and 1.1 kbyte shorter code: + + text data bss dec hex filename + 245579 700 12928 259207 3f487 strace.t5/strace + 244471 700 12928 258099 3f033 strace.t6/strace + +2013-02-21 Denys Vlasenko + + Remove unused QUAL_FAULT code (was used by non-Linux code only). + + Use uint8_t for qual_flags[] instead of ints. + Resulting bss reduction is ~6kbytes: + + text data bss dec hex filename + 245703 700 19072 265475 40d03 strace.t4/strace + 245687 700 12928 259315 3f4f3 strace.t5/strace + + Eliminate many SCNO_IS_VALID checks. + By adding tcp->s_ent pointer tot syscall table entry, + we can replace sysent[tcp->scno] references by tcp->s_ent. + More importantly, we may ensure that tcp->s_ent is always valid, + regardless of tcp->scno value. This allows us to drop + SCNO_IS_VALID(tcp->scno) checks before we access syscall + table entry. + + We can optimize (qual_flags[tcp->scno] & QUAL_foo) checks + with a similar technique. + + Resulting code shrink: + text data bss dec hex filename + 245975 700 19072 265747 40e13 strace.t3/strace + 245703 700 19072 265475 40d03 strace.t4/strace + + * count.c (count_syscall): Use cheaper SCNO_IN_RANGE() check. + * defs.h: Add "int qual_flg" and "const struct sysent *s_ent" + to struct tcb. Remove "int u_nargs" from it. + Add UNDEFINED_SCNO constant which will mark undefined scnos + in tcp->qual_flg. + * pathtrace.c (pathtrace_match): Drop SCNO_IS_VALID check. + Use tcp->s_ent instead of sysent[tcp->scno]. + * process.c (sys_prctl): Use tcp->s_ent->nargs instead of tcp->u_nargs. + (sys_waitid): Likewise. + * strace.c (init): Add compile-time check that DEFAULT_QUAL_FLAGS + constant is consistent with init code. + * syscall.c (decode_socket_subcall): Use tcp->s_ent->nargs + instead of tcp->u_nargs. Set tcp->qual_flg and tcp->s_ent. + (decode_ipc_subcall): Likewise. + (printargs): Use tcp->s_ent->nargs instead of tcp->u_nargs. + (printargs_lu): Likewise. + (printargs_ld): Likewise. + (get_scno): [MIPS,ALPHA] Use cheaper SCNO_IN_RANGE() check. + If !SCNO_IS_VALID, set tcp->s_ent and tcp->qual_flg to default values. + (internal_fork): Use tcp->s_ent instead of sysent[tcp->scno]. + (syscall_fixup_for_fork_exec): Remove SCNO_IS_VALID check. + Use tcp->s_ent instead of sysent[tcp->scno]. + (get_syscall_args): Likewise. + (get_error): Drop SCNO_IS_VALID check where it is redundant. + (dumpio): Drop SCNO_IS_VALID check where it is redundant. + Use tcp->s_ent instead of sysent[tcp->scno]. + (trace_syscall_entering): Use (tcp->qual_flg & UNDEFINED_SCNO) instead + of SCNO_IS_VALID check. Use tcp->s_ent instead of sysent[tcp->scno]. + Drop SCNO_IS_VALID check where it is redundant. + Print undefined syscall name with undefined_scno_name(tcp). + (trace_syscall_exiting): Likewise. + * util.c (setbpt): Use tcp->s_ent instead of sysent[tcp->scno]. + + ARM: make it one-personality arch. + ARM in fact _is_ one personality. + + We had two personalities for it because it has a handful of + syscalls with huge scnos (0x000f00xx). + + Extending syscall table to have [0x000f0005] index is of course + not a good idea. + + Someone decided to handle that by having a separate personality + just for these syscalls. + + But multi-personality arch does a bit more work in other parts. + + This patch is another alternative: "move" 0x000f00nn syscalls + down to the entries just above last ordinary syscall, + by manipulating scno if it falls into the 0x000f00xx range. + + In order to not worsen genuine undefined scnos' printing, + the code remaps scno back to actual value before printing + "syscall_NNN" string. + + * defs.h: Remove multi-reprsonality defines from ARM. + * syscall.c (shuffle_scno): New function. + (undefined_scno_name): New function. + (get_scno): [ARM] Replace personality setting with scno shuffling. + (trace_syscall_entering): Print unknown syscall name using + undefined_scno_name(). + (trace_syscall_exiting): Likewise. + * linux/arm/syscallent.h: Add ARM specific syscalls at the end. + * linux/arm/errnoent1.h: Deleted. + * linux/arm/ioctlent1.h: Deleted. + * linux/arm/signalent1.h: Deleted. + * linux/arm/syscallent1.h: Deleted. + +2013-02-20 Denys Vlasenko + + arm: shorten syscall table for EABI - no point in storing NULL entries. + Also, reformatted ARM code in get_scno(), mostly improved comments, + without code changes. + + Use the same style of includes in linux/*/* files. + While at it, fix some comments which say + "we use i386 syscalls/ioctls/errnos" but in reality + common ones are used. + +2013-02-19 Denys Vlasenko + + Fix compiler warnings. + With constant current_wordsize == 4 and 32-bit longs, + gcc was spooked by "1ul << (8 * current_wordsize)" = "1ul << 32". + + Make such places conditional on SIZEOF_LONG > 4. + + Improve comment text. No code changes. + + Fix NOMMU + daemonized tracer SEGV. + pathname[] was getting destroyed, execve of garbage pathname + failing, and to top it off, the tracer's stack was also + smashed and trecer segfaulted. + + * strace.c (exec_or_die): New function. + (startup_child): Don't use pathname[] contents after vfork, + make a malloced copy instead. Explain "NOMMU + -D bug" + and how we work around it. + + Make it possible to to do test builds for NOMMU architectures. + And while using it, I discovered that -D doesn't work too well + on NOMMU. Added a comment about it. + + Clean up mmap decoding. + Previous code merges too many similar, but different ways + of decoding mmap. For example, sys_old_mmap is "params in memory" + API... except SH[64], where it is "params in regs", + i.e. what sys_mmap ("new mmap") function does on other arches! + + It's much simpler when every mmap handler has same API regardless + of arch. Where API means whether params are in regs or in memory, + and whether offset is in bytes, pages, or 4k blocks. + + Then we just insert correct function pointers into + arch syscall tables. + + It turns out there are four common mmap APIs over + all architectures which exist in Linux kernel, + and one outlier for S390. + + A number of mmap decoders were plain wrong in arch tables. + For example, BFIN has no old_mmap. It returns ENOSYS. + I checked kernel sources for all arches nad fixed the tables. + + There was dead code for x86_64 for old_mmap: + x86_64 has no old_mmap. + + * mem.c: Refactor mmap functions so that we have five mmap syscall + handlers, each with the fixed API (not varying by arch). + * pathtrace.c (pathtrace_match): Adjust sys_func == mmap_func checks. + * linux/syscall.h: Declare new mmap syscall handler functions. + * linux/arm/syscallent.h: mmap2 is sys_mmap_pgoff. + * linux/avr32/syscallent.h: mmap is sys_mmap_pgoff. + * linux/bfin/syscallent.h: old_mmap is ENOSYS, mmap2 is sys_mmap_pgoff. + * linux/hppa/syscallent.h: mmap2 is sys_mmap_4koff. + * linux/i386/syscallent.h: mmap2 is sys_mmap_pgoff. + * linux/ia64/syscallent.h: mmap2 is sys_mmap_pgoff. + * linux/m68k/syscallent.h: mmap2 is sys_mmap_pgoff. + * linux/microblaze/syscallent.h: old_mmap is sys_mmap, mmap2 is sys_mmap_pgoff. + * linux/mips/syscallent.h: mmap is sys_mmap_4kgoff. + * linux/or1k/syscallent.h: mmap2 is sys_mmap_pgoff. + * linux/powerpc/syscallent.h: mmap2 is sys_mmap_4kgoff. + * linux/s390/syscallent.h: mmap2 is sys_old_mmap_pgoff. + * linux/s390x/syscallent.h: mmap is sys_old_mmap and thus has 1 arg. + * linux/sh/syscallent.h: old_mmap2 is sys_mmap, mmap2 is sys_mmap_4koff. + * linux/sh64/syscallent.h: Likewise. + * linux/sparc/syscallent1.h: mmap is TD|TM. + * linux/tile/syscallent1.h: mmap2 is sys_mmap_4koff. + +2013-02-18 Denys Vlasenko + + Remove unused function sys_mmap64. + No wonder that it is unused. + It's code looked quite questionable. + + * mem.c (sys_mmap64): Remove this function. + + Remove code which supports systems with long long off_t. + While looking at mmap mess, did experimenting in order + to figure out what gets used when. + + Tried building armv4tl, armv5l, armv6l, mips, mipsel, i686, + x86_64 and none of they have long long off_t, + which isn't suprprising: we aren't using glibc defines + which enable that. + + Moreover, we SHOULD NOT use off_t in syscall decode! + Its size depends on libc, not on arch! I.e. it is essentially + unpredictable and can even in theory vary on the same arch + with different libc. + + We should use longs or long longs, in a way which matches + architectural ABI for the given syscall. There are usually + *at most* two permutations, no need to add yet another variable + (sizeof(off_t)) to the mix. + + This change removes almost all HAVE_LONG_LONG_OFF_T conditionals, + which will reveal further possible simplifications. + + * mem.c: Remove code conditional on HAVE_LONG_LONG_OFF_T. + As a result, never remap sys_mmap64 to sys_mmap. + (print_mmap): Compile unconditionally. + (sys_old_mmap): Compile unconditionally. + (sys_mmap): Compile unconditionally. + * io.c (sys_sendfile): Add a FIXME comment. + * file.c: Remove code conditional on HAVE_LONG_LONG_OFF_T. + As a result, never remap sys_*stat64 to sys_*stat etc. + (sys_truncate): Compile unconditionally. + (realprintstat): Likewise. + (sys_stat): Likewise. + (sys_fstat): Likewise. + (sys_lstat): Likewise. + * desc.c (printflock): Likewise. + + Fixes in "new" mmap. + * mem.c (sys_mmap): Ensure unsigned expansion of tcp->u_arg[5]. + Add page shift of offset for I386. + Use tcp->ext_arg[5] as offset for X32. + (sys_old_mmap): [X32] Remove this function, X32 doesn't use is. + + Preliminary simplifications in mmap functions. + * mem.c: Move "define sys_mmap64 sys_mmap" from the top + to the only place it affects. + (print_mmap): Make offset argument unsigned, for safer implicit conversions. + (sys_old_mmap): [IA64] use unsigned narrow_arg[]. + Cast u_arg[5] (offset param) to unsigned long, to prevent erroneous signed + expansion. + +2013-02-17 Denys Vlasenko + + Remove broken HAVE_LONG_LONG conditionals. + We use printllval without HAVE_LONG_LONG guards in many places, + but define it only if HAVE_LONG_LONG. This means that + on !HAVE_LONG_LONG systems we won't build for some time now. + + * defs.h: Remove HAVE_LONG_LONG guard around LONG_LONG() macro + and printllval() function declaration. + * util.c: Remove HAVE_LONG_LONG guard around printllval() + function definition. + (printllval): Add compile-time error check for using wrong + if branch. Explain places where we deliberately use mismatched + types for printf formats. + + Use explicit long type instead of off_t. + * file.c (sys_lseek): Use long instead of off_t. + + Merge two identical tables. + * defs.h: Declare whence_codes[]. + * desc.c: Delete static whence[]. + (printflock[64]): Use whence_codes. + * file.c: Make whence_codes[] non-static. + Add SEEK_DATA and SEEK_HOLE to them. + + Remove wrong x32-specific lseek. + Testing confirmed what I suspected: x32 lseek uses kernel-sized + (i.e. wide) long for offset parameter. + + * file.c: Delete sys_lseek32. + * linux/syscall.h: Likewise. + * linux/x32/syscallent1.h: Likewise. + * test/x32_lseek.c: New file. + + Fix SEGV in lseek. + I found hard way why the code was using "_whence" name. + + * file.c: Rename whence[] to whence_codes[]. + (sys_lseek): Fix printxval() to use whence_codes[]. + (sys_lseek32): Likewise. + + Comment inner workings of sys_[l]lseek. + The code doesn't look fully correct to me, but I need to experiment + on actual x32 machine before I start "fixing" things. + For now, add comments, and optimize out one tprints() call... + + * file.c (sys_lseek): Rename '_whence' as 'whence'. + Merge printing of ", " into subsequent tprintf. + (sys_lseek32): Likewise. + (sys_llseek): Likewise. + + Cosmetic fixes to syscall tables, no code changes. + +2013-02-16 Denys Vlasenko + + Make linux/mips/syscallent.h smaller. + * linux/mips/syscallent.h: Remove trailing empty elements. + Compactify huge stretches of NULL elements in the middle. + + Simple optimization in get_error. + * defs.h: Define SCNO_IN_RANGE(scno) macro. + * syscall.c (get_error): Change return type to void. + Use SCNO_IN_RANGE instead of SCNO_IS_VALID. + (trace_syscall_exiting): Stop checking get_error() return value. + + Mass rename of SCNO_IN_RANGE define to SCNO_IS_VALID. + + Finish prefixing regs struct names with arch_ + * defs: Rename regs -> sparc_regs. + * signal.c (sys_sigreturn): Use new variable name. + * syscall.c: Rename regs -> sparc_regs, regs -> avr32_regs. + (getrval2): Use new variable names. + (printcall): Likewise. + +2013-02-15 Denys Vlasenko + + Use the same type for i386_regs on 32-bit and 64-bit x86. + * defs.h: Stop including for x86. + Change i386_regs from "struct pt_regs" to "struct user_regs_struct". + * syscall.c: Likewise. + + Fix build error on Tile. + * syscall.c (get_scno): [TILE] Remove TCB_WAITEXECVE check, + it is never true on Tile, and stopped compiling when + TCB_WAITEXECVE define was removed for Tile. + + x86: zero-extend 32-bit args in syscall entry instead of sign-extension. + Zero-extension is slightly more common that sign-extension: + all pointers are zero-extended, and some other params are unsigned. + + Whereas signed ones (fds, pids, etc) are often treated as + _32-bit ints_ even by kernel, so just unconditionally casting + such tcp->u_arg[N] to int works. + + * syscall.c (get_syscall_args): [X86] Zero-extend 32-bit args + instead of sign-extension. + + Macroize conditional signed widening operation. + * defs.h: Define widen_to_long() macro. + * signal.c (sys_kill): Use it instead of open-coding it. + (sys_tgkill): Use widen_to_long() on pids. + * resource.c (decode_rlimit): Formatting fix. + + A better handling of current_wordsize. + On x86_64: + text data bss dec hex filename + 435661 26628 47424 509713 7c711 strace_old + 435501 26612 47440 509553 7c671 strace_new_clever_wordsize + + On x32 and arm it should be even better, current_wordsize becomes + a constant there. + + * defs.h: Declare current_wordsize as a variable if needed, + else declare as a constant define. + Remove declatation of personality_wordsize[]. + * syscall.c: Make personality_wordsize[] static. + Declare current_wordsize as a variable if needed. + (set_personality): Set current_wordsize only if non-constant. + + Remove unnecessary "return 0" statements. + * util.c (change_syscall): Remove dummy "return 0"s. + +2013-02-14 Denys Vlasenko + + x86: fix required kernel version for GETREGSET. + * syscall.c (get_regs): [X86] Use GETREGSET only if kernel >= 2.6.35 + + Whitespace fix, no code changes. + +2013-02-14 Christian Svensson + + Add support for the OpenRISC 1000 platform. + * configure.ac: Added or1k architecture.. + * defs.h: Added or1k to use register reading system. + * linux/or1k/ioctlent.h.in: Use i386 ioctls. + * linux/or1k/syscallent.h: New file. + * process.c: Added or1k register defs to struct_user_offsets[]. + * syscall.c: Added or1k_io iovec for or1k GETREGSET, +   regset structure for or1k. +   (printcall): Added handling for or1k. +   (get_regs): Likewise. +   (get_scno): Likewise. +   (get_syscall_args): Likewise. +   (get_syscall_result): Likewise. + (get_error): Likewise. + * util.c (change_syscall): Added dummy handling for or1k. + * system.c (sys_or1k_atomic): New function (or1k specific syscall). + +2013-02-14 Denys Vlasenko + + [X86] Use ptrace(PTRACE_GETREGSET, NT_PRSTATUS) to get registers. + Unlike PTRACE_GETREGS, this new method detects 32-bit processes + reliably, without checking segment register values which + are undocumented and aren't part of any sort of API. + While at it, also fixed x32 detection to use __X32_SYSCALL_BIT, + as it should have been from the beginning. + + * defs.h: Declare os_release and KERNEL_VERSION. + * strace.c: Make os_release non-static, remove KERNEL_VERSION define. + * syscall.c: New struct i386_user_regs_struct, + static union x86_regs_union and struct iovec x86_io. + (printcall): Use i386_regs or x86_64_regs depending on x86_io.iov_len. + (get_regs): On x86 and kernels 2.6.30+, use PTRACE_GETREGSET, + on earlier kernels fall back to old method. + (get_scno): [X86] Determine personality based on regset size + on scno & __X32_SYSCALL_BIT. + (syscall_fixup_on_sysenter): Use i386_regs or x86_64_regs depending + on x86_io.iov_len. + (get_syscall_args): Likewise. + (get_error): Likewise. + +2013-02-13 Denys Vlasenko + + Rename some register statics by prefixing their names with arch. + This makes it easier to grep for them. + + * syscall.c: Rename variables: + r0 -> bfin_r0,alpha_r0,sh_r0. + a3 -> mips_a3. + r2 -> mips_r2. + (get_scno): Use new variable names. + (get_syscall_result): Likewise. + (get_error): Likewise. + + Factor out code to check addr, fetch and print siginfo. + * defs.h: Declare new function printsiginfo_at(tcp, addr). + * process.c (sys_waitid): Use printsiginfo_at(). + (sys_ptrace): Likewise. + * signal.c: (printsiginfo_at): Implement this new function. + (sys_rt_sigsuspend): Use printsiginfo_at(). + (sys_rt_sigtimedwait): Likewise. + + Decode struct iov in PTRACE_GET/SETREGSET. + * process.c (sys_ptrace): Decode struct iov in PTRACE_GET/SETREGSET. + +2013-02-12 Denys Vlasenko + + Unify representations of struct user fields for subarchitectures. + * process.c: Unify MIPS and LINUX_MIPSN32, and SH and SH64 parts of + struct_user_offsets[]. + + Add start_code and start_data members of struct user. + * process.c: Add start_code and start_data members of struct user + in struct_user_offsets[], where appropriate. + + Remove hacks for old kernels for architectures which require new kernels + * util.c (change_syscall): For MICROBLAZE, replace code + with dummy "return 0" and a comment explaining why that is ok + for this architecture. + + Remove stray syscall result reading code on syscall entry for s390. + This is a leftover from sysenter/sysexit split. + I can't run-test it, but from code inspection it seems to be correct. + + * syscall.c (get_scno): Remove stray syscall result reading for s390[x]. + + Deobfuscate definitions of struct user offsets. + The maze of ifdefs/ifndefs was scaring new contributors. + Format it so that every arch has its own ifdef block. + + * process.c: Deobfuscate definitions of struct user offsets. + + Remove hacks for old kernels for architectures which require new kernels + * defs.h: Do not define TCB_WAITEXECVE for AARCH64. + * util.c (change_syscall): For AARCH64 and X32, replace code + with dummy "return 0" and a comment explaining why that is ok + for these architectures. + + Remove old kernel hacks for architectures which require new kernels. + * defs.h: Do not define TCB_WAITEXECVE for AVR32, BFIN and TILE. + * util.c (change_syscall): For AVR32, BFIN and TILE, replace code + with dummy "return 0" and a comment explaining why that is ok + for these architectures. + + Handle recv[m]msg for non-native 32-bit personality syscalls. + * net.c (printmsghdr): If current_wordsize is 4 and long is wider than it, + read 32-bit struct msghdr and expand it into a native one before using it. + (printmmsghdr): Likewise for struct mmsghdr. + + Fix is_negated_errno() check for X32. + X32's return value is 64-bit. We were truncating it to 32-bit long + before checking for -errno. + + * syscall.c (is_negated_errno_x32): New function. + (get_error): Use is_negated_errno_x32 for X32 architecture. + + Remove unused / ambiguously used defines. + We sometimes use LINUXSPARC and sometimes (more often) + use "defined(SPARC) || defined(SPARC64)". Better to use + one construct consistently. + LINUX_MIPS64 is altogether unused. + + * defs.h: Remove LINUXSPARC and LINUX_MIPS64 defines. + Move PTRACE_xxx compat defines up, before arch-specific + machinery. Use defined(SPARC) || defined(SPARC64) + instead of LINUXSPARC. + * file.c: Use defined(SPARC) || defined(SPARC64) instead of LINUXSPARC. + * signal.c: Likewise. + +2013-02-11 Denys Vlasenko + + Preparatory patch for "new" x86 personality detection. + * syscall.c: Move PT_FLAGS_COMPAT define to its only user, get_scno(). + Rename arm_regs_union's fields to names less likely to collide with + system defines. + (get_regs): Use sizeof(arm_regs_union) instead of sizeof(aarch64_regs). + This should be the same, but htis way it's cleaner. + Remove __X32_SYSCALL_MASK and use __X32_SYSCALL_BIT instead. + Explain 64-bit check in X32 build better. + +2013-02-09 Dmitry V. Levin + + Fix sigaltstack decoder. + strace used to hang when decoding sigaltstack called with invalid + stack_t pointers because of mishandling umove() return code. + + * signal.c (print_stack_t): Handle unfetchable stack_t properly. + Change return type to void. + (sys_sigaltstack): Update print_stack_t() usage. + + Reported-by: kawillia@ucalgary.ca + +2013-02-09 Mike Frysinger + + Fix decoding of sysctl() when oldval fields are NULL. + If you call glibc's syscall wrapper like so: + static int name[] = { CTL_NET, NET_IPV4, NET_IPV4_LOCAL_PORT_RANGE }; + int buffer[2] = { 32768, 61000 }; + size_t size = sizeof(buffer); + sysctl(name, 3, 0, 0, buffer, size); + (note that oldval/oldlenp are NULL). + + The current strace code complains like so: + _sysctl({{CTL_NET, NET_IPV4, NET_IPV4_LOCAL_PORT_RANGE, 38}, 3, process_vm_readv: Bad address + (nil), 0, 0x7fffe23c3960, 8}) = -1 EACCES (Permission denied) + + Since passing NULL for the old values is valid, handle that explicitly. + This also simplifies the code a bit by splitting up the handling of the + new and old args so that we only handle the new args once. + + Now the output looks like: + _sysctl({{CTL_NET, NET_IPV4, NET_IPV4_LOCAL_PORT_RANGE, 38}, 3, NULL, 0, 0x7fff8c0c91b0, 8) = -1 EACCES (Permission denied) + + * system.c (sys_sysctl): Check if info.oldval is NULL first. Move the + processing of oldlen/info.newval/info.newlen out so they always get + executed. Fix the format strings so we use %lu for unsigned long rather + than a mix of %ld and %lu. + +2013-02-08 Denys Vlasenko + + If we are on a glibc system, assume it's at least glibc 2.1. + It is not likely anyone uses glibc older that that: + glibc 2.1.1 was released in 1999 + + * net.c: Remove test for glibc >= 2.1. + * signal.c: Remove code which is compiled only for glibc < 2.1. + * util.c: Likewise. + + S390: stop using needlessly static long pc variable. + * syscall.c: Remove "static long pc" variable. + (get_scno): Use an automatic long variable instead of a static. + + Dying suddenly with abort() is rude, avoid if possible. + * file.c (sys_utime): Don't call abort() if wordsize is strange. + Instead, warn user about it. + * desc.c (printflock): Use the same message string as in sys_utime. + + Remove vestigial hacks around non-Linux struct sigactions. + * signal.c: Stop using __sighandler_t glibc'ism. Remove SA_HANDLER macro. + Explain why we can't use "sa_handler" as a field name. + (sys_sigaction): Use __sa_handler instead of SA_HANDLER macro. + (sys_rt_sigaction): Likewise. + + Optimize AArch64 handling of 32-bit personality. + By putting aarch64_regs and arm_regs into a union, + register copying is eliminated. + No need to check and change personality on syscall exit. + + * defs.h: Remove unused NUM_ARM_REGS define. Fix indentation. + * syscall.c: Put aarch64_regs and arm_regs into a union. + (update_personality): Shorten bitness message. + (printcall): Add commented-out PC printing. + (get_regs): Remove now-unnecessary 64-to-32 bits register copying. + (get_syscall_result): Drop personality changing code. + +2013-02-07 Denys Vlasenko + + Rename some register statics by prefixing their names with arch. + This makes it easier to grep for them. + + * syscall.c: Make IA64's r8, r10 global variables static. + Rename variables: + r8,r10 -> ia64_r8,ia64_r10. + d0 -> m68k_d0. + a3 -> alpha_a3. + r28 -> hppa_r28. + r9 -> sh64_r9. + r10 -> cris_r10. + r3 -> microblaze_r3. + (get_scno): Use new variable names. + (syscall_fixup_on_sysenter): Likewise. + (get_syscall_result): Likewise. + (get_error): Likewise. + +2013-02-06 Denys Vlasenko + + Rename ARM's regs structure to arm_regs. + Compile-tested. + + * defs.h: Rename regs structure to arm_regs. + * syscall.c: Likewise. + (printcall): Use new name instead of old one. + (get_regs): Likewise. + (get_scno): Likewise. + (get_syscall_args): Likewise. + (get_error): Likewise. + * signal.c (sys_sigreturn): Likewise. + + Stop needlessly using static variable. + * syscall.c: Remove static long psr. + (get_scno): Use local psr variable. + (get_syscall_result): Likewise. + + Shortcut tests for fork/exec syscalls. + This change should speed up strace by a tiny bit. + + More importantly, it makes it much more clear that + fork and exec fixups are not necessary for any reasonably + recent kernels. IOW: syscall_fixup_for_fork_exec() and its callees + are all dead code. + + * defs.h: Declare new need_fork_exec_workarounds flag variable. + * strace.c: Define need_fork_exec_workarounds flag variable. + (test_ptrace_setoptions_followfork): Return 0/1 as success/fail indicator. + (test_ptrace_setoptions_for_all): Likewise. + (init): Set need_fork_exec_workarounds to TRUE if needed. + * syscall.c: Rename internal_syscall() to syscall_fixup_for_fork_exec(). + (trace_syscall_entering): Call syscall_fixup_for_fork_exec() only if + need_fork_exec_workarounds == TRUE. + (trace_syscall_exiting): Likewise. + +2013-02-05 Ben Noordhuis + + Improve perf_event_open argument decoding. + * configure.ac (AC_CHECK_HEADERS): Add linux/perf_event.h. + * desc.c [HAVE_LINUX_PERF_EVENT_H]: Include . + (perf_event_open_flags): New xlat structure. + (sys_perf_event_open): New function. + * linux/dummy.h (sys_perf_event_open): Remove. + * linux/syscall.h (sys_perf_event_open): New prototype. + +2013-02-05 Chris Metcalf + + tile: fix merge skew with new get_regs architecture. + * defs.h [TILE]: Declare clear_regs(), get_regs() and get_regs_error. + * syscall.c (get_regs) [TILE]: Fix merge skew. + (printcall) [TILE]: fix a compiler warning about pt_reg_t in + a printf expression. + +2013-02-05 Bernhard Reutner-Fischer + + mount: decode MS_NOSEC. + * system.c (MS_NOSEC): Define. + (mount_flags): Add MS_NOSEC. + + mmap: decode MAP_UNINITIALIZED. + * mem.c (mmap_flags): Add MAP_UNINITIALIZED. + +2013-02-05 Dmitry V. Levin + + Print 64-bit instruction pointers zero padded. + * syscall.c (printcall): Print 64-bit instruction pointers zero padded. + + x86_64: fix compilation warning introduced in previous commit. + * syscall.c (printcall): Cast x86_64_regs.rip to the type being printed. + +2013-02-05 Denys Vlasenko + + Simple bug fix for x86_86. + * syscall.c (printcall): Use x86_64_regs.rip, not x86_64_regs.ip. + +2013-02-05 Chris Metcalf + + Add tilegx support to strace. + tilegx support has been in the kernel since 3.0. + In addition, fix some issues with the tilepro support already + present in strace, primarily the decision to use the + numbering space for system calls. + + * defs.h [TILE]: Include and provide an extern + struct pt_regs tile_regs for efficiency. Provide compat 32-bit + personality via SUPPORTED_PERSONALITIES, PERSONALITY0_WORDSIZE, + PERSONALITY1_WORDSIZE, and DEFAULT_PERSONALITY. + * linux/tile/errnoent1.h: New file, includes linux/errnoent.h. + * linux/tile/ioctlent1.h: New file, includes linux/ioctlent.h. + * linux/tile/signalent1.h: New file, includes linux/signalent.h. + * linux/tile/syscallent.h: Update with new asm-generic syscalls. + The version previously committed was the from the first tile patch + to LKML, which subsequently was changed to use . + * linux/tile/syscallent1.h: Copy from linux/tile/syscallent.h. + * mem.c (addtileflags) [TILE]: use %ld properly for a "long" variable. + * process.c [TILE]: Choose clone arguments correctly and properly + suppress all "struct user" related offsets in user_struct_offsets. + * signal.c [TILE]: Use tile_regs not upeek. + * syscall.c (update_personality) [TILE]: Print mode. + (PT_FLAGS_COMPAT) [TILE]: Provide if not in system headers. + (tile_regs) [TILE]: Define 'struct pt_regs' variable to hold state. + (get_regs) [TILE]: use PTRACE_GETREGS to set tile_regs rather than using upeek. + (get_scno) [TILE]: Set personality. + (get_syscall_args) [TILE]: Use tile_regs. + (get_syscall_result) [TILE]: Update tile_regs. + (get_error) [TILE]: Use tile_regs. + (printcall) [TILE]: Print pc. + (arg0_offset, arg1_offset, restore_arg0, restore_arg1) [TILE]: + Properly handle tile call semantics and support tilegx. + +2013-02-05 Denys Vlasenko + + Small optimization for SPARC[64] get_scno. + * syscall.c: Remove static unsigned long trap veriable. + (get_scno): Use local trap variable. + + Do not compile getrval2() if not needed. + * syscall.c (getrval2): Do not compile it for architetures where + it isn't ever used. + + Optimize out PTRACE_PEEKUSER with -i. + strace -i was fetching PC with a separate PEEKUSER + despite having GETREGS data: + + ptrace(PTRACE_GETREGS, 22331, 0, 0x8087f00) = 0 + ptrace(PTRACE_PEEKUSER, 22331, 4*EIP, [0x80dd7b7]) = 0 + write(3, "[080dd7b7] ioctl(0, SNDCTL_TMR_T"..., 82) = 82 + ptrace(PTRACE_SYSCALL, 22331, 0, SIG_0) = 0 + + Now it does this: + + ptrace(PTRACE_GETREGS, 22549, 0, 0x8087ea0) = 0 + write(3, "[080dd7b7] ioctl(0, SNDCTL_TMR_T"..., 82) = 82 + ptrace(PTRACE_SYSCALL, 22549, 0, SIG_0) = 0 + + Analogous improvement in sys_sigreturn() is also implemented. + + * defs.h: Declare extern struct pt_regs regs for SPARC[64] and ARM. + Declare clear_regs(), get_regs() and get_regs_error flag variable. + * strace.c (trace): Call get_regs(pid) as soon as we know the tcb + and that it is stopped. + * syscall.c (get_regs): New function. Used to fetch registers early, + just after tracee has stopped. + (printcall): Move it here from util.c. Use global regs.REG data, + if available on the arch, instead of re-fetching it. + (get_scno): Use global regs.REG data. + (get_syscall_result): Likewise. + * signal.c (sys_sigreturn): Likewise. + * util.c (printcall): Moved to syscall.c. + +2012-12-15 Stanislav Brabec + + Fix sys_semtimedop decoding on s390x. + The s390 and s390x pass semtimedop arguments differently from other + architectures. sys_semtimedop parser was fixed for s390 by commit + v4.6-177-ge0f5fd8, and s390x requires the same fix. + + * linux/ipc.c (sys_semtimedop): Fix timespec decoding on s390x. + +2012-12-08 Dmitry V. Levin + + Fix *xattr decoding. + * file.c (print_xattr_val): Do not attempt to decode a zero sized array. + Fixes RH#885233. + +2012-12-08 Stanislav Brabec + + sys_semtimedop: fix timeval argument index in wrapped call. + Looking at the implementation of wrapped semtimedop() call inside glibc + and kernel, I started to believe that timeval should be located in + tcp->u_arg[4] and not tcp->u_arg[5]. Fortunately, tcp->u_arg[5] now + works correctly as well, due to side effects of decode_ipc_subcall(). + + declaration in header: + int semtimedop(semid, *sops, nsops, *timeout); + 0 1 2 3 + + sys_ipc arguments in glibc on all patforms except s390*: + semid, (int) nsops, 0, CHECK_N (sops, nsops), timeout + 0 1 2 3 4 + We have to use indexes: 0 3 1 4 + + sys_ipc arguments on s390*: + semid, (int) nsops, timeout, sops + 0 1 2 3 + We have to use indexes: 0 3 1 2 + + * ipc.c (sys_semtimedop) [!S390]: Fix timeval argument index in + indirect_ipccall case. + +2012-12-06 John Spencer + + Fix glibc version checks. + * util.c: Check if __GLIBC__ is defined before using it. + * signal.c: Likewise. Fix __GLIBC_MINOR__ checks. + +2012-11-29 James Hogan + + Add state argument to change_syscall and fix SPARC. + Add a state argument to change_syscall() so that SPARC can modify that + instead of read-modify-writing the whole register set. This function is + always called within an arg_setup/arg_finish_change sequence which on + certain architectures like SPARC will also be doing a read-modify-write. + This prevents the second write (from arg_finish_change) from undoing the + effects of the change_syscall call. + + * util.c (change_syscall): Move below definition of arg_setup_state. + Add state argument. + [SPARC || SPARC64] Change to set state->u_regs[U_REG_G1] rather than + read-modify-writing it with PTRACE_GETREGS and PTRACE_SETREGS. + (setbpt, clearbpt): Pass state argument to change_syscall. + +2012-11-12 Steve McIntyre + + Add support for tracing 32-bit ARM EABI binaries on AArch64. + * defs.h [AARCH64]: Copy in the definition of arm_pt_regs and the + accessor macros, so it's possible to build on AArch64 without + ARM system headers. Set SUPPORTED_PERSONALITIES to 2. + Define PERSONALITY0_WORDSIZE and PERSONALITY1_WORDSIZE. + Set DEFAULT_PERSONALITY to 1. + * linux/aarch64/errnoent1.h: New file, includes generic errnoent.h. + * linux/aarch64/ioctlent1.h: New file, includes generic ioctlent.h. + * linux/aarch64/signalent1.h: New file, includes generic signalent.h. + * linux/aarch64/syscallent1.h: Rename from linux/aarch64/syscallent.h. + * linux/aarch64/syscallent.h: New file, includes arm/syscallent.h. + * syscall.c [AARCH64]: Define aarch64_regs. + (update_personality) [AARCH64]: Add debug output. + (get_scno) [AARCH64]: Determine if we're in ARM or AArch64 mode by + checking the size of the returned uio structure from PTRACE_GETREGSET + and interpret the structure accordingly. + (get_syscall_result): Likewise. + (get_syscall_args): Merge the AArch64 and ARM sections so that on + AArch64 we can fall back to supporting the ARM personality. + (get_error): Likewise. + +2012-11-12 Dmitry V. Levin + + Move asm-generic ioctl definitions to linux/ioctlent.h.in. + * linux/ioctlent.h.in: Add asm-generic ioctl entries from all + linux/*/ioctlent.h.in files. + * linux/bfin/ioctlent.h.in: Remove asm-generic ioctl entries. + * linux/i386/ioctlent.h.in: Likewise. + * linux/powerpc/ioctlent.h.in: Likewise. + * linux/s390/ioctlent.h.in: Likewise. + * linux/sparc/ioctlent.h.in: Likewise. + +2012-10-27 Dmitry V. Levin + + Filter out redundant "*32" ioctl entries. + * linux/ioctlent-filter.awk: New file. + * Makefile.am: Use it. + * linux/ioctlent.h.in: Removed redundant "*32" entries. + +2012-10-26 Dmitry V. Levin + + Enhance quotactl decoding. + * quota.c (sys_quotactl): Decode 2nd syscall argument using printpath. + * pathtrace.c (pathtrace_match): Add quotactl support. + * linux/*/syscallent.h: Add TF flag to quotactl entry. + +2012-10-26 Steve McIntyre + + Add AArch64 support to strace. + AArch64 has been included in linux from 3.7 onwards. + Add support for AArch64 in strace, tested on linux in a simulator. + + * configure.ac: Support AArch64. + * defs.h [AARCH64]: Include , define TCB_WAITEXECVE. + * ipc.c (indirect_ipccall): Support AArch64. + * process.c (struct_user_offsets): Likewise. + * syscall.c [AARCH64]: Include , , and + . Define struct user_pt_regs regs. + (get_scno, get_syscall_result): Support AArch64 using PTRACE_GETREGSET. + (get_syscall_args, get_error): Support AArch64. + * linux/aarch64/ioctlent.h.in: New file. + * linux/aarch64/syscallent.h: New file, based on linux 3.7 version of + asm-generic/unistd.h. + + linux: add new errno values for EPROBE_DEFER and EOPENSTALE. + New definitions match updates in Linux 3.4 and Linux 3.5 respectively. + + * linux/errnoent.h (ERRNO_517): Change to EPROBE_DEFER. + (ERRNO_518): Change to EOPENSTALE. + +2012-10-26 Namhyung Kim + + Add -e trace=memory option. + Add a new 'memory' category for tracing memory mapping related syscalls. + + Affected syscalls are: break, brk, get_mempolicy, madvise, mbind, + migrate_pages, mincore, mlock, mlockall, mmap, move_pages, mprotect, + mremap, msync, munlock, munlockall, munmap, remap_file_pages, and + set_mempolicy. + + * defs.h (TRACE_MEMORY): New macro. + * syscall.c (lookup_class): Handle trace=memory option. + * strace.1: Document it. + * linux/alpha/syscallent.h: Add TM flag to memory mapping related syscalls. + * linux/arm/syscallent.h: Likewise. + * linux/avr32/syscallent.h: Likewise. + * linux/bfin/syscallent.h: Likewise. + * linux/hppa/syscallent.h: Likewise. + * linux/i386/syscallent.h: Likewise. + * linux/ia64/syscallent.h: Likewise. + * linux/m68k/syscallent.h: Likewise. + * linux/microblaze/syscallent.h: Likewise. + * linux/mips/syscallent.h: Likewise. + * linux/powerpc/syscallent.h: Likewise. + * linux/s390/syscallent.h: Likewise. + * linux/s390x/syscallent.h: Likewise. + * linux/sh/syscallent.h: Likewise. + * linux/sh64/syscallent.h: Likewise. + * linux/sparc/syscallent.h: Likewise. + * linux/tile/syscallent.h: Likewise. + * linux/x32/syscallent.h: Likewise. + * linux/x86_64/syscallent.h: Likewise. + +2012-09-28 Mike Frysinger + + x32: add 64bit annotation too. + Since someone can invoke these entry points directly with syscall(), + at least decode their name and show that they're 64bit versions rather + than just showing syscall_###. + + * linux/x32/syscallent.h: Sync all missing entries below 312 with x86_64. + +2012-09-28 Dmitry V. Levin + + Ignore fflush(3) return value. + strace used to honor fflush(3) return value in trace_syscall_entering + which resulted to tracees not being PTRACE_SYSCALL'ed which in turn + caused nasty hangups like this one: + + $ strace -o'|:' pwd + |:: Broken pipe + + There is little strace can do in case of fflush(3) returning EOF, and + hangup is certainly not the best solution for the issue. + + * syscall.c (trace_syscall_entering): Ignore fflush(3) return value. + + Use perror_msg instead of perror. + * signal.c (sys_sigreturn): Use perror_msg instead of perror. + * strace.c (tprintf, tprints, detach, startup_attach): Likewise. + * syscall.c (get_scno): Likewise. + * util.c (umoven, umovestr): Likewise. + +2012-09-27 Denys Vlasenko + + process_vm_readv may return ESRCH if tracee was killed, don't complain. + Discovered by running test/sigkill_rain under strace. + + * util.c (umoven): Do not emit error message if process_vm_readv + fails with ESRCH. + (umovestr): LikeWise. + +2012-09-13 Denys Vlasenko + + Trivial fixes, no code changes. + * strace.c: Fix compiler warning message about tgkill - we don't use it. + Fix indentation of preprocessor directives. + (trace): Remove outdated comment. + +2012-08-24 Dmitry V. Levin + + Always check setreuid return code. + * strace.c (startup_child): Check setreuid return code. + +2012-08-24 Mike Frysinger + + x32: update {g,s}etsockopt syscall numbers. + Starting with linux 3.6 (and backported to earlier kernels), these two + syscalls have changed numbers (moving from native to compat entry points). + Update the strace syscall list accordingly. + + * linux/x32/syscallent.h: Move setsockopt from 54 to 541, and move + getsockopt from 55 to 542. + +2012-08-16 Dmitry V. Levin + + Decode file type returned by getdents system call. + * file.c (sys_getdents): Decode d_type in unabbreviated mode. + +2012-07-12 Dmitry V. Levin + + Close pipe and wait for the pipe process termination. + In case of normal strace termination, when the trace output is + redirected to a file or a pipe, close it and wait for the pipe + process termination. + + * strace.c (main): Before normal exit, close shared_log when it + differs from stderr, and wait for popen_pid termination. + +2012-07-10 Denys Vlasenko + + Enable usage of PTRACE_SEIZE. + * defs.h: Define USE_SEIZE to 1. Remove PTRACE_SEIZE_DEVEL + and PTRACE_EVENT_STOP1. + * strace.c (ptrace_attach_or_seize): Replace PTRACE_SEIZE_DEVEL + with 0. + (trace): Do not check for PTRACE_EVENT_STOP1. + +2012-06-05 Mike Frysinger + + x32: update syscall table. + This syncs with the syscall table as it is in linux 3.4. + + * linux/x32/syscallent.h (59): Fix comment typo. + (78): Add missing getdents entry. + (174): Delete create_module entry (not in the kernel). + (181, 182, 183, 184, 185): Add missing entries. + (524, 536, 539, 540): Fix spacing. + +2012-05-18 Denys Vlasenko + + Merge adjacent printing operations in a few places. + * file.c (sys_readahead): Merge tprints() with following printllval(). + (sys_ftruncate64): Likewise. + (sys_fadvise64): Likewise. + (sys_fadvise64_64): Likewise. + (sys_fallocate): Merge tprints() with following tprintf(). + +2012-05-16 Denys Vlasenko + + Use %d printf format instead of %i everywhere. + * loop.c (loop_ioctl): Use %d instead of %i. + * mtd.c (mtd_ioctl): Likewise. + + Fix a few goofs in sys_sysctl() + * system.c (sys_sysctl): Cast pointer to long, not size_t, + when we intend to use it as an address. Set oldlen to 0 prior + to reading into it - we want to have deterministic result + if read fails. + + Stop using non-standard %Zu and %Zd formats for size_t printing. + The documented formats are %zu and %zd, but since our (normally disabled) + "fast" printf code doesn't support those too, I convert them to %lu and %ld. + + * bjm.c (sys_query_module): Convert %Zd usages to %lu. + * system.c (sys_sysctl): Likewise. + +2012-05-15 Denys Vlasenko + + Remove outdated comment about suspending new tracees. + We no longer track parent/child relationship between tracees. + Therefore, we no longer suspend new tracee until parent is seen + exiting form [v]fork/clone. The comment is obsolete. + + * strace.c (trace): Remove outdated comment. + + Make sure current_wordsize and PERSONALITY0_WORDSIZE are ints in all arches + On 64bit systems with a single personality, they used to be sizeof(long), + which has type "long", not "int", which complicates printf formats. + + * defs.h: Ensure that PERSONALITY0_WORDSIZE;s tyoe is int. + This in turn makes sure current_wordsize is also an int. + * count.c (call_summary): Revert the change which added cast to int. + +2012-05-15 Dmitry V. Levin + + Add configure --enable-gcc-Werror option. + * configure.ac: New option --enable-gcc-Werror. + + Make x86-64 build free of artificial warnings. + * signal.c (sys_sigreturn): Do not issue "no sys_sigreturn" warning + on X86_64. + +2012-05-14 Dmitry V. Levin + + Fix kernel release string parsing. + * strace.c (get_os_release): Handle "X.Y-something" utsname.release + strings properly. + + Reported-by: Bryce Gibson + +2012-05-14 Denys Vlasenko + + On clearing "breakpopint", restore syscall number too. + This fixes Fedora bug 659382. + Low risk: this code is not supposed to be used on any non-acient kernel. + + * util.c (clearbpt): Restore syscall number too. + +2012-05-05 Mike Frysinger + + util: fix building when glibc has a stub process_vm_readv. + If you have a newer glibc which provides process_vm_readv, but it is built + against older kernel headers which lack __NR_process_vm_readv, the library + will contain a stub implementation that just returns ENOSYS. Autoconf + checks for this case explicitly and will declare it as unavailable. So we + end up in a case where the headers provide the prototype, but autoconf has + not defined HAVE_PROCESS_VM_READV, so we hit the same build failure again: + + util.c:738:16: error: static declaration of 'process_vm_readv' follows non-static declaration + /usr/include/bits/uio.h:58:16: note: previous declaration of 'process_vm_readv' was here + + So rename our local function to something unique, and add a define so the + callers all hit the right place. + + * util.c (strace_process_vm_readv): Rename from process_vm_readv. + (process_vm_readv): Define to strace_process_vm_readv. + +2012-05-03 Dmitry V. Levin + + doc: describe documentation policy. + * README-hacking: Describe documentation policy. + 2012-05-02 Dmitry V. Levin + maint: post-release administrivia. + * NEWS: Add header line for next release. + Prepare for 4.7 release. * configure.ac: Version 4.7. * debian/changelog: 4.7-1. diff --git a/Makefile.am b/Makefile.am index 3e8c8102..9d611f39 100644 --- a/Makefile.am +++ b/Makefile.am @@ -14,96 +14,222 @@ ACLOCAL_AMFLAGS = -I m4 AM_CFLAGS = $(WARN_CFLAGS) AM_CPPFLAGS = -I$(srcdir)/$(OS)/$(ARCH) -I$(srcdir)/$(OS) -I$(builddir)/$(OS) -strace_SOURCES = strace.c syscall.c count.c util.c desc.c file.c ipc.c \ - io.c ioctl.c mem.c net.c process.c bjm.c quota.c \ - resource.c signal.c sock.c system.c term.c time.c \ - scsi.c stream.c block.c pathtrace.c mtd.c vsprintf.c \ - loop.c +strace_SOURCES = \ + bjm.c \ + block.c \ + count.c \ + desc.c \ + file.c \ + io.c \ + ioctl.c \ + ipc.c \ + loop.c \ + mem.c \ + mtd.c \ + net.c \ + pathtrace.c \ + process.c \ + quota.c \ + resource.c \ + scsi.c \ + signal.c \ + sock.c \ + strace.c \ + stream.c \ + syscall.c \ + system.c \ + term.c \ + time.c \ + util.c \ + vsprintf.c + noinst_HEADERS = defs.h +# Enable this to get link map generated +#strace_CFLAGS = $(AM_CFLAGS) -Wl,-Map=strace.mapfile -EXTRA_DIST = $(man_MANS) errnoent.sh signalent.sh syscallent.sh ioctlsort.c \ - debian/changelog debian/compat debian/control debian/copyright \ - debian/rules debian/source/format debian/watch \ - debian/strace64.install debian/strace64.manpages \ - debian/strace.docs debian/strace.examples debian/strace.install \ - debian/strace.manpages debian/strace-udeb.install \ - strace.spec \ - strace-graph strace-log-merge \ - ChangeLog ChangeLog-CVS COPYRIGHT CREDITS \ - README-linux README-linux-ptrace \ - linux/ioctlsort.c linux/ioctlent.sh \ - linux/ioctlent.h.in linux/errnoent.h linux/signalent.h \ - linux/syscall.h linux/dummy.h linux/mtd-abi.h \ - linux/i386/ioctlent.h.in linux/i386/syscallent.h \ - linux/alpha/errnoent.h linux/alpha/ioctlent.h.in \ - linux/alpha/signalent.h linux/alpha/syscallent.h \ - linux/arm/ioctlent.h.in linux/arm/syscallent.h \ - linux/arm/syscallent1.h \ - linux/arm/signalent1.h linux/arm/ioctlent1.h \ - linux/arm/errnoent1.h \ - linux/avr32/ioctlent.h.in linux/avr32/syscallent.h \ - linux/bfin/ioctlent.h.in linux/bfin/syscallent.h \ - linux/hppa/errnoent.h linux/hppa/ioctlent.h.in \ - linux/hppa/signalent.h linux/hppa/syscallent.h \ - linux/ia64/ioctlent.h.in \ - linux/ia64/signalent.h \ - linux/ia64/syscallent.h \ - linux/m68k/ioctlent.h.in linux/m68k/syscallent.h \ - linux/microblaze/ioctlent.h.in linux/microblaze/syscallent.h \ - linux/mips/ioctlent.sh linux/mips/errnoent.h \ - linux/mips/ioctlent.h.in linux/mips/signalent.h \ - linux/mips/syscallent.h \ - linux/powerpc/ioctlent.h.in linux/powerpc/ioctlent1.h \ - linux/powerpc/syscallent.h linux/powerpc/syscallent1.h \ - linux/powerpc/errnoent1.h linux/powerpc/signalent1.h \ - linux/s390/ioctlent.h.in \ - linux/s390/syscallent.h \ - linux/s390x/ioctlent.h.in \ - linux/s390x/syscallent.h \ - linux/sh/syscallent.h \ - linux/sh/ioctlent.h.in \ - linux/sh64/ioctlent.h.in linux/sh64/syscallent.h \ - linux/sparc/dummy2.h \ - linux/sparc/errnoent.h linux/sparc/errnoent1.h \ - linux/sparc/ioctlent.h.in linux/sparc/ioctlent1.h \ - linux/sparc/signalent.h linux/sparc/signalent1.h \ - linux/sparc/syscall1.h \ - linux/sparc/syscallent.h linux/sparc/syscallent1.h \ - linux/sparc/gen.pl \ - linux/sparc64/dummy2.h linux/sparc64/errnoent.h \ - linux/sparc64/errnoent1.h linux/sparc64/errnoent2.h \ - linux/sparc64/ioctlent.h.in linux/sparc64/ioctlent1.h \ - linux/sparc64/ioctlent2.h linux/sparc64/signalent.h \ - linux/sparc64/signalent1.h linux/sparc64/signalent2.h \ - linux/sparc64/syscall1.h \ - linux/sparc64/syscallent.h linux/sparc64/syscallent1.h \ - linux/sparc64/syscallent2.h \ - linux/tile/ioctlent.h.in linux/tile/syscallent.h \ - linux/x32/errnoent.h linux/x32/ioctlent.h.in \ - linux/x32/signalent.h linux/x32/syscallent.h \ - linux/x32/errnoent1.h linux/x32/ioctlent1.h \ - linux/x32/signalent1.h linux/x32/syscallent1.h \ - linux/x86_64/ioctlent.h.in linux/x86_64/syscallent.h \ - linux/x86_64/gentab.pl \ - linux/x86_64/errnoent1.h linux/x86_64/ioctlent1.h \ - linux/x86_64/signalent1.h linux/x86_64/syscallent1.h \ - linux/x86_64/errnoent2.h linux/x86_64/ioctlent2.h \ - linux/x86_64/signalent2.h linux/x86_64/syscallent2.h \ - xlate.el +EXTRA_DIST = \ + $(man_MANS) \ + .version \ + COPYING \ + CREDITS \ + ChangeLog \ + ChangeLog-CVS \ + README-linux \ + README-linux-ptrace \ + debian/changelog \ + debian/compat \ + debian/control \ + debian/copyright \ + debian/rules \ + debian/source/format \ + debian/strace-udeb.install \ + debian/strace.docs \ + debian/strace.examples \ + debian/strace.install \ + debian/strace.manpages \ + debian/strace64.install \ + debian/strace64.manpages \ + debian/watch \ + errnoent.sh \ + ioctlsort.c \ + linux/aarch64/errnoent1.h \ + linux/aarch64/ioctlent.h.in \ + linux/aarch64/ioctlent1.h \ + linux/aarch64/signalent1.h \ + linux/aarch64/syscallent.h \ + linux/aarch64/syscallent1.h \ + linux/alpha/errnoent.h \ + linux/alpha/ioctlent.h.in \ + linux/alpha/signalent.h \ + linux/alpha/syscallent.h \ + linux/arm/ioctlent.h.in \ + linux/arm/syscallent.h \ + linux/avr32/ioctlent.h.in \ + linux/avr32/syscallent.h \ + linux/bfin/ioctlent.h.in \ + linux/bfin/syscallent.h \ + linux/dummy.h \ + linux/errnoent.h \ + linux/hppa/errnoent.h \ + linux/hppa/ioctlent.h.in \ + linux/hppa/signalent.h \ + linux/hppa/syscallent.h \ + linux/i386/ioctlent.h.in \ + linux/i386/syscallent.h \ + linux/ia64/ioctlent.h.in \ + linux/ia64/signalent.h \ + linux/ia64/syscallent.h \ + linux/ioctlent-filter.awk \ + linux/ioctlent.h.in \ + linux/ioctlent.sh \ + linux/ioctlsort.c \ + linux/m68k/ioctlent.h.in \ + linux/m68k/syscallent.h \ + linux/metag/ioctlent.h.in \ + linux/metag/syscallent.h \ + linux/microblaze/ioctlent.h.in \ + linux/microblaze/syscallent.h \ + linux/mips/errnoent.h \ + linux/mips/ioctlent.h.in \ + linux/mips/ioctlent.sh \ + linux/mips/signalent.h \ + linux/mips/syscallent-compat.h \ + linux/mips/syscallent-n32.h \ + linux/mips/syscallent-n64.h \ + linux/mips/syscallent-o32.h \ + linux/mips/syscallent.h \ + linux/mtd-abi.h \ + linux/or1k/ioctlent.h.in \ + linux/or1k/syscallent.h \ + linux/powerpc/errnoent1.h \ + linux/powerpc/ioctlent.h.in \ + linux/powerpc/ioctlent1.h \ + linux/powerpc/signalent1.h \ + linux/powerpc/syscallent.h \ + linux/powerpc/syscallent1.h \ + linux/s390/ioctlent.h.in \ + linux/s390/syscallent.h \ + linux/s390x/ioctlent.h.in \ + linux/s390x/syscallent.h \ + linux/sh/ioctlent.h.in \ + linux/sh/syscallent.h \ + linux/sh64/ioctlent.h.in \ + linux/sh64/syscallent.h \ + linux/signalent.h \ + linux/sparc/dummy2.h \ + linux/sparc/errnoent.h \ + linux/sparc/errnoent1.h \ + linux/sparc/gen.pl \ + linux/sparc/ioctlent.h.in \ + linux/sparc/ioctlent1.h \ + linux/sparc/signalent.h \ + linux/sparc/signalent1.h \ + linux/sparc/syscall1.h \ + linux/sparc/syscallent.h \ + linux/sparc/syscallent1.h \ + linux/sparc64/dummy2.h \ + linux/sparc64/errnoent.h \ + linux/sparc64/errnoent1.h \ + linux/sparc64/errnoent2.h \ + linux/sparc64/ioctlent.h.in \ + linux/sparc64/ioctlent1.h \ + linux/sparc64/ioctlent2.h \ + linux/sparc64/signalent.h \ + linux/sparc64/signalent1.h \ + linux/sparc64/signalent2.h \ + linux/sparc64/syscall1.h \ + linux/sparc64/syscallent.h \ + linux/sparc64/syscallent1.h \ + linux/sparc64/syscallent2.h \ + linux/subcall.h \ + linux/syscall.h \ + linux/tile/errnoent1.h \ + linux/tile/ioctlent.h.in \ + linux/tile/ioctlent1.h \ + linux/tile/signalent1.h \ + linux/tile/syscallent.h \ + linux/tile/syscallent1.h \ + linux/ubi-user.h \ + linux/x32/errnoent.h \ + linux/x32/errnoent1.h \ + linux/x32/ioctlent.h.in \ + linux/x32/ioctlent1.h \ + linux/x32/signalent.h \ + linux/x32/signalent1.h \ + linux/x32/syscallent.h \ + linux/x32/syscallent1.h \ + linux/x86_64/errnoent1.h \ + linux/x86_64/errnoent2.h \ + linux/x86_64/gentab.pl \ + linux/x86_64/ioctlent.h.in \ + linux/x86_64/ioctlent1.h \ + linux/x86_64/ioctlent2.h \ + linux/x86_64/signalent1.h \ + linux/x86_64/signalent2.h \ + linux/x86_64/syscallent.h \ + linux/x86_64/syscallent1.h \ + linux/x86_64/syscallent2.h \ + linux/xtensa/ioctlent.h.in \ + linux/xtensa/syscallent.h \ + signalent.sh \ + strace-graph \ + strace-log-merge \ + strace.spec \ + syscallent.sh \ + xlate.el .PHONY: srpm srpm: dist-xz rpmbuild --define '%_srcrpmdir .' -ts $(distdir).tar.xz -BUILT_SOURCES = +BUILT_SOURCES = .version + +$(srcdir)/.version: + $(AM_V_GEN)echo $(VERSION) > $@-t && mv $@-t $@ + +dist-hook: + $(AM_V_GEN)echo $(VERSION) > $(distdir)/.tarball-version + +today = $(shell date +%Y-%m-%d) +version_regexp = $(subst .,\.,$(VERSION)) +news_check_regexp = 'Noteworthy changes in release $(version_regexp) ($(today))' + +news-check: NEWS + $(AM_V_GEN)if head -1 $< | \ + grep -x $(news_check_regexp) >/dev/null; then \ + :; \ + else \ + echo >&2 '$<: check failed'; \ + exit 1; \ + fi if MAINTAINER_MODE gen_changelog_start_date = 2009-07-08 20:00 -$(srcdir)/ChangeLog: $(top_srcdir)/gitlog-to-changelog $(srcdir)/Makefile.in \ - $(top_srcdir)/.git/refs/heads/* +$(srcdir)/ChangeLog: $(srcdir)/gitlog-to-changelog $(srcdir)/Makefile.in \ + $(srcdir)/.version @rm -f $@.new - (cd $(top_srcdir); \ + (cd $(srcdir); \ ./gitlog-to-changelog --append-dot \ --since='$(gen_changelog_start_date)'; \ echo; echo; echo 'See ChangeLog-CVS for older changes.' \ @@ -111,11 +237,11 @@ $(srcdir)/ChangeLog: $(top_srcdir)/gitlog-to-changelog $(srcdir)/Makefile.in \ chmod 444 $@.new mv -f $@.new $@ -$(srcdir)/CREDITS: $(top_srcdir)/CREDITS.in $(top_srcdir)/.mailmap \ - $(srcdir)/Makefile.in $(top_srcdir)/.git/refs/heads/* +$(srcdir)/CREDITS: $(srcdir)/CREDITS.in $(srcdir)/.mailmap \ + $(srcdir)/Makefile.in $(srcdir)/.version $(AM_V_GEN) \ { \ - cd $(top_srcdir); \ + cd $(srcdir); \ sed '/^##/,$$d' CREDITS.in; \ { sed -n '1,/^##>/d; s/ \+/\t/; s/^./&/p' CREDITS.in; \ git log --pretty=format:'%aN %aE'; \ @@ -127,6 +253,7 @@ export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner --mode=go-w,go+rX IOCTLDIR = /usr/include IOCTLASM = asm +IOCTLSORT_INCLUDEDIR = $(IOCTLDIR) ioctlent_h_in = linux/ioctlent.h.in @@ -135,7 +262,8 @@ BUILT_SOURCES += $(ioctlent_h_in) $(srcdir)/$(ioctlent_h_in): ioctlsort $( $@ ioctlsort: $(srcdir)/linux/ioctlsort.c ioctls.h ioctldefs.h - $(filter-out -I%,$(LINK.c)) -I. -I$(IOCTLDIR) $(filter -I%,$(LINK.c)) \ + $(filter-out -I%,$(LINK.c)) -I. -I$(IOCTLSORT_INCLUDEDIR) \ + $(filter -I%,$(LINK.c)) \ -o $@ $< ioctls.h: $(srcdir)/linux/ioctlent.sh $(SHELL) $< $(IOCTLDIR) $(IOCTLASM) @@ -151,4 +279,5 @@ $(ioctlent_h): $(top_builddir)/config.status $(ioctlent_h_deps) $(MKDIR_P) $(builddir)/$(OS) cat $(ioctlent_h_deps) | \ $(COMPILE) -E -P - | \ - LC_ALL=C sort -u -k3,3 -k2,2 > $@ + LC_ALL=C sort -u -k3,3 -k2,2 | \ + awk -f $(srcdir)/linux/ioctlent-filter.awk > $@ diff --git a/Makefile.in b/Makefile.in index fd04f2e1..5bd50a8b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.5 from Makefile.am. +# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -60,8 +60,9 @@ bin_PROGRAMS = strace$(EXEEXT) subdir = . DIST_COMMON = README $(am__configure_deps) $(noinst_HEADERS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/config.h.in $(top_srcdir)/configure AUTHORS INSTALL \ - NEWS config.guess config.sub depcomp install-sh missing + $(srcdir)/config.h.in $(top_srcdir)/configure AUTHORS COPYING \ + INSTALL NEWS config.guess config.sub depcomp install-sh \ + missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/includedir.m4 \ $(top_srcdir)/m4/long_long.m4 $(top_srcdir)/m4/stat.m4 \ @@ -78,14 +79,15 @@ CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(man1dir)" PROGRAMS = $(bin_PROGRAMS) -am_strace_OBJECTS = strace.$(OBJEXT) syscall.$(OBJEXT) count.$(OBJEXT) \ - util.$(OBJEXT) desc.$(OBJEXT) file.$(OBJEXT) ipc.$(OBJEXT) \ - io.$(OBJEXT) ioctl.$(OBJEXT) mem.$(OBJEXT) net.$(OBJEXT) \ - process.$(OBJEXT) bjm.$(OBJEXT) quota.$(OBJEXT) \ - resource.$(OBJEXT) signal.$(OBJEXT) sock.$(OBJEXT) \ - system.$(OBJEXT) term.$(OBJEXT) time.$(OBJEXT) scsi.$(OBJEXT) \ - stream.$(OBJEXT) block.$(OBJEXT) pathtrace.$(OBJEXT) \ - mtd.$(OBJEXT) vsprintf.$(OBJEXT) loop.$(OBJEXT) +am_strace_OBJECTS = bjm.$(OBJEXT) block.$(OBJEXT) count.$(OBJEXT) \ + desc.$(OBJEXT) file.$(OBJEXT) io.$(OBJEXT) ioctl.$(OBJEXT) \ + ipc.$(OBJEXT) loop.$(OBJEXT) mem.$(OBJEXT) mtd.$(OBJEXT) \ + net.$(OBJEXT) pathtrace.$(OBJEXT) process.$(OBJEXT) \ + quota.$(OBJEXT) resource.$(OBJEXT) scsi.$(OBJEXT) \ + signal.$(OBJEXT) sock.$(OBJEXT) strace.$(OBJEXT) \ + stream.$(OBJEXT) syscall.$(OBJEXT) system.$(OBJEXT) \ + term.$(OBJEXT) time.$(OBJEXT) util.$(OBJEXT) \ + vsprintf.$(OBJEXT) strace_OBJECTS = $(am_strace_OBJECTS) strace_LDADD = $(LDADD) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -310,87 +312,197 @@ ARCH = @arch@ ACLOCAL_AMFLAGS = -I m4 AM_CFLAGS = $(WARN_CFLAGS) AM_CPPFLAGS = -I$(srcdir)/$(OS)/$(ARCH) -I$(srcdir)/$(OS) -I$(builddir)/$(OS) -strace_SOURCES = strace.c syscall.c count.c util.c desc.c file.c ipc.c \ - io.c ioctl.c mem.c net.c process.c bjm.c quota.c \ - resource.c signal.c sock.c system.c term.c time.c \ - scsi.c stream.c block.c pathtrace.c mtd.c vsprintf.c \ - loop.c +strace_SOURCES = \ + bjm.c \ + block.c \ + count.c \ + desc.c \ + file.c \ + io.c \ + ioctl.c \ + ipc.c \ + loop.c \ + mem.c \ + mtd.c \ + net.c \ + pathtrace.c \ + process.c \ + quota.c \ + resource.c \ + scsi.c \ + signal.c \ + sock.c \ + strace.c \ + stream.c \ + syscall.c \ + system.c \ + term.c \ + time.c \ + util.c \ + vsprintf.c noinst_HEADERS = defs.h -EXTRA_DIST = $(man_MANS) errnoent.sh signalent.sh syscallent.sh ioctlsort.c \ - debian/changelog debian/compat debian/control debian/copyright \ - debian/rules debian/source/format debian/watch \ - debian/strace64.install debian/strace64.manpages \ - debian/strace.docs debian/strace.examples debian/strace.install \ - debian/strace.manpages debian/strace-udeb.install \ - strace.spec \ - strace-graph strace-log-merge \ - ChangeLog ChangeLog-CVS COPYRIGHT CREDITS \ - README-linux README-linux-ptrace \ - linux/ioctlsort.c linux/ioctlent.sh \ - linux/ioctlent.h.in linux/errnoent.h linux/signalent.h \ - linux/syscall.h linux/dummy.h linux/mtd-abi.h \ - linux/i386/ioctlent.h.in linux/i386/syscallent.h \ - linux/alpha/errnoent.h linux/alpha/ioctlent.h.in \ - linux/alpha/signalent.h linux/alpha/syscallent.h \ - linux/arm/ioctlent.h.in linux/arm/syscallent.h \ - linux/arm/syscallent1.h \ - linux/arm/signalent1.h linux/arm/ioctlent1.h \ - linux/arm/errnoent1.h \ - linux/avr32/ioctlent.h.in linux/avr32/syscallent.h \ - linux/bfin/ioctlent.h.in linux/bfin/syscallent.h \ - linux/hppa/errnoent.h linux/hppa/ioctlent.h.in \ - linux/hppa/signalent.h linux/hppa/syscallent.h \ - linux/ia64/ioctlent.h.in \ - linux/ia64/signalent.h \ - linux/ia64/syscallent.h \ - linux/m68k/ioctlent.h.in linux/m68k/syscallent.h \ - linux/microblaze/ioctlent.h.in linux/microblaze/syscallent.h \ - linux/mips/ioctlent.sh linux/mips/errnoent.h \ - linux/mips/ioctlent.h.in linux/mips/signalent.h \ - linux/mips/syscallent.h \ - linux/powerpc/ioctlent.h.in linux/powerpc/ioctlent1.h \ - linux/powerpc/syscallent.h linux/powerpc/syscallent1.h \ - linux/powerpc/errnoent1.h linux/powerpc/signalent1.h \ - linux/s390/ioctlent.h.in \ - linux/s390/syscallent.h \ - linux/s390x/ioctlent.h.in \ - linux/s390x/syscallent.h \ - linux/sh/syscallent.h \ - linux/sh/ioctlent.h.in \ - linux/sh64/ioctlent.h.in linux/sh64/syscallent.h \ - linux/sparc/dummy2.h \ - linux/sparc/errnoent.h linux/sparc/errnoent1.h \ - linux/sparc/ioctlent.h.in linux/sparc/ioctlent1.h \ - linux/sparc/signalent.h linux/sparc/signalent1.h \ - linux/sparc/syscall1.h \ - linux/sparc/syscallent.h linux/sparc/syscallent1.h \ - linux/sparc/gen.pl \ - linux/sparc64/dummy2.h linux/sparc64/errnoent.h \ - linux/sparc64/errnoent1.h linux/sparc64/errnoent2.h \ - linux/sparc64/ioctlent.h.in linux/sparc64/ioctlent1.h \ - linux/sparc64/ioctlent2.h linux/sparc64/signalent.h \ - linux/sparc64/signalent1.h linux/sparc64/signalent2.h \ - linux/sparc64/syscall1.h \ - linux/sparc64/syscallent.h linux/sparc64/syscallent1.h \ - linux/sparc64/syscallent2.h \ - linux/tile/ioctlent.h.in linux/tile/syscallent.h \ - linux/x32/errnoent.h linux/x32/ioctlent.h.in \ - linux/x32/signalent.h linux/x32/syscallent.h \ - linux/x32/errnoent1.h linux/x32/ioctlent1.h \ - linux/x32/signalent1.h linux/x32/syscallent1.h \ - linux/x86_64/ioctlent.h.in linux/x86_64/syscallent.h \ - linux/x86_64/gentab.pl \ - linux/x86_64/errnoent1.h linux/x86_64/ioctlent1.h \ - linux/x86_64/signalent1.h linux/x86_64/syscallent1.h \ - linux/x86_64/errnoent2.h linux/x86_64/ioctlent2.h \ - linux/x86_64/signalent2.h linux/x86_64/syscallent2.h \ - xlate.el - -BUILT_SOURCES = $(am__append_1) $(ioctlent_h) +# Enable this to get link map generated +#strace_CFLAGS = $(AM_CFLAGS) -Wl,-Map=strace.mapfile +EXTRA_DIST = \ + $(man_MANS) \ + .version \ + COPYING \ + CREDITS \ + ChangeLog \ + ChangeLog-CVS \ + README-linux \ + README-linux-ptrace \ + debian/changelog \ + debian/compat \ + debian/control \ + debian/copyright \ + debian/rules \ + debian/source/format \ + debian/strace-udeb.install \ + debian/strace.docs \ + debian/strace.examples \ + debian/strace.install \ + debian/strace.manpages \ + debian/strace64.install \ + debian/strace64.manpages \ + debian/watch \ + errnoent.sh \ + ioctlsort.c \ + linux/aarch64/errnoent1.h \ + linux/aarch64/ioctlent.h.in \ + linux/aarch64/ioctlent1.h \ + linux/aarch64/signalent1.h \ + linux/aarch64/syscallent.h \ + linux/aarch64/syscallent1.h \ + linux/alpha/errnoent.h \ + linux/alpha/ioctlent.h.in \ + linux/alpha/signalent.h \ + linux/alpha/syscallent.h \ + linux/arm/ioctlent.h.in \ + linux/arm/syscallent.h \ + linux/avr32/ioctlent.h.in \ + linux/avr32/syscallent.h \ + linux/bfin/ioctlent.h.in \ + linux/bfin/syscallent.h \ + linux/dummy.h \ + linux/errnoent.h \ + linux/hppa/errnoent.h \ + linux/hppa/ioctlent.h.in \ + linux/hppa/signalent.h \ + linux/hppa/syscallent.h \ + linux/i386/ioctlent.h.in \ + linux/i386/syscallent.h \ + linux/ia64/ioctlent.h.in \ + linux/ia64/signalent.h \ + linux/ia64/syscallent.h \ + linux/ioctlent-filter.awk \ + linux/ioctlent.h.in \ + linux/ioctlent.sh \ + linux/ioctlsort.c \ + linux/m68k/ioctlent.h.in \ + linux/m68k/syscallent.h \ + linux/metag/ioctlent.h.in \ + linux/metag/syscallent.h \ + linux/microblaze/ioctlent.h.in \ + linux/microblaze/syscallent.h \ + linux/mips/errnoent.h \ + linux/mips/ioctlent.h.in \ + linux/mips/ioctlent.sh \ + linux/mips/signalent.h \ + linux/mips/syscallent-compat.h \ + linux/mips/syscallent-n32.h \ + linux/mips/syscallent-n64.h \ + linux/mips/syscallent-o32.h \ + linux/mips/syscallent.h \ + linux/mtd-abi.h \ + linux/or1k/ioctlent.h.in \ + linux/or1k/syscallent.h \ + linux/powerpc/errnoent1.h \ + linux/powerpc/ioctlent.h.in \ + linux/powerpc/ioctlent1.h \ + linux/powerpc/signalent1.h \ + linux/powerpc/syscallent.h \ + linux/powerpc/syscallent1.h \ + linux/s390/ioctlent.h.in \ + linux/s390/syscallent.h \ + linux/s390x/ioctlent.h.in \ + linux/s390x/syscallent.h \ + linux/sh/ioctlent.h.in \ + linux/sh/syscallent.h \ + linux/sh64/ioctlent.h.in \ + linux/sh64/syscallent.h \ + linux/signalent.h \ + linux/sparc/dummy2.h \ + linux/sparc/errnoent.h \ + linux/sparc/errnoent1.h \ + linux/sparc/gen.pl \ + linux/sparc/ioctlent.h.in \ + linux/sparc/ioctlent1.h \ + linux/sparc/signalent.h \ + linux/sparc/signalent1.h \ + linux/sparc/syscall1.h \ + linux/sparc/syscallent.h \ + linux/sparc/syscallent1.h \ + linux/sparc64/dummy2.h \ + linux/sparc64/errnoent.h \ + linux/sparc64/errnoent1.h \ + linux/sparc64/errnoent2.h \ + linux/sparc64/ioctlent.h.in \ + linux/sparc64/ioctlent1.h \ + linux/sparc64/ioctlent2.h \ + linux/sparc64/signalent.h \ + linux/sparc64/signalent1.h \ + linux/sparc64/signalent2.h \ + linux/sparc64/syscall1.h \ + linux/sparc64/syscallent.h \ + linux/sparc64/syscallent1.h \ + linux/sparc64/syscallent2.h \ + linux/subcall.h \ + linux/syscall.h \ + linux/tile/errnoent1.h \ + linux/tile/ioctlent.h.in \ + linux/tile/ioctlent1.h \ + linux/tile/signalent1.h \ + linux/tile/syscallent.h \ + linux/tile/syscallent1.h \ + linux/ubi-user.h \ + linux/x32/errnoent.h \ + linux/x32/errnoent1.h \ + linux/x32/ioctlent.h.in \ + linux/x32/ioctlent1.h \ + linux/x32/signalent.h \ + linux/x32/signalent1.h \ + linux/x32/syscallent.h \ + linux/x32/syscallent1.h \ + linux/x86_64/errnoent1.h \ + linux/x86_64/errnoent2.h \ + linux/x86_64/gentab.pl \ + linux/x86_64/ioctlent.h.in \ + linux/x86_64/ioctlent1.h \ + linux/x86_64/ioctlent2.h \ + linux/x86_64/signalent1.h \ + linux/x86_64/signalent2.h \ + linux/x86_64/syscallent.h \ + linux/x86_64/syscallent1.h \ + linux/x86_64/syscallent2.h \ + linux/xtensa/ioctlent.h.in \ + linux/xtensa/syscallent.h \ + signalent.sh \ + strace-graph \ + strace-log-merge \ + strace.spec \ + syscallent.sh \ + xlate.el + +BUILT_SOURCES = .version $(am__append_1) $(ioctlent_h) +today = $(shell date +%Y-%m-%d) +version_regexp = $(subst .,\.,$(VERSION)) +news_check_regexp = 'Noteworthy changes in release $(version_regexp) ($(today))' @MAINTAINER_MODE_TRUE@gen_changelog_start_date = 2009-07-08 20:00 @MAINTAINER_MODE_TRUE@IOCTLDIR = /usr/include @MAINTAINER_MODE_TRUE@IOCTLASM = asm +@MAINTAINER_MODE_TRUE@IOCTLSORT_INCLUDEDIR = $(IOCTLDIR) @MAINTAINER_MODE_TRUE@ioctlent_h_in = linux/ioctlent.h.in ioctlent_h = $(builddir)/$(OS)/ioctlent.h CLEANFILES = $(ioctlent_h) @@ -755,12 +867,6 @@ distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) - @case `sed 15q $(srcdir)/NEWS` in \ - *"$(VERSION)"*) : ;; \ - *) \ - echo "NEWS not updated; not releasing" 1>&2; \ - exit 1;; \ - esac @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ @@ -830,6 +936,9 @@ distdir: $(DISTFILES) || exit 1; \ fi; \ done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ @@ -895,7 +1004,7 @@ distcheck: dist *.zip*) \ unzip $(distdir).zip ;;\ esac - chmod -R a-w $(distdir); chmod a+w $(distdir) + chmod -R a-w $(distdir); chmod u+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) @@ -1082,8 +1191,8 @@ uninstall-man: uninstall-man1 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-binPROGRAMS \ clean-generic ctags ctags-recursive dist dist-all dist-bzip2 \ - dist-gzip dist-lzip dist-lzma dist-shar dist-tarZ dist-xz \ - dist-zip distcheck distclean distclean-compile \ + dist-gzip dist-hook dist-lzip dist-lzma dist-shar dist-tarZ \ + dist-xz dist-zip distcheck distclean distclean-compile \ distclean-generic distclean-hdr distclean-tags distcleancheck \ distdir distuninstallcheck dvi dvi-am html html-am info \ info-am install install-am install-binPROGRAMS \ @@ -1102,10 +1211,25 @@ uninstall-man: uninstall-man1 .PHONY: srpm srpm: dist-xz rpmbuild --define '%_srcrpmdir .' -ts $(distdir).tar.xz -@MAINTAINER_MODE_TRUE@$(srcdir)/ChangeLog: $(top_srcdir)/gitlog-to-changelog $(srcdir)/Makefile.in \ -@MAINTAINER_MODE_TRUE@ $(top_srcdir)/.git/refs/heads/* + +$(srcdir)/.version: + $(AM_V_GEN)echo $(VERSION) > $@-t && mv $@-t $@ + +dist-hook: + $(AM_V_GEN)echo $(VERSION) > $(distdir)/.tarball-version + +news-check: NEWS + $(AM_V_GEN)if head -1 $< | \ + grep -x $(news_check_regexp) >/dev/null; then \ + :; \ + else \ + echo >&2 '$<: check failed'; \ + exit 1; \ + fi +@MAINTAINER_MODE_TRUE@$(srcdir)/ChangeLog: $(srcdir)/gitlog-to-changelog $(srcdir)/Makefile.in \ +@MAINTAINER_MODE_TRUE@ $(srcdir)/.version @MAINTAINER_MODE_TRUE@ @rm -f $@.new -@MAINTAINER_MODE_TRUE@ (cd $(top_srcdir); \ +@MAINTAINER_MODE_TRUE@ (cd $(srcdir); \ @MAINTAINER_MODE_TRUE@ ./gitlog-to-changelog --append-dot \ @MAINTAINER_MODE_TRUE@ --since='$(gen_changelog_start_date)'; \ @MAINTAINER_MODE_TRUE@ echo; echo; echo 'See ChangeLog-CVS for older changes.' \ @@ -1113,11 +1237,11 @@ srpm: dist-xz @MAINTAINER_MODE_TRUE@ chmod 444 $@.new @MAINTAINER_MODE_TRUE@ mv -f $@.new $@ -@MAINTAINER_MODE_TRUE@$(srcdir)/CREDITS: $(top_srcdir)/CREDITS.in $(top_srcdir)/.mailmap \ -@MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_srcdir)/.git/refs/heads/* +@MAINTAINER_MODE_TRUE@$(srcdir)/CREDITS: $(srcdir)/CREDITS.in $(srcdir)/.mailmap \ +@MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(srcdir)/.version @MAINTAINER_MODE_TRUE@ $(AM_V_GEN) \ @MAINTAINER_MODE_TRUE@ { \ -@MAINTAINER_MODE_TRUE@ cd $(top_srcdir); \ +@MAINTAINER_MODE_TRUE@ cd $(srcdir); \ @MAINTAINER_MODE_TRUE@ sed '/^##/,$$d' CREDITS.in; \ @MAINTAINER_MODE_TRUE@ { sed -n '1,/^##>/d; s/ \+/\t/; s/^./&/p' CREDITS.in; \ @MAINTAINER_MODE_TRUE@ git log --pretty=format:'%aN %aE'; \ @@ -1130,7 +1254,8 @@ srpm: dist-xz @MAINTAINER_MODE_TRUE@$(srcdir)/$(ioctlent_h_in): ioctlsort @MAINTAINER_MODE_TRUE@ $( $@ @MAINTAINER_MODE_TRUE@ioctlsort: $(srcdir)/linux/ioctlsort.c ioctls.h ioctldefs.h -@MAINTAINER_MODE_TRUE@ $(filter-out -I%,$(LINK.c)) -I. -I$(IOCTLDIR) $(filter -I%,$(LINK.c)) \ +@MAINTAINER_MODE_TRUE@ $(filter-out -I%,$(LINK.c)) -I. -I$(IOCTLSORT_INCLUDEDIR) \ +@MAINTAINER_MODE_TRUE@ $(filter -I%,$(LINK.c)) \ @MAINTAINER_MODE_TRUE@ -o $@ $< @MAINTAINER_MODE_TRUE@ioctls.h: $(srcdir)/linux/ioctlent.sh @MAINTAINER_MODE_TRUE@ $(SHELL) $< $(IOCTLDIR) $(IOCTLASM) @@ -1139,7 +1264,8 @@ $(ioctlent_h): $(top_builddir)/config.status $(ioctlent_h_deps) $(MKDIR_P) $(builddir)/$(OS) cat $(ioctlent_h_deps) | \ $(COMPILE) -E -P - | \ - LC_ALL=C sort -u -k3,3 -k2,2 > $@ + LC_ALL=C sort -u -k3,3 -k2,2 | \ + awk -f $(srcdir)/linux/ioctlent-filter.awk > $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/NEWS b/NEWS index 1f3de086..1ec49f7d 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,58 @@ -Noteworthy changes in release 4.7 -================================= +Noteworthy changes in release 4.8 (2013-06-03) +============================================== + +* Changes in behavior + * In case of normal strace termination, when the trace output is + redirected to a pipe, strace now closes it and waits for the pipe + process termination before exit. + +* Improvements + * Implemented tracing using PTRACE_SEIZE API (when available). + * Implemented more reliable PTRACE_GETREGSET-based process personality + detection on x86-64 and x32 (when available). + * Added -e trace=memory option for tracing memory mapping related syscalls. + * Documented -b option. + * Allowed exit status messages to be suppressed by giving -q option twice. + * Added AArch64 architecture support + (addresses Debian bug #693074 and Fedora bug #969858). + * Added support for OpenRISC 1000, Meta, and Xtensa architectures. + * Added tilegx personality support for Tile. + * Enhanced support of NOMMU architectures. + * Enhanced decoding of getdents, mmap, perf_event_open, ptrace, and + quotactl syscalls. + * Added new syscall entries to match Linux 3.9. + * Regenerated the list of common ioctl names from Linux 3.9. + * Updated the list of errno constants. + * Updated lists of AF_*, MADV_*, MAP_*, MSG_*, MS_*, PF_*, PR_*, + PTRACE_O_*, and TCP_* constants. + * Implemented decoding of UBI ioctls. + * Removed redundant "*32" ioctl names. + +* Bug fixes + * Fixed ERESTARTNOINTR leaking to userspace on ancient kernels + (addresses Fedora bug #659382). + * Fixed kernel release string parsing + (addresses Debian bug #702309). + * Fixed decoding of *xattr syscalls + (addresses Fedora bug #885233). + * Fixed handling of files with 64-bit inode numbers by 32-bit strace + (addresses Fedora bug #912790). + * Fixed tracing forks on SPARC. + * Fixed decoding of fadvise64, fallocate, ftruncate64, io_submit, pread, + preadv, pwrite, pwritev, readahead, sigaltstack, sync_file_range, sysctl, + and truncate64 syscalls. + * Fixed categories of multiple syscalls on most of supported architectures. + * Fixed decoding of non-native 32-bit personality recv[m]msg syscalls. + * Fixed decoding of multiple 32-bit personality syscalls on x32. + * Fixed decoding of long long syscall arguments on ARM, MIPS/o32, PowerPC, + S390x, and Tile architectures. + * Fixed semtimedop decoding on S390x. + * Fixed sram_alloc decoding on Blackfin. + * Fixed build when process_vm_readv is a stab. + * Fixed build with older versions of libaio.h. + +Noteworthy changes in release 4.7 (2012-05-02) +============================================== * Changes in behavior * strace no longer suspends waitpid until there is a child @@ -74,8 +127,8 @@ Noteworthy changes in release 4.7 * Linux kernel >= 2.6.18 is recommended. Older versions might still work but they haven't been thoroughly tested with this release. -Noteworthy changes in release 4.6 -================================= +Noteworthy changes in release 4.6 (2011-03-15) +============================================== * Changes in behavior * Print diagnostic information about changes in personality mode to @@ -125,8 +178,8 @@ Noteworthy changes in release 4.6 * Fixed misleading italics in the manual page. (Addresses Debian bug #589323). -Noteworthy changes in release 4.5.20 -==================================== +Noteworthy changes in release 4.5.20 (2010-04-13) +================================================= * Improvements * Implemented decoding of new linux syscalls: inotify_init1, recvmmsg. @@ -160,8 +213,8 @@ Noteworthy changes in release 4.5.20 (Addresses Debian bug #513014) * Corrected handling of killed threads. -Noteworthy changes in release 4.5.19 -==================================== +Noteworthy changes in release 4.5.19 (2009-10-21) +================================================= * Changes in behavior * When command exits, strace now exits with the same exit status. diff --git a/README b/README index 244a5c3f..4ef0834a 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ This is strace, a system call tracer for Linux. strace is released under a Berkeley-style license at the request -of Paul Kranenburg; see the file COPYRIGHT for details. +of Paul Kranenburg; see the file COPYING for details. See the file CREDITS for a list of authors and other contributors. diff --git a/aclocal.m4 b/aclocal.m4 index 09581880..69994aef 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,4 +1,4 @@ -# generated automatically by aclocal 1.11.5 -*- Autoconf -*- +# generated automatically by aclocal 1.11.6 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, @@ -38,7 +38,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.5], [], +m4_if([$1], [1.11.6], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -54,7 +54,7 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.5])dnl +[AM_AUTOMAKE_VERSION([1.11.6])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) @@ -416,18 +416,6 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 8 - -# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. -AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) - # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, diff --git a/bjm.c b/bjm.c index 6ae37587..cd7dc13f 100644 --- a/bjm.c +++ b/bjm.c @@ -115,7 +115,7 @@ sys_query_module(struct tcb *tcp) printflags(modflags, mi.flags, "MOD_???"); tprintf(", usecount=%lu}, ", mi.usecount); } - tprintf("%Zu", ret); + tprintf("%lu", (unsigned long)ret); } else if ((tcp->u_arg[1]==QM_MODULES) || (tcp->u_arg[1]==QM_DEPS) || (tcp->u_arg[1]==QM_REFS)) { @@ -127,11 +127,11 @@ sys_query_module(struct tcb *tcp) if (!data) { fprintf(stderr, "out of memory\n"); - tprintf(" /* %Zu entries */ ", ret); + tprintf(" /* %lu entries */ ", (unsigned long)ret); } else { if (umoven(tcp, tcp->u_arg[2], tcp->u_arg[3], data) < 0) { - tprintf(" /* %Zu entries */ ", ret); + tprintf(" /* %lu entries */ ", (unsigned long)ret); } else { for (idx = 0; idx < ret; idx++) { tprintf("%s%s", @@ -143,8 +143,8 @@ sys_query_module(struct tcb *tcp) free(data); } } else - tprintf(" /* %Zu entries */ ", ret); - tprintf("}, %Zu", ret); + tprintf(" /* %lu entries */ ", (unsigned long)ret); + tprintf("}, %lu", (unsigned long)ret); } else if (tcp->u_arg[1]==QM_SYMBOLS) { tprints("{"); if (!abbrev(tcp)) { @@ -154,11 +154,11 @@ sys_query_module(struct tcb *tcp) if (!data) { fprintf(stderr, "out of memory\n"); - tprintf(" /* %Zu entries */ ", ret); + tprintf(" /* %lu entries */ ", (unsigned long)ret); } else { if (umoven(tcp, tcp->u_arg[2], tcp->u_arg[3], data) < 0) { - tprintf(" /* %Zu entries */ ", ret); + tprintf(" /* %lu entries */ ", (unsigned long)ret); } else { for (idx = 0; idx < ret; idx++) { tprintf("%s{name=%s, value=%lu}", @@ -171,8 +171,8 @@ sys_query_module(struct tcb *tcp) free(data); } } else - tprintf(" /* %Zu entries */ ", ret); - tprintf("}, %Zd", ret); + tprintf(" /* %lu entries */ ", (unsigned long)ret); + tprintf("}, %ld", (unsigned long)ret); } else { printstr(tcp, tcp->u_arg[2], tcp->u_arg[3]); tprintf(", %#lx", tcp->u_arg[4]); @@ -195,8 +195,7 @@ int sys_init_module(struct tcb *tcp) { if (entering(tcp)) { - tprintf("%#lx, ", tcp->u_arg[0]); - tprintf("%lu, ", tcp->u_arg[1]); + tprintf("%#lx, %lu, ", tcp->u_arg[0], tcp->u_arg[1]); printstr(tcp, tcp->u_arg[2], -1); } return 0; diff --git a/block.c b/block.c index ea571b6d..374002ea 100644 --- a/block.c +++ b/block.c @@ -188,7 +188,7 @@ block_ioctl(struct tcb *tcp, long code, long arg) tprintf(", %#lx", arg); else tprintf(", %lu", val); - } + } break; #ifdef HAVE_BLKGETSIZE64 diff --git a/config.guess b/config.guess index d622a44e..120cc0d2 100755 --- a/config.guess +++ b/config.guess @@ -1,14 +1,12 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. +# Copyright 1992-2013 Free Software Foundation, Inc. -timestamp='2012-02-10' +timestamp='2013-05-16' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or +# the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -22,19 +20,17 @@ timestamp='2012-02-10' # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Originally written by Per Bothner. Please send patches (context -# diff format) to and include a ChangeLog -# entry. +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). # -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. +# Originally written by Per Bothner. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# +# Please send patches with a ChangeLog entry to config-patches@gnu.org. + me=`echo "$0" | sed -e 's,.*/,,'` @@ -54,9 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -Free Software Foundation, Inc. +Copyright 1992-2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -138,6 +132,27 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + ;; +esac + # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in @@ -200,6 +215,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} @@ -302,7 +321,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) + arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) @@ -801,6 +820,9 @@ EOF i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; @@ -852,21 +874,21 @@ EOF exit ;; *:GNU:*:*) # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in @@ -879,59 +901,54 @@ EOF EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo ${UNAME_MACHINE}-unknown-linux-gnueabi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else - echo ${UNAME_MACHINE}-unknown-linux-gnueabihf + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-gnu + echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-gnu + echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) - LIBC=gnu - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build @@ -950,54 +967,57 @@ EOF #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; + or1k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; or32:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) - echo sparc-unknown-linux-gnu + echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu + echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu + echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu + echo powerpc-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu + echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. @@ -1201,6 +1221,9 @@ EOF BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; @@ -1227,19 +1250,21 @@ EOF exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - i386) - eval $set_cc_for_build - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - UNAME_PROCESSOR="x86_64" - fi - fi ;; - unknown) UNAME_PROCESSOR=powerpc ;; - esac + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) @@ -1256,7 +1281,7 @@ EOF NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; - NSE-?:NONSTOP_KERNEL:*:*) + NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) @@ -1330,9 +1355,6 @@ EOF exit ;; esac -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - eval $set_cc_for_build cat >$dummy.c < header file. */ +#undef HAVE_ELF_H + /* Define to 1 if you have the `fork' function. */ #undef HAVE_FORK @@ -154,6 +168,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_LINUX_NETLINK_H +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_PERF_EVENT_H + /* Define to 1 if you have the header file. */ #undef HAVE_LINUX_PTRACE_H @@ -247,6 +264,9 @@ /* Define to 1 if the system has the type `struct ia64_fpreg'. */ #undef HAVE_STRUCT_IA64_FPREG +/* Define to 1 if `u.c.flags' is a member of `struct iocb'. */ +#undef HAVE_STRUCT_IOCB_U_C_FLAGS + /* Define to 1 if `msg_control' is a member of `struct msghdr'. */ #undef HAVE_STRUCT_MSGHDR_MSG_CONTROL @@ -389,12 +409,18 @@ . */ #undef MAJOR_IN_SYSMACROS +/* Define for the Meta architecture. */ +#undef METAG + /* Define for the MicroBlaze architecture. */ #undef MICROBLAZE /* Define for the MIPS architecture. */ #undef MIPS +/* Define for the OpenRISC 1000 architecture. */ +#undef OR1K + /* Name of package */ #undef PACKAGE @@ -440,6 +466,9 @@ /* The size of `long', as computed by sizeof. */ #undef SIZEOF_LONG +/* The size of `long long', as computed by sizeof. */ +#undef SIZEOF_LONG_LONG + /* The size of `rlim_t', as computed by sizeof. */ #undef SIZEOF_RLIM_T @@ -501,6 +530,9 @@ /* Define for the 64bit AMD x86-64 architecture. */ #undef X86_64 +/* Define for the Xtensa architecture */ +#undef XTENSA + /* Define to 1 if on MINIX. */ #undef _MINIX diff --git a/config.sub b/config.sub index c894da45..cd7c0f79 100755 --- a/config.sub +++ b/config.sub @@ -1,24 +1,18 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. +# Copyright 1992-2013 Free Software Foundation, Inc. -timestamp='2012-02-10' +timestamp='2013-04-24' -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # -# This program 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 General Public License for more details. +# This program 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 +# General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . @@ -26,11 +20,12 @@ timestamp='2012-02-10' # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). -# Please send patches to . Submit a context -# diff and a properly formatted GNU ChangeLog entry. +# Please send patches with a ChangeLog entry to config-patches@gnu.org. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. @@ -73,9 +68,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -Free Software Foundation, Inc. +Copyright 1992-2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -123,7 +116,7 @@ esac maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) @@ -156,7 +149,7 @@ case $os in -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze) + -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; @@ -225,6 +218,12 @@ case $os in -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; -lynx*) os=-lynxos ;; @@ -253,8 +252,10 @@ case $basic_machine in | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ - | be32 | be64 \ + | arc | arceb \ + | arm | armh | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | be32 | be64 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ @@ -267,7 +268,7 @@ case $basic_machine in | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep | metag \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ @@ -285,16 +286,17 @@ case $basic_machine in | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ - | nios | nios2 \ + | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 \ - | or32 \ + | or1k | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ @@ -364,8 +366,8 @@ case $basic_machine in | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armh-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ @@ -383,7 +385,8 @@ case $basic_machine in | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ @@ -401,12 +404,13 @@ case $basic_machine in | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | orion-* \ @@ -782,9 +786,13 @@ case $basic_machine in basic_machine=ns32k-utek os=-sysv ;; - microblaze) + microblaze*) basic_machine=microblaze-xilinx ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; mingw32) basic_machine=i386-pc os=-mingw32 @@ -1013,7 +1021,11 @@ case $basic_machine in basic_machine=i586-unknown os=-pw32 ;; - rdos) + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) basic_machine=i386-pc os=-rdos ;; @@ -1340,21 +1352,21 @@ case $os in -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* \ + | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ + | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-uclibc* \ + | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ @@ -1486,9 +1498,6 @@ case $os in -aros*) os=-aros ;; - -kaos*) - os=-kaos - ;; -zvmoe) os=-zvmoe ;; @@ -1537,6 +1546,9 @@ case $basic_machine in c4x-* | tic4x-*) os=-coff ;; + hexagon-*) + os=-elf + ;; tic54x-*) os=-coff ;; @@ -1577,6 +1589,9 @@ case $basic_machine in mips*-*) os=-elf ;; + or1k-*) + os=-elf + ;; or32-*) os=-coff ;; diff --git a/configure b/configure index 253181b6..a8fe9652 100755 --- a/configure +++ b/configure @@ -1,6 +1,8 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for strace 4.7. +# Generated by GNU Autoconf 2.68 for strace 4.8. +# +# Report bugs to . # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -236,7 +238,8 @@ fi $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: strace-devel@lists.sourceforge.net about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." @@ -557,9 +560,9 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='strace' PACKAGE_TARNAME='strace' -PACKAGE_VERSION='4.7' -PACKAGE_STRING='strace 4.7' -PACKAGE_BUGREPORT='' +PACKAGE_VERSION='4.8' +PACKAGE_STRING='strace 4.8' +PACKAGE_BUGREPORT='strace-devel@lists.sourceforge.net' PACKAGE_URL='' ac_unique_file="strace.c" @@ -714,6 +717,7 @@ enable_option_checking enable_silent_rules enable_maintainer_mode enable_dependency_tracking +enable_gcc_Werror ' ac_precious_vars='build_alias host_alias @@ -1266,7 +1270,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures strace 4.7 to adapt to many kinds of systems. +\`configure' configures strace 4.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1336,7 +1340,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of strace 4.7:";; + short | recursive ) echo "Configuration of strace 4.8:";; esac cat <<\_ACEOF @@ -1350,6 +1354,7 @@ Optional Features: (and sometimes confusing) to the casual installer --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors + --enable-gcc-Werror turn on gcc's -Werror option Some influential environment variables: CC C compiler command @@ -1364,7 +1369,7 @@ Some influential environment variables: Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. -Report bugs to the package provider. +Report bugs to . _ACEOF ac_status=$? fi @@ -1427,7 +1432,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -strace configure 4.7 +strace configure 4.8 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -1586,6 +1591,10 @@ $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ------------------------------------------------- ## +## Report this to strace-devel@lists.sourceforge.net ## +## ------------------------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 @@ -2156,7 +2165,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by strace $as_me 4.7, which was +It was created by strace $as_me 4.8, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -3013,7 +3022,7 @@ fi # Define the identity of the package. PACKAGE='strace' - VERSION='4.7' + VERSION='4.8' cat >>confdefs.h <<_ACEOF @@ -4627,6 +4636,12 @@ sparc*) $as_echo "#define SPARC 1" >>confdefs.h + ;; +metag*) + arch=metag + +$as_echo "#define METAG 1" >>confdefs.h + ;; mips*) arch=mips @@ -4656,6 +4671,12 @@ arm*) $as_echo "#define ARM 1" >>confdefs.h + ;; +aarch64*) + arch=aarch64 + +$as_echo "#define AARCH64 1" >>confdefs.h + ;; avr32*) arch=avr32 @@ -4747,6 +4768,20 @@ microblaze*) $as_echo "#define MICROBLAZE 1" >>confdefs.h ;; +or1k*) + arch=or1k + +$as_echo "#define OR1K 1" >>confdefs.h + + ;; + +xtensa*) + arch=xtensa + +$as_echo "#define XTENSA 1" >>confdefs.h + + ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: NO!" >&5 $as_echo "NO!" >&6; } @@ -4874,6 +4909,49 @@ if test "x$gl_cv_warn__Wwrite_strings" = xyes; then : as_fn_append WARN_CFLAGS " -Wwrite-strings" fi +# Check whether --enable-gcc-Werror was given. +if test "${enable_gcc_Werror+set}" = set; then : + enableval=$enable_gcc_Werror; case $enableval in + yes) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -Werror" >&5 +$as_echo_n "checking whether compiler handles -Werror... " >&6; } +if ${gl_cv_warn__Werror+:} false; then : + $as_echo_n "(cached) " >&6 +else + + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="${CPPFLAGS} -Werror" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + gl_cv_warn__Werror=yes +else + gl_cv_warn__Werror=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext + CPPFLAGS="$save_CPPFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn__Werror" >&5 +$as_echo "$gl_cv_warn__Werror" >&6; } +if test "x$gl_cv_warn__Werror" = xyes; then : + as_fn_append WARN_CFLAGS " -Werror" +fi + ;; + no) ;; + *) as_fn_error $? "bad value $enableval for gcc-Werror option" "$LINENO" 5 ;; + esac + +fi + ac_ext=c @@ -6217,7 +6295,7 @@ _ACEOF fi done -for ac_header in asm/cachectl.h asm/sysmips.h inttypes.h ioctls.h libaio.h linux/capability.h linux/ptrace.h linux/utsname.h mqueue.h netinet/sctp.h poll.h stropts.h sys/acl.h sys/asynch.h sys/conf.h sys/epoll.h sys/filio.h sys/ioctl.h sys/poll.h sys/ptrace.h sys/reg.h sys/uio.h sys/vfs.h +for ac_header in asm/cachectl.h asm/sysmips.h elf.h inttypes.h ioctls.h linux/capability.h linux/perf_event.h linux/ptrace.h linux/utsname.h mqueue.h netinet/sctp.h poll.h stropts.h sys/acl.h sys/asynch.h sys/conf.h sys/epoll.h sys/filio.h sys/ioctl.h sys/poll.h sys/ptrace.h sys/reg.h sys/uio.h sys/vfs.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -6707,6 +6785,39 @@ cat >>confdefs.h <<_ACEOF _ACEOF +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 +$as_echo_n "checking size of long long... " >&6; } +if ${ac_cv_sizeof_long_long+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_long_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (long long) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_long_long=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 +$as_echo "$ac_cv_sizeof_long_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long +_ACEOF + + # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. @@ -6742,6 +6853,54 @@ _ACEOF +for ac_header in libaio.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "libaio.h" "ac_cv_header_libaio_h" "$ac_includes_default" +if test "x$ac_cv_header_libaio_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBAIO_H 1 +_ACEOF + + ac_fn_c_check_member "$LINENO" "struct iocb" "u.c.flags" "ac_cv_member_struct_iocb_u_c_flags" "#include +" +if test "x$ac_cv_member_struct_iocb_u_c_flags" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_IOCB_U_C_FLAGS 1 +_ACEOF + + +fi + + ac_fn_c_check_decl "$LINENO" "IO_CMD_PWRITE" "ac_cv_have_decl_IO_CMD_PWRITE" "#include +" +if test "x$ac_cv_have_decl_IO_CMD_PWRITE" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_IO_CMD_PWRITE $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "IO_CMD_PWRITEV" "ac_cv_have_decl_IO_CMD_PWRITEV" "#include +" +if test "x$ac_cv_have_decl_IO_CMD_PWRITEV" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_IO_CMD_PWRITEV $ac_have_decl +_ACEOF + + +fi + +done + + # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -7336,7 +7495,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by strace $as_me 4.7, which was +This file was extended by strace $as_me 4.8, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -7396,13 +7555,13 @@ $config_headers Configuration commands: $config_commands -Report bugs to the package provider." +Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -strace config.status 4.7 +strace config.status 4.8 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 4107bfa0..c4896f3d 100644 --- a/configure.ac +++ b/configure.ac @@ -1,10 +1,12 @@ dnl Process this file with autoconf to create configure. Use autoreconf. AC_PREREQ(2.57) -AC_INIT([strace],[4.7]) +AC_INIT([strace], + m4_esyscmd([./git-version-gen .tarball-version]), + [strace-devel@lists.sourceforge.net]) AC_CONFIG_SRCDIR([strace.c]) AC_CONFIG_AUX_DIR([.]) -AM_CONFIG_HEADER([config.h]) -AM_INIT_AUTOMAKE([foreign check-news dist-xz no-dist-gzip silent-rules]) +AC_CONFIG_HEADERS([config.h]) +AM_INIT_AUTOMAKE([foreign dist-xz no-dist-gzip silent-rules]) AM_MAINTAINER_MODE AC_CANONICAL_HOST @@ -37,6 +39,10 @@ sparc*) arch=sparc AC_DEFINE([SPARC], 1, [Define for the SPARC architecture.]) ;; +metag*) + arch=metag + AC_DEFINE([METAG], 1, [Define for the Meta architecture.]) + ;; mips*) arch=mips AC_DEFINE([MIPS], 1, [Define for the MIPS architecture.]) @@ -56,6 +62,10 @@ arm*) arch=arm AC_DEFINE([ARM], 1, [Define for the ARM architecture.]) ;; +aarch64*) + arch=aarch64 + AC_DEFINE([AARCH64], 1, [Define for the AArch64 architecture.]) + ;; avr32*) arch=avr32 AC_DEFINE([AVR32], 1, [Define for the AVR32 architecture.]) @@ -107,6 +117,16 @@ microblaze*) arch=microblaze AC_DEFINE([MICROBLAZE], 1, [Define for the MicroBlaze architecture.]) ;; +or1k*) + arch=or1k + AC_DEFINE([OR1K], 1, [Define for the OpenRISC 1000 architecture.]) + ;; + +xtensa*) + arch=xtensa + AC_DEFINE([XTENSA], 1, [Define for the Xtensa architecture]) + ;; + *) AC_MSG_RESULT([NO!]) AC_MSG_ERROR([architecture $host_cpu is not supported by strace]) @@ -124,6 +144,14 @@ AC_INCLUDEDIR gl_WARN_ADD([-Wall]) gl_WARN_ADD([-Wwrite-strings]) +AC_ARG_ENABLE([gcc-Werror], + [AS_HELP_STRING([--enable-gcc-Werror], [turn on gcc's -Werror option])], + [case $enableval in + yes) gl_WARN_ADD([-Werror]) ;; + no) ;; + *) AC_MSG_ERROR([bad value $enableval for gcc-Werror option]) ;; + esac] +) AC_SUBST([WARN_CFLAGS]) AC_PROG_CPP @@ -180,10 +208,11 @@ AC_CHECK_FUNCS(m4_normalize([ AC_CHECK_HEADERS(m4_normalize([ asm/cachectl.h asm/sysmips.h + elf.h inttypes.h ioctls.h - libaio.h linux/capability.h + linux/perf_event.h linux/ptrace.h linux/utsname.h mqueue.h @@ -269,8 +298,14 @@ AC_CACHE_CHECK([for BLKGETSIZE64], [ac_cv_have_blkgetsize64], fi) AC_CHECK_SIZEOF([long]) +AC_CHECK_SIZEOF([long long]) AC_CHECK_SIZEOF([rlim_t],,[#include ]) +AC_CHECK_HEADERS([libaio.h], [ + AC_CHECK_MEMBERS([struct iocb.u.c.flags],,, [#include ]) + AC_CHECK_DECLS([IO_CMD_PWRITE, IO_CMD_PWRITEV],,, [#include ]) +]) + AC_PATH_PROG([PERL], [perl]) AC_CONFIG_FILES([Makefile tests/Makefile]) diff --git a/count.c b/count.c index 9496b045..83954661 100644 --- a/count.c +++ b/count.c @@ -35,7 +35,9 @@ #include "defs.h" +/* Per-syscall stats structure */ struct call_counts { + /* system time spent in syscall (not wall clock time) */ struct timeval time; int calls, errors; }; @@ -45,10 +47,14 @@ static struct call_counts *countv[SUPPORTED_PERSONALITIES]; static struct timeval shortest = { 1000000, 0 }; +/* On entry, tv is syscall exit timestamp */ void count_syscall(struct tcb *tcp, struct timeval *tv) { - if (!SCNO_IN_RANGE(tcp->scno)) + struct call_counts *cc; + unsigned long scno = tcp->scno; + + if (!SCNO_IN_RANGE(scno)) return; if (!counts) { @@ -56,16 +62,20 @@ count_syscall(struct tcb *tcp, struct timeval *tv) if (!counts) die_out_of_memory(); } + cc = &counts[scno]; - counts[tcp->scno].calls++; + cc->calls++; if (tcp->u_error) - counts[tcp->scno].errors++; + cc->errors++; + /* tv = wall clock time spent while in syscall */ tv_sub(tv, tv, &tcp->etime); + + /* Spent more wall clock time than spent system time? (usually yes) */ if (tv_cmp(tv, &tcp->dtime) > 0) { - static struct timeval one_tick; + static struct timeval one_tick = { -1, 0 }; - if (one_tick.tv_usec == 0) { + if (one_tick.tv_sec == -1) { /* Initialize it. */ struct itimerval it; @@ -74,11 +84,15 @@ count_syscall(struct tcb *tcp, struct timeval *tv) setitimer(ITIMER_REAL, &it, NULL); getitimer(ITIMER_REAL, &it); one_tick = it.it_interval; +//FIXME: this hack doesn't work (tested on linux-3.6.11): one_tick = 0.000000 +//tprintf(" one_tick.tv_usec:%u\n", (unsigned)one_tick.tv_usec); } if (tv_nz(&tcp->dtime)) + /* tv = system time spent, if it isn't 0 */ *tv = tcp->dtime; else if (tv_cmp(tv, &one_tick) > 0) { + /* tv = smallest "sane" time interval */ if (tv_cmp(&shortest, &one_tick) < 0) *tv = shortest; else @@ -87,7 +101,7 @@ count_syscall(struct tcb *tcp, struct timeval *tv) } if (tv_cmp(tv, &shortest) < 0) shortest = *tv; - tv_add(&counts[tcp->scno].time, &counts[tcp->scno].time, tv); + tv_add(&cc->time, &cc->time, tv); } static int @@ -141,17 +155,24 @@ void set_overhead(int n) static void call_summary_pers(FILE *outf) { - int i, j; + int i; int call_cum, error_cum; struct timeval tv_cum, dtv; + double float_tv_cum; double percent; - const char *dashes = "-------------------------"; - char error_str[16]; - int *sorted_count = calloc(sizeof(int), nsyscalls); + const char *dashes = "----------------"; + char error_str[sizeof(int)*3]; + int *sorted_count; + + fprintf(outf, "%6.6s %11.11s %11.11s %9.9s %9.9s %s\n", + "% time", "seconds", "usecs/call", + "calls", "errors", "syscall"); + fprintf(outf, "%6.6s %11.11s %11.11s %9.9s %9.9s %s\n", + dashes, dashes, dashes, dashes, dashes, dashes); + sorted_count = calloc(sizeof(int), nsyscalls); if (!sorted_count) die_out_of_memory(); - call_cum = error_cum = tv_cum.tv_sec = tv_cum.tv_usec = 0; if (overhead.tv_sec == -1) { tv_mul(&overhead, &shortest, 8); @@ -167,42 +188,41 @@ call_summary_pers(FILE *outf) error_cum += counts[i].errors; tv_add(&tv_cum, &tv_cum, &counts[i].time); } - if (counts && sortfun) - qsort((void *) sorted_count, nsyscalls, sizeof(int), sortfun); - fprintf(outf, "%6.6s %11.11s %11.11s %9.9s %9.9s %s\n", - "% time", "seconds", "usecs/call", - "calls", "errors", "syscall"); - fprintf(outf, "%6.6s %11.11s %11.11s %9.9s %9.9s %-16.16s\n", - dashes, dashes, dashes, dashes, dashes, dashes); + float_tv_cum = tv_float(&tv_cum); if (counts) { + if (sortfun) + qsort((void *) sorted_count, nsyscalls, sizeof(int), sortfun); for (i = 0; i < nsyscalls; i++) { - j = sorted_count[i]; - if (counts[j].calls == 0) + double float_syscall_time; + int idx = sorted_count[i]; + struct call_counts *cc = &counts[idx]; + if (cc->calls == 0) continue; - tv_div(&dtv, &counts[j].time, counts[j].calls); - if (counts[j].errors) - sprintf(error_str, "%d", counts[j].errors); - else - error_str[0] = '\0'; - percent = (100.0 * tv_float(&counts[j].time) - / tv_float(&tv_cum)); - fprintf(outf, "%6.2f %11.6f %11ld %9d %9.9s %s\n", - percent, tv_float(&counts[j].time), + tv_div(&dtv, &cc->time, cc->calls); + error_str[0] = '\0'; + if (cc->errors) + sprintf(error_str, "%u", cc->errors); + float_syscall_time = tv_float(&cc->time); + percent = (100.0 * float_syscall_time); + if (percent != 0.0) + percent /= float_tv_cum; + /* else: float_tv_cum can be 0.0 too and we get 0/0 = NAN */ + fprintf(outf, "%6.2f %11.6f %11lu %9u %9.9s %s\n", + percent, float_syscall_time, (long) (1000000 * dtv.tv_sec + dtv.tv_usec), - counts[j].calls, - error_str, sysent[j].sys_name); + cc->calls, + error_str, sysent[idx].sys_name); } } free(sorted_count); - fprintf(outf, "%6.6s %11.11s %11.11s %9.9s %9.9s %-16.16s\n", + fprintf(outf, "%6.6s %11.11s %11.11s %9.9s %9.9s %s\n", dashes, dashes, dashes, dashes, dashes, dashes); + error_str[0] = '\0'; if (error_cum) - sprintf(error_str, "%d", error_cum); - else - error_str[0] = '\0'; - fprintf(outf, "%6.6s %11.6f %11.11s %9d %9.9s %s\n", - "100.00", tv_float(&tv_cum), "", + sprintf(error_str, "%u", error_cum); + fprintf(outf, "%6.6s %11.6f %11.11s %9u %9.9s %s\n", + "100.00", float_tv_cum, "", call_cum, error_str, "total"); } @@ -220,7 +240,7 @@ call_summary(FILE *outf) if (i) fprintf(outf, "System call usage summary for %d bit mode:\n", - (int) (current_wordsize * 8)); + current_wordsize * 8); call_summary_pers(outf); } diff --git a/debian/changelog b/debian/changelog index 4f3286b9..39bb56f2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,11 +1,20 @@ -strace (4.7-1) unstable; urgency=low +strace (4.8-1) experimental; urgency=low + * New upstream version. + + Added aarch64 support, closes: #693074 + + Fixed kernel release string parsing, closes: #702309 + + -- Dmitry V. Levin Mon, 03 Jun 2013 15:16:17 +0000 + +strace (4.7-1) experimental; urgency=low + + [ Dmitry V. Levin ] * New upstream version. + Fixed sockaddr_un.sun_path name in decoded output, closes: #554946 + Avoid potential core file clobbering on exit, closes: #656398 + Fixed a typo in documentation, closes: #653309 - -- Dmitry V. Levin Wed, 02 May 2012 12:34:56 +0000 + -- Frederik Schüler Tue, 12 Feb 2013 10:35:22 +0100 strace (4.6-1) unstable; urgency=low diff --git a/debian/strace.docs b/debian/strace.docs index f62d0679..edc00710 100644 --- a/debian/strace.docs +++ b/debian/strace.docs @@ -1,2 +1 @@ -TODO NEWS diff --git a/defs.h b/defs.h index 3ccd8d55..3f07c4f3 100644 --- a/defs.h +++ b/defs.h @@ -36,9 +36,20 @@ # define _LFS64_LARGEFILE 1 # endif #endif + #ifdef MIPS # include +# if _MIPS_SIM == _MIPS_SIM_ABI64 +# define LINUX_MIPSN64 +# elif _MIPS_SIM == _MIPS_SIM_NABI32 +# define LINUX_MIPSN32 +# elif _MIPS_SIM == _MIPS_SIM_ABI32 +# define LINUX_MIPSO32 +# else +# error Unsupported _MIPS_SIM +# endif #endif + #include #ifdef HAVE_STDBOOL_H # include @@ -52,7 +63,10 @@ #include #include #include -#include +/* Open-coding isprint(ch) et al proved more efficient than calling + * generalized libc interface. We don't *want* to do non-ASCII anyway. + */ +/* #include */ #include #include #include @@ -83,6 +97,15 @@ extern char *stpcpy(char *dst, const char *src); #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) +/* macros */ +#ifndef MAX +# define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif +#ifndef MIN +# define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif +#define CLAMP(val, min, max) MIN(MAX(min, val), max) + /* Glibc has an efficient macro for sigemptyset * (it just does one or two assignments of 0 to internal vector of longs). */ @@ -91,13 +114,6 @@ extern char *stpcpy(char *dst, const char *src); #endif /* Configuration section */ -#ifndef MAX_QUALS -# if defined(MIPS) -# define MAX_QUALS 7000 /* maximum number of syscalls, signals, etc. */ -# else -# define MAX_QUALS 2048 /* maximum number of syscalls, signals, etc. */ -# endif -#endif #ifndef DEFAULT_STRLEN /* default maximum # of bytes printed in `printstr', change with -s switch */ # define DEFAULT_STRLEN 32 @@ -109,32 +125,37 @@ extern char *stpcpy(char *dst, const char *src); * Maximum number of args to a syscall. * * Make sure that all entries in all syscallent.h files have nargs <= MAX_ARGS! - * linux//syscallent.h: all have nargs <= 6. + * linux//syscallent*.h: + * all have nargs <= 6 except mips o32 which has nargs <= 7. */ #ifndef MAX_ARGS -# define MAX_ARGS 6 +# ifdef LINUX_MIPSO32 +# define MAX_ARGS 7 +# else +# define MAX_ARGS 6 +# endif #endif /* default sorting method for call profiling */ #ifndef DEFAULT_SORTBY # define DEFAULT_SORTBY "time" #endif - -#if defined(SPARC) || defined(SPARC64) -# define LINUXSPARC -#endif -#if defined(MIPS) && _MIPS_SIM == _MIPS_SIM_ABI32 -# define LINUX_MIPSO32 -#endif -#if defined(MIPS) && _MIPS_SIM == _MIPS_SIM_NABI32 -# define LINUX_MIPSN32 -# define LINUX_MIPS64 -#endif -#if defined(MIPS) && _MIPS_SIM == _MIPS_SIM_ABI64 -# define LINUX_MIPSN64 -# define LINUX_MIPS64 -#endif - -#if (defined(LINUXSPARC) || defined(X86_64) || defined(ARM) || defined(AVR32)) && defined(__GLIBC__) +/* + * Experimental code using PTRACE_SEIZE can be enabled here. + * This needs Linux kernel 3.4.x or later to work. + */ +#define USE_SEIZE 1 +/* To force NOMMU build, set to 1 */ +#define NOMMU_SYSTEM 0 + +#if (defined(SPARC) || defined(SPARC64) \ + || defined(I386) || defined(X32) || defined(X86_64) \ + || defined(ARM) || defined(AARCH64) \ + || defined(AVR32) \ + || defined(OR1K) \ + || defined(METAG) \ + || defined(TILE) \ + || defined(XTENSA) \ + ) && defined(__GLIBC__) # include #else /* Work around awkward prototype in ptrace.h. */ @@ -149,16 +170,74 @@ extern char *stpcpy(char *dst, const char *src); extern long ptrace(int, int, char *, long); #endif +#if defined(TILE) +# include /* struct pt_regs */ +#endif + +#if !HAVE_DECL_PTRACE_SETOPTIONS +# define PTRACE_SETOPTIONS 0x4200 +#endif +#if !HAVE_DECL_PTRACE_GETEVENTMSG +# define PTRACE_GETEVENTMSG 0x4201 +#endif +#if !HAVE_DECL_PTRACE_GETSIGINFO +# define PTRACE_GETSIGINFO 0x4202 +#endif + +#if !HAVE_DECL_PTRACE_O_TRACESYSGOOD +# define PTRACE_O_TRACESYSGOOD 0x00000001 +#endif +#if !HAVE_DECL_PTRACE_O_TRACEFORK +# define PTRACE_O_TRACEFORK 0x00000002 +#endif +#if !HAVE_DECL_PTRACE_O_TRACEVFORK +# define PTRACE_O_TRACEVFORK 0x00000004 +#endif +#if !HAVE_DECL_PTRACE_O_TRACECLONE +# define PTRACE_O_TRACECLONE 0x00000008 +#endif +#if !HAVE_DECL_PTRACE_O_TRACEEXEC +# define PTRACE_O_TRACEEXEC 0x00000010 +#endif +#if !HAVE_DECL_PTRACE_O_TRACEEXIT +# define PTRACE_O_TRACEEXIT 0x00000040 +#endif + +#if !HAVE_DECL_PTRACE_EVENT_FORK +# define PTRACE_EVENT_FORK 1 +#endif +#if !HAVE_DECL_PTRACE_EVENT_VFORK +# define PTRACE_EVENT_VFORK 2 +#endif +#if !HAVE_DECL_PTRACE_EVENT_CLONE +# define PTRACE_EVENT_CLONE 3 +#endif +#if !HAVE_DECL_PTRACE_EVENT_EXEC +# define PTRACE_EVENT_EXEC 4 +#endif +#if !HAVE_DECL_PTRACE_EVENT_VFORK_DONE +# define PTRACE_EVENT_VFORK_DONE 5 +#endif +#if !HAVE_DECL_PTRACE_EVENT_EXIT +# define PTRACE_EVENT_EXIT 6 +#endif + #if !defined(__GLIBC__) # define PTRACE_PEEKUSER PTRACE_PEEKUSR # define PTRACE_POKEUSER PTRACE_POKEUSR #endif -#if defined(X86_64) || defined(X32) || defined(I386) -/* For struct pt_regs. x86 strace uses PTRACE_GETREGS. - * PTRACE_GETREGS returns registers in the layout of this struct. - */ -# include + +#if USE_SEIZE +# undef PTRACE_SEIZE +# define PTRACE_SEIZE 0x4206 +# undef PTRACE_INTERRUPT +# define PTRACE_INTERRUPT 0x4207 +# undef PTRACE_LISTEN +# define PTRACE_LISTEN 0x4208 +# undef PTRACE_EVENT_STOP +# define PTRACE_EVENT_STOP 128 #endif + #ifdef ALPHA # define REG_R0 0 # define REG_A0 16 @@ -196,11 +275,31 @@ extern long ptrace(int, int, char *, long); # define REG_PC (0*8) # define REG_SYSCALL (2*8) #endif /* SH64 */ +#ifdef AARCH64 +struct arm_pt_regs { + int uregs[18]; +}; +# define ARM_cpsr uregs[16] +# define ARM_pc uregs[15] +# define ARM_lr uregs[14] +# define ARM_sp uregs[13] +# define ARM_ip uregs[12] +# define ARM_fp uregs[11] +# define ARM_r10 uregs[10] +# define ARM_r9 uregs[9] +# define ARM_r8 uregs[8] +# define ARM_r7 uregs[7] +# define ARM_r6 uregs[6] +# define ARM_r5 uregs[5] +# define ARM_r4 uregs[4] +# define ARM_r3 uregs[3] +# define ARM_r2 uregs[2] +# define ARM_r1 uregs[1] +# define ARM_r0 uregs[0] +# define ARM_ORIG_r0 uregs[17] +#endif /* AARCH64 */ -#define SUPPORTED_PERSONALITIES 1 -#define DEFAULT_PERSONALITY 0 - -#ifdef LINUXSPARC +#if defined(SPARC) || defined(SPARC64) /* Indexes into the pt_regs.u_reg[] array -- UREG_XX from kernel are all off * by 1 and use Ix instead of Ox. These work for both 32 and 64 bit Linux. */ # define U_REG_G1 0 @@ -208,7 +307,6 @@ extern long ptrace(int, int, char *, long); # define U_REG_O1 8 # define PERSONALITY0_WORDSIZE 4 # define PERSONALITY1_WORDSIZE 4 -# undef SUPPORTED_PERSONALITIES # if defined(SPARC64) # include # define SUPPORTED_PERSONALITIES 3 @@ -217,10 +315,9 @@ extern long ptrace(int, int, char *, long); # include # define SUPPORTED_PERSONALITIES 2 # endif /* SPARC64 */ -#endif /* LINUXSPARC */ +#endif /* SPARC[64] */ #ifdef X86_64 -# undef SUPPORTED_PERSONALITIES # define SUPPORTED_PERSONALITIES 3 # define PERSONALITY0_WORDSIZE 8 # define PERSONALITY1_WORDSIZE 4 @@ -228,123 +325,93 @@ extern long ptrace(int, int, char *, long); #endif #ifdef X32 -# undef SUPPORTED_PERSONALITIES # define SUPPORTED_PERSONALITIES 2 # define PERSONALITY0_WORDSIZE 4 # define PERSONALITY1_WORDSIZE 4 #endif #ifdef ARM -# undef SUPPORTED_PERSONALITIES +/* one personality */ +#endif + +#ifdef AARCH64 +/* The existing ARM personality, then AArch64 */ # define SUPPORTED_PERSONALITIES 2 # define PERSONALITY0_WORDSIZE 4 -# define PERSONALITY1_WORDSIZE 4 +# define PERSONALITY1_WORDSIZE 8 +# define DEFAULT_PERSONALITY 1 #endif #ifdef POWERPC64 -# undef SUPPORTED_PERSONALITIES # define SUPPORTED_PERSONALITIES 2 # define PERSONALITY0_WORDSIZE 8 # define PERSONALITY1_WORDSIZE 4 #endif -#ifndef PERSONALITY0_WORDSIZE -# define PERSONALITY0_WORDSIZE sizeof(long) -#endif - -#if !HAVE_DECL_PTRACE_SETOPTIONS -# define PTRACE_SETOPTIONS 0x4200 -#endif -#if !HAVE_DECL_PTRACE_GETEVENTMSG -# define PTRACE_GETEVENTMSG 0x4201 -#endif -#if !HAVE_DECL_PTRACE_GETSIGINFO -# define PTRACE_GETSIGINFO 0x4202 +#ifdef TILE +# define SUPPORTED_PERSONALITIES 2 +# define PERSONALITY0_WORDSIZE 8 +# define PERSONALITY1_WORDSIZE 4 +# ifdef __tilepro__ +# define DEFAULT_PERSONALITY 1 +# endif #endif -#if !HAVE_DECL_PTRACE_O_TRACESYSGOOD -# define PTRACE_O_TRACESYSGOOD 0x00000001 +#ifndef SUPPORTED_PERSONALITIES +# define SUPPORTED_PERSONALITIES 1 #endif -#if !HAVE_DECL_PTRACE_O_TRACEFORK -# define PTRACE_O_TRACEFORK 0x00000002 -#endif -#if !HAVE_DECL_PTRACE_O_TRACEVFORK -# define PTRACE_O_TRACEVFORK 0x00000004 +#ifndef DEFAULT_PERSONALITY +# define DEFAULT_PERSONALITY 0 #endif -#if !HAVE_DECL_PTRACE_O_TRACECLONE -# define PTRACE_O_TRACECLONE 0x00000008 -#endif -#if !HAVE_DECL_PTRACE_O_TRACEEXEC -# define PTRACE_O_TRACEEXEC 0x00000010 -#endif -#if !HAVE_DECL_PTRACE_O_TRACEEXIT -# define PTRACE_O_TRACEEXIT 0x00000040 -#endif - -#if !HAVE_DECL_PTRACE_EVENT_FORK -# define PTRACE_EVENT_FORK 1 -#endif -#if !HAVE_DECL_PTRACE_EVENT_VFORK -# define PTRACE_EVENT_VFORK 2 -#endif -#if !HAVE_DECL_PTRACE_EVENT_CLONE -# define PTRACE_EVENT_CLONE 3 -#endif -#if !HAVE_DECL_PTRACE_EVENT_EXEC -# define PTRACE_EVENT_EXEC 4 -#endif -#if !HAVE_DECL_PTRACE_EVENT_VFORK_DONE -# define PTRACE_EVENT_VFORK_DONE 5 -#endif -#if !HAVE_DECL_PTRACE_EVENT_EXIT -# define PTRACE_EVENT_EXIT 6 -#endif - -/* Experimental code using PTRACE_SEIZE can be enabled here: */ -//# define USE_SEIZE 1 - -#ifdef USE_SEIZE -# undef PTRACE_SEIZE -# define PTRACE_SEIZE 0x4206 -# undef PTRACE_INTERRUPT -# define PTRACE_INTERRUPT 0x4207 -# undef PTRACE_LISTEN -# define PTRACE_LISTEN 0x4208 -# undef PTRACE_SEIZE_DEVEL -# define PTRACE_SEIZE_DEVEL 0x80000000 -# undef PTRACE_EVENT_STOP -# define PTRACE_EVENT_STOP 7 -# define PTRACE_EVENT_STOP1 128 +#ifndef PERSONALITY0_WORDSIZE +# define PERSONALITY0_WORDSIZE (int)(sizeof(long)) #endif #if defined(I386) -extern struct pt_regs i386_regs; -#endif -#if defined(IA64) +extern struct user_regs_struct i386_regs; +#elif defined(IA64) extern long ia32; +#elif defined(SPARC) || defined(SPARC64) +extern struct pt_regs sparc_regs; +#elif defined(ARM) +extern struct pt_regs arm_regs; +#elif defined(TILE) +extern struct pt_regs tile_regs; #endif +typedef struct sysent { + unsigned nargs; + int sys_flags; + int (*sys_func)(); + const char *sys_name; +} struct_sysent; + +typedef struct ioctlent { + const char *doth; + const char *symbol; + unsigned long code; +} struct_ioctlent; + /* Trace Control Block */ struct tcb { int flags; /* See below for TCB_ values */ int pid; /* Process Id of this entry */ - int u_nargs; /* System call argument count */ + int qual_flg; /* qual_flags[scno] or DEFAULT_QUAL_FLAGS + RAW */ int u_error; /* Error code */ long scno; /* System call number */ long u_arg[MAX_ARGS]; /* System call arguments */ #if defined(LINUX_MIPSN32) || defined(X32) - long long ext_arg[MAX_ARGS]; /* System call arguments */ -#endif - long u_rval; /* return value */ -#if defined(LINUX_MIPSN32) || defined(X32) + long long ext_arg[MAX_ARGS]; long long u_lrval; /* long long return value */ #endif + long u_rval; /* Return value */ #if SUPPORTED_PERSONALITIES > 1 int currpers; /* Personality at the time of scno update */ #endif int curcol; /* Output column for this process */ FILE *outf; /* Output file for this process */ const char *auxstr; /* Auxiliary info from syscall (see RVAL_STR) */ + const struct_sysent *s_ent; /* sysent[scno] or dummy struct for bad scno */ struct timeval stime; /* System time usage as of last process wait */ struct timeval dtime; /* Delta for system time usage */ struct timeval etime; /* Syscall entry time */ @@ -383,14 +450,23 @@ struct tcb { #define TCB_REPRINT 00200 /* We should reprint this syscall on exit */ #define TCB_FILTERED 00400 /* This system call has been filtered out */ /* x86 does not need TCB_WAITEXECVE. - * It can detect SIGTRAP by looking at eax/rax. - * See "not a syscall entry (eax = %ld)\n" message - * in syscall_fixup_on_sysenter(). + * It can detect post-execve SIGTRAP by looking at eax/rax. + * See "not a syscall entry (eax = %ld)\n" message. + * + * Note! On new kernels (about 2.5.46+), we use PTRACE_O_TRACEEXEC, which + * suppresses post-execve SIGTRAP. If you are adding a new arch which is + * only supported by newer kernels, you most likely don't need to define + * TCB_WAITEXECVE! */ -#if defined(ALPHA) || defined(AVR32) || defined(SPARC) || defined(SPARC64) \ - || defined(POWERPC) || defined(IA64) || defined(HPPA) \ - || defined(SH) || defined(SH64) || defined(S390) || defined(S390X) \ - || defined(ARM) || defined(MIPS) || defined(BFIN) || defined(TILE) +#if defined(ALPHA) \ + || defined(SPARC) || defined(SPARC64) \ + || defined(POWERPC) \ + || defined(IA64) \ + || defined(HPPA) \ + || defined(SH) || defined(SH64) \ + || defined(S390) || defined(S390X) \ + || defined(ARM) \ + || defined(MIPS) /* This tracee has entered into execve syscall. Expect post-execve SIGTRAP * to happen. (When it is detected, tracee is continued and this bit is cleared.) */ @@ -398,20 +474,23 @@ struct tcb { #endif /* qualifier flags */ -#define QUAL_TRACE 0001 /* this system call should be traced */ -#define QUAL_ABBREV 0002 /* abbreviate the structures of this syscall */ -#define QUAL_VERBOSE 0004 /* decode the structures of this syscall */ -#define QUAL_RAW 0010 /* print all args in hex for this syscall */ -#define QUAL_SIGNAL 0020 /* report events with this signal */ -#define QUAL_FAULT 0040 /* report events with this fault */ -#define QUAL_READ 0100 /* dump data read on this file descriptor */ -#define QUAL_WRITE 0200 /* dump data written to this file descriptor */ +#define QUAL_TRACE 0x001 /* this system call should be traced */ +#define QUAL_ABBREV 0x002 /* abbreviate the structures of this syscall */ +#define QUAL_VERBOSE 0x004 /* decode the structures of this syscall */ +#define QUAL_RAW 0x008 /* print all args in hex for this syscall */ +#define QUAL_SIGNAL 0x010 /* report events with this signal */ +#define QUAL_READ 0x020 /* dump data read on this file descriptor */ +#define QUAL_WRITE 0x040 /* dump data written to this file descriptor */ +typedef uint8_t qualbits_t; +#define UNDEFINED_SCNO 0x100 /* Used only in tcp->qual_flg */ + +#define DEFAULT_QUAL_FLAGS (QUAL_TRACE | QUAL_ABBREV | QUAL_VERBOSE) #define entering(tcp) (!((tcp)->flags & TCB_INSYSCALL)) #define exiting(tcp) ((tcp)->flags & TCB_INSYSCALL) #define syserror(tcp) ((tcp)->u_error != 0) -#define verbose(tcp) (qual_flags[(tcp)->scno] & QUAL_VERBOSE) -#define abbrev(tcp) (qual_flags[(tcp)->scno] & QUAL_ABBREV) +#define verbose(tcp) ((tcp)->qual_flg & QUAL_VERBOSE) +#define abbrev(tcp) ((tcp)->qual_flg & QUAL_ABBREV) #define filtered(tcp) ((tcp)->flags & TCB_FILTERED) struct xlat { @@ -423,6 +502,7 @@ extern const struct xlat open_mode_flags[]; extern const struct xlat addrfams[]; extern const struct xlat struct_user_offsets[]; extern const struct xlat open_access_modes[]; +extern const struct xlat whence_codes[]; /* Format of syscall return values */ #define RVAL_DECIMAL 000 /* decimal format */ @@ -448,7 +528,8 @@ extern const struct xlat open_access_modes[]; #define TRACE_PROCESS 010 /* Trace process-related syscalls. */ #define TRACE_SIGNAL 020 /* Trace signal-related syscalls. */ #define TRACE_DESC 040 /* Trace file descriptor-related syscalls. */ -#define SYSCALL_NEVER_FAILS 0100 /* Syscall is always successful. */ +#define TRACE_MEMORY 0100 /* Trace memory mapping-related syscalls. */ +#define SYSCALL_NEVER_FAILS 0200 /* Syscall is always successful. */ typedef enum { CFLAG_NONE = 0, @@ -456,17 +537,23 @@ typedef enum { CFLAG_BOTH } cflag_t; extern cflag_t cflag; -extern int *qual_flags; extern bool debug_flag; extern bool Tflag; -extern bool qflag; +extern unsigned int qflag; extern bool not_failing_only; extern bool show_fd_path; -extern bool tracing_paths; -extern unsigned int xflag; -extern unsigned int followfork; -extern unsigned int ptrace_setoptions; -extern unsigned int max_strlen; +extern bool hide_log_until_execve; +/* are we filtering traces based on paths? */ +extern const char **paths_selected; +#define tracing_paths (paths_selected != NULL) +extern bool need_fork_exec_workarounds; +extern unsigned xflag; +extern unsigned followfork; +extern unsigned ptrace_setoptions; +extern unsigned max_strlen; +extern unsigned os_release; +#undef KERNEL_VERSION +#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) enum bitness_t { BITNESS_CURRENT = 0, BITNESS_32 }; @@ -500,6 +587,23 @@ extern int trace_syscall(struct tcb *); extern void count_syscall(struct tcb *, struct timeval *); extern void call_summary(FILE *); +#if defined(AVR32) \ + || defined(I386) \ + || defined(X86_64) || defined(X32) \ + || defined(AARCH64) \ + || defined(ARM) \ + || defined(SPARC) || defined(SPARC64) \ + || defined(TILE) \ + || defined(OR1K) \ + || defined(METAG) +extern long get_regs_error; +# define clear_regs() (get_regs_error = -1) +extern void get_regs(pid_t pid); +#else +# define get_regs_error 0 +# define clear_regs() ((void)0) +# define get_regs(pid) ((void)0) +#endif extern int umoven(struct tcb *, long, int, char *); #define umove(pid, addr, objp) \ umoven((pid), (addr), sizeof(*(objp)), (char *) (objp)) @@ -519,28 +623,27 @@ extern int clearbpt(struct tcb *); extern const char *signame(int); extern int is_restart_error(struct tcb *); -extern int pathtrace_select(const char *); +extern void pathtrace_select(const char *); extern int pathtrace_match(struct tcb *); -extern const char *getfdpath(struct tcb *, int); +extern int getfdpath(struct tcb *, int, char *, unsigned); extern const char *xlookup(const struct xlat *, int); extern int string_to_uint(const char *str); extern int string_quote(const char *, char *, long, int); -#if HAVE_LONG_LONG -/* _l refers to the lower numbered u_arg, - * _h refers to the higher numbered u_arg +/* a refers to the lower numbered u_arg, + * b refers to the higher numbered u_arg */ -# if HAVE_LITTLE_ENDIAN_LONG_LONG -# define LONG_LONG(_l,_h) \ - ((long long)((unsigned long long)(unsigned)(_l) | ((unsigned long long)(_h)<<32))) -# else -# define LONG_LONG(_l,_h) \ - ((long long)((unsigned long long)(unsigned)(_h) | ((unsigned long long)(_l)<<32))) -# endif -extern int printllval(struct tcb *, const char *, int); +#if HAVE_LITTLE_ENDIAN_LONG_LONG +# define LONG_LONG(a,b) \ + ((long long)((unsigned long long)(unsigned)(a) | ((unsigned long long)(b)<<32))) +#else +# define LONG_LONG(a,b) \ + ((long long)((unsigned long long)(unsigned)(b) | ((unsigned long long)(a)<<32))) #endif +extern int printllval(struct tcb *, const char *, int); + extern void printxval(const struct xlat *, int, const char *); extern int printargs(struct tcb *); extern int printargs_lu(struct tcb *); @@ -567,6 +670,7 @@ extern void print_timespec(struct tcb *, long); extern void sprint_timespec(char *, struct tcb *, long); #ifdef HAVE_SIGINFO_T extern void printsiginfo(siginfo_t *, int); +extern void printsiginfo_at(struct tcb *tcp, long addr); #endif extern void printfd(struct tcb *, int); extern void printsock(struct tcb *, long, int); @@ -585,8 +689,8 @@ extern void tprint_open_modes(mode_t); extern const char *sprint_open_modes(mode_t); extern void print_loff_t(struct tcb *, long); -extern const struct ioctlent *ioctl_lookup(long); -extern const struct ioctlent *ioctl_next_match(const struct ioctlent *); +extern const struct_ioctlent *ioctl_lookup(long); +extern const struct_ioctlent *ioctl_next_match(const struct_ioctlent *); extern int ioctl_decode(struct tcb *, long, long); extern int term_ioctl(struct tcb *, long, long); extern int sock_ioctl(struct tcb *, long, long); @@ -595,6 +699,7 @@ extern int rtc_ioctl(struct tcb *, long, long); extern int scsi_ioctl(struct tcb *, long, long); extern int block_ioctl(struct tcb *, long, long); extern int mtd_ioctl(struct tcb *, long, long); +extern int ubi_ioctl(struct tcb *, long, long); extern int loop_ioctl(struct tcb *, long, long); extern int tv_nz(struct timeval *); @@ -631,36 +736,61 @@ extern void tprints(const char *str); #if SUPPORTED_PERSONALITIES > 1 extern void set_personality(int personality); -extern int current_personality; -extern const int personality_wordsize[]; -# define current_wordsize (personality_wordsize[current_personality]) +extern unsigned current_personality; #else # define set_personality(personality) ((void)0) # define current_personality 0 -# define current_wordsize PERSONALITY0_WORDSIZE #endif -struct sysent { - unsigned nargs; - int sys_flags; - int (*sys_func)(); - const char *sys_name; -}; +#if SUPPORTED_PERSONALITIES == 1 +# define current_wordsize PERSONALITY0_WORDSIZE +#else +# if SUPPORTED_PERSONALITIES == 2 && PERSONALITY0_WORDSIZE == PERSONALITY1_WORDSIZE +# define current_wordsize PERSONALITY0_WORDSIZE +# else +extern unsigned current_wordsize; +# endif +#endif -struct ioctlent { - const char *doth; - const char *symbol; - unsigned long code; -}; +/* In many, many places we play fast and loose and use + * tprintf("%d", (int) tcp->u_arg[N]) to print fds, pids etc. + * We probably need to use widen_to_long() instead: + */ +#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4 +# define widen_to_long(v) (current_wordsize == 4 ? (long)(int32_t)(v) : (long)(v)) +#else +# define widen_to_long(v) ((long)(v)) +#endif -extern const struct sysent *sysent; -extern unsigned nsyscalls; +extern const struct_sysent sysent0[]; +extern const char *const errnoent0[]; +extern const char *const signalent0[]; +extern const struct_ioctlent ioctlent0[]; +extern qualbits_t *qual_vec[SUPPORTED_PERSONALITIES]; +#define qual_flags (qual_vec[current_personality]) +#if SUPPORTED_PERSONALITIES > 1 +extern const struct_sysent *sysent; extern const char *const *errnoent; -extern unsigned nerrnos; -extern const struct ioctlent *ioctlent; -extern unsigned nioctlents; extern const char *const *signalent; +extern const struct_ioctlent *ioctlent; +#else +# define sysent sysent0 +# define errnoent errnoent0 +# define signalent signalent0 +# define ioctlent ioctlent0 +#endif +extern unsigned nsyscalls; +extern unsigned nerrnos; extern unsigned nsignals; +extern unsigned nioctlents; +extern unsigned num_quals; + +/* + * If you need non-NULL sysent[scno].sys_func and sysent[scno].sys_name + */ +#define SCNO_IS_VALID(scno) \ + ((unsigned long)(scno) < nsyscalls && sysent[scno].sys_func) +/* Only ensures that sysent[scno] isn't out of range */ #define SCNO_IN_RANGE(scno) \ - ((unsigned long)(scno) < nsyscalls && sysent[scno].sys_func) + ((unsigned long)(scno) < nsyscalls) diff --git a/desc.c b/desc.c index f0c18903..a420febc 100644 --- a/desc.c +++ b/desc.c @@ -37,13 +37,8 @@ #ifdef HAVE_LIBAIO_H # include #endif - -#if HAVE_LONG_LONG_OFF_T -/* - * Hacks for systems that have a long long off_t - */ -# define flock64 flock /* Horrid hack */ -# define printflock printflock64 /* Horrider hack */ +#ifdef HAVE_LINUX_PERF_EVENT_H +# include #endif static const struct xlat fcntlcmds[] = { @@ -215,14 +210,42 @@ static const struct xlat notifyflags[] = { }; #endif -static const struct xlat whence[] = { - { SEEK_SET, "SEEK_SET" }, - { SEEK_CUR, "SEEK_CUR" }, - { SEEK_END, "SEEK_END" }, - { 0, NULL }, +static const struct xlat perf_event_open_flags[] = { +#ifdef PERF_FLAG_FD_NO_GROUP + { PERF_FLAG_FD_NO_GROUP, "PERF_FLAG_FD_NO_GROUP" }, +#endif +#ifdef PERF_FLAG_FD_OUTPUT + { PERF_FLAG_FD_OUTPUT, "PERF_FLAG_FD_OUTPUT" }, +#endif +#ifdef PERF_FLAG_PID_CGROUP + { PERF_FLAG_PID_CGROUP, "PERF_FLAG_PID_CGROUP" }, +#endif + { 0, NULL }, }; -#ifndef HAVE_LONG_LONG_OFF_T +#if _LFS64_LARGEFILE +/* fcntl/lockf */ +static void +printflock64(struct tcb *tcp, long addr, int getlk) +{ + struct flock64 fl; + + if (umove(tcp, addr, &fl) < 0) { + tprints("{...}"); + return; + } + tprints("{type="); + printxval(lockfcmds, fl.l_type, "F_???"); + tprints(", whence="); + printxval(whence_codes, fl.l_whence, "SEEK_???"); + tprintf(", start=%lld, len=%lld", (long long) fl.l_start, (long long) fl.l_len); + if (getlk) + tprintf(", pid=%lu}", (unsigned long) fl.l_pid); + else + tprints("}"); +} +#endif + /* fcntl/lockf */ static void printflock(struct tcb *tcp, long addr, int getlk) @@ -230,6 +253,12 @@ printflock(struct tcb *tcp, long addr, int getlk) struct flock fl; #if SUPPORTED_PERSONALITIES > 1 +# ifdef X32 + if (current_personality == 0) { + printflock64(tcp, addr, getlk); + return; + } +# endif if (current_wordsize != sizeof(fl.l_start)) { if (current_wordsize == 4) { /* 32-bit x86 app on x86_64 and similar cases */ @@ -251,7 +280,7 @@ printflock(struct tcb *tcp, long addr, int getlk) fl.l_pid = fl32.l_pid; } else { /* let people know we have a problem here */ - tprintf("{ }", + tprintf("", current_wordsize); return; } @@ -266,37 +295,17 @@ printflock(struct tcb *tcp, long addr, int getlk) tprints("{type="); printxval(lockfcmds, fl.l_type, "F_???"); tprints(", whence="); - printxval(whence, fl.l_whence, "SEEK_???"); + printxval(whence_codes, fl.l_whence, "SEEK_???"); +#ifdef X32 + tprintf(", start=%lld, len=%lld", fl.l_start, fl.l_len); +#else tprintf(", start=%ld, len=%ld", fl.l_start, fl.l_len); - if (getlk) - tprintf(", pid=%lu}", (unsigned long) fl.l_pid); - else - tprints("}"); -} #endif - -#if _LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T -/* fcntl/lockf */ -static void -printflock64(struct tcb *tcp, long addr, int getlk) -{ - struct flock64 fl; - - if (umove(tcp, addr, &fl) < 0) { - tprints("{...}"); - return; - } - tprints("{type="); - printxval(lockfcmds, fl.l_type, "F_???"); - tprints(", whence="); - printxval(whence, fl.l_whence, "SEEK_???"); - tprintf(", start=%lld, len=%lld", (long long) fl.l_start, (long long) fl.l_len); if (getlk) tprintf(", pid=%lu}", (unsigned long) fl.l_pid); else tprints("}"); } -#endif int sys_fcntl(struct tcb *tcp) @@ -855,10 +864,14 @@ iocb_cmd_lookup(unsigned cmd, enum iocb_sub *sub) static void print_common_flags(struct iocb *iocb) { +#if HAVE_STRUCT_IOCB_U_C_FLAGS if (iocb->u.c.flags & IOCB_RESFD) - tprintf("resfd=%d, ", iocb->u.c.resfd); + tprintf(", resfd=%d", iocb->u.c.resfd); if (iocb->u.c.flags & ~IOCB_RESFD) - tprintf("flags=%x, ", iocb->u.c.flags); + tprintf(", flags=%x", iocb->u.c.flags); +#else +# warning "libaio.h is too old => limited io_submit decoding" +#endif } #endif /* HAVE_LIBAIO_H */ @@ -902,24 +915,31 @@ sys_io_submit(struct tcb *tcp) tprintf("filedes:%d", iocb.aio_fildes); switch (sub) { case SUB_COMMON: +#if HAVE_DECL_IO_CMD_PWRITE if (iocb.aio_lio_opcode == IO_CMD_PWRITE) { tprints(", str:"); printstr(tcp, (unsigned long)iocb.u.c.buf, iocb.u.c.nbytes); - } else { + } else +#endif tprintf(", buf:%p", iocb.u.c.buf); - } - tprintf(", nbytes:%lu, offset:%llx", + tprintf(", nbytes:%lu, offset:%lld", iocb.u.c.nbytes, iocb.u.c.offset); print_common_flags(&iocb); break; case SUB_VECTOR: - tprintf(", %llx, ", iocb.u.v.offset); + tprintf(", %lld", iocb.u.v.offset); print_common_flags(&iocb); + tprints(", "); tprint_iov(tcp, iocb.u.v.nr, (unsigned long)iocb.u.v.vec, - iocb.aio_lio_opcode == IO_CMD_PWRITEV); +#if HAVE_DECL_IO_CMD_PWRITEV + iocb.aio_lio_opcode == IO_CMD_PWRITEV +#else + 0 +#endif + ); break; case SUB_POLL: tprintf(", %x", iocb.u.poll.events); @@ -932,7 +952,7 @@ sys_io_submit(struct tcb *tcp) if (i) tprints("}"); #else -#warning "libaio-devel is not available => no io_submit decoding" +#warning "libaio.h is not available => no io_submit decoding" tprintf("%#lx", tcp->u_arg[2]); #endif } @@ -1068,3 +1088,18 @@ sys_eventfd2(struct tcb *tcp) { return do_eventfd(tcp, 1); } + +int +sys_perf_event_open(struct tcb *tcp) +{ + if (entering(tcp)) { + tprintf("%#lx, %d, %d, %d, ", + tcp->u_arg[0], + (int) tcp->u_arg[1], + (int) tcp->u_arg[2], + (int) tcp->u_arg[3]); + printflags(perf_event_open_flags, tcp->u_arg[4], + "PERF_FLAG_???"); + } + return 0; +} diff --git a/file.c b/file.c index 0cda7e12..9a832875 100644 --- a/file.c +++ b/file.c @@ -32,7 +32,7 @@ #include #include -#ifdef LINUXSPARC +#if defined(SPARC) || defined(SPARC64) struct stat { unsigned short st_dev; unsigned int st_ino; @@ -117,6 +117,21 @@ struct stat64 { unsigned long st_ctime; unsigned long st_ctime_nsec; unsigned long long st_ino; +} __attribute__((packed)); +# define HAVE_STAT64 1 + +struct __old_kernel_stat { + unsigned short st_dev; + unsigned short st_ino; + unsigned short st_mode; + unsigned short st_nlink; + unsigned short st_uid; + unsigned short st_gid; + unsigned short st_rdev; + unsigned int st_size; + unsigned int st_atime; + unsigned int st_mtime; + unsigned int st_ctime; }; #else # undef dev_t @@ -156,9 +171,6 @@ struct stat64 { # define loff_t loff_t #endif -#ifdef HPPA /* asm-parisc/stat.h defines stat64 */ -# undef stat64 -#endif #define stat libc_stat #define stat64 libc_stat64 #include @@ -168,9 +180,6 @@ struct stat64 { #undef st_atime #undef st_mtime #undef st_ctime -#ifdef HPPA -# define stat64 hpux_stat64 -#endif #include #ifdef HAVE_SYS_VFS_H @@ -183,19 +192,6 @@ struct stat64 { # define XATTR_REPLACE 2 #endif -#if HAVE_LONG_LONG_OFF_T -/* - * Ugly hacks for systems that have typedef long long off_t - */ -# define stat64 stat -# define HAVE_STAT64 1 /* Ugly hack */ -# define sys_stat64 sys_stat -# define sys_fstat64 sys_fstat -# define sys_lstat64 sys_lstat -# define sys_truncate64 sys_truncate -# define sys_ftruncate64 sys_ftruncate -#endif - #ifdef MAJOR_IN_SYSMACROS # include #endif @@ -421,7 +417,7 @@ sys_openat(struct tcb *tcp) return decode_open(tcp, 1); } -#ifdef LINUXSPARC +#if defined(SPARC) || defined(SPARC64) static const struct xlat openmodessol[] = { { 0, "O_RDWR" }, { 1, "O_RDONLY" }, @@ -516,103 +512,100 @@ sys_umask(struct tcb *tcp) return RVAL_OCTAL; } -static const struct xlat whence[] = { +const struct xlat whence_codes[] = { { SEEK_SET, "SEEK_SET" }, { SEEK_CUR, "SEEK_CUR" }, { SEEK_END, "SEEK_END" }, +#ifdef SEEK_DATA + { SEEK_DATA, "SEEK_DATA" }, +#endif +#ifdef SEEK_HOLE + { SEEK_HOLE, "SEEK_HOLE" }, +#endif { 0, NULL }, }; +/* Linux kernel has exactly one version of lseek: + * fs/read_write.c::SYSCALL_DEFINE3(lseek, unsigned, fd, off_t, offset, unsigned, origin) + * In kernel, off_t is always the same as (kernel's) long + * (see include/uapi/asm-generic/posix_types.h), + * which means that on x32 we need to use tcp->ext_arg[N] to get offset argument. + * Use test/x32_lseek.c to test lseek decoding. + */ #if defined(LINUX_MIPSN32) || defined(X32) int sys_lseek(struct tcb *tcp) { long long offset; - int _whence; + int whence; if (entering(tcp)) { printfd(tcp, tcp->u_arg[0]); - tprints(", "); offset = tcp->ext_arg[1]; - _whence = tcp->u_arg[2]; - if (_whence == SEEK_SET) - tprintf("%llu, ", offset); + whence = tcp->u_arg[2]; + if (whence == SEEK_SET) + tprintf(", %llu, ", offset); else - tprintf("%lld, ", offset); - printxval(whence, _whence, "SEEK_???"); + tprintf(", %lld, ", offset); + printxval(whence_codes, whence, "SEEK_???"); } return RVAL_LUDECIMAL; } - -# if defined(X32) -int -sys_lseek32(struct tcb *tcp) -{ - long offset; - int _whence; - - if (entering(tcp)) { - printfd(tcp, tcp->u_arg[0]); - tprints(", "); - offset = tcp->u_arg[1]; - _whence = tcp->u_arg[2]; - if (_whence == SEEK_SET) - tprintf("%lu, ", offset); - else - tprintf("%ld, ", offset); - printxval(whence, _whence, "SEEK_???"); - } - return RVAL_UDECIMAL; -} -# endif #else int sys_lseek(struct tcb *tcp) { - off_t offset; - int _whence; + long offset; + int whence; if (entering(tcp)) { printfd(tcp, tcp->u_arg[0]); - tprints(", "); offset = tcp->u_arg[1]; - _whence = tcp->u_arg[2]; - if (_whence == SEEK_SET) - tprintf("%lu, ", offset); + whence = tcp->u_arg[2]; + if (whence == SEEK_SET) + tprintf(", %lu, ", offset); else - tprintf("%ld, ", offset); - printxval(whence, _whence, "SEEK_???"); + tprintf(", %ld, ", offset); + printxval(whence_codes, whence, "SEEK_???"); } return RVAL_UDECIMAL; } #endif +/* llseek syscall takes explicitly two ulong arguments hi, lo, + * rather than one 64-bit argument for which LONG_LONG works + * appropriate for the native byte order. + * + * See kernel's fs/read_write.c::SYSCALL_DEFINE5(llseek, ...) + * + * hi,lo are "unsigned longs" and combined exactly this way in kernel: + * ((loff_t) hi << 32) | lo + * Note that for architectures with kernel's long wider than userspace long + * (such as x32), combining code will use *kernel's*, i.e. *wide* longs + * for hi and lo. We would need to use tcp->ext_arg[N] on x32... + * ...however, x32 (and x86_64) does not _have_ llseek syscall as such. + */ int sys_llseek(struct tcb *tcp) { if (entering(tcp)) { printfd(tcp, tcp->u_arg[0]); - /* - * This one call takes explicitly two 32-bit arguments hi, lo, - * rather than one 64-bit argument for which LONG_LONG works - * appropriate for the native byte order. - */ if (tcp->u_arg[4] == SEEK_SET) tprintf(", %llu, ", - ((long long int) tcp->u_arg[1]) << 32 | + ((long long) tcp->u_arg[1]) << 32 | (unsigned long long) (unsigned) tcp->u_arg[2]); else tprintf(", %lld, ", - ((long long int) tcp->u_arg[1]) << 32 | + ((long long) tcp->u_arg[1]) << 32 | (unsigned long long) (unsigned) tcp->u_arg[2]); } else { - long long int off; + long long off; if (syserror(tcp) || umove(tcp, tcp->u_arg[3], &off) < 0) tprintf("%#lx, ", tcp->u_arg[3]); else tprintf("[%llu], ", off); - printxval(whence, tcp->u_arg[4], "SEEK_???"); + printxval(whence_codes, tcp->u_arg[4], "SEEK_???"); } return 0; } @@ -623,14 +616,12 @@ sys_readahead(struct tcb *tcp) if (entering(tcp)) { int argn; printfd(tcp, tcp->u_arg[0]); - tprints(", "); - argn = printllval(tcp, "%lld", 1); + argn = printllval(tcp, ", %lld", 1); tprintf(", %ld", tcp->u_arg[argn]); } return 0; } -#ifndef HAVE_LONG_LONG_OFF_T int sys_truncate(struct tcb *tcp) { @@ -640,9 +631,8 @@ sys_truncate(struct tcb *tcp) } return 0; } -#endif -#if _LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T +#if _LFS64_LARGEFILE int sys_truncate64(struct tcb *tcp) { @@ -654,7 +644,6 @@ sys_truncate64(struct tcb *tcp) } #endif -#ifndef HAVE_LONG_LONG_OFF_T int sys_ftruncate(struct tcb *tcp) { @@ -664,16 +653,14 @@ sys_ftruncate(struct tcb *tcp) } return 0; } -#endif -#if _LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T +#if _LFS64_LARGEFILE int sys_ftruncate64(struct tcb *tcp) { if (entering(tcp)) { printfd(tcp, tcp->u_arg[0]); - tprints(", "); - printllval(tcp, "%llu", 1); + printllval(tcp, ", %llu", 1); } return 0; } @@ -738,7 +725,7 @@ sprinttime(time_t t) return buf; } -#ifdef LINUXSPARC +#if defined(SPARC) || defined(SPARC64) typedef struct { int tv_sec; int tv_nsec; @@ -808,7 +795,7 @@ printstatsol(struct tcb *tcp, long addr) tprints("...}"); } -#if defined(SPARC64) +# if defined(SPARC64) static void printstat_sparc64(struct tcb *tcp, long addr) { @@ -854,8 +841,8 @@ printstat_sparc64(struct tcb *tcp, long addr) else tprints("...}"); } -#endif /* SPARC64 */ -#endif /* LINUXSPARC */ +# endif /* SPARC64 */ +#endif /* SPARC[64] */ #if defined POWERPC64 struct stat_powerpc32 { @@ -925,7 +912,6 @@ static const struct xlat fileflags[] = { { 0, NULL }, }; -#ifndef HAVE_LONG_LONG_OFF_T static void realprintstat(struct tcb *tcp, struct stat *statbuf) { @@ -991,6 +977,7 @@ realprintstat(struct tcb *tcp, struct stat *statbuf) tprints("...}"); } +#ifndef X32 static void printstat(struct tcb *tcp, long addr) { @@ -1005,7 +992,7 @@ printstat(struct tcb *tcp, long addr) return; } -#ifdef LINUXSPARC +#if defined(SPARC) || defined(SPARC64) if (current_personality == 1) { printstatsol(tcp, addr); return; @@ -1016,7 +1003,7 @@ printstat(struct tcb *tcp, long addr) return; } #endif -#endif /* LINUXSPARC */ +#endif /* SPARC[64] */ #if defined POWERPC64 if (current_personality == 1) { @@ -1032,7 +1019,9 @@ printstat(struct tcb *tcp, long addr) realprintstat(tcp, &statbuf); } -#endif /* !HAVE_LONG_LONG_OFF_T */ +#else /* X32 */ +# define printstat printstat64 +#endif #if !defined HAVE_STAT64 && defined X86_64 /* @@ -1070,7 +1059,11 @@ struct stat64 { static void printstat64(struct tcb *tcp, long addr) { +#ifdef X32 + struct stat statbuf; +#else struct stat64 statbuf; +#endif #ifdef STAT64_SIZE (void) sizeof(char[sizeof statbuf == STAT64_SIZE ? 1 : -1]); @@ -1085,7 +1078,7 @@ printstat64(struct tcb *tcp, long addr) return; } -#ifdef LINUXSPARC +#if defined(SPARC) || defined(SPARC64) if (current_personality == 1) { printstatsol(tcp, addr); return; @@ -1096,7 +1089,7 @@ printstat64(struct tcb *tcp, long addr) return; } # endif -#endif /* LINUXSPARC */ +#endif /* SPARC[64] */ #if defined X86_64 if (current_personality != 1) { @@ -1186,7 +1179,7 @@ printstat64(struct tcb *tcp, long addr) } #endif /* HAVE_STAT64 */ -#if defined(HAVE_STRUCT___OLD_KERNEL_STAT) && !defined(HAVE_LONG_LONG_OFF_T) +#if defined(HAVE_STRUCT___OLD_KERNEL_STAT) static void convertoldstat(const struct __old_kernel_stat *oldbuf, struct stat *newbuf) { @@ -1220,7 +1213,7 @@ printoldstat(struct tcb *tcp, long addr) return; } -# ifdef LINUXSPARC +# if defined(SPARC) || defined(SPARC64) if (current_personality == 1) { printstatsol(tcp, addr); return; @@ -1237,7 +1230,6 @@ printoldstat(struct tcb *tcp, long addr) } #endif -#ifndef HAVE_LONG_LONG_OFF_T int sys_stat(struct tcb *tcp) { @@ -1249,7 +1241,63 @@ sys_stat(struct tcb *tcp) } return 0; } -#endif + +#ifdef X32 +static void +printstat64_x32(struct tcb *tcp, long addr) +{ + struct stat64 statbuf; + + if (!addr) { + tprints("NULL"); + return; + } + if (syserror(tcp) || !verbose(tcp)) { + tprintf("%#lx", addr); + return; + } + + if (umove(tcp, addr, &statbuf) < 0) { + tprints("{...}"); + return; + } + + if (!abbrev(tcp)) { + tprintf("{st_dev=makedev(%lu, %lu), st_ino=%llu, st_mode=%s, ", + (unsigned long) major(statbuf.st_dev), + (unsigned long) minor(statbuf.st_dev), + (unsigned long long) statbuf.st_ino, + sprintmode(statbuf.st_mode)); + tprintf("st_nlink=%lu, st_uid=%lu, st_gid=%lu, ", + (unsigned long) statbuf.st_nlink, + (unsigned long) statbuf.st_uid, + (unsigned long) statbuf.st_gid); + tprintf("st_blksize=%lu, ", + (unsigned long) statbuf.st_blksize); + tprintf("st_blocks=%lu, ", (unsigned long) statbuf.st_blocks); + } + else + tprintf("{st_mode=%s, ", sprintmode(statbuf.st_mode)); + switch (statbuf.st_mode & S_IFMT) { + case S_IFCHR: case S_IFBLK: + tprintf("st_rdev=makedev(%lu, %lu), ", + (unsigned long) major(statbuf.st_rdev), + (unsigned long) minor(statbuf.st_rdev)); + break; + default: + tprintf("st_size=%llu, ", (unsigned long long) statbuf.st_size); + break; + } + if (!abbrev(tcp)) { + tprintf("st_atime=%s, ", sprinttime(statbuf.st_atime)); + tprintf("st_mtime=%s, ", sprinttime(statbuf.st_mtime)); + tprintf("st_ctime=%s", sprinttime(statbuf.st_ctime)); + tprints("}"); + } + else + tprints("...}"); +} +#endif /* X32 */ int sys_stat64(struct tcb *tcp) @@ -1259,7 +1307,11 @@ sys_stat64(struct tcb *tcp) printpath(tcp, tcp->u_arg[0]); tprints(", "); } else { +# ifdef X32 + printstat64_x32(tcp, tcp->u_arg[1]); +# else printstat64(tcp, tcp->u_arg[1]); +# endif } return 0; #else @@ -1316,7 +1368,7 @@ sys_newfstatat(struct tcb *tcp) return 0; } -#if defined(HAVE_STRUCT___OLD_KERNEL_STAT) && !defined(HAVE_LONG_LONG_OFF_T) +#if defined(HAVE_STRUCT___OLD_KERNEL_STAT) int sys_oldstat(struct tcb *tcp) { @@ -1330,7 +1382,6 @@ sys_oldstat(struct tcb *tcp) } #endif -#ifndef HAVE_LONG_LONG_OFF_T int sys_fstat(struct tcb *tcp) { @@ -1342,7 +1393,6 @@ sys_fstat(struct tcb *tcp) } return 0; } -#endif int sys_fstat64(struct tcb *tcp) @@ -1352,7 +1402,11 @@ sys_fstat64(struct tcb *tcp) printfd(tcp, tcp->u_arg[0]); tprints(", "); } else { +# ifdef X32 + printstat64_x32(tcp, tcp->u_arg[1]); +# else printstat64(tcp, tcp->u_arg[1]); +# endif } return 0; #else @@ -1360,7 +1414,7 @@ sys_fstat64(struct tcb *tcp) #endif } -#if defined(HAVE_STRUCT___OLD_KERNEL_STAT) && !defined(HAVE_LONG_LONG_OFF_T) +#if defined(HAVE_STRUCT___OLD_KERNEL_STAT) int sys_oldfstat(struct tcb *tcp) { @@ -1374,51 +1428,7 @@ sys_oldfstat(struct tcb *tcp) } #endif -#ifndef HAVE_LONG_LONG_OFF_T -int -sys_lstat(struct tcb *tcp) -{ - if (entering(tcp)) { - printpath(tcp, tcp->u_arg[0]); - tprints(", "); - } else { - printstat(tcp, tcp->u_arg[1]); - } - return 0; -} -#endif - -int -sys_lstat64(struct tcb *tcp) -{ -#ifdef HAVE_STAT64 - if (entering(tcp)) { - printpath(tcp, tcp->u_arg[0]); - tprints(", "); - } else { - printstat64(tcp, tcp->u_arg[1]); - } - return 0; -#else - return printargs(tcp); -#endif -} - -#if defined(HAVE_STRUCT___OLD_KERNEL_STAT) && !defined(HAVE_LONG_LONG_OFF_T) -int -sys_oldlstat(struct tcb *tcp) -{ - if (entering(tcp)) { - printpath(tcp, tcp->u_arg[0]); - tprints(", "); - } else { - printoldstat(tcp, tcp->u_arg[1]); - } - return 0; -} -#endif - -#if defined(LINUXSPARC) +#if defined(SPARC) || defined(SPARC64) int sys_xstat(struct tcb *tcp) @@ -1594,7 +1604,7 @@ sys_aclipc(struct tcb *tcp) # endif /* HAVE_SYS_ACL_H */ -#endif /* LINUXSPARC */ +#endif /* SPARC[64] */ static const struct xlat fsmagic[] = { { 0x73757245, "CODA_SUPER_MAGIC" }, @@ -2123,12 +2133,15 @@ sys_utime(struct tcb *tcp) union { long utl[2]; int uti[2]; + long paranoia_for_huge_wordsize[4]; } u; - unsigned wordsize = current_wordsize; + unsigned wordsize; if (entering(tcp)) { printpath(tcp, tcp->u_arg[0]); tprints(", "); + + wordsize = current_wordsize; if (!tcp->u_arg[1]) tprints("NULL"); else if (!verbose(tcp)) @@ -2144,7 +2157,8 @@ sys_utime(struct tcb *tcp) tprintf(" %s]", sprinttime(u.uti[1])); } else - abort(); + tprintf("", + wordsize); } return 0; } @@ -2160,7 +2174,7 @@ decode_mknod(struct tcb *tcp, int offset) switch (mode & S_IFMT) { case S_IFCHR: case S_IFBLK: -#ifdef LINUXSPARC +#if defined(SPARC) || defined(SPARC64) if (current_personality == 1) tprintf(", makedev(%lu, %lu)", (unsigned long) ((tcp->u_arg[offset + 2] >> 18) & 0x3fff), @@ -2193,22 +2207,31 @@ sys_mknodat(struct tcb *tcp) } static void -printdir(struct tcb *tcp, long addr) +print_old_dirent(struct tcb *tcp, long addr) { - struct dirent d; +#ifdef SH64 + typedef struct kernel_dirent old_dirent_t; +#else + typedef struct { + uint32_t d_ino; + uint32_t d_off; + unsigned short d_reclen; + char d_name[1]; + } old_dirent_t; +#endif + old_dirent_t d; - if (!verbose(tcp)) { + if (!verbose(tcp) || umove(tcp, addr, &d) < 0) { tprintf("%#lx", addr); return; } - if (umove(tcp, addr, &d) < 0) { - tprints("{...}"); - return; - } - tprintf("{d_ino=%ld, ", (unsigned long) d.d_ino); - tprints("d_name="); - printpathn(tcp, (long) ((struct dirent *) addr)->d_name, d.d_reclen); - tprints("}"); + + tprintf("{d_ino=%lu, d_off=%lu, d_reclen=%u, d_name=\"", + (unsigned long) d.d_ino, (unsigned long) d.d_off, d.d_reclen); + if (d.d_reclen > 256) + d.d_reclen = 256; + printpathn(tcp, addr + offsetof(old_dirent_t, d_name), d.d_reclen); + tprints("\"}"); } int @@ -2221,7 +2244,7 @@ sys_readdir(struct tcb *tcp) if (syserror(tcp) || tcp->u_rval == 0 || !verbose(tcp)) tprintf("%#lx", tcp->u_arg[1]); else - printdir(tcp, tcp->u_arg[1]); + print_old_dirent(tcp, tcp->u_arg[1]); /* Not much point in printing this out, it is always 1. */ if (tcp->u_arg[2] != 1) tprintf(", %lu", tcp->u_arg[2]); @@ -2278,8 +2301,10 @@ sys_getdents(struct tcb *tcp) if (!abbrev(tcp)) { tprintf("%s{d_ino=%lu, d_off=%lu, ", i ? " " : "", d->d_ino, d->d_off); - tprintf("d_reclen=%u, d_name=\"%s\"}", + tprintf("d_reclen=%u, d_name=\"%s\", d_type=", d->d_reclen, d->d_name); + printxval(direnttypes, buf[i + d->d_reclen - 1], "DT_???"); + tprints("}"); } if (!d->d_reclen) { tprints("/* d_reclen == 0, problem here */"); @@ -2466,6 +2491,8 @@ print_xattr_val(struct tcb *tcp, int failed, unsigned long insize, unsigned long size) { + if (insize == 0) + failed = 1; if (!failed) { unsigned long capacity = 4 * size + 1; unsigned char *buf = (capacity < size) ? NULL : malloc(capacity); @@ -2478,7 +2505,7 @@ print_xattr_val(struct tcb *tcp, int failed, unsigned char *in = &buf[3 * size]; size_t i; for (i = 0; i < size; ++i) { - if (isprint(in[i])) + if (in[i] >= ' ' && in[i] <= 0x7e) *out++ = in[i]; else { #define tohex(n) "0123456789abcdef"[n] @@ -2635,8 +2662,7 @@ sys_fadvise64(struct tcb *tcp) if (entering(tcp)) { int argn; printfd(tcp, tcp->u_arg[0]); - tprints(", "); - argn = printllval(tcp, "%lld", 1); + argn = printllval(tcp, ", %lld", 1); tprintf(", %ld, ", tcp->u_arg[argn++]); printxval(advise, tcp->u_arg[argn], "POSIX_FADV_???"); } @@ -2649,14 +2675,9 @@ sys_fadvise64_64(struct tcb *tcp) if (entering(tcp)) { int argn; printfd(tcp, tcp->u_arg[0]); - tprints(", "); -#if defined ARM || defined POWERPC - argn = printllval(tcp, "%lld, ", 2); -#else - argn = printllval(tcp, "%lld, ", 1); -#endif + argn = printllval(tcp, ", %lld, ", 1); argn = printllval(tcp, "%lld, ", argn); -#if defined ARM || defined POWERPC +#if defined __ARM_EABI__ || defined AARCH64 || defined POWERPC || defined XTENSA printxval(advise, tcp->u_arg[1], "POSIX_FADV_???"); #else printxval(advise, tcp->u_arg[argn], "POSIX_FADV_???"); @@ -2732,8 +2753,7 @@ sys_fallocate(struct tcb *tcp) if (entering(tcp)) { int argn; printfd(tcp, tcp->u_arg[0]); /* fd */ - tprints(", "); - tprintf("%#lo, ", tcp->u_arg[1]); /* mode */ + tprintf(", %#lo, ", tcp->u_arg[1]); /* mode */ argn = printllval(tcp, "%llu, ", 2); /* offset */ printllval(tcp, "%llu", argn); /* len */ } @@ -2766,88 +2786,3 @@ sys_swapon(struct tcb *tcp) } return 0; } - -#ifdef X32 -# undef stat64 -# undef sys_fstat64 -# undef sys_stat64 - -static void -realprintstat64(struct tcb *tcp, long addr) -{ - struct stat64 statbuf; - - if (!addr) { - tprints("NULL"); - return; - } - if (syserror(tcp) || !verbose(tcp)) { - tprintf("%#lx", addr); - return; - } - - if (umove(tcp, addr, &statbuf) < 0) { - tprints("{...}"); - return; - } - - if (!abbrev(tcp)) { - tprintf("{st_dev=makedev(%lu, %lu), st_ino=%llu, st_mode=%s, ", - (unsigned long) major(statbuf.st_dev), - (unsigned long) minor(statbuf.st_dev), - (unsigned long long) statbuf.st_ino, - sprintmode(statbuf.st_mode)); - tprintf("st_nlink=%lu, st_uid=%lu, st_gid=%lu, ", - (unsigned long) statbuf.st_nlink, - (unsigned long) statbuf.st_uid, - (unsigned long) statbuf.st_gid); - tprintf("st_blksize=%lu, ", - (unsigned long) statbuf.st_blksize); - tprintf("st_blocks=%lu, ", (unsigned long) statbuf.st_blocks); - } - else - tprintf("{st_mode=%s, ", sprintmode(statbuf.st_mode)); - switch (statbuf.st_mode & S_IFMT) { - case S_IFCHR: case S_IFBLK: - tprintf("st_rdev=makedev(%lu, %lu), ", - (unsigned long) major(statbuf.st_rdev), - (unsigned long) minor(statbuf.st_rdev)); - break; - default: - tprintf("st_size=%llu, ", (unsigned long long) statbuf.st_size); - break; - } - if (!abbrev(tcp)) { - tprintf("st_atime=%s, ", sprinttime(statbuf.st_atime)); - tprintf("st_mtime=%s, ", sprinttime(statbuf.st_mtime)); - tprintf("st_ctime=%s", sprinttime(statbuf.st_ctime)); - tprints("}"); - } - else - tprints("...}"); -} - -int -sys_fstat64(struct tcb *tcp) -{ - if (entering(tcp)) { - printfd(tcp, tcp->u_arg[0]); - tprints(", "); - } else { - realprintstat64(tcp, tcp->u_arg[1]); - } - return 0; -} - -int -sys_stat64(struct tcb *tcp) -{ - if (entering(tcp)) { - printpath(tcp, tcp->u_arg[0]); - tprints(", "); - } else { - realprintstat64(tcp, tcp->u_arg[1]); - } - return 0; -} -#endif diff --git a/io.c b/io.c index 6b3f4b70..b7bf8327 100644 --- a/io.c +++ b/io.c @@ -250,26 +250,41 @@ sys_pwritev(struct tcb *tcp) } #endif /* HAVE_SYS_UIO_H */ +static void +print_off_t(struct tcb *tcp, long addr) +{ + unsigned long offset; + + if (!addr) { + tprints("NULL"); + return; + } + +#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4 + if (current_wordsize == 4) { + uint32_t off; + + if (umove(tcp, addr, &off) < 0) + tprintf("%#lx", addr); + else + tprintf("[%u]", off); + } else +#endif + if (umove(tcp, addr, &offset) < 0) + tprintf("%#lx", addr); + else + tprintf("[%lu]", offset); +} + int sys_sendfile(struct tcb *tcp) { if (entering(tcp)) { - off_t offset; - printfd(tcp, tcp->u_arg[0]); tprints(", "); printfd(tcp, tcp->u_arg[1]); tprints(", "); - if (!tcp->u_arg[2]) - tprints("NULL"); - else if (umove(tcp, tcp->u_arg[2], &offset) < 0) - tprintf("%#lx", tcp->u_arg[2]); - else -#ifdef HAVE_LONG_LONG_OFF_T - tprintf("[%llu]", offset); -#else - tprintf("[%lu]", offset); -#endif + print_off_t(tcp, tcp->u_arg[2]); tprintf(", %lu", tcp->u_arg[3]); } return 0; @@ -379,7 +394,7 @@ sys_vmsplice(struct tcb *tcp) int sys_ioctl(struct tcb *tcp) { - const struct ioctlent *iop; + const struct_ioctlent *iop; if (entering(tcp)) { printfd(tcp, tcp->u_arg[0]); diff --git a/ioctl.c b/ioctl.c index 323946d3..22804395 100644 --- a/ioctl.c +++ b/ioctl.c @@ -35,14 +35,14 @@ static int compare(const void *a, const void *b) { unsigned long code1 = (long) a; - unsigned long code2 = ((struct ioctlent *) b)->code; + unsigned long code2 = ((struct_ioctlent *) b)->code; return (code1 > code2) ? 1 : (code1 < code2) ? -1 : 0; } -const struct ioctlent * +const struct_ioctlent * ioctl_lookup(long code) { - struct ioctlent *iop; + struct_ioctlent *iop; code &= (_IOC_NRMASK<<_IOC_NRSHIFT) | (_IOC_TYPEMASK<<_IOC_TYPESHIFT); iop = bsearch((void*)code, ioctlent, @@ -57,8 +57,8 @@ ioctl_lookup(long code) return iop; } -const struct ioctlent * -ioctl_next_match(const struct ioctlent *iop) +const struct_ioctlent * +ioctl_next_match(const struct_ioctlent *iop) { long code; @@ -92,6 +92,9 @@ ioctl_decode(struct tcb *tcp, long code, long arg) return loop_ioctl(tcp, code, arg); case 'M': return mtd_ioctl(tcp, code, arg); + case 'o': + case 'O': + return ubi_ioctl(tcp, code, arg); default: break; } diff --git a/ipc.c b/ipc.c index f4ec522e..0b91a526 100644 --- a/ipc.c +++ b/ipc.c @@ -146,10 +146,9 @@ int sys_msgget(struct tcb *tcp) { if (entering(tcp)) { if (tcp->u_arg[0]) - tprintf("%#lx", tcp->u_arg[0]); + tprintf("%#lx, ", tcp->u_arg[0]); else - tprints("IPC_PRIVATE"); - tprints(", "); + tprints("IPC_PRIVATE, "); if (printflags(resource_flags, tcp->u_arg[1] & ~0777, NULL) != 0) tprints("|"); tprintf("%#lo", tcp->u_arg[1] & 0777); @@ -174,7 +173,7 @@ indirect_ipccall(struct tcb *tcp) #if defined IA64 return tcp->scno < 1024; /* ia32 emulation syscalls are low */ #endif -#if defined(ALPHA) || defined(MIPS) || defined(HPPA) || defined(__ARM_EABI__) +#if defined(ALPHA) || defined(MIPS) || defined(HPPA) || defined(__ARM_EABI__) || defined(AARCH64) return 0; #endif return 1; @@ -327,10 +326,10 @@ int sys_semtimedop(struct tcb *tcp) if (indirect_ipccall(tcp)) { tprint_sembuf(tcp, tcp->u_arg[3], tcp->u_arg[1]); tprints(", "); -#if defined(S390) +#if defined(S390) || defined(S390X) printtv(tcp, tcp->u_arg[2]); #else - printtv(tcp, tcp->u_arg[5]); + printtv(tcp, tcp->u_arg[4]); #endif } else { tprint_sembuf(tcp, tcp->u_arg[1], tcp->u_arg[2]); @@ -348,8 +347,7 @@ int sys_semget(struct tcb *tcp) tprintf("%#lx", tcp->u_arg[0]); else tprints("IPC_PRIVATE"); - tprintf(", %lu", tcp->u_arg[1]); - tprints(", "); + tprintf(", %lu, ", tcp->u_arg[1]); if (printflags(resource_flags, tcp->u_arg[2] & ~0777, NULL) != 0) tprints("|"); tprintf("%#lo", tcp->u_arg[2] & 0777); @@ -360,8 +358,7 @@ int sys_semget(struct tcb *tcp) int sys_semctl(struct tcb *tcp) { if (entering(tcp)) { - tprintf("%lu", tcp->u_arg[0]); - tprintf(", %lu, ", tcp->u_arg[1]); + tprintf("%lu, %lu, ", tcp->u_arg[0], tcp->u_arg[1]); PRINTCTL(semctl_flags, tcp->u_arg[2], "SEM_???"); tprintf(", %#lx", tcp->u_arg[3]); } @@ -375,8 +372,7 @@ int sys_shmget(struct tcb *tcp) tprintf("%#lx", tcp->u_arg[0]); else tprints("IPC_PRIVATE"); - tprintf(", %lu", tcp->u_arg[1]); - tprints(", "); + tprintf(", %lu, ", tcp->u_arg[1]); if (printflags(shm_resource_flags, tcp->u_arg[2] & ~0777, NULL) != 0) tprints("|"); tprintf("%#lo", tcp->u_arg[2] & 0777); @@ -403,12 +399,10 @@ int sys_shmat(struct tcb *tcp) if (exiting(tcp)) { tprintf("%lu", tcp->u_arg[0]); if (indirect_ipccall(tcp)) { - tprintf(", %#lx", tcp->u_arg[3]); - tprints(", "); + tprintf(", %#lx, ", tcp->u_arg[3]); printflags(shm_flags, tcp->u_arg[1], "SHM_???"); } else { - tprintf(", %#lx", tcp->u_arg[1]); - tprints(", "); + tprintf(", %#lx, ", tcp->u_arg[1]); printflags(shm_flags, tcp->u_arg[2], "SHM_???"); } if (syserror(tcp)) @@ -452,7 +446,7 @@ sys_mq_open(struct tcb *tcp) /* mode */ tprintf(", %#lo, ", tcp->u_arg[2]); if (umove(tcp, tcp->u_arg[3], &attr) < 0) - tprints("{ ??? }"); + tprints("{???}"); else tprintf("{mq_maxmsg=%ld, mq_msgsize=%ld}", (long) attr.mq_maxmsg, diff --git a/linux/aarch64/errnoent1.h b/linux/aarch64/errnoent1.h new file mode 100644 index 00000000..e1cbe332 --- /dev/null +++ b/linux/aarch64/errnoent1.h @@ -0,0 +1,2 @@ +/* Native AArch64 */ +#include "../errnoent.h" diff --git a/linux/aarch64/ioctlent.h.in b/linux/aarch64/ioctlent.h.in new file mode 100644 index 00000000..83e6eb28 --- /dev/null +++ b/linux/aarch64/ioctlent.h.in @@ -0,0 +1 @@ +#include "../arm/ioctlent.h.in" diff --git a/linux/aarch64/ioctlent1.h b/linux/aarch64/ioctlent1.h new file mode 100644 index 00000000..72eeaf19 --- /dev/null +++ b/linux/aarch64/ioctlent1.h @@ -0,0 +1 @@ +#include "ioctlent.h" diff --git a/linux/aarch64/signalent1.h b/linux/aarch64/signalent1.h new file mode 100644 index 00000000..d31e6a4a --- /dev/null +++ b/linux/aarch64/signalent1.h @@ -0,0 +1 @@ +#include "../signalent.h" diff --git a/linux/aarch64/syscallent.h b/linux/aarch64/syscallent.h new file mode 100644 index 00000000..1b892be0 --- /dev/null +++ b/linux/aarch64/syscallent.h @@ -0,0 +1 @@ +#include "../arm/syscallent.h" diff --git a/linux/aarch64/syscallent1.h b/linux/aarch64/syscallent1.h new file mode 100644 index 00000000..e772a5ef --- /dev/null +++ b/linux/aarch64/syscallent1.h @@ -0,0 +1,330 @@ + { 2, 0, sys_io_setup, "io_setup" }, /* 0 */ + { 1, 0, sys_io_destroy, "io_destroy" }, /* 1 */ + { 3, 0, sys_io_submit, "io_submit" }, /* 2 */ + { 3, 0, sys_io_cancel, "io_cancel" }, /* 3 */ + { 5, 0, sys_io_getevents, "io_getevents" }, /* 4 */ + { 5, TF, sys_setxattr, "setxattr" }, /* 5 */ + { 5, TF, sys_setxattr, "lsetxattr" }, /* 6 */ + { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 7 */ + { 4, TF, sys_getxattr, "getxattr" }, /* 8 */ + { 4, TF, sys_getxattr, "lgetxattr" }, /* 9 */ + { 4, TD, sys_fgetxattr, "fgetxattr" }, /* 10 */ + { 3, TF, sys_listxattr, "listxattr" }, /* 11 */ + { 3, TF, sys_listxattr, "llistxattr" }, /* 12 */ + { 3, TD, sys_flistxattr, "flistxattr" }, /* 13 */ + { 2, TF, sys_removexattr, "removexattr" }, /* 14 */ + { 2, TF, sys_removexattr, "lremovexattr" }, /* 15 */ + { 2, TD, sys_fremovexattr, "fremovexattr" }, /* 16 */ + { 2, TF, sys_getcwd, "getcwd" }, /* 17 */ + { 3, 0, sys_lookup_dcookie, "lookup_dcookie" }, /* 18 */ + { 2, TD, sys_eventfd2, "eventfd2" }, /* 19 */ + { 1, TD, sys_epoll_create1, "epoll_create1" }, /* 20 */ + { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 21 */ + { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 22 */ + { 1, TD, sys_dup, "dup" }, /* 23 */ + { 3, TD, sys_dup3, "dup3" }, /* 24 */ + { 3, TD, sys_fcntl, "fcntl" }, /* 25 */ + { 1, TD, sys_inotify_init1, "inotify_init1" }, /* 26 */ + { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 27 */ + { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 28 */ + { 3, TD, sys_ioctl, "ioctl" }, /* 29 */ + { 3, 0, sys_ioprio_set, "ioprio_set" }, /* 30 */ + { 2, 0, sys_ioprio_get, "ioprio_get" }, /* 31 */ + { 2, TD, sys_flock, "flock" }, /* 32 */ + { 4, TD|TF, sys_mknodat, "mknodat" }, /* 33 */ + { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 34 */ + { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 35 */ + { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 36 */ + { 5, TD|TF, sys_linkat, "linkat" }, /* 37 */ + { 4, TD|TF, sys_renameat, "renameat" }, /* 38 */ + { 2, TF, sys_umount2, "umount2" }, /* 39 */ + { 5, TF, sys_mount, "mount" }, /* 40 */ + { 2, TF, sys_pivotroot, "pivot_root" }, /* 41 */ + { 3, 0, sys_nfsservctl, "nfsservctl" }, /* 42 */ + { 2, TF, sys_statfs, "statfs64" }, /* 43 */ + { 2, TD, sys_fstatfs, "fstatfs64" }, /* 44 */ + { 2, TF, sys_truncate, "truncate64" }, /* 45 */ + { 2, TD, sys_ftruncate, "ftruncate64" }, /* 46 */ + { 4, TD, sys_fallocate, "fallocate" }, /* 47 */ + { 3, TD|TF, sys_faccessat, "faccessat" }, /* 48 */ + { 1, TF, sys_chdir, "chdir" }, /* 49 */ + { 1, TD, sys_fchdir, "fchdir" }, /* 50 */ + { 1, TF, sys_chroot, "chroot" }, /* 51 */ + { 2, TD, sys_fchmod, "fchmod" }, /* 52 */ + { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 53 */ + { 5, TD|TF, sys_fchownat, "fchownat" }, /* 54 */ + { 3, TD, sys_fchown, "fchown" }, /* 55 */ + { 4, TD|TF, sys_openat, "openat" }, /* 56 */ + { 1, TD, sys_close, "close" }, /* 57 */ + { 0, 0, sys_vhangup, "vhangup" }, /* 58 */ + { 2, TD, sys_pipe2, "pipe2" }, /* 59 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 60 */ + { 3, TD, sys_getdents64, "getdents64" }, /* 61 */ + { 3, TD, sys_lseek, "lseek" }, /* 62 */ + { 3, TD, sys_read, "read" }, /* 63 */ + { 3, TD, sys_write, "write" }, /* 64 */ + { 3, TD, sys_readv, "readv" }, /* 65 */ + { 3, TD, sys_writev, "writev" }, /* 66 */ + { 4, TD, sys_pread, "pread64" }, /* 67 */ + { 4, TD, sys_pwrite, "pwrite64" }, /* 68 */ + { 4, TD, sys_preadv, "preadv" }, /* 69 */ + { 4, TD, sys_pwritev, "pwritev" }, /* 70 */ + { 4, TD|TN, sys_sendfile64, "sendfile" }, /* 71 */ + { 6, TD, sys_pselect6, "pselect6" }, /* 72 */ + { 5, TD, sys_ppoll, "ppoll" }, /* 73 */ + { 4, TD|TS, sys_signalfd4, "signalfd4" }, /* 74 */ + { 4, TD, sys_vmsplice, "vmsplice" }, /* 75 */ + { 6, TD, sys_splice, "splice" }, /* 76 */ + { 4, TD, sys_tee, "tee" }, /* 77 */ + { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 78 */ + { 4, TD|TF, sys_newfstatat, "newfstatat" }, /* 79 */ + { 2, TD, sys_fstat, "fstat" }, /* 80 */ + { 0, 0, sys_sync, "sync" }, /* 81 */ + { 1, TD, sys_fsync, "fsync" }, /* 82 */ + { 1, TD, sys_fdatasync, "fdatasync" }, /* 83 */ + { 4, TD, sys_sync_file_range, "sync_file_range" }, /* 84 */ + { 2, TD, sys_timerfd_create, "timerfd_create" }, /* 85 */ + { 4, TD, sys_timerfd_settime, "timerfd_settime" }, /* 86 */ + { 2, TD, sys_timerfd_gettime, "timerfd_gettime" }, /* 87 */ + { 4, TD|TF, sys_utimensat, "utimensat" }, /* 88 */ + { 1, TF, sys_acct, "acct" }, /* 89 */ + { 2, 0, sys_capget, "capget" }, /* 90 */ + { 2, 0, sys_capset, "capset" }, /* 91 */ + { 1, 0, sys_personality, "personality" }, /* 92 */ + { 1, TP, sys_exit, "exit" }, /* 93 */ + { 1, TP, sys_exit, "exit_group" }, /* 94 */ + { 5, TP, sys_waitid, "waitid" }, /* 95 */ + { 1, 0, sys_set_tid_address, "set_tid_address" }, /* 96 */ + { 1, TP, sys_unshare, "unshare" }, /* 97 */ + { 6, 0, sys_futex, "futex" }, /* 98 */ + { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 99 */ + { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 100 */ + { 2, 0, sys_nanosleep, "nanosleep" }, /* 101 */ + { 2, 0, sys_getitimer, "getitimer" }, /* 102 */ + { 3, 0, sys_setitimer, "setitimer" }, /* 103 */ + { 4, 0, sys_kexec_load, "kexec_load" }, /* 104 */ + { 3, 0, sys_init_module, "init_module" }, /* 105 */ + { 2, 0, sys_delete_module, "delete_module" }, /* 106 */ + { 3, 0, sys_timer_create, "timer_create" }, /* 107 */ + { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 108 */ + { 1, 0, sys_timer_getoverrun, "timer_getoverrun" }, /* 109 */ + { 4, 0, sys_timer_settime, "timer_settime" }, /* 110 */ + { 1, 0, sys_timer_delete, "timer_delete" }, /* 111 */ + { 2, 0, sys_clock_settime, "clock_settime" }, /* 112 */ + { 2, 0, sys_clock_gettime, "clock_gettime" }, /* 113 */ + { 2, 0, sys_clock_getres, "clock_getres" }, /* 114 */ + { 4, 0, sys_clock_nanosleep, "clock_nanosleep" }, /* 115 */ + { 3, 0, sys_syslog, "syslog" }, /* 116 */ + { 4, 0, sys_ptrace, "ptrace" }, /* 117 */ + { 0, 0, sys_sched_setparam, "sched_setparam" }, /* 118 */ + { 3, 0, sys_sched_setscheduler, "sched_setscheduler" }, /* 119 */ + { 1, 0, sys_sched_getscheduler, "sched_getscheduler" }, /* 120 */ + { 2, 0, sys_sched_getparam, "sched_getparam" }, /* 121 */ + { 3, 0, sys_sched_setaffinity, "sched_setaffinity" }, /* 122 */ + { 3, 0, sys_sched_getaffinity, "sched_getaffinity" }, /* 123 */ + { 0, 0, sys_sched_yield, "sched_yield" }, /* 124 */ + { 1, 0, sys_sched_get_priority_max, "sched_get_priority_max" }, /* 125 */ + { 1, 0, sys_sched_get_priority_min, "sched_get_priority_min" }, /* 126 */ + { 2, 0, sys_sched_rr_get_interval, "sched_rr_get_interval" }, /* 127 */ + { 0, 0, sys_restart_syscall, "restart_syscall" }, /* 128 */ + { 2, TS, sys_kill, "kill" }, /* 129 */ + { 2, TS, sys_kill, "tkill" }, /* 130 */ + { 3, TS, sys_tgkill, "tgkill" }, /* 131 */ + { 2, TS, sys_sigaltstack, "sigaltstack" }, /* 132 */ + { 2, TS, sys_rt_sigsuspend, "rt_sigsuspend" }, /* 133 */ + { 4, TS, sys_rt_sigaction, "rt_sigaction" }, /* 134 */ + { 4, TS, sys_rt_sigprocmask, "rt_sigprocmask" }, /* 135 */ + { 2, TS, sys_rt_sigpending, "rt_sigpending" }, /* 136 */ + { 4, TS, sys_rt_sigtimedwait, "rt_sigtimedwait" }, /* 137 */ + { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo" }, /* 138 */ + { 0, TS, sys_rt_sigreturn, "rt_sigreturn" }, /* 139 */ + { 3, 0, sys_setpriority, "setpriority" }, /* 140 */ + { 2, 0, sys_getpriority, "getpriority" }, /* 141 */ + { 4, 0, sys_reboot, "reboot" }, /* 142 */ + { 2, 0, sys_setregid, "setregid" }, /* 143 */ + { 1, 0, sys_setgid, "setgid" }, /* 144 */ + { 2, 0, sys_setreuid, "setreuid" }, /* 145 */ + { 1, 0, sys_setuid, "setuid" }, /* 146 */ + { 3, 0, sys_setresuid, "setresuid" }, /* 147 */ + { 3, 0, sys_getresuid, "getresuid" }, /* 148 */ + { 3, 0, sys_setresgid, "setresgid" }, /* 149 */ + { 3, 0, sys_getresgid, "getresgid" }, /* 150 */ + { 1, NF, sys_setfsuid, "setfsuid" }, /* 151 */ + { 1, NF, sys_setfsgid, "setfsgid" }, /* 152 */ + { 1, 0, sys_times, "times" }, /* 153 */ + { 2, 0, sys_setpgid, "setpgid" }, /* 154 */ + { 1, 0, sys_getpgid, "getpgid" }, /* 155 */ + { 1, 0, sys_getsid, "getsid" }, /* 156 */ + { 0, 0, sys_setsid, "setsid" }, /* 157 */ + { 2, 0, sys_getgroups, "getgroups" }, /* 158 */ + { 2, 0, sys_setgroups, "setgroups" }, /* 159 */ + { 1, 0, sys_uname, "uname" }, /* 160 */ + { 2, 0, sys_sethostname, "sethostname" }, /* 161 */ + { 2, 0, sys_setdomainname, "setdomainname" }, /* 162 */ + { 2, 0, sys_getrlimit, "getrlimit" }, /* 163 */ + { 2, 0, sys_setrlimit, "setrlimit" }, /* 164 */ + { 2, 0, sys_getrusage, "getrusage" }, /* 165 */ + { 1, 0, sys_umask, "umask" }, /* 166 */ + { 5, 0, sys_prctl, "prctl" }, /* 167 */ + { 3, 0, sys_getcpu, "getcpu" }, /* 168 */ + { 2, 0, sys_gettimeofday, "gettimeofday" }, /* 169 */ + { 2, 0, sys_settimeofday, "settimeofday" }, /* 170 */ + { 1, 0, sys_adjtimex, "adjtimex" }, /* 171 */ + { 0, 0, sys_getpid, "getpid" }, /* 172 */ + { 0, 0, sys_getppid, "getppid" }, /* 173 */ + { 0, NF, sys_getuid, "getuid" }, /* 174 */ + { 0, NF, sys_geteuid, "geteuid" }, /* 175 */ + { 0, NF, sys_getgid, "getgid" }, /* 176 */ + { 0, NF, sys_getegid, "getegid" }, /* 177 */ + { 0, 0, sys_gettid, "gettid" }, /* 178 */ + { 1, 0, sys_sysinfo, "sysinfo" }, /* 179 */ + { 4, 0, sys_mq_open, "mq_open" }, /* 180 */ + { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 181 */ + { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 182 */ + { 5, 0, sys_mq_timedreceive, "mq_timedreceive" }, /* 183 */ + { 2, 0, sys_mq_notify, "mq_notify" }, /* 184 */ + { 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 185 */ + { 4, TI, sys_msgget, "msgget" }, /* 186 */ + { 3, TI, sys_msgctl, "msgctl" }, /* 187 */ + { 5, TI, sys_msgrcv, "msgrcv" }, /* 188 */ + { 4, TI, sys_msgsnd, "msgsnd" }, /* 189 */ + { 4, TI, sys_semget, "semget" }, /* 190 */ + { 4, TI, sys_semctl, "semctl" }, /* 191 */ + { 5, TI, sys_semtimedop, "semtimedop" }, /* 192 */ + { 4, TI, sys_semop, "semop" }, /* 193 */ + { 4, TI, sys_shmget, "shmget" }, /* 194 */ + { 4, TI, sys_shmctl, "shmctl" }, /* 195 */ + { 4, TI, sys_shmat, "shmat" }, /* 196 */ + { 4, TI, sys_shmdt, "shmdt" }, /* 197 */ + { 3, TN, sys_socket, "socket" }, /* 198 */ + { 4, TN, sys_socketpair, "socketpair" }, /* 199 */ + { 3, TN, sys_bind, "bind" }, /* 200 */ + { 2, TN, sys_listen, "listen" }, /* 201 */ + { 3, TN, sys_accept, "accept" }, /* 202 */ + { 3, TN, sys_connect, "connect" }, /* 203 */ + { 3, TN, sys_getsockname, "getsockname" }, /* 204 */ + { 3, TN, sys_getpeername, "getpeername" }, /* 205 */ + { 6, TN, sys_sendto, "sendto" }, /* 206 */ + { 6, TN, sys_recvfrom, "recvfrom" }, /* 207 */ + { 5, TN, sys_setsockopt, "setsockopt" }, /* 208 */ + { 5, TN, sys_getsockopt, "getsockopt" }, /* 209 */ + { 2, TN, sys_shutdown, "shutdown" }, /* 210 */ + { 3, TN, sys_sendmsg, "sendmsg" }, /* 211 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 212 */ + { 3, TD, sys_readahead, "readahead" }, /* 213 */ + { 1, TM, sys_brk, "brk" }, /* 214 */ + { 2, TM, sys_munmap, "munmap" }, /* 215 */ + { 5, TM, sys_mremap, "mremap" }, /* 216 */ + { 5, 0, sys_add_key, "add_key" }, /* 217 */ + { 4, 0, sys_request_key, "request_key" }, /* 218 */ + { 5, 0, sys_keyctl, "keyctl" }, /* 219 */ + { 5, TP, sys_clone, "clone" }, /* 220 */ + { 3, TF|TP, sys_execve, "execve" }, /* 221 */ + { 6, TD|TM, sys_mmap, "mmap" }, /* 222 */ + { 4, TD, sys_fadvise64, "fadvise64" }, /* 223 */ + { 2, TF, sys_swapon, "swapon" }, /* 224 */ + { 1, TF, sys_swapoff, "swapoff" }, /* 225 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 226 */ + { 3, TM, sys_msync, "msync" }, /* 227 */ + { 3, TM, sys_msync, "msync" }, /* 228 */ + { 2, TM, sys_munlock, "munlock" }, /* 229 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 230 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 231 */ + { 3, TM, sys_mincore, "mincore" }, /* 232 */ + { 3, TM, sys_madvise, "madvise" }, /* 233 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages" }, /* 234 */ + { 6, TM, sys_mbind, "mbind" }, /* 235 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 236 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 237 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 238 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 239 */ + { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo" }, /* 240 */ + { 5, TD, sys_perf_event_open, "perf_event_open" }, /* 241 */ + { 4, TN, sys_accept4, "accept4" }, /* 242 */ + { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 243 */ + + /* Arch-specific block, not used on AArch64 */ + [244 ... 259] = { }, + + { 4, TP, sys_wait4, "wait4" }, /* 260 */ + { 4, 0, sys_prlimit64, "prlimit64" }, /* 261 */ + { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 262 */ + { 5, TD|TF, sys_fanotify_mark, "fanotify_mark" }, /* 263 */ + { 5, TD|TF, sys_name_to_handle_at, "name_to_handle_at" }, /* 264 */ + { 3, TD, sys_open_by_handle_at, "open_by_handle_at" }, /* 265 */ + { 2, 0, sys_clock_adjtime, "clock_adjtime" }, /* 266 */ + { 1, TD, sys_syncfs, "syncfs" }, /* 267 */ + { 2, TD, sys_setns, "setns" }, /* 268 */ + { 4, TN, sys_sendmmsg, "sendmmsg" }, /* 269 */ + { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 270 */ + { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 271 */ + + /* Blank down to 1023 */ + [272 ... 1023] = { }, + + /* Quote from asm-generic/unistd.h: + * + * All syscalls below here should go away really, + * these are provided for both review and as a porting + * help for the C library version. + * + * Last chance: are any of these important enough to + * enable by default? + */ + + { 3, TD|TF, sys_open, "open" }, /* 1024 */ + { 2, TF, sys_link, "link" }, /* 1025 */ + { 1, TF, sys_unlink, "unlink" }, /* 1026 */ + { 3, TF, sys_mknod, "mknod" }, /* 1027 */ + { 2, TF, sys_chmod, "chmod" }, /* 1028 */ + { 3, TF, sys_chown, "chown" }, /* 1029 */ + { 2, TF, sys_mkdir, "mkdir" }, /* 1030 */ + { 1, TF, sys_rmdir, "rmdir" }, /* 1031 */ + { 3, TF, sys_chown, "lchown" }, /* 1032 */ + { 2, TF, sys_access, "access" }, /* 1033 */ + { 2, TF, sys_rename, "rename" }, /* 1034 */ + { 3, TF, sys_readlink, "readlink" }, /* 1035 */ + { 2, TF, sys_symlink, "symlink" }, /* 1036 */ + { 2, TF, sys_utimes, "utimes" }, /* 1037 */ + { 2, TF, sys_stat, "stat" }, /* 1038 */ + { 2, TF, sys_lstat, "lstat" }, /* 1039 */ + { 1, TD, sys_pipe, "pipe" }, /* 1040 */ + { 2, TD, sys_dup2, "dup2" }, /* 1041 */ + { 1, TD, sys_epoll_create, "epoll_create" }, /* 1042 */ + { 0, TD, sys_inotify_init, "inotify_init" }, /* 1043 */ + { 1, TD, sys_eventfd, "eventfd" }, /* 1044 */ + { 3, TD|TS, sys_signalfd, "signalfd" }, /* 1045 */ + { 4, TD|TN, sys_sendfile64, "sendfile" }, /* 1046 */ + { 2, TD, sys_ftruncate, "ftruncate" }, /* 1047 */ + { 2, TF, sys_truncate, "truncate" }, /* 1048 */ + { 2, TF, sys_stat, "stat" }, /* 1049 */ + { 2, TF, sys_lstat, "lstat" }, /* 1050 */ + { 2, TD, sys_fstat, "fstat" }, /* 1051 */ + { 3, TD, sys_fcntl, "fcntl" }, /* 1052 */ + { 4, TD, sys_fadvise64, "fadvise64" }, /* 1053 */ + { 4, TD|TF, sys_newfstatat, "newfstatat" }, /* 1054 */ + { 2, TD, sys_fstatfs, "fstatfs" }, /* 1055 */ + { 2, TF, sys_statfs, "statfs" }, /* 1056 */ + { 3, TD, sys_lseek, "lseek" }, /* 1057 */ + { 6, TD|TM, sys_mmap, "mmap" }, /* 1058 */ + { 1, 0, sys_alarm, "alarm" }, /* 1059 */ + { 0, 0, sys_getpgrp, "getpgrp" }, /* 1060 */ + { 0, TS, sys_pause, "pause" }, /* 1061 */ + { 1, 0, sys_time, "time" }, /* 1062 */ + { 2, TF, sys_utime, "utime" }, /* 1063 */ + { 2, TD|TF, sys_creat, "creat" }, /* 1064 */ + { 3, TD, sys_getdents, "getdents" }, /* 1065 */ + { 3, TD|TF, sys_futimesat, "futimesat" }, /* 1066 */ + { 5, TD, sys_select, "select" }, /* 1067 */ + { 3, TD, sys_poll, "poll" }, /* 1068 */ + { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 1069 */ + { 2, 0, sys_ustat, "ustat" }, /* 1070 */ + { 0, TP, sys_vfork, "vfork" }, /* 1071 */ + { 4, TP, sys_wait4, "wait4" }, /* 1072 */ + { 6, TN, sys_recv, "recv" }, /* 1073 */ + { 4, TN, sys_send, "send" }, /* 1074 */ + { 2, 0, sys_bdflush, "bdflush" }, /* 1075 */ + { 2, TF, sys_umount, "umount" }, /* 1076 */ + { 1, TF, sys_uselib, "uselib" }, /* 1077 */ + { 1, 0, sys_sysctl, "sysctl" }, /* 1078 */ + { 0, TP, sys_fork, "fork" }, /* 1079 */ diff --git a/linux/alpha/syscallent.h b/linux/alpha/syscallent.h index a2d048bf..28e2eeb3 100644 --- a/linux/alpha/syscallent.h +++ b/linux/alpha/syscallent.h @@ -39,16 +39,16 @@ { 1, TF, sys_unlink, "unlink" }, /* 10 */ { 5, 0, printargs, "osf_execve" }, /* 11, not implemented */ { 1, TF, sys_chdir, "chdir" }, /* 12 */ - { 1, TF, sys_fchdir, "fchdir" }, /* 13 */ + { 1, TD, sys_fchdir, "fchdir" }, /* 13 */ { 3, TF, sys_mknod, "mknod" }, /* 14 */ { 2, TF, sys_chmod, "chmod" }, /* 15 */ { 3, TF, sys_chown, "chown" }, /* 16 */ - { 1, 0, sys_brk, "brk" }, /* 17 */ + { 1, TM, sys_brk, "brk" }, /* 17 */ { 5, 0, printargs, "osf_getfsstat" }, /* 18, not implemented */ - { 3, TF, sys_lseek, "lseek" }, /* 19 */ + { 3, TD, sys_lseek, "lseek" }, /* 19 */ { 0, 0, sys_getpid, "getxpid" }, /* 20 */ { 4, 0, printargs, "osf_mount" }, /* 21 */ - { 2, 0, sys_umount2, "umount" }, /* 22 */ + { 2, TF, sys_umount2, "umount" }, /* 22 */ { 1, 0, sys_setuid, "setuid" }, /* 23 */ { 0, NF, sys_getuid, "getxuid" }, /* 24 */ { 5, 0, printargs, "exec_with_loader" }, /* 25, not implemented */ @@ -91,20 +91,20 @@ { 5, 0, printargs, "osf_old_fstat" }, /* 62, not implemented */ { 0, 0, sys_getpgrp, "getpgrp" }, /* 63 */ { 0, 0, sys_getpagesize, "getpagesize" }, /* 64 */ - { 5, 0, printargs, "osf_mremap" }, /* 65, not implemented */ + { 5, TM, printargs, "osf_mremap" }, /* 65, not implemented */ { 0, TP, sys_fork, "vfork" }, /* 66 */ { 2, TF, sys_stat, "stat" }, /* 67 */ { 2, TF, sys_lstat, "lstat" }, /* 68 */ - { 5, 0, printargs, "osf_sbrk" }, /* 69, not implemented */ + { 5, TM, printargs, "osf_sbrk" }, /* 69, not implemented */ { 5, 0, printargs, "osf_sstk" }, /* 70, not implemented */ - { 6, TD, sys_mmap, "mmap" }, /* 71 */ + { 6, TD|TM, sys_mmap, "mmap" }, /* 71 */ { 5, 0, printargs, "osf_old_vadvise" }, /* 72, not implemented */ - { 2, 0, sys_munmap, "munmap" }, /* 73 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 74 */ - { 3, 0, sys_madvise, "madvise" }, /* 75 */ + { 2, TM, sys_munmap, "munmap" }, /* 73 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 74 */ + { 3, TM, sys_madvise, "madvise" }, /* 75 */ { 0, 0, sys_vhangup, "vhangup" }, /* 76 */ { 5, 0, printargs, "osf_kmodcall" }, /* 77, not implemented */ - { 5, 0, printargs, "osf_mincore" }, /* 78, not implemented */ + { 5, TM, printargs, "osf_mincore" }, /* 78, not implemented */ { 2, 0, sys_getgroups, "getgroups" }, /* 79 */ { 2, 0, sys_setgroups, "setgroups" }, /* 80 */ { 5, 0, printargs, "osf_old_getpgrp" }, /* 81, not implemented */ @@ -174,7 +174,7 @@ { 2, 0, sys_setrlimit, "setrlimit" }, /* 145 */ { 5, 0, printargs, "osf_old_killpg" }, /* 146, not implemented */ { 0, 0, sys_setsid, "setsid" }, /* 147 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 148 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 148 */ { 5, 0, printargs, "osf_oldquota" }, /* 149, not implemented */ { 3, TN, sys_getsockname, "getsockname" }, /* 150 */ { 5, 0, NULL, NULL }, /* 151 */ @@ -243,7 +243,7 @@ { 5, 0, printargs, "osf_getaddressconf" }, /* 214, not implemented */ { 5, 0, printargs, "osf_msleep" }, /* 215, not implemented */ { 5, 0, printargs, "osf_mwakeup" }, /* 216, not implemented */ - { 3, 0, sys_msync, "msync" }, /* 217 */ + { 3, TM, sys_msync, "msync" }, /* 217 */ { 5, 0, printargs, "osf_signal" }, /* 218, not implemented */ { 5, 0, printargs, "osf_utc_gettime" }, /* 219, not implemented */ { 5, 0, printargs, "osf_utc_adjtime" }, /* 220, not implemented */ @@ -261,7 +261,7 @@ { 5, 0, NULL, NULL }, /* 232 */ { 1, 0, sys_getpgid, "getpgid" }, /* 233 */ { 1, 0, sys_getsid, "getsid" }, /* 234 */ - { 5, 0, sys_sigaltstack, "sigaltstack" }, /* 235 */ + { 5, TS, sys_sigaltstack, "sigaltstack" }, /* 235 */ { 5, 0, printargs, "osf_waitid" }, /* 236, not implemented */ { 5, 0, printargs, "osf_priocntlset" }, /* 237, not implemented */ { 5, 0, printargs, "osf_sigsendset" }, /* 238, not implemented */ @@ -339,15 +339,15 @@ { 3, 0, sys_syslog, "syslog" }, /* 310 */ { 4, 0, sys_reboot, "reboot" }, /* 311 */ { 5, TP, sys_clone, "clone" }, /* 312 */ - { 1, 0, sys_uselib, "uselib" }, /* 313 */ - { 2, 0, sys_mlock, "mlock" }, /* 314 */ - { 2, 0, sys_munlock, "munlock" }, /* 315 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 316 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 317 */ + { 1, TF, sys_uselib, "uselib" }, /* 313 */ + { 2, TM, sys_mlock, "mlock" }, /* 314 */ + { 2, TM, sys_munlock, "munlock" }, /* 315 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 316 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 317 */ { 1, 0, sys_sysinfo, "sysinfo" }, /* 318 */ { 1, 0, sys_sysctl, "sysctl" }, /* 319 */ { 0, 0, sys_idle, "idle" }, /* 320 */ - { 1, 0, sys_umount, "oldumount" }, /* 321 */ + { 1, TF, sys_umount, "oldumount" }, /* 321 */ { 2, TF, sys_swapon, "swapon" }, /* 322 */ { 1, 0, sys_times, "times" }, /* 323 */ { 1, 0, sys_personality, "personality" }, /* 324 */ @@ -367,16 +367,16 @@ { 5, 0, sys_afs_syscall, "afs_syscall" }, /* 338 */ { 1, 0, sys_uname, "uname" }, /* 339 */ { 2, 0, sys_nanosleep, "nanosleep" }, /* 340 */ - { 5, 0, sys_mremap, "mremap" }, /* 341 */ - { 5, 0, sys_nfsservctl, "nfsservctl" }, /* 342 */ + { 5, TM, sys_mremap, "mremap" }, /* 341 */ + { 3, 0, sys_nfsservctl, "nfsservctl" }, /* 342 */ { 3, 0, sys_setresuid, "setresuid" }, /* 343 */ { 3, 0, sys_getresuid, "getresuid" }, /* 344 */ { 5, 0, printargs, "pciconfig_read" }, /* 345 */ { 5, 0, printargs, "pciconfig_write" }, /* 346 */ { 5, 0, sys_query_module, "query_module" }, /* 347 */ { 5, 0, sys_prctl, "prctl" }, /* 348 */ - { 5, TD, sys_pread, "pread" }, /* 349 */ - { 5, TD, sys_pwrite, "pwrite" }, /* 350 */ + { 4, TD, sys_pread, "pread" }, /* 349 */ + { 4, TD, sys_pwrite, "pwrite" }, /* 350 */ { 0, TS, sys_rt_sigreturn, "rt_sigreturn" }, /* 351 */ { 4, TS, sys_rt_sigaction, "rt_sigaction" }, /* 352 */ { 4, TS, sys_rt_sigprocmask, "rt_sigprocmask" }, /* 353 */ @@ -389,11 +389,11 @@ { 3, 0, sys_settimeofday, "settimeofday" }, /* 360 */ { 2, 0, sys_getitimer, "getitimer" }, /* 361 */ { 3, 0, sys_setitimer, "setitimer" }, /* 362 */ - { 2, 0, sys_utimes, "utimes" }, /* 363 */ + { 2, TF, sys_utimes, "utimes" }, /* 363 */ { 2, 0, sys_getrusage, "getrusage" }, /* 364 */ { 4, TP, sys_wait4, "wait4" }, /* 365 */ { 1, 0, sys_adjtimex, "adjtimex" }, /* 366 */ - { 2, 0, sys_getcwd, "getcwd" }, /* 367 */ + { 2, TF, sys_getcwd, "getcwd" }, /* 367 */ { 2, 0, sys_capget, "capget" }, /* 368 */ { 2, 0, sys_capset, "capset" }, /* 369 */ { 4, TD|TN, sys_sendfile, "sendfile" }, /* 370 */ @@ -401,11 +401,11 @@ { 3, 0, sys_getresgid, "getresgid" }, /* 372 */ { 4, 0, printargs, "dipc" }, /* 373, not implemented */ { 2, TF, sys_pivotroot, "pivot_root" }, /* 374 */ - { 3, 0, sys_mincore, "mincore" }, /* 375 */ + { 3, TM, sys_mincore, "mincore" }, /* 375 */ { 3, 0, printargs, "pciconfig_iobase" }, /* 376 */ { 3, TD, sys_getdents64, "getdents64" }, /* 377 */ { 0, 0, sys_gettid, "gettid" }, /* 378 */ - { 4, TD, sys_readahead, "readahead" }, /* 379 */ + { 3, TD, sys_readahead, "readahead" }, /* 379 */ { 5, 0, NULL, NULL }, /* 380 */ { 2, TS, sys_kill, "tkill" }, /* 381 */ { 5, TF, sys_setxattr, "setxattr" }, /* 382 */ @@ -426,20 +426,20 @@ { 5, 0, sys_tuxcall, "tuxcall" }, /* 397 */ { 2, 0, sys_io_setup, "io_setup" }, /* 398 */ { 1, 0, sys_io_destroy, "io_destroy" }, /* 399 */ - { 5, 0, sys_io_getevents, "io_getevents" }, /* 400 */ + { 5, 0, sys_io_getevents, "io_getevents" }, /* 400 */ { 3, 0, sys_io_submit, "io_submit" }, /* 401 */ { 3, 0, sys_io_cancel, "io_cancel" }, /* 402 */ { 5, 0, NULL, NULL }, /* 403 */ { 5, 0, NULL, NULL }, /* 404 */ { 1, TP, sys_exit, "exit_group" }, /* 405 */ - { 4, 0, sys_lookup_dcookie, "lookup_dcookie" }, /* 406 */ + { 3, 0, sys_lookup_dcookie, "lookup_dcookie" }, /* 406 */ { 1, TD, sys_epoll_create, "epoll_create" }, /* 407 */ { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 408 */ { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 409 */ - { 5, 0, sys_remap_file_pages, "remap_file_pages" }, /* 410 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages" }, /* 410 */ { 1, 0, sys_set_tid_address, "set_tid_address" }, /* 411 */ { 0, 0, sys_restart_syscall, "restart_syscall" }, /* 412 */ - { 4, TD, printargs, "fadvise" }, /* 413 */ + { 4, TD, sys_fadvise64, "fadvise" }, /* 413 */ { 3, 0, sys_timer_create, "timer_create" }, /* 414 */ { 4, 0, sys_timer_settime, "timer_settime" }, /* 415 */ { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 416 */ @@ -455,9 +455,9 @@ { 2, TF, sys_lstat64, "lstat64" }, /* 426 */ { 2, TD, sys_fstat64, "fstat64" }, /* 427 */ { 5, 0, sys_vserver, "vserver" }, /* 428 ??? */ - { 5, 0, printargs, "mbind" }, /* 429 ??? */ - { 5, 0, printargs, "get_mempolicy" }, /* 430 ??? */ - { 5, 0, printargs, "set_mempolicy" }, /* 431 ??? */ + { 5, TM, printargs, "mbind" }, /* 429 ??? */ + { 5, TM, printargs, "get_mempolicy" }, /* 430 ??? */ + { 5, TM, printargs, "set_mempolicy" }, /* 431 ??? */ { 4, 0, sys_mq_open, "mq_open" }, /* 432 */ { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 433 */ { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 434 */ @@ -475,7 +475,7 @@ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 446 */ { 1, TD, sys_fdatasync, "fdatasync" }, /* 447 */ { 4, 0, sys_kexec_load, "kexec_load" }, /* 448 */ - { 4, 0, sys_migrate_pages, "migrate_pages" }, /* 449 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 449 */ { 4, TD|TF, sys_openat, "openat" }, /* 450 */ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 451 */ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 452 */ @@ -498,7 +498,7 @@ { 4, TD, sys_sync_file_range, "sync_file_range" }, /* 469 */ { 4, TD, sys_tee, "tee" }, /* 470 */ { 4, TD, sys_vmsplice, "vmsplice" }, /* 471 */ - { 6, 0, sys_move_pages, "move_pages" }, /* 472 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 472 */ { 3, 0, sys_getcpu, "getcpu" }, /* 473 */ { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 474 */ { 4, TD|TF, sys_utimensat, "utimensat" }, /* 475 */ @@ -506,7 +506,7 @@ { 4, TD, sys_timerfd, "timerfd" }, /* 477 */ { 1, TD, sys_eventfd, "eventfd" }, /* 478 */ { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 479 */ - { 6, TD, sys_fallocate, "fallocate" }, /* 480 */ + { 4, TD, sys_fallocate, "fallocate" }, /* 480 */ { 2, TD, sys_timerfd_create, "timerfd_create" }, /* 481 */ { 4, TD, sys_timerfd_settime, "timerfd_settime" }, /* 482 */ { 2, TD, sys_timerfd_gettime, "timerfd_gettime" }, /* 483 */ @@ -516,8 +516,8 @@ { 3, TD, sys_dup3, "dup3" }, /* 487 */ { 2, TD, sys_pipe2, "pipe2" }, /* 488 */ { 1, TD, sys_inotify_init1, "inotify_init1" }, /* 489 */ - { 5, TD, sys_preadv, "preadv" }, /* 490 */ - { 5, TD, sys_pwritev, "pwritev" }, /* 491 */ + { 4, TD, sys_preadv, "preadv" }, /* 490 */ + { 4, TD, sys_pwritev, "pwritev" }, /* 491 */ { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo" }, /* 492 */ { 5, TD, sys_perf_event_open, "perf_event_open" }, /* 493 */ { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 494 */ @@ -530,3 +530,5 @@ { 2, TD, sys_setns, "setns" }, /* 501 */ { 4, TN, sys_accept4, "accept4" }, /* 502 */ { 4, TN, sys_sendmmsg, "sendmmsg" }, /* 503 */ + { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 504 */ + { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 505 */ diff --git a/linux/arm/errnoent1.h b/linux/arm/errnoent1.h deleted file mode 100644 index a8948276..00000000 --- a/linux/arm/errnoent1.h +++ /dev/null @@ -1,2 +0,0 @@ -/* Our second set comes from the i386 files. */ -#include "../errnoent.h" diff --git a/linux/arm/ioctlent1.h b/linux/arm/ioctlent1.h deleted file mode 100644 index 1f92feb7..00000000 --- a/linux/arm/ioctlent1.h +++ /dev/null @@ -1,2 +0,0 @@ -/* Our second set comes from the i386 files. */ -#include "linux/ioctlent.h" diff --git a/linux/arm/signalent1.h b/linux/arm/signalent1.h deleted file mode 100644 index 5c18d98b..00000000 --- a/linux/arm/signalent1.h +++ /dev/null @@ -1,2 +0,0 @@ -/* Our second set comes from the i386 files. */ -#include "../signalent.h" diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h index 550335e3..132b22ad 100644 --- a/linux/arm/syscallent.h +++ b/linux/arm/syscallent.h @@ -29,12 +29,12 @@ { 0, 0, sys_restart_syscall, "restart_syscall"}, /* 0 */ { 1, TP, sys_exit, "exit" }, /* 1 */ { 0, TP, sys_fork, "fork" }, /* 2 */ - { 3, 0, sys_read, "read" }, /* 3 */ - { 3, 0, sys_write, "write" }, /* 4 */ - { 3, TF, sys_open, "open" }, /* 5 */ - { 1, 0, sys_close, "close" }, /* 6 */ + { 3, TD, sys_read, "read" }, /* 3 */ + { 3, TD, sys_write, "write" }, /* 4 */ + { 3, TD|TF, sys_open, "open" }, /* 5 */ + { 1, TD, sys_close, "close" }, /* 6 */ { 3, TP, sys_waitpid, "waitpid" }, /* 7 */ - { 2, TF, sys_creat, "creat" }, /* 8 */ + { 2, TD|TF, sys_creat, "creat" }, /* 8 */ { 2, TF, sys_link, "link" }, /* 9 */ { 1, TF, sys_unlink, "unlink" }, /* 10 */ { 3, TF|TP, sys_execve, "execve" }, /* 11 */ @@ -43,9 +43,9 @@ { 3, TF, sys_mknod, "mknod" }, /* 14 */ { 2, TF, sys_chmod, "chmod" }, /* 15 */ { 3, TF, sys_chown, "lchown" }, /* 16 */ - { 0, 0, sys_break, "break" }, /* 17 */ + { 0, TM, sys_break, "break" }, /* 17 */ { 2, TF, sys_oldstat, "oldstat" }, /* 18 */ - { 3, 0, sys_lseek, "lseek" }, /* 19 */ + { 3, TD, sys_lseek, "lseek" }, /* 19 */ { 0, 0, sys_getpid, "getpid" }, /* 20 */ { 5, TF, sys_mount, "mount" }, /* 21 */ { 1, TF, sys_umount, "oldumount" }, /* 22 */ @@ -54,7 +54,7 @@ { 1, 0, sys_stime, "stime" }, /* 25 */ { 4, 0, sys_ptrace, "ptrace" }, /* 26 */ { 1, 0, sys_alarm, "alarm" }, /* 27 */ - { 2, 0, sys_oldfstat, "oldfstat" }, /* 28 */ + { 2, TD, sys_oldfstat, "oldfstat" }, /* 28 */ { 0, TS, sys_pause, "pause" }, /* 29 */ { 2, TF, sys_utime, "utime" }, /* 30 */ { 2, 0, sys_stty, "stty" }, /* 31 */ @@ -67,11 +67,11 @@ { 2, TF, sys_rename, "rename" }, /* 38 */ { 2, TF, sys_mkdir, "mkdir" }, /* 39 */ { 1, TF, sys_rmdir, "rmdir" }, /* 40 */ - { 1, 0, sys_dup, "dup" }, /* 41 */ - { 1, 0, sys_pipe, "pipe" }, /* 42 */ + { 1, TD, sys_dup, "dup" }, /* 41 */ + { 1, TD, sys_pipe, "pipe" }, /* 42 */ { 1, 0, sys_times, "times" }, /* 43 */ { 0, 0, sys_prof, "prof" }, /* 44 */ - { 1, 0, sys_brk, "brk" }, /* 45 */ + { 1, TM, sys_brk, "brk" }, /* 45 */ { 1, 0, sys_setgid, "setgid" }, /* 46 */ { 0, NF, sys_getgid, "getgid" }, /* 47 */ { 3, TS, sys_signal, "signal" }, /* 48 */ @@ -80,8 +80,8 @@ { 1, TF, sys_acct, "acct" }, /* 51 */ { 2, TF, sys_umount2, "umount" }, /* 52 */ { 0, 0, sys_lock, "lock" }, /* 53 */ - { 3, 0, sys_ioctl, "ioctl" }, /* 54 */ - { 3, 0, sys_fcntl, "fcntl" }, /* 55 */ + { 3, TD, sys_ioctl, "ioctl" }, /* 54 */ + { 3, TD, sys_fcntl, "fcntl" }, /* 55 */ { 0, 0, sys_mpx, "mpx" }, /* 56 */ { 2, 0, sys_setpgid, "setpgid" }, /* 57 */ { 2, 0, sys_ulimit, "ulimit" }, /* 58 */ @@ -89,7 +89,7 @@ { 1, 0, sys_umask, "umask" }, /* 60 */ { 1, TF, sys_chroot, "chroot" }, /* 61 */ { 2, 0, sys_ustat, "ustat" }, /* 62 */ - { 2, 0, sys_dup2, "dup2" }, /* 63 */ + { 2, TD, sys_dup2, "dup2" }, /* 63 */ { 0, 0, sys_getppid, "getppid" }, /* 64 */ { 0, 0, sys_getpgrp, "getpgrp" }, /* 65 */ { 0, 0, sys_setsid, "setsid" }, /* 66 */ @@ -108,33 +108,33 @@ { 2, 0, sys_settimeofday, "settimeofday" }, /* 79 */ { 2, 0, sys_getgroups, "getgroups" }, /* 80 */ { 2, 0, sys_setgroups, "setgroups" }, /* 81 */ - { 1, 0, sys_oldselect, "oldselect" }, /* 82 */ + { 1, TD, sys_oldselect, "oldselect" }, /* 82 */ { 2, TF, sys_symlink, "symlink" }, /* 83 */ { 2, TF, sys_oldlstat, "oldlstat" }, /* 84 */ { 3, TF, sys_readlink, "readlink" }, /* 85 */ { 1, TF, sys_uselib, "uselib" }, /* 86 */ { 2, TF, sys_swapon, "swapon" }, /* 87 */ { 4, 0, sys_reboot, "reboot" }, /* 88 */ - { 3, 0, sys_readdir, "readdir" }, /* 89 */ - { 6, TD, sys_old_mmap, "old_mmap" }, /* 90 */ - { 2, 0, sys_munmap, "munmap" }, /* 91 */ + { 3, TD, sys_readdir, "readdir" }, /* 89 */ + { 1, TD|TM, sys_old_mmap, "old_mmap" }, /* 90 */ + { 2, TM, sys_munmap, "munmap" }, /* 91 */ { 2, TF, sys_truncate, "truncate" }, /* 92 */ - { 2, 0, sys_ftruncate, "ftruncate" }, /* 93 */ - { 2, 0, sys_fchmod, "fchmod" }, /* 94 */ - { 3, 0, sys_fchown, "fchown" }, /* 95 */ + { 2, TD, sys_ftruncate, "ftruncate" }, /* 93 */ + { 2, TD, sys_fchmod, "fchmod" }, /* 94 */ + { 3, TD, sys_fchown, "fchown" }, /* 95 */ { 2, 0, sys_getpriority, "getpriority" }, /* 96 */ { 3, 0, sys_setpriority, "setpriority" }, /* 97 */ { 4, 0, sys_profil, "profil" }, /* 98 */ { 2, TF, sys_statfs, "statfs" }, /* 99 */ - { 2, 0, sys_fstatfs, "fstatfs" }, /* 100 */ + { 2, TD, sys_fstatfs, "fstatfs" }, /* 100 */ { 3, 0, sys_ioperm, "ioperm" }, /* 101 */ - { 2, 0, sys_socketcall, "socketcall" }, /* 102 */ + { 2, TD, sys_socketcall, "socketcall" }, /* 102 */ { 3, 0, sys_syslog, "syslog" }, /* 103 */ { 3, 0, sys_setitimer, "setitimer" }, /* 104 */ { 2, 0, sys_getitimer, "getitimer" }, /* 105 */ { 2, TF, sys_stat, "stat" }, /* 106 */ { 2, TF, sys_lstat, "lstat" }, /* 107 */ - { 2, 0, sys_fstat, "fstat" }, /* 108 */ + { 2, TD, sys_fstat, "fstat" }, /* 108 */ { 1, 0, sys_olduname, "olduname" }, /* 109 */ { 1, 0, sys_iopl, "iopl" }, /* 110 */ { 0, 0, sys_vhangup, "vhangup" }, /* 111 */ @@ -144,42 +144,42 @@ { 1, TF, sys_swapoff, "swapoff" }, /* 115 */ { 1, 0, sys_sysinfo, "sysinfo" }, /* 116 */ { 6, TI, sys_ipc, "ipc" }, /* 117 */ - { 1, 0, sys_fsync, "fsync" }, /* 118 */ + { 1, TD, sys_fsync, "fsync" }, /* 118 */ { 0, TS, sys_sigreturn, "sigreturn" }, /* 119 */ { 5, TP, sys_clone, "clone" }, /* 120 */ { 2, 0, sys_setdomainname, "setdomainname" }, /* 121 */ { 1, 0, sys_uname, "uname" }, /* 122 */ { 3, 0, sys_modify_ldt, "modify_ldt" }, /* 123 */ { 1, 0, sys_adjtimex, "adjtimex" }, /* 124 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 125 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 125 */ { 3, TS, sys_sigprocmask, "sigprocmask" }, /* 126 */ { 2, 0, sys_create_module, "create_module" }, /* 127 */ { 3, 0, sys_init_module, "init_module" }, /* 128 */ { 2, 0, sys_delete_module, "delete_module" }, /* 129 */ { 1, 0, sys_get_kernel_syms, "get_kernel_syms"}, /* 130 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 131 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 131 */ { 1, 0, sys_getpgid, "getpgid" }, /* 132 */ - { 1, 0, sys_fchdir, "fchdir" }, /* 133 */ + { 1, TD, sys_fchdir, "fchdir" }, /* 133 */ { 0, 0, sys_bdflush, "bdflush" }, /* 134 */ { 3, 0, sys_sysfs, "sysfs" }, /* 135 */ { 1, 0, sys_personality, "personality" }, /* 136 */ { 5, 0, sys_afs_syscall, "afs_syscall" }, /* 137 */ { 1, NF, sys_setfsuid, "setfsuid" }, /* 138 */ { 1, NF, sys_setfsgid, "setfsgid" }, /* 139 */ - { 5, 0, sys_llseek, "_llseek" }, /* 140 */ - { 3, 0, sys_getdents, "getdents" }, /* 141 */ - { 5, 0, sys_select, "select" }, /* 142 */ - { 2, 0, sys_flock, "flock" }, /* 143 */ - { 3, 0, sys_msync, "msync" }, /* 144 */ - { 3, 0, sys_readv, "readv" }, /* 145 */ - { 3, 0, sys_writev, "writev" }, /* 146 */ + { 5, TD, sys_llseek, "_llseek" }, /* 140 */ + { 3, TD, sys_getdents, "getdents" }, /* 141 */ + { 5, TD, sys_select, "select" }, /* 142 */ + { 2, TD, sys_flock, "flock" }, /* 143 */ + { 3, TM, sys_msync, "msync" }, /* 144 */ + { 3, TD, sys_readv, "readv" }, /* 145 */ + { 3, TD, sys_writev, "writev" }, /* 146 */ { 1, 0, sys_getsid, "getsid" }, /* 147 */ - { 1, 0, sys_fdatasync, "fdatasync" }, /* 148 */ + { 1, TD, sys_fdatasync, "fdatasync" }, /* 148 */ { 1, 0, sys_sysctl, "_sysctl" }, /* 149 */ - { 2, 0, sys_mlock, "mlock" }, /* 150 */ - { 2, 0, sys_munlock, "munlock" }, /* 151 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 152 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 153 */ + { 2, TM, sys_mlock, "mlock" }, /* 150 */ + { 2, TM, sys_munlock, "munlock" }, /* 151 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 152 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 153 */ { 0, 0, sys_sched_setparam, "sched_setparam"}, /* 154 */ { 2, 0, sys_sched_getparam, "sched_getparam"}, /* 155 */ { 3, 0, sys_sched_setscheduler, "sched_setscheduler"}, /* 156 */ @@ -189,12 +189,12 @@ { 1, 0, sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */ { 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */ { 2, 0, sys_nanosleep, "nanosleep" }, /* 162 */ - { 5, 0, sys_mremap, "mremap" }, /* 163 */ + { 5, TM, sys_mremap, "mremap" }, /* 163 */ { 3, 0, sys_setresuid, "setresuid" }, /* 164 */ { 3, 0, sys_getresuid, "getresuid" }, /* 165 */ { 5, 0, sys_vm86, "vm86" }, /* 166 */ { 5, 0, sys_query_module, "query_module" }, /* 167 */ - { 3, 0, sys_poll, "poll" }, /* 168 */ + { 3, TD, sys_poll, "poll" }, /* 168 */ { 3, 0, sys_nfsservctl, "nfsservctl" }, /* 169 */ { 3, 0, sys_setresgid, "setresgid" }, /* 170 */ { 3, 0, sys_getresgid, "getresgid" }, /* 171 */ @@ -207,8 +207,8 @@ { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo"}, /* 178 */ { 2, TS, sys_rt_sigsuspend, "rt_sigsuspend" }, /* 179 */ - { 6, TF, sys_pread, "pread" }, /* 180 */ - { 6, TF, sys_pwrite, "pwrite" }, /* 181 */ + { 6, TD, sys_pread, "pread" }, /* 180 */ + { 6, TD, sys_pwrite, "pwrite" }, /* 181 */ { 3, TF, sys_chown, "chown" }, /* 182 */ { 2, TF, sys_getcwd, "getcwd" }, /* 183 */ { 2, 0, sys_capget, "capget" }, /* 184 */ @@ -219,12 +219,12 @@ { 5, 0, sys_putpmsg, "putpmsg" }, /* 189 */ { 0, TP, sys_vfork, "vfork" }, /* 190 */ { 2, 0, sys_getrlimit, "getrlimit" }, /* 191 */ - { 6, TD, sys_mmap, "mmap2" }, /* 192 */ + { 6, TD|TM, sys_mmap_pgoff, "mmap2" }, /* 192 */ { 4, TF, sys_truncate64, "truncate64" }, /* 193 */ - { 4, TF, sys_ftruncate64, "ftruncate64" }, /* 194 */ + { 4, TD, sys_ftruncate64, "ftruncate64" }, /* 194 */ { 2, TF, sys_stat64, "stat64" }, /* 195 */ { 2, TF, sys_lstat64, "lstat64" }, /* 196 */ - { 2, TF, sys_fstat64, "fstat64" }, /* 197 */ + { 2, TD, sys_fstat64, "fstat64" }, /* 197 */ { 3, TF, sys_chown, "lchown32" }, /* 198 */ { 0, NF, sys_getuid, "getuid32" }, /* 199 */ @@ -235,7 +235,7 @@ { 2, 0, sys_setregid, "setregid32" }, /* 204 */ { 2, 0, sys_getgroups32, "getgroups32" }, /* 205 */ { 2, 0, sys_setgroups32, "setgroups32" }, /* 206 */ - { 3, 0, sys_fchown, "fchown32" }, /* 207 */ + { 3, TD, sys_fchown, "fchown32" }, /* 207 */ { 3, 0, sys_setresuid, "setresuid32" }, /* 208 */ { 3, 0, sys_getresuid, "getresuid32" }, /* 209 */ { 3, 0, sys_setresgid, "setresgid32" }, /* 210 */ @@ -245,18 +245,18 @@ { 1, 0, sys_setgid, "setgid32" }, /* 214 */ { 1, NF, sys_setfsuid, "setfsuid32" }, /* 215 */ { 1, NF, sys_setfsgid, "setfsgid32" }, /* 216 */ - { 3, 0, sys_getdents64, "getdents64" }, /* 217 */ + { 3, TD, sys_getdents64, "getdents64" }, /* 217 */ { 2, TF, sys_pivotroot, "pivot_root" }, /* 218 */ - { 3, 0, sys_mincore, "mincore" }, /* 219 */ - { 3, 0, sys_madvise, "madvise" }, /* 220 */ - { 3, 0, sys_fcntl, "fcntl64" }, /* 221 */ + { 3, TM, sys_mincore, "mincore" }, /* 219 */ + { 3, TM, sys_madvise, "madvise" }, /* 220 */ + { 3, TD, sys_fcntl, "fcntl64" }, /* 221 */ { 5, 0, NULL, NULL }, /* 222 */ { 5, 0, NULL, NULL }, /* 223 */ { 0, 0, sys_gettid, "gettid" }, /* 224 */ - { 5, 0, sys_readahead, "readahead" }, /* 225 */ + { 5, TD, sys_readahead, "readahead" }, /* 225 */ { 5, TF, sys_setxattr, "setxattr" }, /* 226 */ { 5, TF, sys_setxattr, "lsetxattr" }, /* 227 */ - { 5, 0, sys_fsetxattr, "fsetxattr" }, /* 228 */ + { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 228 */ { 4, TF, sys_getxattr, "getxattr" }, /* 229 */ { 4, TF, sys_getxattr, "lgetxattr" }, /* 230 */ { 4, TD, sys_fgetxattr, "fgetxattr" }, /* 231 */ @@ -281,7 +281,7 @@ { 1, TD, sys_epoll_create, "epoll_create" }, /* 250 */ { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 251 */ { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 252 */ - { 5, 0, sys_remap_file_pages, "remap_file_pages"}, /* 253 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages"}, /* 253 */ { 5, 0, NULL, NULL }, /* 254 */ { 5, 0, NULL, NULL }, /* 255 */ { 1, 0, sys_set_tid_address, "set_tid_address"}, /* 256 */ @@ -295,7 +295,7 @@ { 2, 0, sys_clock_getres, "clock_getres" }, /* 264 */ { 4, 0, sys_clock_nanosleep, "clock_nanosleep"}, /* 265 */ { 3, TF, sys_statfs64, "statfs64" }, /* 266 */ - { 3, 0, sys_fstatfs64, "fstatfs64" }, /* 267 */ + { 3, TD, sys_fstatfs64, "fstatfs64" }, /* 267 */ { 3, TS, sys_tgkill, "tgkill" }, /* 268 */ { 2, TF, sys_utimes, "utimes" }, /* 269 */ { 6, TD, sys_fadvise64_64, "fadvise64_64" }, /* 270 */ @@ -347,9 +347,9 @@ { 0, TD, sys_inotify_init, "inotify_init" }, /* 316 */ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 317 */ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 318 */ - { 6, 0, sys_mbind, "mbind" }, /* 319 */ - { 3, 0, sys_set_mempolicy, "set_mempolicy" }, /* 320 */ - { 5, 0, sys_get_mempolicy, "get_mempolicy" }, /* 321 */ + { 6, TM, sys_mbind, "mbind" }, /* 319 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 320 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 321 */ { 4, TD|TF, sys_openat, "openat" }, /* 322 */ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 323 */ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 324 */ @@ -369,10 +369,10 @@ { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 338 */ { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 339 */ { 6, TD, sys_splice, "splice" }, /* 340 */ - { 5, 0, NULL, NULL }, /* 341 */ + { 6, TD, sys_sync_file_range2, "sync_file_range2"}, /* 341 */ { 4, TD, sys_tee, "tee" }, /* 342 */ { 4, TD, sys_vmsplice, "vmsplice" }, /* 343 */ - { 6, 0, sys_move_pages, "move_pages" }, /* 344 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 344 */ { 3, 0, sys_getcpu, "getcpu" }, /* 345 */ { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 346 */ { 4, 0, sys_kexec_load, "kexec_load" }, /* 347 */ @@ -406,8 +406,11 @@ { 2, TD, sys_setns, "setns" }, /* 375 */ { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 376 */ { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 377 */ - { 5, 0, NULL, NULL }, /* 378 */ - { 5, 0, NULL, NULL }, /* 379 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 378 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 379 */ +#ifdef __ARM_EABI__ +# define ARM_LAST_ORDINARY_SYSCALL 379 +#else { 5, 0, NULL, NULL }, /* 380 */ { 5, 0, NULL, NULL }, /* 381 */ { 5, 0, NULL, NULL }, /* 382 */ @@ -428,11 +431,8 @@ { 5, 0, NULL, NULL }, /* 397 */ { 5, 0, NULL, NULL }, /* 398 */ { 5, 0, NULL, NULL }, /* 399 */ - -#ifndef __ARM_EABI__ -#if SYS_socket_subcall != 400 - #error fix me -#endif +#define SYS_socket_subcall 400 +#include "subcall.h" { 6, 0, printargs, "socket_subcall"}, /* 400 */ { 3, TN, sys_socket, "socket" }, /* 401 */ { 3, TN, sys_bind, "bind" }, /* 402 */ @@ -450,13 +450,13 @@ { 5, TN, sys_setsockopt, "setsockopt" }, /* 414 */ { 5, TN, sys_getsockopt, "getsockopt" }, /* 415 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 416 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 417 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 417 */ { 4, TN, sys_accept4, "accept4" }, /* 418 */ { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 419 */ -#if SYS_ipc_subcall != 420 - #error fix me -#endif +# if SYS_ipc_subcall != 420 +# error fix me +# endif { 4, 0, printargs, "ipc_subcall" }, /* 420 */ { 4, TI, sys_semop, "semop" }, /* 421 */ { 4, TI, sys_semget, "semget" }, /* 422 */ @@ -482,4 +482,22 @@ { 4, TI, sys_shmdt, "shmdt" }, /* 442 */ { 4, TI, sys_shmget, "shmget" }, /* 443 */ { 4, TI, sys_shmctl, "shmctl" }, /* 444 */ -#endif +# define ARM_LAST_ORDINARY_SYSCALL 444 +#endif /* !EABI */ + + /* __ARM_NR_cmpxchg (0x000ffff0). + * Remapped by shuffle_scno() to be directly after ordinary syscalls + * in this table. + */ + { 5, 0, printargs, "cmpxchg" }, + + /* ARM specific syscalls. Encoded with scno 0x000f00xx. + * Remapped by shuffle_scno() to be directly after __ARM_NR_cmpxchg. + */ + { 5, 0, NULL, NULL }, /* 0 */ + { 5, 0, printargs, "breakpoint" }, /* 1 */ + { 5, 0, printargs, "cacheflush" }, /* 2 */ + { 5, 0, printargs, "usr26" }, /* 3 */ + { 5, 0, printargs, "usr32" }, /* 4 */ + { 5, 0, printargs, "set_tls" }, /* 5 */ +#define ARM_LAST_SPECIAL_SYSCALL 5 diff --git a/linux/arm/syscallent1.h b/linux/arm/syscallent1.h deleted file mode 100644 index 3b5397dd..00000000 --- a/linux/arm/syscallent1.h +++ /dev/null @@ -1,7 +0,0 @@ -/* ARM specific syscalls */ - { 5, 0, NULL, NULL }, /* 0 */ - { 5, 0, printargs, "breakpoint" }, /* 1 */ - { 5, 0, printargs, "cacheflush" }, /* 2 */ - { 5, 0, printargs, "usr26" }, /* 3 */ - { 5, 0, printargs, "usr32" }, /* 4 */ - { 5, 0, printargs, "set_tls" }, /* 5 */ diff --git a/linux/avr32/syscallent.h b/linux/avr32/syscallent.h index 102b17d5..527d11a5 100644 --- a/linux/avr32/syscallent.h +++ b/linux/avr32/syscallent.h @@ -70,7 +70,7 @@ { 1, TD, sys_pipe, "pipe" }, /* 42 */ { 1, 0, sys_times, "times" }, /* 43 */ { 5, TP, sys_clone, "clone" }, /* 44 */ - { 1, 0, sys_brk, "brk" }, /* 45 */ + { 1, TM, sys_brk, "brk" }, /* 45 */ { 1, 0, sys_setgid, "setgid" }, /* 46 */ { 0, NF, sys_getgid, "getgid" }, /* 47 */ { 2, TF, sys_getcwd, "getcwd" }, /* 48 */ @@ -82,7 +82,7 @@ { 3, TD, sys_ioctl, "ioctl" }, /* 54 */ { 3, TD, sys_fcntl, "fcntl" }, /* 55 */ { 2, 0, sys_setpgid, "setpgid" }, /* 56 */ - { 5, 0, sys_mremap, "mremap" }, /* 57 */ + { 5, TM, sys_mremap, "mremap" }, /* 57 */ { 3, 0, sys_setresuid, "setresuid" }, /* 58 */ { 3, 0, sys_getresuid, "getresuid" }, /* 59 */ { 2, 0, sys_setreuid, "setreuid" }, /* 60 */ @@ -115,8 +115,8 @@ { 5, TD, sys_pwrite, "pwrite" }, /* 87 */ { 2, TF, sys_swapon, "swapon" }, /* 88 */ { 4, 0, sys_reboot, "reboot" }, /* 89 */ - { 6, TD, sys_mmap, "mmap" }, /* 90 */ - { 2, 0, sys_munmap, "munmap" }, /* 91 */ + { 6, TD|TM, sys_mmap_pgoff, "mmap" }, /* 90 */ + { 2, TM, sys_munmap, "munmap" }, /* 91 */ { 2, TF, sys_truncate, "truncate" }, /* 92 */ { 2, TD, sys_ftruncate, "ftruncate" }, /* 93 */ { 2, TD, sys_fchmod, "fchmod" }, /* 94 */ @@ -138,11 +138,11 @@ { 2, 0, sys_setdomainname, "setdomainname" }, /* 110 */ { 1, 0, sys_uname, "uname" }, /* 111 */ { 1, 0, sys_adjtimex, "adjtimex" }, /* 112 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 113 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 113 */ { 0, TP, sys_vfork, "vfork" }, /* 114 */ { 3, 0, sys_init_module, "init_module" }, /* 115 */ { 2, 0, sys_delete_module, "delete_module" }, /* 116 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 117 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 117 */ { 1, 0, sys_getpgid, "getpgid" }, /* 118 */ { 0, 0, sys_bdflush, "bdflush" }, /* 119 */ { 3, 0, sys_sysfs, "sysfs" }, /* 120 */ @@ -150,16 +150,16 @@ { 5, 0, sys_afs_syscall, "afs_syscall" }, /* 122 */ { 3, TD, sys_getdents, "getdents" }, /* 123 */ { 2, TD, sys_flock, "flock" }, /* 124 */ - { 3, 0, sys_msync, "msync" }, /* 125 */ + { 3, TM, sys_msync, "msync" }, /* 125 */ { 3, TD, sys_readv, "readv" }, /* 126 */ { 3, TD, sys_writev, "writev" }, /* 127 */ { 1, 0, sys_getsid, "getsid" }, /* 128 */ { 1, TD, sys_fdatasync, "fdatasync" }, /* 129 */ { 1, 0, sys_sysctl, "_sysctl" }, /* 130 */ - { 2, 0, sys_mlock, "mlock" }, /* 131 */ - { 2, 0, sys_munlock, "munlock" }, /* 132 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 133 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 134 */ + { 2, TM, sys_mlock, "mlock" }, /* 131 */ + { 2, TM, sys_munlock, "munlock" }, /* 132 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 133 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 134 */ { 0, 0, sys_sched_setparam, "sched_setparam"}, /* 135 */ { 2, 0, sys_sched_getparam, "sched_getparam"}, /* 136 */ { 3, 0, sys_sched_setscheduler, "sched_setscheduler"}, /* 137 */ @@ -190,15 +190,15 @@ { 5, TN, sys_setsockopt, "setsockopt" }, /* 162 */ { 5, TN, sys_getsockopt, "getsockopt" }, /* 163 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 164 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 165 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 165 */ { 3, TF, sys_truncate64, "truncate64" }, /* 166 */ { 3, TD, sys_ftruncate64, "ftruncate64" }, /* 167 */ { 2, TF, sys_stat64, "stat64" }, /* 168 */ { 2, TF, sys_lstat64, "lstat64" }, /* 169 */ { 2, TD, sys_fstat64, "fstat64" }, /* 170 */ { 2, TF, sys_pivotroot, "pivot_root" }, /* 171 */ - { 3, 0, sys_mincore, "mincore" }, /* 172 */ - { 3, 0, sys_madvise, "madvise" }, /* 173 */ + { 3, TM, sys_mincore, "mincore" }, /* 172 */ + { 3, TM, sys_madvise, "madvise" }, /* 173 */ { 3, TD, sys_getdents64, "getdents64" }, /* 174 */ { 3, TD, sys_fcntl, "fcntl64" }, /* 175 */ { 0, 0, sys_gettid, "gettid" }, /* 176 */ @@ -233,7 +233,7 @@ { 1, TD, sys_epoll_create, "epoll_create" }, /* 205 */ { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 206 */ { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 207 */ - { 5, 0, sys_remap_file_pages, "remap_file_pages"}, /* 208 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages"}, /* 208 */ { 1, 0, sys_set_tid_address, "set_tid_address"}, /* 209 */ { 3, 0, sys_timer_create, "timer_create" }, /* 210 */ { 4, 0, sys_timer_settime, "timer_settime" }, /* 211 */ @@ -265,7 +265,7 @@ { 5, 0, sys_keyctl, "keyctl" }, /* 237 */ { 3, 0, sys_ioprio_set, "ioprio_set" }, /* 238 */ { 2, 0, sys_ioprio_get, "ioprio_get" }, /* 239 */ - { 0, 0, sys_inotify_init, "inotify_init" }, /* 240 */ + { 0, TD, sys_inotify_init, "inotify_init" }, /* 240 */ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 241 */ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 242 */ { 4, TD|TF, sys_openat, "openat" }, /* 243 */ @@ -283,11 +283,11 @@ { 3, TD|TF, sys_faccessat, "faccessat" }, /* 255 */ { 6, TD, sys_pselect6, "pselect6" }, /* 256 */ { 5, TD, sys_ppoll, "ppoll" }, /* 257 */ - { 1, TD, sys_unshare, "unshare" }, /* 258 */ + { 1, TP, sys_unshare, "unshare" }, /* 258 */ { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 259 */ { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 260 */ { 6, TD, sys_splice, "splice" }, /* 261 */ - { 4, TD, sys_sync_file_range, "sync_file_range" }, /* 262 */ + { 6, TD, sys_sync_file_range, "sync_file_range" }, /* 262 */ { 4, TD, sys_tee, "tee" }, /* 263 */ { 4, TD, sys_vmsplice, "vmsplice" }, /* 264 */ { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 265 */ diff --git a/linux/bfin/ioctlent.h.in b/linux/bfin/ioctlent.h.in index 37735446..791d8e36 100644 --- a/linux/bfin/ioctlent.h.in +++ b/linux/bfin/ioctlent.h.in @@ -1,86 +1,8 @@ {"asm/bfin_sport.h", "SPORT_IOC_CONFIG", 0x5001}, {"asm/bfin_sport.h", "SPORT_IOC_GET_SYSTEMCLOCK", 0x5002}, {"asm/bfin_sport.h", "SPORT_IOC_SET_BAUDRATE", 0x5003}, - {"asm-generic/ioctls.h", "TCGETS", 0x5401}, - {"asm-generic/ioctls.h", "TCSETS", 0x5402}, - {"asm-generic/ioctls.h", "TCSETSW", 0x5403}, - {"asm-generic/ioctls.h", "TCSETSF", 0x5404}, - {"asm-generic/ioctls.h", "TCGETA", 0x5405}, - {"asm-generic/ioctls.h", "TCSETA", 0x5406}, - {"asm-generic/ioctls.h", "TCSETAW", 0x5407}, - {"asm-generic/ioctls.h", "TCSETAF", 0x5408}, - {"asm-generic/ioctls.h", "TCSBRK", 0x5409}, - {"asm-generic/ioctls.h", "TCXONC", 0x540a}, - {"asm-generic/ioctls.h", "TCFLSH", 0x540b}, - {"asm-generic/ioctls.h", "TIOCEXCL", 0x540c}, - {"asm-generic/ioctls.h", "TIOCNXCL", 0x540d}, - {"asm-generic/ioctls.h", "TIOCSCTTY", 0x540e}, - {"asm-generic/ioctls.h", "TIOCGPGRP", 0x540f}, - {"asm-generic/ioctls.h", "TIOCSPGRP", 0x5410}, - {"asm-generic/ioctls.h", "TIOCOUTQ", 0x5411}, - {"asm-generic/ioctls.h", "TIOCSTI", 0x5412}, - {"asm-generic/ioctls.h", "TIOCGWINSZ", 0x5413}, - {"asm-generic/ioctls.h", "TIOCSWINSZ", 0x5414}, - {"asm-generic/ioctls.h", "TIOCMGET", 0x5415}, - {"asm-generic/ioctls.h", "TIOCMBIS", 0x5416}, - {"asm-generic/ioctls.h", "TIOCMBIC", 0x5417}, - {"asm-generic/ioctls.h", "TIOCMSET", 0x5418}, - {"asm-generic/ioctls.h", "TIOCGSOFTCAR", 0x5419}, - {"asm-generic/ioctls.h", "TIOCSSOFTCAR", 0x541a}, - {"asm-generic/ioctls.h", "FIONREAD", 0x541b}, - {"asm-generic/ioctls.h", "TIOCLINUX", 0x541c}, - {"asm-generic/ioctls.h", "TIOCCONS", 0x541d}, - {"asm-generic/ioctls.h", "TIOCGSERIAL", 0x541e}, - {"asm-generic/ioctls.h", "TIOCSSERIAL", 0x541f}, - {"asm-generic/ioctls.h", "TIOCPKT", 0x5420}, - {"asm-generic/ioctls.h", "FIONBIO", 0x5421}, - {"asm-generic/ioctls.h", "TIOCNOTTY", 0x5422}, - {"asm-generic/ioctls.h", "TIOCSETD", 0x5423}, - {"asm-generic/ioctls.h", "TIOCGETD", 0x5424}, - {"asm-generic/ioctls.h", "TCSBRKP", 0x5425}, - {"asm-generic/ioctls.h", "TIOCTTYGSTRUCT", 0x5426}, - {"asm-generic/ioctls.h", "TIOCSBRK", 0x5427}, - {"asm-generic/ioctls.h", "TIOCCBRK", 0x5428}, - {"asm-generic/ioctls.h", "TIOCGSID", 0x5429}, - {"asm-generic/ioctls.h", "TCGETS2", 0x542a}, - {"asm-generic/ioctls.h", "TCSETS2", 0x542b}, - {"asm-generic/ioctls.h", "TCSETSW2", 0x542c}, - {"asm-generic/ioctls.h", "TCSETSF2", 0x542d}, - {"asm-generic/ioctls.h", "TIOCGRS485", 0x542e}, - {"asm-generic/ioctls.h", "TIOCSRS485", 0x542f}, - {"asm-generic/ioctls.h", "TIOCGPTN", 0x5430}, - {"asm-generic/ioctls.h", "TIOCSPTLCK", 0x5431}, - {"asm-generic/ioctls.h", "TCGETX", 0x5432}, - {"asm-generic/ioctls.h", "TCSETX", 0x5433}, - {"asm-generic/ioctls.h", "TCSETXF", 0x5434}, - {"asm-generic/ioctls.h", "TCSETXW", 0x5435}, - {"asm-generic/ioctls.h", "TIOCSIG", 0x5436}, - {"asm-generic/ioctls.h", "FIONCLEX", 0x5450}, - {"asm-generic/ioctls.h", "FIOCLEX", 0x5451}, - {"asm-generic/ioctls.h", "FIOASYNC", 0x5452}, - {"asm-generic/ioctls.h", "TIOCSERCONFIG", 0x5453}, - {"asm-generic/ioctls.h", "TIOCSERGWILD", 0x5454}, - {"asm-generic/ioctls.h", "TIOCSERSWILD", 0x5455}, - {"asm-generic/ioctls.h", "TIOCGLCKTRMIOS", 0x5456}, - {"asm-generic/ioctls.h", "TIOCSLCKTRMIOS", 0x5457}, - {"asm-generic/ioctls.h", "TIOCSERGSTRUCT", 0x5458}, - {"asm-generic/ioctls.h", "TIOCSERGETLSR", 0x5459}, - {"asm-generic/ioctls.h", "TIOCSERGETMULTI", 0x545a}, - {"asm-generic/ioctls.h", "TIOCSERSETMULTI", 0x545b}, - {"asm-generic/ioctls.h", "TIOCMIWAIT", 0x545c}, - {"asm-generic/ioctls.h", "TIOCGICOUNT", 0x545d}, {"asm/ioctls.h", "FIOQSIZE", 0x545e}, - {"asm-generic/ioctls.h", "TIOCGHAYESESP", 0x545e}, - {"asm-generic/ioctls.h", "TIOCSHAYESESP", 0x545f}, - {"asm-generic/ioctls.h", "FIOQSIZE", 0x5460}, {"asm/bfin_simple_timer.h", "BFIN_SIMPLE_TIMER_SET_PERIOD", 0x7402}, {"asm/bfin_simple_timer.h", "BFIN_SIMPLE_TIMER_START", 0x7406}, {"asm/bfin_simple_timer.h", "BFIN_SIMPLE_TIMER_STOP", 0x7408}, {"asm/bfin_simple_timer.h", "BFIN_SIMPLE_TIMER_READ", 0x740a}, - {"asm-generic/sockios.h", "FIOSETOWN", 0x8901}, - {"asm-generic/sockios.h", "SIOCSPGRP", 0x8902}, - {"asm-generic/sockios.h", "FIOGETOWN", 0x8903}, - {"asm-generic/sockios.h", "SIOCGPGRP", 0x8904}, - {"asm-generic/sockios.h", "SIOCATMARK", 0x8905}, - {"asm-generic/sockios.h", "SIOCGSTAMP", 0x8906}, - {"asm-generic/sockios.h", "SIOCGSTAMPNS", 0x8907}, diff --git a/linux/bfin/syscallent.h b/linux/bfin/syscallent.h index 1ecab75b..cc03eaf0 100644 --- a/linux/bfin/syscallent.h +++ b/linux/bfin/syscallent.h @@ -43,7 +43,7 @@ { 3, TF, sys_mknod, "mknod" }, /* 14 */ { 2, TF, sys_chmod, "chmod" }, /* 15 */ { 3, TF, sys_chown, "chown" }, /* 16 */ - { 0, 0, sys_break, "break" }, /* 17 */ + { 0, TM, sys_break, "break" }, /* 17 */ { 2, TF, sys_oldstat, "oldstat" }, /* 18 */ { 3, TD, sys_lseek, "lseek" }, /* 19 */ { 0, 0, sys_getpid, "getpid" }, /* 20 */ @@ -71,7 +71,7 @@ { 1, TD, sys_pipe, "pipe" }, /* 42 */ { 1, 0, sys_times, "times" }, /* 43 */ { 0, 0, sys_prof, "prof" }, /* 44 */ - { 1, 0, sys_brk, "brk" }, /* 45 */ + { 1, TM, sys_brk, "brk" }, /* 45 */ { 1, 0, sys_setgid, "setgid" }, /* 46 */ { 0, NF, sys_getgid, "getgid" }, /* 47 */ { 3, TS, sys_signal, "signal" }, /* 48 */ @@ -116,8 +116,8 @@ { 2, TF, sys_swapon, "swapon" }, /* 87 */ { 4, 0, sys_reboot, "reboot" }, /* 88 */ { 3, TD, sys_readdir, "readdir" }, /* 89 */ - { 6, TD, sys_old_mmap, "old_mmap" }, /* 90 */ - { 2, 0, sys_munmap, "munmap" }, /* 91 */ + { 6, TD|TM, printargs, "old_mmap" }, /* 90: not implemented in kernel */ + { 2, TM, sys_munmap, "munmap" }, /* 91 */ { 2, TF, sys_truncate, "truncate" }, /* 92 */ { 2, TD, sys_ftruncate, "ftruncate" }, /* 93 */ { 2, TD, sys_fchmod, "fchmod" }, /* 94 */ @@ -151,13 +151,13 @@ { 1, 0, sys_uname, "uname" }, /* 122 */ { 3, 0, sys_modify_ldt, "modify_ldt" }, /* 123 */ { 1, 0, sys_adjtimex, "adjtimex" }, /* 124 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 125 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 125 */ { 3, TS, sys_sigprocmask, "sigprocmask" }, /* 126 */ { 2, 0, sys_create_module, "create_module" }, /* 127 */ { 3, 0, sys_init_module, "init_module" }, /* 128 */ { 1, 0, sys_delete_module, "delete_module" }, /* 129 */ { 1, 0, sys_get_kernel_syms, "get_kernel_syms" }, /* 130 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 131 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 131 */ { 1, 0, sys_getpgid, "getpgid" }, /* 132 */ { 1, TD, sys_fchdir, "fchdir" }, /* 133 */ { 0, 0, sys_bdflush, "bdflush" }, /* 134 */ @@ -170,16 +170,16 @@ { 3, TD, sys_getdents, "getdents" }, /* 141 */ { 5, TD, sys_select, "select" }, /* 142 */ { 2, TD, sys_flock, "flock" }, /* 143 */ - { 3, 0, sys_msync, "msync" }, /* 144 */ + { 3, TM, sys_msync, "msync" }, /* 144 */ { 3, TD, sys_readv, "readv" }, /* 145 */ { 3, TD, sys_writev, "writev" }, /* 146 */ { 1, 0, sys_getsid, "getsid" }, /* 147 */ { 1, TD, sys_fdatasync, "fdatasync" }, /* 148 */ { 1, 0, sys_sysctl, "_sysctl" }, /* 149 */ - { 2, 0, sys_mlock, "mlock" }, /* 150 */ - { 2, 0, sys_munlock, "munlock" }, /* 151 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 152 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 153 */ + { 2, TM, sys_mlock, "mlock" }, /* 150 */ + { 2, TM, sys_munlock, "munlock" }, /* 151 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 152 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 153 */ { 0, 0, sys_sched_setparam, "sched_setparam" }, /* 154 */ { 2, 0, sys_sched_getparam, "sched_getparam" }, /* 155 */ { 3, 0, sys_sched_setscheduler, "sched_setscheduler" }, /* 156 */ @@ -189,7 +189,7 @@ { 1, 0, sys_sched_get_priority_min, "sched_get_priority_min" }, /* 160 */ { 2, 0, sys_sched_rr_get_interval, "sched_rr_get_interval" }, /* 161 */ { 2, 0, sys_nanosleep, "nanosleep" }, /* 162 */ - { 5, 0, sys_mremap, "mremap" }, /* 163 */ + { 5, TM, sys_mremap, "mremap" }, /* 163 */ { 3, 0, sys_setresuid, "setresuid" }, /* 164 */ { 3, 0, sys_getresuid, "getresuid" }, /* 165 */ { 5, 0, sys_vm86, "vm86" }, /* 166 */ @@ -218,7 +218,7 @@ { 5, 0, sys_putpmsg, "putpmsg" }, /* 189 */ { 0, TP, sys_vfork, "vfork" }, /* 190 */ { 2, 0, sys_getrlimit, "getrlimit" }, /* 191 */ - { 6, TD, sys_mmap, "mmap2" }, /* 192 */ + { 6, TD|TM, sys_mmap_pgoff, "mmap2" }, /* 192 */ { 3, TF, sys_truncate64, "truncate64" }, /* 193 */ { 3, TD, sys_ftruncate64, "ftruncate64" }, /* 194 */ { 2, TF, sys_stat64, "stat64" }, /* 195 */ @@ -244,8 +244,8 @@ { 1, NF, sys_setfsuid, "setfsuid32" }, /* 215 */ { 1, NF, sys_setfsgid, "setfsgid32" }, /* 216 */ { 2, TF, sys_pivotroot, "pivot_root" }, /* 217 */ - { 3, 0, sys_mincore, "mincore" }, /* 218 */ - { 3, 0, sys_madvise, "madvise" }, /* 219 */ + { 3, TM, sys_mincore, "mincore" }, /* 218 */ + { 3, TM, sys_madvise, "madvise" }, /* 219 */ { 3, TD, sys_getdents64, "getdents64" }, /* 220 */ { 3, TD, sys_fcntl, "fcntl64" }, /* 221 */ { 4, 0, NULL, NULL }, /* 222 */ @@ -284,7 +284,7 @@ { 1, TD, sys_epoll_create, "epoll_create" }, /* 255 */ { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 256 */ { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 257 */ - { 5, 0, sys_remap_file_pages, "remap_file_pages" }, /* 258 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages" }, /* 258 */ { 1, 0, sys_set_tid_address, "set_tid_address" }, /* 259 */ { 3, 0, sys_timer_create, "timer_create" }, /* 260 */ { 4, 0, sys_timer_settime, "timer_settime" }, /* 261 */ @@ -301,9 +301,9 @@ { 2, TF, sys_utimes, "utimes" }, /* 272 */ { 6, TD, sys_fadvise64_64, "fadvise64_64" }, /* 273 */ { 5, 0, sys_vserver, "vserver" }, /* 274 */ - { 6, 0, sys_mbind, "mbind" }, /* 275 */ - { 5, 0, sys_get_mempolicy, "get_mempolicy" }, /* 276 */ - { 3, 0, sys_set_mempolicy, "set_mempolicy" }, /* 277 */ + { 6, TM, sys_mbind, "mbind" }, /* 275 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 276 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 277 */ { 4, 0, sys_mq_open, "mq_open" }, /* 278 */ { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 279 */ { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 280 */ @@ -320,7 +320,7 @@ { 0, TD, sys_inotify_init, "inotify_init" }, /* 291 */ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 292 */ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 293 */ - { 4, 0, sys_migrate_pages, "migrate_pages" }, /* 294 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 294 */ { 4, TD|TF, sys_openat, "openat" }, /* 295 */ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 296 */ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 297 */ @@ -349,7 +349,7 @@ { 2, TN, sys_listen, "listen" }, /* 320 */ { 4, TN, sys_recv, "recv" }, /* 321 */ { 6, TN, sys_recvfrom, "recvfrom" }, /* 322 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 323 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 323 */ { 4, TN, sys_send, "send" }, /* 324 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 325 */ { 6, TN, sys_sendto, "sendto" }, /* 326 */ @@ -369,7 +369,7 @@ { 4, TI, sys_shmdt, "shmdt" }, /* 340 */ { 4, TI, sys_shmget, "shmget" }, /* 341 */ { 6, TD, sys_splice, "splice" }, /* 342 */ - { 4, TD, sys_sync_file_range, "sync_file_range" }, /* 343 */ + { 6, TD, sys_sync_file_range, "sync_file_range" }, /* 343 */ { 4, TD, sys_tee, "tee" }, /* 344 */ { 4, TD, sys_vmsplice, "vmsplice" }, /* 345 */ { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 346 */ @@ -377,8 +377,8 @@ { 3, TD|TS, sys_signalfd, "signalfd" }, /* 348 */ { 2, TD, sys_timerfd_create, "timerfd_create" }, /* 349 */ { 1, TD, sys_eventfd, "eventfd" }, /* 350 */ - { 5, 0, sys_pread, "pread64" }, /* 351 */ - { 5, 0, sys_pwrite, "pwrite64" }, /* 352 */ + { 5, TD, sys_pread, "pread64" }, /* 351 */ + { 5, TD, sys_pwrite, "pwrite64" }, /* 352 */ { 5, TD, sys_fadvise64, "fadvise64" }, /* 353 */ { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 354 */ { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 355 */ @@ -407,3 +407,5 @@ { 1, TD, sys_syncfs, "syncfs" }, /* 378 */ { 2, TD, sys_setns, "setns" }, /* 379 */ { 4, TN, sys_sendmmsg, "sendmmsg" }, /* 380 */ + { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 381 */ + { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 382 */ diff --git a/linux/dummy.h b/linux/dummy.h index ce340b9d..9d33fe18 100644 --- a/linux/dummy.h +++ b/linux/dummy.h @@ -26,22 +26,29 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#ifndef HAVE_STRUCT___OLD_KERNEL_STAT +#define sys_oldfstat printargs +#define sys_oldstat printargs +#endif + /* still unfinished */ #define sys_add_key printargs #define sys_fanotify_init printargs #define sys_fanotify_mark printargs +#define sys_finit_module printargs #define sys_ioperm printargs #define sys_iopl printargs #define sys_ioprio_get printargs #define sys_ioprio_set printargs +#define sys_kcmp printargs #define sys_kexec_load printargs #define sys_keyctl printargs #define sys_lookup_dcookie printargs #define sys_name_to_handle_at printargs #define sys_open_by_handle_at printargs -#define sys_perf_event_open printargs #define sys_request_key printargs #define sys_sync_file_range printargs +#define sys_sync_file_range2 printargs #define sys_sysfs printargs #define sys_vm86old printargs #define sys_vm86 printargs @@ -68,9 +75,12 @@ #define sys_geteuid sys_getuid #define sys_getgid sys_getuid #define sys_getresgid sys_getresuid +#define sys_lstat sys_stat +#define sys_lstat64 sys_stat64 #define sys_mlock sys_munmap #define sys_mq_unlink sys_chdir #define sys_munlock sys_munmap +#define sys_oldlstat sys_oldstat #define sys_pivotroot sys_link #define sys_rename sys_link #define sys_rmdir sys_chdir @@ -145,15 +155,15 @@ #define sys_sendmsg printargs #endif -#ifndef SYS_getpmsg +/* Who has STREAMS syscalls? + * Linux hasn't. Solaris has (had?). + * Just in case I miss something, retain in for Sparc. + * Note: SYS_get/putpmsg may be defined even though syscalls + * return ENOSYS. Can't just check defined(SYS_getpmsg). + */ +#if (!defined(SPARC) && !defined(SPARC64)) || !defined(SYS_getpmsg) #define sys_getpmsg printargs #endif -#ifndef SYS_putpmsg +#if (!defined(SPARC) && !defined(SPARC64)) || !defined(SYS_putpmsg) #define sys_putpmsg printargs #endif - -#ifndef HAVE_STRUCT___OLD_KERNEL_STAT -#define sys_oldfstat printargs -#define sys_oldlstat printargs -#define sys_oldstat printargs -#endif diff --git a/linux/errnoent.h b/linux/errnoent.h index e43bff54..c2ac6839 100644 --- a/linux/errnoent.h +++ b/linux/errnoent.h @@ -519,8 +519,8 @@ "ERESTARTNOHAND", /* 514 */ "ENOIOCTLCMD", /* 515 */ "ERESTART_RESTARTBLOCK", /* 516 */ - "ERRNO_517", /* 517 */ - "ERRNO_518", /* 518 */ + "EPROBE_DEFER", /* 517 */ + "EOPENSTALE", /* 518 */ "ERRNO_519", /* 519 */ "ERRNO_520", /* 520 */ "EBADHANDLE", /* 521 */ diff --git a/linux/hppa/syscallent.h b/linux/hppa/syscallent.h index c16eecb2..4ce2dc20 100644 --- a/linux/hppa/syscallent.h +++ b/linux/hppa/syscallent.h @@ -21,7 +21,7 @@ { 3, TF, sys_chown, "lchown" }, /* 16 */ { 3, TN, sys_socket, "socket" }, /* 17 */ { 2, TF, sys_stat, "newstat" }, /* 18 */ - { 3, TF, sys_lseek, "lseek" }, /* 19 */ + { 3, TD, sys_lseek, "lseek" }, /* 19 */ { 0, 0, sys_getpid, "getpid" }, /* 20 */ { 5, TF, sys_mount, "mount" }, /* 21 */ { 3, TN, sys_bind, "bind" }, /* 22 */ @@ -31,8 +31,8 @@ { 4, 0, sys_ptrace, "ptrace" }, /* 26 */ { 1, 0, sys_alarm, "alarm" }, /* 27 */ { 2, TD, sys_fstat, "newfstat" }, /* 28 */ - { 0, 0, sys_pause, "pause" }, /* 29 */ - { 2, 0, sys_utime, "utime" }, /* 30 */ + { 0, TS, sys_pause, "pause" }, /* 29 */ + { 2, TF, sys_utime, "utime" }, /* 30 */ { 3, TN, sys_connect, "connect" }, /* 31 */ { 2, TN, sys_listen, "listen" }, /* 32 */ { 2, TF, sys_access, "access" }, /* 33 */ @@ -47,14 +47,14 @@ { 1, TD, sys_pipe, "pipe" }, /* 42 */ { 1, 0, sys_times, "times" }, /* 43 */ { 3, TN, sys_getsockname, "getsockname" }, /* 44 */ - { 1, 0, sys_brk, "brk" }, /* 45 */ + { 1, TM, sys_brk, "brk" }, /* 45 */ { 1, 0, sys_setgid, "setgid" }, /* 46 */ { 0, NF, sys_getgid, "getgid" }, /* 47 */ - { 2, 0, sys_signal, "signal" }, /* 48 */ + { 2, TS, sys_signal, "signal" }, /* 48 */ { 0, NF, sys_geteuid, "geteuid" }, /* 49 */ { 0, NF, sys_getegid, "getegid" }, /* 50 */ { 1, TF, sys_acct, "acct" }, /* 51 */ - { 2, 0, sys_umount2, "umount2" }, /* 52 */ + { 2, TF, sys_umount2, "umount2" }, /* 52 */ { 3, TN, sys_getpeername, "lock" }, /* 53 */ { 3, TD, sys_ioctl, "ioctl" }, /* 54 */ { 3, TD, sys_fcntl, "fcntl" }, /* 55 */ @@ -74,7 +74,7 @@ { 1, TS, sys_sigsetmask, "ssetmask" }, /* 69 */ { 2, 0, sys_setreuid, "setreuid" }, /* 70 */ { 2, 0, sys_setregid, "setregid" }, /* 71 */ - { 3, 0, sys_mincore, "mincore" }, /* 72 */ + { 3, TM, sys_mincore, "mincore" }, /* 72 */ { 1, TS, sys_sigpending, "sigpending" }, /* 73 */ { 2, 0, sys_sethostname, "sethostname" }, /* 74 */ { 2, 0, sys_setrlimit, "setrlimit" }, /* 75 */ @@ -88,12 +88,12 @@ { 2, TF, sys_symlink, "symlink" }, /* 83 */ { 2, TF, sys_lstat, "newlstat" }, /* 84 */ { 3, TF, sys_readlink, "readlink" }, /* 85 */ - { 1, 0, sys_uselib, "uselib" }, /* 86 */ + { 1, TF, sys_uselib, "uselib" }, /* 86 */ { 2, TF, sys_swapon, "swapon" }, /* 87 */ { 4, 0, sys_reboot, "reboot" }, /* 88 */ - { 6, TD, sys_mmap, "mmap2" }, /* 89 */ - { 6, TD, sys_mmap, "mmap" }, /* 90 */ - { 2, 0, sys_munmap, "munmap" }, /* 91 */ + { 6, TD|TM, sys_mmap_4koff, "mmap2" }, /* 89 */ + { 6, TD|TM, sys_mmap, "mmap" }, /* 90 */ + { 2, TM, sys_munmap, "munmap" }, /* 91 */ { 2, TF, sys_truncate, "truncate" }, /* 92 */ { 2, TD, sys_ftruncate, "ftruncate" }, /* 93 */ { 2, TD, sys_fchmod, "fchmod" }, /* 94 */ @@ -112,50 +112,50 @@ { 2, 0, sys_capset, "capset" }, /* 107 */ { 5, TD, sys_pread, "pread" }, /* 108 */ { 5, TD, sys_pwrite, "pwrite" }, /* 109 */ - { 2, 0, sys_getcwd, "getcwd" }, /* 110 */ + { 2, TF, sys_getcwd, "getcwd" }, /* 110 */ { 0, 0, sys_vhangup, "vhangup" }, /* 111 */ { 2, TD, sys_fstat64, "fstat64" }, /* 112 */ - { 0, 0, sys_vfork, "vfork" }, /* 113 */ + { 0, TP, sys_vfork, "vfork" }, /* 113 */ { 4, TP, sys_wait4, "wait4" }, /* 114 */ { 1, TF, sys_swapoff, "swapoff" }, /* 115 */ { 1, 0, sys_sysinfo, "sysinfo" }, /* 116 */ { 2, TN, sys_shutdown, "shutdown" }, /* 117 */ { 1, TD, sys_fsync, "fsync" }, /* 118 */ - { 3, 0, sys_madvise, "madvise" }, /* 119 */ + { 3, TM, sys_madvise, "madvise" }, /* 119 */ { 5, TP, sys_clone, "clone" }, /* 120 */ { 2, 0, sys_setdomainname, "setdomainname" }, /* 121 */ { 4, TD|TN, sys_sendfile, "sendfile" }, /* 122 */ { 6, TN, sys_recvfrom, "recvfrom" }, /* 123 */ { 1, 0, sys_adjtimex, "adjtimex" }, /* 124 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 125 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 125 */ { 3, TS, sys_sigprocmask, "sigprocmask" }, /* 126 */ { 2, 0, sys_create_module, "create_module" }, /* 127 */ { 4, 0, sys_init_module, "init_module" }, /* 128 */ { 2, 0, sys_delete_module, "delete_module" }, /* 129 */ { 1, 0, sys_get_kernel_syms, "get_kernel_syms" }, /* 130 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 131 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 131 */ { 1, 0, sys_getpgid, "getpgid" }, /* 132 */ - { 1, TF, sys_fchdir, "fchdir" }, /* 133 */ + { 1, TD, sys_fchdir, "fchdir" }, /* 133 */ { 0, 0, sys_bdflush, "bdflush" }, /* 134 */ { 5, 0, sys_sysfs, "sysfs" }, /* 135 */ { 1, 0, sys_personality, "personality" }, /* 136 */ { 5, 0, sys_afs_syscall, "afs_syscall" }, /* 137 */ { 1, NF, sys_setfsuid, "setfsuid" }, /* 138 */ { 1, NF, sys_setfsgid, "setfsgid" }, /* 139 */ - { 5, TF, sys_llseek, "_llseek" }, /* 140 */ + { 5, TD, sys_llseek, "_llseek" }, /* 140 */ { 3, TD, sys_getdents, "getdents" }, /* 141 */ { 5, TD, sys_select, "_newselect" }, /* 142 */ { 2, TD, sys_flock, "flock" }, /* 143 */ - { 3, 0, sys_msync, "msync" }, /* 144 */ + { 3, TM, sys_msync, "msync" }, /* 144 */ { 3, TD, sys_readv, "readv" }, /* 145 */ { 3, TD, sys_writev, "writev" }, /* 146 */ { 1, 0, sys_getsid, "getsid" }, /* 147 */ { 1, TD, sys_fdatasync, "fdatasync" }, /* 148 */ { 1, 0, sys_sysctl, "_sysctl" }, /* 149 */ - { 2, 0, sys_mlock, "mlock" }, /* 150 */ - { 2, 0, sys_munlock, "munlock" }, /* 151 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 152 */ - { 1, 0, sys_munlockall, "munlockall" }, /* 153 */ + { 2, TM, sys_mlock, "mlock" }, /* 150 */ + { 2, TM, sys_munlock, "munlock" }, /* 151 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 152 */ + { 1, TM, sys_munlockall, "munlockall" }, /* 153 */ { 2, 0, sys_sched_setparam, "sched_setparam" }, /* 154 */ { 2, 0, sys_sched_getparam, "sched_getparam" }, /* 155 */ { 3, 0, sys_sched_setscheduler, "sched_setscheduler" }, /* 156 */ @@ -165,7 +165,7 @@ { 1, 0, sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */ { 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */ { 2, 0, sys_nanosleep, "nanosleep" }, /* 162 */ - { 5, 0, sys_mremap, "mremap" }, /* 163 */ + { 5, TM, sys_mremap, "mremap" }, /* 163 */ { 3, 0, sys_setresuid, "setresuid" }, /* 164 */ { 3, 0, sys_setresuid, "getresuid" }, /* 165 */ { 2, TS, sys_sigaltstack, "sigaltstack" }, /* 166 */ @@ -186,7 +186,7 @@ { 5, TN, sys_setsockopt, "setsockopt" }, /* 181 */ { 5, TN, sys_getsockopt, "getsockopt" }, /* 182 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 183 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 184 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 184 */ { 4, TI, sys_semop, "semop" }, /* 185 */ { 4, TI, sys_semget, "semget" }, /* 186 */ { 4, TI, sys_semctl, "semctl" }, /* 187 */ @@ -211,7 +211,7 @@ { 0, 0, sys_gettid, "gettid" }, /* 206 */ { 4, TD, sys_readahead, "readahead" }, /* 207 */ { 2, TS, sys_kill, "tkill" }, /* 208 */ - { 4, TD|TN, sys_sendfile, "sendfile64" }, /* 209 */ + { 4, TD|TN, sys_sendfile64, "sendfile64" }, /* 209 */ { 6, 0, sys_futex, "futex" }, /* 210 */ { 3, 0, sys_sched_setaffinity, "sched_setaffinity" }, /* 211 */ { 3, 0, sys_sched_getaffinity, "sched_getaffinity" }, /* 212 */ @@ -229,7 +229,7 @@ { 1, TD, sys_epoll_create, "epoll_create" }, /* 224 */ { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 225 */ { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 226 */ - { 5, 0, printargs, "remap_file_pages" }, /* 227 */ + { 5, TM, printargs, "remap_file_pages" }, /* 227 */ { 5, TI, sys_semtimedop, "semtimedop" }, /* 228 */ { 5, 0, printargs, "mq_open" }, /* 229 */ { 5, 0, printargs, "mq_unlink" }, /* 230 */ @@ -238,7 +238,7 @@ { 5, 0, printargs, "mq_notify" }, /* 233 */ { 5, 0, printargs, "mq_getsetattr" }, /* 234 */ { 4, 0, printargs, "waitid" }, /* 235 */ - { 5, TD, printargs, "fadvise64_64" }, /* 236 */ + { 6, TD, sys_fadvise64_64, "fadvise64_64" }, /* 236 */ { 5, 0, sys_set_tid_address, "set_tid_address" }, /* 237 */ { 5, TF, sys_setxattr, "setxattr" }, /* 238 */ { 5, TF, sys_setxattr, "lsetxattr" }, /* 239 */ @@ -248,7 +248,7 @@ { 4, TD, sys_fgetxattr, "fgetxattr" }, /* 243 */ { 5, TF, sys_listxattr, "listxattr" }, /* 244 */ { 5, TF, sys_listxattr, "llistxattr" }, /* 245 */ - { 5, 0, sys_flistxattr, "flistxattr" }, /* 246 */ + { 5, TD, sys_flistxattr, "flistxattr" }, /* 246 */ { 5, TF, sys_removexattr, "removexattr" }, /* 247 */ { 5, TF, sys_removexattr, "lremovexattr" }, /* 248 */ { 5, TD, sys_fremovexattr, "fremovexattr" }, /* 249 */ @@ -262,9 +262,9 @@ { 2, 0, sys_clock_getres, "clock_getres" }, /* 257 */ { 5, 0, printargs, "clock_nanosleep" }, /* 258 */ { 3, TS, sys_tgkill, "tgkill" }, /* 259 */ - { 5, 0, printargs, "mbind" }, /* 260 */ - { 5, 0, printargs, "get_mempolicy" }, /* 261 */ - { 5, 0, printargs, "set_mempolicy" }, /* 262 */ + { 5, TM, printargs, "mbind" }, /* 260 */ + { 5, TM, printargs, "get_mempolicy" }, /* 261 */ + { 5, TM, printargs, "set_mempolicy" }, /* 262 */ { 5, 0, sys_vserver, "vserver" }, /* 263 */ { 5, 0, sys_add_key, "add_key" }, /* 264 */ { 4, 0, sys_request_key, "request_key" }, /* 265 */ @@ -274,7 +274,7 @@ { 0, TD, sys_inotify_init, "inotify_init" }, /* 269 */ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 270 */ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 271 */ - { 4, 0, sys_migrate_pages, "migrate_pages" }, /* 272 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 272 */ { 6, TD, sys_pselect6, "pselect6" }, /* 273 */ { 5, TD, sys_ppoll, "ppoll" }, /* 274 */ { 4, TD|TF, sys_openat, "openat" }, /* 275 */ @@ -294,10 +294,10 @@ { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 289 */ { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 290 */ { 6, TD, sys_splice, "splice" }, /* 291 */ - { 4, TD, sys_sync_file_range, "sync_file_range" }, /* 292 */ + { 6, TD, sys_sync_file_range, "sync_file_range" }, /* 292 */ { 4, TD, sys_tee, "tee" }, /* 293 */ { 4, TD, sys_vmsplice, "vmsplice" }, /* 294 */ - { 6, 0, sys_move_pages, "move_pages" }, /* 295 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 295 */ { 3, 0, sys_getcpu, "getcpu" }, /* 296 */ { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 297 */ { 3, TF, sys_statfs64, "statfs64" }, /* 298 */ @@ -332,3 +332,7 @@ { 1, TD, sys_syncfs, "syncfs" }, /* 327 */ { 2, TD, sys_setns, "setns" }, /* 328 */ { 4, TN, sys_sendmmsg, "sendmmsg" }, /* 329 */ + { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 330 */ + { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 331 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 332 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 333 */ diff --git a/linux/i386/ioctlent.h.in b/linux/i386/ioctlent.h.in index 9a90ec8a..449ad401 100644 --- a/linux/i386/ioctlent.h.in +++ b/linux/i386/ioctlent.h.in @@ -11,82 +11,5 @@ {"asm/mtrr.h", "MTRRIOC_DEL_PAGE_ENTRY", 0x4d07}, {"asm/mtrr.h", "MTRRIOC_GET_PAGE_ENTRY", 0x4d08}, {"asm/mtrr.h", "MTRRIOC_KILL_PAGE_ENTRY", 0x4d09}, - {"asm-generic/ioctls.h", "TCGETS", 0x5401}, - {"asm-generic/ioctls.h", "TCSETS", 0x5402}, - {"asm-generic/ioctls.h", "TCSETSW", 0x5403}, - {"asm-generic/ioctls.h", "TCSETSF", 0x5404}, - {"asm-generic/ioctls.h", "TCGETA", 0x5405}, - {"asm-generic/ioctls.h", "TCSETA", 0x5406}, - {"asm-generic/ioctls.h", "TCSETAW", 0x5407}, - {"asm-generic/ioctls.h", "TCSETAF", 0x5408}, - {"asm-generic/ioctls.h", "TCSBRK", 0x5409}, - {"asm-generic/ioctls.h", "TCXONC", 0x540a}, - {"asm-generic/ioctls.h", "TCFLSH", 0x540b}, - {"asm-generic/ioctls.h", "TIOCEXCL", 0x540c}, - {"asm-generic/ioctls.h", "TIOCNXCL", 0x540d}, - {"asm-generic/ioctls.h", "TIOCSCTTY", 0x540e}, - {"asm-generic/ioctls.h", "TIOCGPGRP", 0x540f}, - {"asm-generic/ioctls.h", "TIOCSPGRP", 0x5410}, - {"asm-generic/ioctls.h", "TIOCOUTQ", 0x5411}, - {"asm-generic/ioctls.h", "TIOCSTI", 0x5412}, - {"asm-generic/ioctls.h", "TIOCGWINSZ", 0x5413}, - {"asm-generic/ioctls.h", "TIOCSWINSZ", 0x5414}, - {"asm-generic/ioctls.h", "TIOCMGET", 0x5415}, - {"asm-generic/ioctls.h", "TIOCMBIS", 0x5416}, - {"asm-generic/ioctls.h", "TIOCMBIC", 0x5417}, - {"asm-generic/ioctls.h", "TIOCMSET", 0x5418}, - {"asm-generic/ioctls.h", "TIOCGSOFTCAR", 0x5419}, - {"asm-generic/ioctls.h", "TIOCSSOFTCAR", 0x541a}, - {"asm-generic/ioctls.h", "FIONREAD", 0x541b}, - {"asm-generic/ioctls.h", "TIOCLINUX", 0x541c}, - {"asm-generic/ioctls.h", "TIOCCONS", 0x541d}, - {"asm-generic/ioctls.h", "TIOCGSERIAL", 0x541e}, - {"asm-generic/ioctls.h", "TIOCSSERIAL", 0x541f}, - {"asm-generic/ioctls.h", "TIOCPKT", 0x5420}, - {"asm-generic/ioctls.h", "FIONBIO", 0x5421}, - {"asm-generic/ioctls.h", "TIOCNOTTY", 0x5422}, - {"asm-generic/ioctls.h", "TIOCSETD", 0x5423}, - {"asm-generic/ioctls.h", "TIOCGETD", 0x5424}, - {"asm-generic/ioctls.h", "TCSBRKP", 0x5425}, - {"asm-generic/ioctls.h", "TIOCSBRK", 0x5427}, - {"asm-generic/ioctls.h", "TIOCCBRK", 0x5428}, - {"asm-generic/ioctls.h", "TIOCGSID", 0x5429}, - {"asm-generic/ioctls.h", "TCGETS2", 0x542a}, - {"asm-generic/ioctls.h", "TCSETS2", 0x542b}, - {"asm-generic/ioctls.h", "TCSETSW2", 0x542c}, - {"asm-generic/ioctls.h", "TCSETSF2", 0x542d}, - {"asm-generic/ioctls.h", "TIOCGRS485", 0x542e}, - {"asm-generic/ioctls.h", "TIOCSRS485", 0x542f}, - {"asm-generic/ioctls.h", "TIOCGPTN", 0x5430}, - {"asm-generic/ioctls.h", "TIOCSPTLCK", 0x5431}, - {"asm-generic/ioctls.h", "TCGETX", 0x5432}, - {"asm-generic/ioctls.h", "TIOCGDEV", 0x5432}, - {"asm-generic/ioctls.h", "TCSETX", 0x5433}, - {"asm-generic/ioctls.h", "TCSETXF", 0x5434}, - {"asm-generic/ioctls.h", "TCSETXW", 0x5435}, - {"asm-generic/ioctls.h", "TIOCSIG", 0x5436}, - {"asm-generic/ioctls.h", "TIOCVHANGUP", 0x5437}, - {"asm-generic/ioctls.h", "FIONCLEX", 0x5450}, - {"asm-generic/ioctls.h", "FIOCLEX", 0x5451}, - {"asm-generic/ioctls.h", "FIOASYNC", 0x5452}, - {"asm-generic/ioctls.h", "TIOCSERCONFIG", 0x5453}, - {"asm-generic/ioctls.h", "TIOCSERGWILD", 0x5454}, - {"asm-generic/ioctls.h", "TIOCSERSWILD", 0x5455}, - {"asm-generic/ioctls.h", "TIOCGLCKTRMIOS", 0x5456}, - {"asm-generic/ioctls.h", "TIOCSLCKTRMIOS", 0x5457}, - {"asm-generic/ioctls.h", "TIOCSERGSTRUCT", 0x5458}, - {"asm-generic/ioctls.h", "TIOCSERGETLSR", 0x5459}, - {"asm-generic/ioctls.h", "TIOCSERGETMULTI", 0x545a}, - {"asm-generic/ioctls.h", "TIOCSERSETMULTI", 0x545b}, - {"asm-generic/ioctls.h", "TIOCMIWAIT", 0x545c}, - {"asm-generic/ioctls.h", "TIOCGICOUNT", 0x545d}, - {"asm-generic/ioctls.h", "FIOQSIZE", 0x5460}, {"asm/msr.h", "X86_IOC_RDMSR_REGS", 0x63a0}, {"asm/msr.h", "X86_IOC_WRMSR_REGS", 0x63a1}, - {"asm-generic/sockios.h", "FIOSETOWN", 0x8901}, - {"asm-generic/sockios.h", "SIOCSPGRP", 0x8902}, - {"asm-generic/sockios.h", "FIOGETOWN", 0x8903}, - {"asm-generic/sockios.h", "SIOCGPGRP", 0x8904}, - {"asm-generic/sockios.h", "SIOCATMARK", 0x8905}, - {"asm-generic/sockios.h", "SIOCGSTAMP", 0x8906}, - {"asm-generic/sockios.h", "SIOCGSTAMPNS", 0x8907}, diff --git a/linux/i386/syscallent.h b/linux/i386/syscallent.h index 4092f2e7..480a28e6 100644 --- a/linux/i386/syscallent.h +++ b/linux/i386/syscallent.h @@ -27,13 +27,13 @@ */ { 0, 0, sys_restart_syscall, "restart_syscall" }, /* 0 */ - { 1, TP, sys_exit, "_exit", }, /* 1 */ - { 0, TP, sys_fork, "fork", }, /* 2 */ - { 3, TD, sys_read, "read", }, /* 3 */ - { 3, TD, sys_write, "write", }, /* 4 */ + { 1, TP, sys_exit, "_exit" }, /* 1 */ + { 0, TP, sys_fork, "fork" }, /* 2 */ + { 3, TD, sys_read, "read" }, /* 3 */ + { 3, TD, sys_write, "write" }, /* 4 */ { 3, TD|TF, sys_open, "open" }, /* 5 */ { 1, TD, sys_close, "close" }, /* 6 */ - { 3, TP, sys_waitpid, "waitpid", }, /* 7 */ + { 3, TP, sys_waitpid, "waitpid" }, /* 7 */ { 2, TD|TF, sys_creat, "creat" }, /* 8 */ { 2, TF, sys_link, "link" }, /* 9 */ { 1, TF, sys_unlink, "unlink" }, /* 10 */ @@ -43,7 +43,7 @@ { 3, TF, sys_mknod, "mknod" }, /* 14 */ { 2, TF, sys_chmod, "chmod" }, /* 15 */ { 3, TF, sys_chown, "lchown" }, /* 16 */ - { 0, 0, sys_break, "break" }, /* 17 */ + { 0, TM, sys_break, "break" }, /* 17 */ { 2, TF, sys_oldstat, "oldstat" }, /* 18 */ { 3, TD, sys_lseek, "lseek" }, /* 19 */ { 0, 0, sys_getpid, "getpid" }, /* 20 */ @@ -71,7 +71,7 @@ { 1, TD, sys_pipe, "pipe" }, /* 42 */ { 1, 0, sys_times, "times" }, /* 43 */ { 0, 0, sys_prof, "prof" }, /* 44 */ - { 1, 0, sys_brk, "brk" }, /* 45 */ + { 1, TM, sys_brk, "brk" }, /* 45 */ { 1, 0, sys_setgid, "setgid" }, /* 46 */ { 0, NF, sys_getgid, "getgid" }, /* 47 */ { 3, TS, sys_signal, "signal" }, /* 48 */ @@ -116,8 +116,8 @@ { 2, TF, sys_swapon, "swapon" }, /* 87 */ { 4, 0, sys_reboot, "reboot" }, /* 88 */ { 3, TD, sys_readdir, "readdir" }, /* 89 */ - { 6, TD, sys_old_mmap, "old_mmap" }, /* 90 */ - { 2, 0, sys_munmap, "munmap" }, /* 91 */ + { 6, TD|TM, sys_old_mmap, "old_mmap" }, /* 90 */ + { 2, TM, sys_munmap, "munmap" }, /* 91 */ { 2, TF, sys_truncate, "truncate" }, /* 92 */ { 2, TD, sys_ftruncate, "ftruncate" }, /* 93 */ { 2, TD, sys_fchmod, "fchmod" }, /* 94 */ @@ -140,10 +140,10 @@ { 0, 0, sys_vhangup, "vhangup" }, /* 111 */ { 0, 0, sys_idle, "idle" }, /* 112 */ { 1, 0, sys_vm86old, "vm86old" }, /* 113 */ - { 4, TP, sys_wait4, "wait4", }, /* 114 */ + { 4, TP, sys_wait4, "wait4" }, /* 114 */ { 1, TF, sys_swapoff, "swapoff" }, /* 115 */ { 1, 0, sys_sysinfo, "sysinfo" }, /* 116 */ - { 6, TI, sys_ipc, "ipc", }, /* 117 */ + { 6, TI, sys_ipc, "ipc" }, /* 117 */ { 1, TD, sys_fsync, "fsync" }, /* 118 */ { 0, TS, sys_sigreturn, "sigreturn" }, /* 119 */ { 5, TP, sys_clone, "clone" }, /* 120 */ @@ -151,17 +151,17 @@ { 1, 0, sys_uname, "uname" }, /* 122 */ { 3, 0, sys_modify_ldt, "modify_ldt" }, /* 123 */ { 1, 0, sys_adjtimex, "adjtimex" }, /* 124 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 125 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 125 */ { 3, TS, sys_sigprocmask, "sigprocmask" }, /* 126 */ { 2, 0, sys_create_module, "create_module" }, /* 127 */ { 3, 0, sys_init_module, "init_module" }, /* 128 */ { 2, 0, sys_delete_module, "delete_module" }, /* 129 */ { 1, 0, sys_get_kernel_syms, "get_kernel_syms"}, /* 130 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 131 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 131 */ { 1, 0, sys_getpgid, "getpgid" }, /* 132 */ { 1, TD, sys_fchdir, "fchdir" }, /* 133 */ { 0, 0, sys_bdflush, "bdflush" }, /* 134 */ - { 3, 0, sys_sysfs, "sysfs", }, /* 135 */ + { 3, 0, sys_sysfs, "sysfs" }, /* 135 */ { 1, 0, sys_personality, "personality" }, /* 136 */ { 5, 0, sys_afs_syscall, "afs_syscall" }, /* 137 */ { 1, NF, sys_setfsuid, "setfsuid" }, /* 138 */ @@ -170,16 +170,16 @@ { 3, TD, sys_getdents, "getdents" }, /* 141 */ { 5, TD, sys_select, "select" }, /* 142 */ { 2, TD, sys_flock, "flock" }, /* 143 */ - { 3, 0, sys_msync, "msync" }, /* 144 */ - { 3, TD, sys_readv, "readv", }, /* 145 */ - { 3, TD, sys_writev, "writev", }, /* 146 */ + { 3, TM, sys_msync, "msync" }, /* 144 */ + { 3, TD, sys_readv, "readv" }, /* 145 */ + { 3, TD, sys_writev, "writev" }, /* 146 */ { 1, 0, sys_getsid, "getsid" }, /* 147 */ { 1, TD, sys_fdatasync, "fdatasync" }, /* 148 */ { 1, 0, sys_sysctl, "_sysctl" }, /* 149 */ - { 2, 0, sys_mlock, "mlock" }, /* 150 */ - { 2, 0, sys_munlock, "munlock" }, /* 151 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 152 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 153 */ + { 2, TM, sys_mlock, "mlock" }, /* 150 */ + { 2, TM, sys_munlock, "munlock" }, /* 151 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 152 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 153 */ { 0, 0, sys_sched_setparam, "sched_setparam"}, /* 154 */ { 2, 0, sys_sched_getparam, "sched_getparam"}, /* 155 */ { 3, 0, sys_sched_setscheduler, "sched_setscheduler"}, /* 156 */ @@ -189,7 +189,7 @@ { 1, 0, sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */ { 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */ { 2, 0, sys_nanosleep, "nanosleep" }, /* 162 */ - { 5, 0, sys_mremap, "mremap" }, /* 163 */ + { 5, TM, sys_mremap, "mremap" }, /* 163 */ { 3, 0, sys_setresuid, "setresuid" }, /* 164 */ { 3, 0, sys_getresuid, "getresuid" }, /* 165 */ { 5, 0, sys_vm86, "vm86" }, /* 166 */ @@ -207,8 +207,8 @@ { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo"}, /* 178 */ { 2, TS, sys_rt_sigsuspend, "rt_sigsuspend" }, /* 179 */ - { 5, TD, sys_pread, "pread64", }, /* 180 */ - { 5, TD, sys_pwrite, "pwrite64", }, /* 181 */ + { 5, TD, sys_pread, "pread64" }, /* 180 */ + { 5, TD, sys_pwrite, "pwrite64" }, /* 181 */ { 3, TF, sys_chown, "chown" }, /* 182 */ { 2, TF, sys_getcwd, "getcwd" }, /* 183 */ { 2, 0, sys_capget, "capget" }, /* 184 */ @@ -219,7 +219,7 @@ { 5, 0, sys_putpmsg, "putpmsg" }, /* 189 */ { 0, TP, sys_vfork, "vfork" }, /* 190 */ { 2, 0, sys_getrlimit, "getrlimit" }, /* 191 */ - { 6, TD, sys_mmap, "mmap2" }, /* 192 */ + { 6, TD|TM, sys_mmap_pgoff, "mmap2" }, /* 192 */ { 3, TF, sys_truncate64, "truncate64" }, /* 193 */ { 3, TD, sys_ftruncate64, "ftruncate64" }, /* 194 */ { 2, TF, sys_stat64, "stat64" }, /* 195 */ @@ -246,8 +246,8 @@ { 1, NF, sys_setfsuid, "setfsuid32" }, /* 215 */ { 1, NF, sys_setfsgid, "setfsgid32" }, /* 216 */ { 2, TF, sys_pivotroot, "pivot_root" }, /* 217 */ - { 3, 0, sys_mincore, "mincore" }, /* 218 */ - { 3, 0, sys_madvise, "madvise" }, /* 219 */ + { 3, TM, sys_mincore, "mincore" }, /* 218 */ + { 3, TM, sys_madvise, "madvise" }, /* 219 */ { 3, TD, sys_getdents64, "getdents64" }, /* 220 */ { 3, TD, sys_fcntl, "fcntl64" }, /* 221 */ { 6, 0, NULL, NULL }, /* 222 */ @@ -285,7 +285,7 @@ { 1, TD, sys_epoll_create, "epoll_create" }, /* 254 */ { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 255 */ { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 256 */ - { 5, 0, sys_remap_file_pages, "remap_file_pages"}, /* 257 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages"}, /* 257 */ { 1, 0, sys_set_tid_address, "set_tid_address"}, /* 258 */ { 3, 0, sys_timer_create, "timer_create" }, /* 259 */ { 4, 0, sys_timer_settime, "timer_settime" }, /* 260 */ @@ -302,9 +302,9 @@ { 2, TF, sys_utimes, "utimes" }, /* 271 */ { 6, TD, sys_fadvise64_64, "fadvise64_64" }, /* 272 */ { 5, 0, sys_vserver, "vserver" }, /* 273 */ - { 6, 0, sys_mbind, "mbind" }, /* 274 */ - { 5, 0, sys_get_mempolicy, "get_mempolicy" }, /* 275 */ - { 3, 0, sys_set_mempolicy, "set_mempolicy" }, /* 276 */ + { 6, TM, sys_mbind, "mbind" }, /* 274 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 275 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 276 */ { 4, 0, sys_mq_open, "mq_open" }, /* 277 */ { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 278 */ { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 279 */ @@ -312,7 +312,7 @@ { 2, 0, sys_mq_notify, "mq_notify" }, /* 281 */ { 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 282 */ { 4, 0, sys_kexec_load, "kexec_load" }, /* 283 */ - { 5, TP, sys_waitid, "waitid", }, /* 284 */ + { 5, TP, sys_waitid, "waitid" }, /* 284 */ { 6, 0, NULL, NULL }, /* 285 */ { 5, 0, sys_add_key, "add_key" }, /* 286 */ { 4, 0, sys_request_key, "request_key" }, /* 287 */ @@ -322,7 +322,7 @@ { 0, TD, sys_inotify_init, "inotify_init" }, /* 291 */ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 292 */ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 293 */ - { 4, 0, sys_migrate_pages, "migrate_pages" }, /* 294 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 294 */ { 4, TD|TF, sys_openat, "openat" }, /* 295 */ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 296 */ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 297 */ @@ -342,10 +342,10 @@ { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 311 */ { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 312 */ { 6, TD, sys_splice, "splice" }, /* 313 */ - { 4, TD, sys_sync_file_range, "sync_file_range" }, /* 314 */ + { 6, TD, sys_sync_file_range, "sync_file_range" }, /* 314 */ { 4, TD, sys_tee, "tee" }, /* 315 */ { 4, TD, sys_vmsplice, "vmsplice" }, /* 316 */ - { 6, 0, sys_move_pages, "move_pages" }, /* 317 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 317 */ { 3, 0, sys_getcpu, "getcpu" }, /* 318 */ { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 319 */ { 4, TD|TF, sys_utimensat, "utimensat" }, /* 320 */ @@ -377,8 +377,8 @@ { 2, TD, sys_setns, "setns" }, /* 346 */ { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 347 */ { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 348 */ - { 5, 0, NULL, NULL }, /* 349 */ - { 5, 0, NULL, NULL }, /* 350 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 349 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 350 */ { 5, 0, NULL, NULL }, /* 351 */ { 5, 0, NULL, NULL }, /* 352 */ { 5, 0, NULL, NULL }, /* 353 */ @@ -428,10 +428,8 @@ { 5, 0, NULL, NULL }, /* 397 */ { 5, 0, NULL, NULL }, /* 398 */ { 5, 0, NULL, NULL }, /* 399 */ - -#if SYS_socket_subcall != 400 - #error fix me -#endif +#define SYS_socket_subcall 400 +#include "subcall.h" { 6, 0, printargs, "socket_subcall"}, /* 400 */ { 3, TN, sys_socket, "socket" }, /* 401 */ { 3, TN, sys_bind, "bind" }, /* 402 */ @@ -441,15 +439,15 @@ { 3, TN, sys_getsockname, "getsockname" }, /* 406 */ { 3, TN, sys_getpeername, "getpeername" }, /* 407 */ { 4, TN, sys_socketpair, "socketpair" }, /* 408 */ - { 4, TN, sys_send, "send", }, /* 409 */ - { 4, TN, sys_recv, "recv", }, /* 410 */ - { 6, TN, sys_sendto, "sendto", }, /* 411 */ - { 6, TN, sys_recvfrom, "recvfrom", }, /* 412 */ + { 4, TN, sys_send, "send" }, /* 409 */ + { 4, TN, sys_recv, "recv" }, /* 410 */ + { 6, TN, sys_sendto, "sendto" }, /* 411 */ + { 6, TN, sys_recvfrom, "recvfrom" }, /* 412 */ { 2, TN, sys_shutdown, "shutdown" }, /* 413 */ { 5, TN, sys_setsockopt, "setsockopt" }, /* 414 */ { 5, TN, sys_getsockopt, "getsockopt" }, /* 415 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 416 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 417 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 417 */ { 4, TN, sys_accept4, "accept4" }, /* 418 */ { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 419 */ diff --git a/linux/ia64/syscallent.h b/linux/ia64/syscallent.h index 0dd18f0d..0242280c 100644 --- a/linux/ia64/syscallent.h +++ b/linux/ia64/syscallent.h @@ -70,6 +70,7 @@ #define sys_getgroups printargs #define sys_setgroups printargs #define sys_select printargs +#undef sys_oldlstat #define sys_oldlstat printargs #define sys_readdir printargs #define sys_profil printargs @@ -79,6 +80,7 @@ #define sys_setitimer printargs #define sys_getitimer printargs #define sys_stat printargs +#undef sys_lstat #define sys_lstat printargs #define sys_fstat printargs #define sys_olduname printargs @@ -122,11 +124,12 @@ #define sys_truncate64 printargs #define sys_ftruncate64 printargs #define sys_stat64 printargs +#undef sys_lstat64 #define sys_lstat64 printargs #define sys_fstat64 printargs #define sys_fcntl64 printargs -#include "i386/syscallent.h" +#include "../i386/syscallent.h" #undef sys_getrlimit #undef sys_afs_syscall @@ -818,21 +821,21 @@ { 3, TD, sys_write, "write" }, /* 1027 */ { 3, TD|TF, sys_open, "open" }, /* 1028 */ { 1, TD, sys_close, "close" }, /* 1029 */ - { 2, 0, sys_creat, "creat" }, /* 1030 */ + { 2, TD|TF, sys_creat, "creat" }, /* 1030 */ { 2, TF, sys_link, "link" }, /* 1031 */ { 1, TF, sys_unlink, "unlink" }, /* 1032 */ { 3, TF|TP, sys_execve, "execve" }, /* 1033 */ { 1, TF, sys_chdir, "chdir" }, /* 1034 */ - { 1, TF, sys_fchdir, "fchdir" }, /* 1035 */ - { 2, 0, sys_utimes, "utimes" }, /* 1036 */ + { 1, TD, sys_fchdir, "fchdir" }, /* 1035 */ + { 2, TF, sys_utimes, "utimes" }, /* 1036 */ { 3, TF, sys_mknod, "mknod" }, /* 1037 */ { 2, TF, sys_chmod, "chmod" }, /* 1038 */ { 3, TF, sys_chown, "chown" }, /* 1039 */ - { 3, TF, sys_lseek, "lseek" }, /* 1040 */ + { 3, TD, sys_lseek, "lseek" }, /* 1040 */ { 0, 0, sys_getpid, "getpid" }, /* 1041 */ { 0, 0, sys_getppid, "getppid" }, /* 1042 */ { 5, TF, sys_mount, "mount" }, /* 1043 */ - { 1, 0, sys_umount2, "umount" }, /* 1044 */ + { 1, TF, sys_umount2, "umount" }, /* 1044 */ { 1, 0, sys_setuid, "setuid" }, /* 1045 */ { 0, NF, sys_getuid, "getuid" }, /* 1046 */ { 0, NF, sys_geteuid, "geteuid" }, /* 1047 */ @@ -848,7 +851,7 @@ { 1, TD, sys_dup, "dup" }, /* 1057 */ { 1, TD, sys_pipe, "pipe" }, /* 1058 */ { 1, 0, sys_times, "times" }, /* 1059 */ - { 1, 0, sys_brk, "brk" }, /* 1060 */ + { 1, TM, sys_brk, "brk" }, /* 1060 */ { 1, 0, sys_setgid, "setgid" }, /* 1061 */ { 0, NF, sys_getgid, "getgid" }, /* 1062 */ { 0, NF, sys_getegid, "getegid" }, /* 1063 */ @@ -881,7 +884,7 @@ { 3, TD, sys_poll, "poll" }, /* 1090 */ { 2, TF, sys_symlink, "symlink" }, /* 1091 */ { 3, TF, sys_readlink, "readlink" }, /* 1092 */ - { 1, 0, sys_uselib, "uselib" }, /* 1093 */ + { 1, TF, sys_uselib, "uselib" }, /* 1093 */ { 2, TF, sys_swapon, "swapon" }, /* 1094 */ { 1, TF, sys_swapoff, "swapoff" }, /* 1095 */ { 4, 0, sys_reboot, "reboot" }, /* 1096 */ @@ -925,7 +928,7 @@ { 2, 0, sys_delete_module, "delete_module" }, /* 1134 */ { 1, 0, sys_get_kernel_syms, "get_kernel_syms"}, /* 1135 */ { 5, 0, sys_query_module, "query_module" }, /* 1136 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 1137 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 1137 */ { 0, 0, sys_bdflush, "bdflush" }, /* 1138 */ { 3, 0, sys_sysfs, "sysfs" }, /* 1139 */ { 1, 0, sys_personality, "personality" }, /* 1140 */ @@ -939,15 +942,15 @@ { 4, TD, sys_pread, "pread" }, /* 1148 */ { 4, TD, sys_pwrite, "pwrite" }, /* 1149 */ { 1, 0, printargs, "_sysctl" }, /* 1150 */ - { 6, TD, sys_mmap, "mmap" }, /* 1151 */ - { 2, 0, sys_munmap, "munmap" }, /* 1152 */ - { 2, 0, sys_mlock, "mlock" }, /* 1153 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 1154 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 1155 */ - { 5, 0, sys_mremap, "mremap" }, /* 1156 */ - { 3, 0, sys_msync, "msync" }, /* 1157 */ - { 2, 0, sys_munlock, "munlock" }, /* 1158 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 1159 */ + { 6, TD|TM, sys_mmap, "mmap" }, /* 1151 */ + { 2, TM, sys_munmap, "munmap" }, /* 1152 */ + { 2, TM, sys_mlock, "mlock" }, /* 1153 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 1154 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 1155 */ + { 5, TM, sys_mremap, "mremap" }, /* 1156 */ + { 3, TM, sys_msync, "msync" }, /* 1157 */ + { 2, TM, sys_munlock, "munlock" }, /* 1158 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 1159 */ { 2, 0, sys_sched_getparam, "sched_getparam"}, /* 1160 */ { 2, 0, sys_sched_setparam, "sched_setparam"}, /* 1161 */ { 2, 0, sys_sched_getscheduler, "sched_getscheduler"}, /* 1162 */ @@ -960,7 +963,7 @@ { 3, 0, sys_nfsservctl, "nfsservctl" }, /* 1169 */ { 5, 0, sys_prctl, "prctl" }, /* 1170 */ { 1, 0, sys_getpagesize, "getpagesize" }, /* 1171 */ - { 6, TD, sys_mmap, "mmap2" }, /* 1172 */ + { 6, TD|TM, sys_mmap_pgoff, "mmap2" }, /* 1172 */ { 5, 0, printargs, "pciconfig_read"}, /* 1173 */ { 5, 0, printargs, "pciconfig_write"}, /* 1174 */ { MA, 0, printargs, "perfmonctl" }, /* 1175 */ @@ -996,36 +999,36 @@ { 3, TN, sys_sendmsg, "sendmsg" }, /* 1205 */ { 3, TN, sys_recvmsg, "recvmsg" }, /* 1206 */ { 2, TF, sys_pivotroot, "pivot_root" }, /* 1207 */ - { 3, 0, sys_mincore, "mincore" }, /* 1208 */ - { 3, 0, sys_madvise, "madvise" }, /* 1209 */ + { 3, TM, sys_mincore, "mincore" }, /* 1208 */ + { 3, TM, sys_madvise, "madvise" }, /* 1209 */ { 2, TF, sys_stat, "stat" }, /* 1210 */ - { 2, 0, sys_lstat, "lstat" }, /* 1211 */ + { 2, TF, sys_lstat, "lstat" }, /* 1211 */ { 2, TD, sys_fstat, "fstat" }, /* 1212 */ { 6, TP, sys_clone, "clone2" }, /* 1213 */ { 3, TD, sys_getdents64, "getdents64" }, /* 1214 */ { 2, 0, printargs, "getunwind" }, /* 1215 */ - { 4, TD, sys_readahead, "readahead" }, /* 1216 */ + { 3, TD, sys_readahead, "readahead" }, /* 1216 */ { 5, TF, sys_setxattr, "setxattr" }, /* 1217 */ { 5, TF, sys_setxattr, "lsetxattr" }, /* 1218 */ - { 5, TD, sys_setxattr, "fsetxattr" }, /* 1219 */ + { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 1219 */ { 4, TF, sys_getxattr, "getxattr" }, /* 1220 */ { 4, TF, sys_getxattr, "lgetxattr" }, /* 1221 */ - { 4, TD, sys_getxattr, "fgetxattr" }, /* 1222 */ + { 4, TD, sys_fgetxattr, "fgetxattr" }, /* 1222 */ { 3, TF, sys_listxattr, "listxattr" }, /* 1223 */ { 3, TF, sys_listxattr, "llistxattr" }, /* 1224 */ - { 3, TD, sys_listxattr, "flistxattr" }, /* 1225 */ + { 3, TD, sys_flistxattr, "flistxattr" }, /* 1225 */ { 2, TF, sys_removexattr, "removexattr" }, /* 1226 */ { 2, TF, sys_removexattr, "lremovexattr" }, /* 1227 */ - { 2, TD, sys_removexattr, "fremovexattr" }, /* 1228 */ + { 2, TD, sys_fremovexattr, "fremovexattr" }, /* 1228 */ { 2, TS, sys_kill, "tkill" }, /* 1229 */ { 6, 0, sys_futex, "futex" }, /* 1230 */ { 3, 0, sys_sched_setaffinity, "sched_setaffinity"},/* 1231 */ { 3, 0, sys_sched_getaffinity, "sched_getaffinity"},/* 1232 */ { 1, 0, sys_set_tid_address, "set_tid_address"}, /* 1233 */ - { 5, TD, sys_fadvise64, "fadvise64" }, /* 1234 */ + { 4, TD, sys_fadvise64, "fadvise64" }, /* 1234 */ { 3, TS, sys_tgkill, "tgkill" }, /* 1235 */ { 1, TP, sys_exit, "exit_group" }, /* 1236 */ - { 4, 0, sys_lookup_dcookie, "lookup_dcookie"}, /* 1237 */ + { 3, 0, sys_lookup_dcookie, "lookup_dcookie"}, /* 1237 */ { 2, 0, sys_io_setup, "io_setup" }, /* 1238 */ { 1, 0, sys_io_destroy, "io_destroy" }, /* 1239 */ { 5, 0, sys_io_getevents, "io_getevents" }, /* 1240 */ @@ -1047,9 +1050,9 @@ { 4, 0, sys_clock_nanosleep, "clock_nanosleep"}, /* 1256 */ { MA, 0, printargs, "fstatfs64" }, /* 1257 */ { MA, 0, printargs, "statfs64" }, /* 1258 */ - { 6, 0, sys_mbind, "mbind" }, /* 1259 */ - { 5, 0, sys_get_mempolicy, "get_mempolicy" }, /* 1260 */ - { 3, 0, sys_set_mempolicy, "set_mempolicy" }, /* 1261 */ + { 6, TM, sys_mbind, "mbind" }, /* 1259 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 1260 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 1261 */ { 4, 0, sys_mq_open, "mq_open" }, /* 1262 */ { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 1263 */ { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 1264 */ @@ -1064,11 +1067,11 @@ { 5, 0, sys_keyctl, "keyctl" }, /* 1273 */ { 3, 0, sys_ioprio_set, "ioprio_set" }, /* 1274 */ { 2, 0, sys_ioprio_get, "ioprio_get" }, /* 1275 */ - { 6, 0, sys_move_pages, "move_pages" }, /* 1276 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 1276 */ { 0, TD, sys_inotify_init, "inotify_init" }, /* 1277 */ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 1278 */ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 1279 */ - { 4, 0, sys_migrate_pages, "migrate_pages" }, /* 1280 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 1280 */ { 4, TD|TF, sys_openat, "openat" }, /* 1281 */ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 1282 */ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 1283 */ @@ -1098,8 +1101,8 @@ { 3, TD|TS, sys_signalfd, "signalfd" }, /* 1307 */ { 4, TD, sys_timerfd, "timerfd" }, /* 1308 */ { 1, TD, sys_eventfd, "eventfd" }, /* 1309 */ - { 5, TD, sys_preadv, "preadv" }, /* 1319 */ - { 5, TD, sys_pwritev, "pwritev" }, /* 1320 */ + { 4, TD, sys_preadv, "preadv" }, /* 1319 */ + { 4, TD, sys_pwritev, "pwritev" }, /* 1320 */ { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo"}, /* 1321 */ { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 1322 */ { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 1323 */ @@ -1114,3 +1117,4 @@ { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 1332 */ { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 1333 */ { 4, TN, sys_accept4, "accept4" }, /* 1334 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 1335 */ diff --git a/linux/ioctlent-filter.awk b/linux/ioctlent-filter.awk new file mode 100644 index 00000000..181c4bf7 --- /dev/null +++ b/linux/ioctlent-filter.awk @@ -0,0 +1,19 @@ +#!/bin/awk -f +# Filter out redundant "*32" symbols. + +BEGIN { + s="" + c="" +} + +NF == 3 && $2 ~ /^"[^",]*",$/ { + if ($2 == s && $3 == c) + next + s = $2 + sub(/",$/, "32\",", s) + c = $3 +} + +{ + print +} diff --git a/linux/ioctlent.h.in b/linux/ioctlent.h.in index 98ebbcc4..78f1b541 100644 --- a/linux/ioctlent.h.in +++ b/linux/ioctlent.h.in @@ -62,6 +62,7 @@ {"linux/hdreg.h", "HDIO_SET_BUSSTATE", 0x032d}, {"linux/hdreg.h", "HDIO_SET_QDMA", 0x032e}, {"linux/hdreg.h", "HDIO_SET_ADDRESS", 0x032f}, + {"linux/vm_sockets.h", "IOCTL_VM_SOCKETS_GET_LOCAL_CID", 0x07b9}, {"linux/raid/md_u.h", "RAID_VERSION", 0x0910}, {"linux/raid/md_u.h", "GET_ARRAY_INFO", 0x0911}, {"linux/raid/md_u.h", "GET_DISK_INFO", 0x0912}, @@ -103,7 +104,6 @@ {"linux/fs.h", "BLKBSZSET", 0x1271}, {"linux/fs.h", "BLKGETSIZE64", 0x1272}, {"linux/fs.h", "BLKTRACESETUP", 0x1273}, - {"linux/blktrace_api.h", "BLKTRACESETUP32", 0x1273}, {"linux/fs.h", "BLKTRACESTART", 0x1274}, {"linux/fs.h", "BLKTRACESTOP", 0x1275}, {"linux/fs.h", "BLKTRACETEARDOWN", 0x1276}, @@ -114,6 +114,8 @@ {"linux/fs.h", "BLKPBSZGET", 0x127b}, {"linux/fs.h", "BLKDISCARDZEROES", 0x127c}, {"linux/fs.h", "BLKSECDISCARD", 0x127d}, + {"linux/fs.h", "BLKROTATIONAL", 0x127e}, + {"linux/fs.h", "BLKZEROOUT", 0x127f}, {"rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT", 0x1b01}, {"rdma/ib_user_mad.h", "IB_USER_MAD_UNREGISTER_AGENT", 0x1b02}, {"rdma/ib_user_mad.h", "IB_USER_MAD_ENABLE_PKEY", 0x1b03}, @@ -166,6 +168,7 @@ {"linux/firewire-cdev.h", "FW_CDEV_IOC_SEND_PHY_PACKET", 0x2315}, {"linux/firewire-cdev.h", "FW_CDEV_IOC_RECEIVE_PHY_PACKETS", 0x2316}, {"linux/firewire-cdev.h", "FW_CDEV_IOC_SET_ISO_CHANNELS", 0x2317}, + {"linux/firewire-cdev.h", "FW_CDEV_IOC_FLUSH_ISO", 0x2318}, {"linux/perf_event.h", "PERF_EVENT_IOC_ENABLE", 0x2400}, {"linux/perf_event.h", "PERF_EVENT_IOC_DISABLE", 0x2401}, {"linux/perf_event.h", "PERF_EVENT_IOC_REFRESH", 0x2402}, @@ -173,10 +176,6 @@ {"linux/perf_event.h", "PERF_EVENT_IOC_PERIOD", 0x2404}, {"linux/perf_event.h", "PERF_EVENT_IOC_SET_OUTPUT", 0x2405}, {"linux/perf_event.h", "PERF_EVENT_IOC_SET_FILTER", 0x2406}, - {"linux/i2o.h", "BLKI2OGRSTRAT", 0x3201}, - {"linux/i2o.h", "BLKI2OGWSTRAT", 0x3202}, - {"linux/i2o.h", "BLKI2OSRSTRAT", 0x3203}, - {"linux/i2o.h", "BLKI2OSWSTRAT", 0x3204}, {"linux/suspend_ioctls.h", "SNAPSHOT_FREEZE", 0x3301}, {"linux/suspend_ioctls.h", "SNAPSHOT_UNFREEZE", 0x3302}, {"linux/suspend_ioctls.h", "SNAPSHOT_ATOMIC_RESTORE", 0x3304}, @@ -191,10 +190,26 @@ {"linux/suspend_ioctls.h", "SNAPSHOT_PREF_IMAGE_SIZE", 0x3312}, {"linux/suspend_ioctls.h", "SNAPSHOT_AVAIL_SWAP_SIZE", 0x3313}, {"linux/suspend_ioctls.h", "SNAPSHOT_ALLOC_SWAP_PAGE", 0x3314}, + {"linux/vfio.h", "VFIO_GET_API_VERSION", 0x3b64}, + {"linux/vfio.h", "VFIO_CHECK_EXTENSION", 0x3b65}, + {"linux/vfio.h", "VFIO_SET_IOMMU", 0x3b66}, + {"linux/vfio.h", "VFIO_GROUP_GET_STATUS", 0x3b67}, + {"linux/vfio.h", "VFIO_GROUP_SET_CONTAINER", 0x3b68}, + {"linux/vfio.h", "VFIO_GROUP_UNSET_CONTAINER", 0x3b69}, + {"linux/vfio.h", "VFIO_GROUP_GET_DEVICE_FD", 0x3b6a}, + {"linux/vfio.h", "VFIO_DEVICE_GET_INFO", 0x3b6b}, + {"linux/vfio.h", "VFIO_DEVICE_GET_REGION_INFO", 0x3b6c}, + {"linux/vfio.h", "VFIO_DEVICE_GET_IRQ_INFO", 0x3b6d}, + {"linux/vfio.h", "VFIO_DEVICE_SET_IRQS", 0x3b6e}, + {"linux/vfio.h", "VFIO_DEVICE_RESET", 0x3b6f}, + {"linux/vfio.h", "VFIO_IOMMU_GET_INFO", 0x3b70}, + {"linux/vfio.h", "VFIO_IOMMU_MAP_DMA", 0x3b71}, + {"linux/vfio.h", "VFIO_IOMMU_UNMAP_DMA", 0x3b72}, {"linux/ptp_clock.h", "PTP_CLOCK_GETCAPS", 0x3d01}, {"linux/ptp_clock.h", "PTP_EXTTS_REQUEST", 0x3d02}, {"linux/ptp_clock.h", "PTP_PEROUT_REQUEST", 0x3d03}, {"linux/ptp_clock.h", "PTP_ENABLE_PPS", 0x3d04}, + {"linux/ptp_clock.h", "PTP_SYS_OFFSET", 0x3d05}, {"linux/radeonfb.h", "FBIO_RADEON_GET_MIRROR", 0x4003}, {"linux/radeonfb.h", "FBIO_RADEON_SET_MIRROR", 0x4004}, {"linux/agpgart.h", "AGPIOC_INFO", 0x4100}, @@ -257,15 +272,14 @@ {"linux/cciss_ioctl.h", "CCISS_GETDRIVVER", 0x4209}, {"linux/cciss_ioctl.h", "CCISS_REVALIDVOLS", 0x420a}, {"linux/cciss_ioctl.h", "CCISS_PASSTHRU", 0x420b}, - {"linux/cciss_ioctl.h", "CCISS_PASSTHRU32", 0x420b}, {"linux/cciss_ioctl.h", "CCISS_DEREGDISK", 0x420c}, {"linux/cciss_ioctl.h", "CCISS_REGNEWDISK", 0x420d}, {"linux/cciss_ioctl.h", "CCISS_REGNEWD", 0x420e}, {"linux/cciss_ioctl.h", "CCISS_RESCANDISK", 0x4210}, {"linux/cciss_ioctl.h", "CCISS_GETLUNINFO", 0x4211}, {"linux/cciss_ioctl.h", "CCISS_BIG_PASSTHRU", 0x4212}, - {"linux/cciss_ioctl.h", "CCISS_BIG_PASSTHRU32", 0x4212}, {"linux/soundcard.h", "SNDCTL_COPR_RESET", 0x4300}, + {"sound/compress_offload.h", "SNDRV_COMPRESS_IOCTL_VERSION", 0x4300}, {"linux/capi.h", "CAPI_REGISTER", 0x4301}, {"linux/soundcard.h", "SNDCTL_COPR_LOAD", 0x4301}, {"linux/soundcard.h", "SNDCTL_COPR_RDATA", 0x4302}, @@ -280,14 +294,29 @@ {"linux/soundcard.h", "SNDCTL_COPR_SENDMSG", 0x4308}, {"linux/capi.h", "CAPI_GET_PROFILE", 0x4309}, {"linux/soundcard.h", "SNDCTL_COPR_RCVMSG", 0x4309}, + {"sound/compress_offload.h", "SNDRV_COMPRESS_GET_CAPS", 0x4310}, + {"sound/compress_offload.h", "SNDRV_COMPRESS_GET_CODEC_CAPS", 0x4311}, + {"sound/compress_offload.h", "SNDRV_COMPRESS_SET_PARAMS", 0x4312}, + {"sound/compress_offload.h", "SNDRV_COMPRESS_GET_PARAMS", 0x4313}, + {"sound/compress_offload.h", "SNDRV_COMPRESS_SET_METADATA", 0x4314}, + {"sound/compress_offload.h", "SNDRV_COMPRESS_GET_METADATA", 0x4315}, {"linux/capi.h", "CAPI_MANUFACTURER_CMD", 0x4320}, + {"sound/compress_offload.h", "SNDRV_COMPRESS_TSTAMP", 0x4320}, {"linux/capi.h", "CAPI_GET_ERRCODE", 0x4321}, + {"sound/compress_offload.h", "SNDRV_COMPRESS_AVAIL", 0x4321}, {"linux/capi.h", "CAPI_INSTALLED", 0x4322}, {"linux/capi.h", "CAPI_GET_FLAGS", 0x4323}, {"linux/capi.h", "CAPI_SET_FLAGS", 0x4324}, {"linux/capi.h", "CAPI_CLR_FLAGS", 0x4325}, {"linux/capi.h", "CAPI_NCCI_OPENCOUNT", 0x4326}, {"linux/capi.h", "CAPI_NCCI_GETUNIT", 0x4327}, + {"sound/compress_offload.h", "SNDRV_COMPRESS_PAUSE", 0x4330}, + {"sound/compress_offload.h", "SNDRV_COMPRESS_RESUME", 0x4331}, + {"sound/compress_offload.h", "SNDRV_COMPRESS_START", 0x4332}, + {"sound/compress_offload.h", "SNDRV_COMPRESS_STOP", 0x4333}, + {"sound/compress_offload.h", "SNDRV_COMPRESS_DRAIN", 0x4334}, + {"sound/compress_offload.h", "SNDRV_COMPRESS_NEXT_TRACK", 0x4335}, + {"sound/compress_offload.h", "SNDRV_COMPRESS_PARTIAL_DRAIN", 0x4336}, {"linux/input.h", "EVIOCGVERSION", 0x4501}, {"linux/input.h", "EVIOCGID", 0x4502}, {"linux/input.h", "EVIOCGREP", 0x4503}, @@ -299,6 +328,7 @@ {"linux/input.h", "EVIOCRMFF", 0x4581}, {"linux/input.h", "EVIOCGEFFECTS", 0x4584}, {"linux/input.h", "EVIOCGRAB", 0x4590}, + {"linux/input.h", "EVIOCSCLOCKID", 0x45a0}, {"linux/fb.h", "FBIOGET_VSCREENINFO", 0x4600}, {"video/da8xx-fb.h", "FBIOGET_CONTRAST", 0x4601}, {"linux/fb.h", "FBIOPUT_VSCREENINFO", 0x4601}, @@ -330,13 +360,9 @@ {"video/sstfb.h", "SSTFB_GET_VGAPASS", 0x46dd}, {"video/sstfb.h", "SSTFB_SET_VGAPASS", 0x46dd}, {"linux/gigaset_dev.h", "GIGASET_REDIR", 0x4700}, - {"linux/gsmmux.h", "GSMIOC_GETCONF", 0x4700}, {"linux/gigaset_dev.h", "GIGASET_CONFIG", 0x4701}, - {"linux/gsmmux.h", "GSMIOC_SETCONF", 0x4701}, {"linux/gigaset_dev.h", "GIGASET_BRKCHARS", 0x4702}, - {"linux/gsmmux.h", "GSMIOC_ENABLE_NET", 0x4702}, {"linux/gigaset_dev.h", "GIGASET_VERSION", 0x4703}, - {"linux/gsmmux.h", "GSMIOC_DISABLE_NET", 0x4703}, {"sound/asound.h", "SNDRV_HWDEP_IOCTL_PVERSION", 0x4800}, {"linux/hidraw.h", "HIDIOCGRDESCSIZE", 0x4801}, {"linux/hiddev.h", "HIDIOCGVERSION", 0x4801}, @@ -358,14 +384,11 @@ {"linux/hiddev.h", "HIDIOCGUCODE", 0x480d}, {"linux/hiddev.h", "HIDIOCGFLAG", 0x480e}, {"linux/hiddev.h", "HIDIOCSFLAG", 0x480f}, - {"sound/hda_hwdep.h", "HDA_IOCTL_PVERSION", 0x4810}, {"linux/hiddev.h", "HIDIOCGCOLLECTIONINDEX", 0x4810}, {"sound/emu10k1.h", "SNDRV_EMU10K1_IOCTL_INFO", 0x4810}, {"sound/sb16_csp.h", "SNDRV_SB_CSP_IOCTL_INFO", 0x4810}, - {"sound/hda_hwdep.h", "HDA_IOCTL_VERB_WRITE", 0x4811}, {"linux/hiddev.h", "HIDIOCGCOLLECTIONINFO", 0x4811}, {"sound/emu10k1.h", "SNDRV_EMU10K1_IOCTL_CODE_POKE", 0x4811}, - {"sound/hda_hwdep.h", "HDA_IOCTL_GET_WCAP", 0x4812}, {"sound/emu10k1.h", "SNDRV_EMU10K1_IOCTL_CODE_PEEK", 0x4812}, {"sound/sb16_csp.h", "SNDRV_SB_CSP_IOCTL_UNLOAD_CODE", 0x4812}, {"linux/hiddev.h", "HIDIOCGUSAGES", 0x4813}, @@ -429,7 +452,6 @@ {"net/bluetooth/hci.h", "HCIBLOCKADDR", 0x48e6}, {"net/bluetooth/hci.h", "HCIUNBLOCKADDR", 0x48e7}, {"net/bluetooth/hci.h", "HCIINQUIRY", 0x48f0}, - {"linux/hid-roccat.h", "ROCCATIOCGREPSIZE", 0x48f1}, {"linux/isdn.h", "IIOCNETAIF", 0x4901}, {"linux/isdn.h", "IIOCNETDIF", 0x4902}, {"linux/isdn.h", "IIOCNETSCF", 0x4903}, @@ -457,15 +479,6 @@ {"linux/isdn.h", "IIOCNETALN", 0x4920}, {"linux/isdn.h", "IIOCNETDLN", 0x4921}, {"linux/isdn.h", "IIOCNETGPN", 0x4922}, - {"linux/mISDNif.h", "IMADDTIMER", 0x4940}, - {"linux/mISDNif.h", "IMDELTIMER", 0x4941}, - {"linux/mISDNif.h", "IMGETVERSION", 0x4942}, - {"linux/mISDNif.h", "IMGETCOUNT", 0x4943}, - {"linux/mISDNif.h", "IMGETDEVINFO", 0x4944}, - {"linux/mISDNif.h", "IMCTRLREQ", 0x4945}, - {"linux/mISDNif.h", "IMCLEAR_L2", 0x4946}, - {"linux/mISDNif.h", "IMSETDEVNAME", 0x4947}, - {"linux/mISDNif.h", "IMHOLD_L1", 0x4948}, {"linux/isdn.h", "IIOCDBGVAR", 0x497f}, {"linux/isdn.h", "IIOCDRVCTL", 0x4980}, {"linux/kd.h", "KIOCSOUND", 0x4b2f}, @@ -525,23 +538,14 @@ {"linux/loop.h", "LOOP_CTL_ADD", 0x4c80}, {"linux/loop.h", "LOOP_CTL_REMOVE", 0x4c81}, {"linux/loop.h", "LOOP_CTL_GET_FREE", 0x4c82}, - {"linux/fsl-diu-fb.h", "MFB_GET_ALPHA", 0x4d00}, - {"linux/fsl-diu-fb.h", "MFB_SET_ALPHA", 0x4d00}, {"mtd/mtd-abi.h", "MEMGETINFO", 0x4d01}, - {"linux/fsl-diu-fb.h", "MFB_SET_CHROMA_KEY", 0x4d01}, {"mtd/mtd-abi.h", "MEMERASE", 0x4d02}, {"mtd/mtd-abi.h", "MEMWRITEOOB", 0x4d03}, - {"linux/fsl-diu-fb.h", "MFB_SET_BRIGHTNESS", 0x4d03}, {"mtd/mtd-abi.h", "MEMREADOOB", 0x4d04}, - {"linux/fsl-diu-fb.h", "MFB_GET_AOID", 0x4d04}, - {"linux/fsl-diu-fb.h", "MFB_SET_AOID", 0x4d04}, {"mtd/mtd-abi.h", "MEMLOCK", 0x4d05}, {"mtd/mtd-abi.h", "MEMUNLOCK", 0x4d06}, {"mtd/mtd-abi.h", "MEMGETREGIONCOUNT", 0x4d07}, {"mtd/mtd-abi.h", "MEMGETREGIONINFO", 0x4d08}, - {"linux/fsl-diu-fb.h", "MFB_GET_PIXFMT", 0x4d08}, - {"linux/fsl-diu-fb.h", "MFB_SET_PIXFMT", 0x4d08}, - {"mtd/mtd-abi.h", "MEMSETOOBSEL", 0x4d09}, {"mtd/mtd-abi.h", "MEMGETOOBSEL", 0x4d0a}, {"mtd/mtd-abi.h", "MEMGETBADBLOCK", 0x4d0b}, {"mtd/mtd-abi.h", "MEMSETBADBLOCK", 0x4d0c}, @@ -558,6 +562,7 @@ {"mtd/mtd-abi.h", "MEMISLOCKED", 0x4d17}, {"mtd/mtd-abi.h", "MEMWRITE", 0x4d18}, {"linux/soundcard.h", "SOUND_MIXER_INFO", 0x4d65}, + {"linux/soundcard.h", "SOUND_OLD_MIXER_INFO", 0x4d65}, {"linux/soundcard.h", "SOUND_MIXER_ACCESS", 0x4d66}, {"linux/soundcard.h", "SOUND_MIXER_AGC", 0x4d67}, {"linux/soundcard.h", "SOUND_MIXER_3DSE", 0x4d68}, @@ -737,21 +742,94 @@ {"sound/asound.h", "SNDRV_TIMER_IOCTL_PVERSION", 0x5400}, {"linux/soundcard.h", "SNDCTL_TMR_TIMEBASE", 0x5401}, {"sound/asound.h", "SNDRV_TIMER_IOCTL_NEXT_DEVICE", 0x5401}, + {"asm-generic/ioctls.h", "TCGETS", 0x5401}, {"linux/soundcard.h", "SNDCTL_TMR_START", 0x5402}, {"sound/asound.h", "SNDRV_TIMER_IOCTL_TREAD", 0x5402}, + {"asm-generic/ioctls.h", "TCSETS", 0x5402}, {"linux/soundcard.h", "SNDCTL_TMR_STOP", 0x5403}, {"sound/asound.h", "SNDRV_TIMER_IOCTL_GINFO", 0x5403}, + {"asm-generic/ioctls.h", "TCSETSW", 0x5403}, {"linux/soundcard.h", "SNDCTL_TMR_CONTINUE", 0x5404}, {"sound/asound.h", "SNDRV_TIMER_IOCTL_GPARAMS", 0x5404}, + {"asm-generic/ioctls.h", "TCSETSF", 0x5404}, {"linux/soundcard.h", "SNDCTL_TMR_TEMPO", 0x5405}, {"sound/asound.h", "SNDRV_TIMER_IOCTL_GSTATUS", 0x5405}, + {"asm-generic/ioctls.h", "TCGETA", 0x5405}, {"linux/soundcard.h", "SNDCTL_TMR_SOURCE", 0x5406}, + {"asm-generic/ioctls.h", "TCSETA", 0x5406}, {"linux/soundcard.h", "SNDCTL_TMR_METRONOME", 0x5407}, + {"asm-generic/ioctls.h", "TCSETAW", 0x5407}, {"linux/soundcard.h", "SNDCTL_TMR_SELECT", 0x5408}, + {"asm-generic/ioctls.h", "TCSETAF", 0x5408}, + {"asm-generic/ioctls.h", "TCSBRK", 0x5409}, + {"asm-generic/ioctls.h", "TCXONC", 0x540a}, + {"asm-generic/ioctls.h", "TCFLSH", 0x540b}, + {"asm-generic/ioctls.h", "TIOCEXCL", 0x540c}, + {"asm-generic/ioctls.h", "TIOCNXCL", 0x540d}, + {"asm-generic/ioctls.h", "TIOCSCTTY", 0x540e}, + {"asm-generic/ioctls.h", "TIOCGPGRP", 0x540f}, {"sound/asound.h", "SNDRV_TIMER_IOCTL_SELECT", 0x5410}, + {"asm-generic/ioctls.h", "TIOCSPGRP", 0x5410}, {"sound/asound.h", "SNDRV_TIMER_IOCTL_INFO", 0x5411}, + {"asm-generic/ioctls.h", "TIOCOUTQ", 0x5411}, {"sound/asound.h", "SNDRV_TIMER_IOCTL_PARAMS", 0x5412}, + {"asm-generic/ioctls.h", "TIOCSTI", 0x5412}, + {"asm-generic/ioctls.h", "TIOCGWINSZ", 0x5413}, {"sound/asound.h", "SNDRV_TIMER_IOCTL_STATUS", 0x5414}, + {"asm-generic/ioctls.h", "TIOCSWINSZ", 0x5414}, + {"asm-generic/ioctls.h", "TIOCMGET", 0x5415}, + {"asm-generic/ioctls.h", "TIOCMBIS", 0x5416}, + {"asm-generic/ioctls.h", "TIOCMBIC", 0x5417}, + {"asm-generic/ioctls.h", "TIOCMSET", 0x5418}, + {"asm-generic/ioctls.h", "TIOCGSOFTCAR", 0x5419}, + {"asm-generic/ioctls.h", "TIOCSSOFTCAR", 0x541a}, + {"asm-generic/ioctls.h", "FIONREAD", 0x541b}, + {"asm-generic/ioctls.h", "TIOCLINUX", 0x541c}, + {"asm-generic/ioctls.h", "TIOCCONS", 0x541d}, + {"asm-generic/ioctls.h", "TIOCGSERIAL", 0x541e}, + {"asm-generic/ioctls.h", "TIOCSSERIAL", 0x541f}, + {"asm-generic/ioctls.h", "TIOCPKT", 0x5420}, + {"asm-generic/ioctls.h", "FIONBIO", 0x5421}, + {"asm-generic/ioctls.h", "TIOCNOTTY", 0x5422}, + {"asm-generic/ioctls.h", "TIOCSETD", 0x5423}, + {"asm-generic/ioctls.h", "TIOCGETD", 0x5424}, + {"asm-generic/ioctls.h", "TCSBRKP", 0x5425}, + {"asm-generic/ioctls.h", "TIOCSBRK", 0x5427}, + {"asm-generic/ioctls.h", "TIOCCBRK", 0x5428}, + {"asm-generic/ioctls.h", "TIOCGSID", 0x5429}, + {"asm-generic/ioctls.h", "TCGETS2", 0x542a}, + {"asm-generic/ioctls.h", "TCSETS2", 0x542b}, + {"asm-generic/ioctls.h", "TCSETSW2", 0x542c}, + {"asm-generic/ioctls.h", "TCSETSF2", 0x542d}, + {"asm-generic/ioctls.h", "TIOCGRS485", 0x542e}, + {"asm-generic/ioctls.h", "TIOCSRS485", 0x542f}, + {"asm-generic/ioctls.h", "TIOCGPTN", 0x5430}, + {"asm-generic/ioctls.h", "TIOCSPTLCK", 0x5431}, + {"asm-generic/ioctls.h", "TCGETX", 0x5432}, + {"asm-generic/ioctls.h", "TIOCGDEV", 0x5432}, + {"asm-generic/ioctls.h", "TCSETX", 0x5433}, + {"asm-generic/ioctls.h", "TCSETXF", 0x5434}, + {"asm-generic/ioctls.h", "TCSETXW", 0x5435}, + {"asm-generic/ioctls.h", "TIOCSIG", 0x5436}, + {"asm-generic/ioctls.h", "TIOCVHANGUP", 0x5437}, + {"asm-generic/ioctls.h", "TIOCGPKT", 0x5438}, + {"asm-generic/ioctls.h", "TIOCGPTLCK", 0x5439}, + {"asm-generic/ioctls.h", "TIOCGEXCL", 0x5440}, + {"asm-generic/ioctls.h", "FIONCLEX", 0x5450}, + {"asm-generic/ioctls.h", "FIOCLEX", 0x5451}, + {"asm-generic/ioctls.h", "FIOASYNC", 0x5452}, + {"asm-generic/ioctls.h", "TIOCSERCONFIG", 0x5453}, + {"asm-generic/ioctls.h", "TIOCSERGWILD", 0x5454}, + {"asm-generic/ioctls.h", "TIOCSERSWILD", 0x5455}, + {"asm-generic/ioctls.h", "TIOCGLCKTRMIOS", 0x5456}, + {"asm-generic/ioctls.h", "TIOCSLCKTRMIOS", 0x5457}, + {"asm-generic/ioctls.h", "TIOCSERGSTRUCT", 0x5458}, + {"asm-generic/ioctls.h", "TIOCSERGETLSR", 0x5459}, + {"asm-generic/ioctls.h", "TIOCSERGETMULTI", 0x545a}, + {"asm-generic/ioctls.h", "TIOCSERSETMULTI", 0x545b}, + {"asm-generic/ioctls.h", "TIOCMIWAIT", 0x545c}, + {"asm-generic/ioctls.h", "TIOCGICOUNT", 0x545d}, + {"asm-generic/ioctls.h", "FIOQSIZE", 0x5460}, {"sound/asound.h", "SNDRV_TIMER_IOCTL_START", 0x54a0}, {"sound/asound.h", "SNDRV_TIMER_IOCTL_STOP", 0x54a1}, {"sound/asound.h", "SNDRV_TIMER_IOCTL_CONTINUE", 0x54a2}, @@ -773,6 +851,7 @@ {"linux/if_tun.h", "TUNDETACHFILTER", 0x54d6}, {"linux/if_tun.h", "TUNGETVNETHDRSZ", 0x54d7}, {"linux/if_tun.h", "TUNSETVNETHDRSZ", 0x54d8}, + {"linux/if_tun.h", "TUNSETQUEUE", 0x54d9}, {"sound/asound.h", "SNDRV_CTL_IOCTL_PVERSION", 0x5500}, {"linux/usbdevice_fs.h", "USBDEVFS_CONTROL", 0x5500}, {"linux/usbdevice_fs.h", "USBDEVFS_CONTROL32", 0x5500}, @@ -817,7 +896,9 @@ {"sound/asound.h", "SNDRV_CTL_IOCTL_ELEM_REMOVE", 0x5519}, {"linux/usbdevice_fs.h", "USBDEVFS_RELEASE_PORT", 0x5519}, {"sound/asound.h", "SNDRV_CTL_IOCTL_TLV_READ", 0x551a}, + {"linux/usbdevice_fs.h", "USBDEVFS_GET_CAPABILITIES", 0x551a}, {"sound/asound.h", "SNDRV_CTL_IOCTL_TLV_WRITE", 0x551b}, + {"linux/usbdevice_fs.h", "USBDEVFS_DISCONNECT_CLAIM", 0x551b}, {"sound/asound.h", "SNDRV_CTL_IOCTL_TLV_COMMAND", 0x551c}, {"sound/asound.h", "SNDRV_CTL_IOCTL_HWDEP_NEXT_DEVICE", 0x5520}, {"sound/asound.h", "SNDRV_CTL_IOCTL_HWDEP_INFO", 0x5521}, @@ -852,7 +933,9 @@ {"linux/vt.h", "VT_SETMODE", 0x5602}, {"linux/vt.h", "VT_GETSTATE", 0x5603}, {"linux/videodev2.h", "VIDIOC_G_FMT", 0x5604}, + {"linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FMT", 0x5604}, {"linux/vt.h", "VT_SENDSIG", 0x5604}, + {"linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FMT", 0x5605}, {"linux/videodev2.h", "VIDIOC_S_FMT", 0x5605}, {"linux/vt.h", "VT_RELDISP", 0x5605}, {"linux/vt.h", "VT_ACTIVATE", 0x5606}, @@ -871,6 +954,7 @@ {"linux/vt.h", "VT_WAITEVENT", 0x560e}, {"linux/videodev2.h", "VIDIOC_QBUF", 0x560f}, {"linux/vt.h", "VT_SETACTIVATE", 0x560f}, + {"linux/videodev2.h", "VIDIOC_EXPBUF", 0x5610}, {"linux/videodev2.h", "VIDIOC_DQBUF", 0x5611}, {"linux/videodev2.h", "VIDIOC_STREAMON", 0x5612}, {"linux/videodev2.h", "VIDIOC_STREAMOFF", 0x5613}, @@ -890,6 +974,8 @@ {"linux/videodev2.h", "VIDIOC_QUERYMENU", 0x5625}, {"linux/videodev2.h", "VIDIOC_G_INPUT", 0x5626}, {"linux/videodev2.h", "VIDIOC_S_INPUT", 0x5627}, + {"linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_EDID", 0x5628}, + {"linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_EDID", 0x5629}, {"linux/videodev2.h", "VIDIOC_G_OUTPUT", 0x562e}, {"linux/videodev2.h", "VIDIOC_S_OUTPUT", 0x562f}, {"linux/videodev2.h", "VIDIOC_ENUMOUTPUT", 0x5630}, @@ -901,6 +987,8 @@ {"linux/videodev2.h", "VIDIOC_S_FREQUENCY", 0x5639}, {"linux/videodev2.h", "VIDIOC_CROPCAP", 0x563a}, {"linux/videodev2.h", "VIDIOC_G_CROP", 0x563b}, + {"linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_CROP", 0x563b}, + {"linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_CROP", 0x563c}, {"linux/videodev2.h", "VIDIOC_S_CROP", 0x563c}, {"linux/videodev2.h", "VIDIOC_G_JPEGCOMP", 0x563d}, {"linux/videodev2.h", "VIDIOC_S_JPEGCOMP", 0x563e}, @@ -935,10 +1023,18 @@ {"linux/videodev2.h", "VIDIOC_UNSUBSCRIBE_EVENT", 0x565b}, {"linux/videodev2.h", "VIDIOC_CREATE_BUFS", 0x565c}, {"linux/videodev2.h", "VIDIOC_PREPARE_BUF", 0x565d}, + {"linux/videodev2.h", "VIDIOC_G_SELECTION", 0x565e}, + {"linux/videodev2.h", "VIDIOC_S_SELECTION", 0x565f}, + {"linux/videodev2.h", "VIDIOC_DECODER_CMD", 0x5660}, + {"linux/videodev2.h", "VIDIOC_TRY_DECODER_CMD", 0x5661}, + {"linux/videodev2.h", "VIDIOC_ENUM_DV_TIMINGS", 0x5662}, + {"linux/videodev2.h", "VIDIOC_QUERY_DV_TIMINGS", 0x5663}, + {"linux/videodev2.h", "VIDIOC_DV_TIMINGS_CAP", 0x5664}, + {"linux/videodev2.h", "VIDIOC_ENUM_FREQ_BANDS", 0x5665}, {"linux/ivtvfb.h", "IVTVFB_IOC_DMA_FRAME", 0x56c0}, {"linux/ivtv.h", "IVTV_IOC_DMA_FRAME", 0x56c0}, {"media/si4713.h", "SI4713_IOC_MEASURE_RNL", 0x56c0}, - {"media/davinci/vpfe_capture.h", "VPFE_CMD_S_CCDC_RAW_PARAMS", 0x56c1}, + {"linux/ivtv.h", "IVTV_IOC_PASSTHROUGH_MODE", 0x56c1}, {"sound/asound.h", "SNDRV_RAWMIDI_IOCTL_PVERSION", 0x5700}, {"linux/watchdog.h", "WDIOC_GETSUPPORT", 0x5700}, {"sound/asound.h", "SNDRV_RAWMIDI_IOCTL_INFO", 0x5701}, @@ -957,8 +1053,6 @@ {"sound/asound.h", "SNDRV_RAWMIDI_IOCTL_DROP", 0x5730}, {"sound/asound.h", "SNDRV_RAWMIDI_IOCTL_DRAIN", 0x5731}, {"linux/pktcdvd.h", "PACKET_CTRL_CMD", 0x5801}, - {"linux/falloc.h", "FS_IOC_RESVSP", 0x5828}, - {"linux/falloc.h", "FS_IOC_RESVSP64", 0x582a}, {"linux/fs.h", "FIFREEZE", 0x5877}, {"linux/fs.h", "FITHAW", 0x5878}, {"linux/fs.h", "FITRIM", 0x5879}, @@ -1047,12 +1141,6 @@ {"linux/chio.h", "CHIOINITELEM", 0x6311}, {"linux/chio.h", "CHIOSVOLTAG", 0x6312}, {"linux/chio.h", "CHIOGVPARAMS", 0x6313}, - {"linux/comstats.h", "COM_GETPORTSTATS", 0x631e}, - {"linux/comstats.h", "COM_CLRPORTSTATS", 0x631f}, - {"linux/comstats.h", "COM_GETBRDSTATS", 0x6320}, - {"linux/comstats.h", "COM_READPORT", 0x6328}, - {"linux/comstats.h", "COM_READBOARD", 0x6329}, - {"linux/comstats.h", "COM_READPANEL", 0x632a}, {"linux/cm4000_cs.h", "CM_IOSDBGLVL", 0x63fa}, {"media/v4l2-common.h", "TUNER_SET_CONFIG", 0x645c}, {"media/v4l2-common.h", "VIDIOC_INT_RESET", 0x6466}, @@ -1061,22 +1149,7 @@ {"linux/fs.h", "FS_IOC_GETFLAGS", 0x6601}, {"linux/fs.h", "FS_IOC32_SETFLAGS", 0x6602}, {"linux/fs.h", "FS_IOC_SETFLAGS", 0x6602}, - {"linux/ext3_fs.h", "EXT3_IOC32_GETVERSION", 0x6603}, - {"linux/ext3_fs.h", "EXT3_IOC_GETVERSION", 0x6603}, - {"linux/ext3_fs.h", "EXT3_IOC32_SETVERSION", 0x6604}, - {"linux/ext3_fs.h", "EXT3_IOC_SETVERSION", 0x6604}, - {"linux/ext2_fs.h", "EXT2_IOC_GETRSVSZ", 0x6605}, - {"linux/ext3_fs.h", "EXT3_IOC32_GETRSVSZ", 0x6605}, - {"linux/ext3_fs.h", "EXT3_IOC_GETRSVSZ", 0x6605}, - {"linux/ext2_fs.h", "EXT2_IOC_SETRSVSZ", 0x6606}, - {"linux/ext3_fs.h", "EXT3_IOC32_SETRSVSZ", 0x6606}, - {"linux/ext3_fs.h", "EXT3_IOC_SETRSVSZ", 0x6606}, - {"linux/ext3_fs.h", "EXT3_IOC32_GROUP_EXTEND", 0x6607}, - {"linux/ext3_fs.h", "EXT3_IOC_GROUP_EXTEND", 0x6607}, - {"linux/ext3_fs.h", "EXT3_IOC_GROUP_ADD", 0x6608}, {"linux/fs.h", "FS_IOC_FIEMAP", 0x660b}, - {"linux/ext3_fs.h", "EXT3_IOC32_WAIT_FOR_READONLY", 0x6663}, - {"linux/ext3_fs.h", "EXT3_IOC_WAIT_FOR_READONLY", 0x6663}, {"linux/usb/functionfs.h", "FUNCTIONFS_FIFO_STATUS", 0x6701}, {"linux/usb/gadgetfs.h", "GADGETFS_FIFO_STATUS", 0x6701}, {"linux/usb/functionfs.h", "FUNCTIONFS_FIFO_FLUSH", 0x6702}, @@ -1194,18 +1267,14 @@ {"linux/udf_fs_i.h", "UDF_GETVOLIDENT", 0x6c42}, {"linux/udf_fs_i.h", "UDF_RELOCATE_BLOCKS", 0x6c43}, {"linux/synclink.h", "MGSL_IOCSPARAMS", 0x6d00}, - {"linux/synclink.h", "MGSL_IOCSPARAMS32", 0x6d00}, {"linux/mmtimer.h", "MMTIMER_GETOFFSET", 0x6d00}, {"linux/soundcard.h", "SNDCTL_MIDI_PRETIME", 0x6d00}, {"linux/synclink.h", "MGSL_IOCGPARAMS", 0x6d01}, - {"linux/synclink.h", "MGSL_IOCGPARAMS32", 0x6d01}, {"linux/mmtimer.h", "MMTIMER_GETRES", 0x6d01}, - {"linux/msm_mdp.h", "MSMFB_GRP_DISP", 0x6d01}, {"linux/mtio.h", "MTIOCTOP", 0x6d01}, {"linux/soundcard.h", "SNDCTL_MIDI_MPUMODE", 0x6d01}, {"linux/synclink.h", "MGSL_IOCSTXIDLE", 0x6d02}, {"linux/mmtimer.h", "MMTIMER_GETFREQ", 0x6d02}, - {"linux/msm_mdp.h", "MSMFB_BLIT", 0x6d02}, {"linux/mtio.h", "MTIOCGET", 0x6d02}, {"linux/soundcard.h", "SNDCTL_MIDI_MPUCMD", 0x6d02}, {"linux/synclink.h", "MGSL_IOCGTXIDLE", 0x6d03}, @@ -1387,6 +1456,8 @@ {"linux/rtc.h", "RTC_WKALM_RD", 0x7010}, {"linux/rtc.h", "RTC_PLL_GET", 0x7011}, {"linux/rtc.h", "RTC_PLL_SET", 0x7012}, + {"linux/rtc.h", "RTC_VL_READ", 0x7013}, + {"linux/rtc.h", "RTC_VL_CLR", 0x7014}, {"linux/nvram.h", "NVRAM_INIT", 0x7040}, {"linux/nvram.h", "NVRAM_SETCKS", 0x7041}, {"linux/ppdev.h", "PPSETMODE", 0x7080}, @@ -1511,42 +1582,36 @@ {"linux/msdos_fs.h", "VFAT_IOCTL_READDIR_SHORT", 0x7202}, {"linux/msdos_fs.h", "FAT_IOCTL_GET_ATTRIBUTES", 0x7210}, {"linux/msdos_fs.h", "FAT_IOCTL_SET_ATTRIBUTES", 0x7211}, - {"linux/cdk.h", "STL_BINTR", 0x7314}, - {"linux/cdk.h", "STL_BSTART", 0x7315}, - {"linux/cdk.h", "STL_BSTOP", 0x7316}, - {"linux/cdk.h", "STL_BRESET", 0x7317}, - {"linux/cdk.h", "STL_GETPFLAG", 0x7350}, - {"linux/cdk.h", "STL_SETPFLAG", 0x7351}, - {"linux/if_ppp.h", "PPPIOCGL2TPSTATS", 0x7436}, - {"linux/if_ppp.h", "PPPIOCGCHAN", 0x7437}, - {"linux/if_ppp.h", "PPPIOCATTCHAN", 0x7438}, - {"linux/if_ppp.h", "PPPIOCDISCONN", 0x7439}, - {"linux/if_ppp.h", "PPPIOCCONNECT", 0x743a}, - {"linux/if_ppp.h", "PPPIOCSMRRU", 0x743b}, - {"linux/if_ppp.h", "PPPIOCDETACH", 0x743c}, - {"linux/if_ppp.h", "PPPIOCATTACH", 0x743d}, - {"linux/if_ppp.h", "PPPIOCNEWUNIT", 0x743e}, - {"linux/if_ppp.h", "PPPIOCGIDLE", 0x743f}, - {"linux/if_ppp.h", "PPPIOCSDEBUG", 0x7440}, - {"linux/if_ppp.h", "PPPIOCGDEBUG", 0x7441}, - {"linux/if_ppp.h", "PPPIOCSACTIVE", 0x7446}, - {"linux/if_ppp.h", "PPPIOCSPASS", 0x7447}, - {"linux/if_ppp.h", "PPPIOCSNPMODE", 0x744b}, - {"linux/if_ppp.h", "PPPIOCGNPMODE", 0x744c}, - {"linux/if_ppp.h", "PPPIOCSCOMPRESS", 0x744d}, - {"linux/if_ppp.h", "PPPIOCXFERUNIT", 0x744e}, - {"linux/if_ppp.h", "PPPIOCSXASYNCMAP", 0x744f}, - {"linux/if_ppp.h", "PPPIOCGXASYNCMAP", 0x7450}, - {"linux/if_ppp.h", "PPPIOCSMAXCID", 0x7451}, - {"linux/if_ppp.h", "PPPIOCSMRU", 0x7452}, - {"linux/if_ppp.h", "PPPIOCGMRU", 0x7453}, - {"linux/if_ppp.h", "PPPIOCSRASYNCMAP", 0x7454}, - {"linux/if_ppp.h", "PPPIOCGRASYNCMAP", 0x7455}, - {"linux/if_ppp.h", "PPPIOCGUNIT", 0x7456}, - {"linux/if_ppp.h", "PPPIOCSASYNCMAP", 0x7457}, - {"linux/if_ppp.h", "PPPIOCGASYNCMAP", 0x7458}, - {"linux/if_ppp.h", "PPPIOCSFLAGS", 0x7459}, - {"linux/if_ppp.h", "PPPIOCGFLAGS", 0x745a}, + {"linux/ppp-ioctl.h", "PPPIOCGL2TPSTATS", 0x7436}, + {"linux/ppp-ioctl.h", "PPPIOCGCHAN", 0x7437}, + {"linux/ppp-ioctl.h", "PPPIOCATTCHAN", 0x7438}, + {"linux/ppp-ioctl.h", "PPPIOCDISCONN", 0x7439}, + {"linux/ppp-ioctl.h", "PPPIOCCONNECT", 0x743a}, + {"linux/ppp-ioctl.h", "PPPIOCSMRRU", 0x743b}, + {"linux/ppp-ioctl.h", "PPPIOCDETACH", 0x743c}, + {"linux/ppp-ioctl.h", "PPPIOCATTACH", 0x743d}, + {"linux/ppp-ioctl.h", "PPPIOCNEWUNIT", 0x743e}, + {"linux/ppp-ioctl.h", "PPPIOCGIDLE", 0x743f}, + {"linux/ppp-ioctl.h", "PPPIOCSDEBUG", 0x7440}, + {"linux/ppp-ioctl.h", "PPPIOCGDEBUG", 0x7441}, + {"linux/ppp-ioctl.h", "PPPIOCSACTIVE", 0x7446}, + {"linux/ppp-ioctl.h", "PPPIOCSPASS", 0x7447}, + {"linux/ppp-ioctl.h", "PPPIOCSNPMODE", 0x744b}, + {"linux/ppp-ioctl.h", "PPPIOCGNPMODE", 0x744c}, + {"linux/ppp-ioctl.h", "PPPIOCSCOMPRESS", 0x744d}, + {"linux/ppp-ioctl.h", "PPPIOCXFERUNIT", 0x744e}, + {"linux/ppp-ioctl.h", "PPPIOCSXASYNCMAP", 0x744f}, + {"linux/ppp-ioctl.h", "PPPIOCGXASYNCMAP", 0x7450}, + {"linux/ppp-ioctl.h", "PPPIOCSMAXCID", 0x7451}, + {"linux/ppp-ioctl.h", "PPPIOCSMRU", 0x7452}, + {"linux/ppp-ioctl.h", "PPPIOCGMRU", 0x7453}, + {"linux/ppp-ioctl.h", "PPPIOCSRASYNCMAP", 0x7454}, + {"linux/ppp-ioctl.h", "PPPIOCGRASYNCMAP", 0x7455}, + {"linux/ppp-ioctl.h", "PPPIOCGUNIT", 0x7456}, + {"linux/ppp-ioctl.h", "PPPIOCSASYNCMAP", 0x7457}, + {"linux/ppp-ioctl.h", "PPPIOCGASYNCMAP", 0x7458}, + {"linux/ppp-ioctl.h", "PPPIOCSFLAGS", 0x7459}, + {"linux/ppp-ioctl.h", "PPPIOCGFLAGS", 0x745a}, {"linux/isdn_ppp.h", "PPPIOCGCALLINFO", 0x7480}, {"linux/isdn_ppp.h", "PPPIOCBUNDLE", 0x7481}, {"linux/isdn_ppp.h", "PPPIOCGMPFLAGS", 0x7482}, @@ -1578,47 +1643,22 @@ {"linux/sonypi.h", "SONYPI_IOCSFAN", 0x760b}, {"linux/sonypi.h", "SONYPI_IOCGTEMP", 0x760c}, {"linux/meye.h", "MEYEIOC_G_PARAMS", 0x76c0}, - {"media/pwc-ioctl.h", "VIDIOCPWCRUSER", 0x76c0}, {"linux/meye.h", "MEYEIOC_S_PARAMS", 0x76c1}, - {"media/pwc-ioctl.h", "VIDIOCPWCSUSER", 0x76c1}, {"linux/meye.h", "MEYEIOC_QBUF_CAPT", 0x76c2}, - {"media/pwc-ioctl.h", "VIDIOCPWCFACTORY", 0x76c2}, {"linux/meye.h", "MEYEIOC_SYNC", 0x76c3}, - {"media/pwc-ioctl.h", "VIDIOCPWCGCQUAL", 0x76c3}, - {"media/pwc-ioctl.h", "VIDIOCPWCSCQUAL", 0x76c3}, {"linux/meye.h", "MEYEIOC_STILLCAPT", 0x76c4}, {"linux/meye.h", "MEYEIOC_STILLJCAPT", 0x76c5}, - {"media/pwc-ioctl.h", "VIDIOCPWCGSERIAL", 0x76c6}, - {"media/pwc-ioctl.h", "VIDIOCPWCPROBE", 0x76c7}, - {"media/pwc-ioctl.h", "VIDIOCPWCGAGC", 0x76c8}, - {"media/pwc-ioctl.h", "VIDIOCPWCSAGC", 0x76c8}, - {"media/pwc-ioctl.h", "VIDIOCPWCSSHUTTER", 0x76c9}, - {"media/pwc-ioctl.h", "VIDIOCPWCGAWB", 0x76ca}, - {"media/pwc-ioctl.h", "VIDIOCPWCSAWB", 0x76ca}, - {"media/pwc-ioctl.h", "VIDIOCPWCGAWBSPEED", 0x76cb}, - {"media/pwc-ioctl.h", "VIDIOCPWCSAWBSPEED", 0x76cb}, - {"media/pwc-ioctl.h", "VIDIOCPWCGLED", 0x76cd}, - {"media/pwc-ioctl.h", "VIDIOCPWCSLED", 0x76cd}, - {"media/pwc-ioctl.h", "VIDIOCPWCGCONTOUR", 0x76ce}, - {"media/pwc-ioctl.h", "VIDIOCPWCSCONTOUR", 0x76ce}, - {"media/pwc-ioctl.h", "VIDIOCPWCGBACKLIGHT", 0x76cf}, - {"media/pwc-ioctl.h", "VIDIOCPWCSBACKLIGHT", 0x76cf}, - {"media/pwc-ioctl.h", "VIDIOCPWCGFLICKER", 0x76d0}, - {"media/pwc-ioctl.h", "VIDIOCPWCSFLICKER", 0x76d0}, - {"media/pwc-ioctl.h", "VIDIOCPWCGDYNNOISE", 0x76d1}, - {"media/pwc-ioctl.h", "VIDIOCPWCSDYNNOISE", 0x76d1}, - {"media/pwc-ioctl.h", "VIDIOCPWCGREALSIZE", 0x76d2}, - {"media/pwc-ioctl.h", "VIDIOCPWCMPTGRANGE", 0x76d3}, - {"media/pwc-ioctl.h", "VIDIOCPWCMPTRESET", 0x76d3}, - {"media/pwc-ioctl.h", "VIDIOCPWCMPTGANGLE", 0x76d4}, - {"media/pwc-ioctl.h", "VIDIOCPWCMPTSANGLE", 0x76d4}, - {"media/pwc-ioctl.h", "VIDIOCPWCMPTSTATUS", 0x76d5}, - {"media/pwc-ioctl.h", "VIDIOCPWCGVIDCMD", 0x76d7}, - {"media/pwc-ioctl.h", "VIDIOCPWCGVIDTABLE", 0x76d8}, {"linux/media.h", "MEDIA_IOC_DEVICE_INFO", 0x7c00}, {"linux/media.h", "MEDIA_IOC_ENUM_ENTITIES", 0x7c01}, {"linux/media.h", "MEDIA_IOC_ENUM_LINKS", 0x7c02}, {"linux/media.h", "MEDIA_IOC_SETUP_LINK", 0x7c03}, + {"asm-generic/sockios.h", "FIOSETOWN", 0x8901}, + {"asm-generic/sockios.h", "SIOCSPGRP", 0x8902}, + {"asm-generic/sockios.h", "FIOGETOWN", 0x8903}, + {"asm-generic/sockios.h", "SIOCGPGRP", 0x8904}, + {"asm-generic/sockios.h", "SIOCATMARK", 0x8905}, + {"asm-generic/sockios.h", "SIOCGSTAMP", 0x8906}, + {"asm-generic/sockios.h", "SIOCGSTAMPNS", 0x8907}, {"linux/sockios.h", "SIOCADDRT", 0x890b}, {"linux/sockios.h", "SIOCDELRT", 0x890c}, {"linux/sockios.h", "SIOCRTMSG", 0x890d}, @@ -1759,6 +1799,52 @@ {"linux/auto_fs4.h", "AUTOFS_IOC_EXPIRE_MULTI", 0x9366}, {"linux/auto_fs4.h", "AUTOFS_IOC_PROTOSUBVER", 0x9367}, {"linux/auto_fs4.h", "AUTOFS_IOC_ASKUMOUNT", 0x9370}, + {"linux/btrfs.h", "BTRFS_IOC_SNAP_CREATE", 0x9401}, + {"linux/btrfs.h", "BTRFS_IOC_DEFRAG", 0x9402}, + {"linux/btrfs.h", "BTRFS_IOC_RESIZE", 0x9403}, + {"linux/btrfs.h", "BTRFS_IOC_SCAN_DEV", 0x9404}, + {"linux/btrfs.h", "BTRFS_IOC_TRANS_START", 0x9406}, + {"linux/btrfs.h", "BTRFS_IOC_TRANS_END", 0x9407}, + {"linux/btrfs.h", "BTRFS_IOC_SYNC", 0x9408}, + {"linux/btrfs.h", "BTRFS_IOC_CLONE", 0x9409}, + {"linux/btrfs.h", "BTRFS_IOC_ADD_DEV", 0x940a}, + {"linux/btrfs.h", "BTRFS_IOC_RM_DEV", 0x940b}, + {"linux/btrfs.h", "BTRFS_IOC_BALANCE", 0x940c}, + {"linux/btrfs.h", "BTRFS_IOC_CLONE_RANGE", 0x940d}, + {"linux/btrfs.h", "BTRFS_IOC_SUBVOL_CREATE", 0x940e}, + {"linux/btrfs.h", "BTRFS_IOC_SNAP_DESTROY", 0x940f}, + {"linux/btrfs.h", "BTRFS_IOC_DEFRAG_RANGE", 0x9410}, + {"linux/btrfs.h", "BTRFS_IOC_TREE_SEARCH", 0x9411}, + {"linux/btrfs.h", "BTRFS_IOC_INO_LOOKUP", 0x9412}, + {"linux/btrfs.h", "BTRFS_IOC_DEFAULT_SUBVOL", 0x9413}, + {"linux/btrfs.h", "BTRFS_IOC_SPACE_INFO", 0x9414}, + {"linux/btrfs.h", "BTRFS_IOC_WAIT_SYNC", 0x9416}, + {"linux/btrfs.h", "BTRFS_IOC_SNAP_CREATE_V2", 0x9417}, + {"linux/btrfs.h", "BTRFS_IOC_START_SYNC", 0x9418}, + {"linux/btrfs.h", "BTRFS_IOC_SUBVOL_CREATE_V2", 0x9418}, + {"linux/btrfs.h", "BTRFS_IOC_SUBVOL_GETFLAGS", 0x9419}, + {"linux/btrfs.h", "BTRFS_IOC_SUBVOL_SETFLAGS", 0x941a}, + {"linux/btrfs.h", "BTRFS_IOC_SCRUB", 0x941b}, + {"linux/btrfs.h", "BTRFS_IOC_SCRUB_CANCEL", 0x941c}, + {"linux/btrfs.h", "BTRFS_IOC_SCRUB_PROGRESS", 0x941d}, + {"linux/btrfs.h", "BTRFS_IOC_DEV_INFO", 0x941e}, + {"linux/btrfs.h", "BTRFS_IOC_FS_INFO", 0x941f}, + {"linux/btrfs.h", "BTRFS_IOC_BALANCE_V2", 0x9420}, + {"linux/btrfs.h", "BTRFS_IOC_BALANCE_CTL", 0x9421}, + {"linux/btrfs.h", "BTRFS_IOC_BALANCE_PROGRESS", 0x9422}, + {"linux/btrfs.h", "BTRFS_IOC_INO_PATHS", 0x9423}, + {"linux/btrfs.h", "BTRFS_IOC_LOGICAL_INO", 0x9424}, + {"linux/btrfs.h", "BTRFS_IOC_SET_RECEIVED_SUBVOL", 0x9425}, + {"linux/btrfs.h", "BTRFS_IOC_SEND", 0x9426}, + {"linux/btrfs.h", "BTRFS_IOC_DEVICES_READY", 0x9427}, + {"linux/btrfs.h", "BTRFS_IOC_QUOTA_CTL", 0x9428}, + {"linux/btrfs.h", "BTRFS_IOC_QGROUP_ASSIGN", 0x9429}, + {"linux/btrfs.h", "BTRFS_IOC_QGROUP_CREATE", 0x942a}, + {"linux/btrfs.h", "BTRFS_IOC_QGROUP_LIMIT", 0x942b}, + {"linux/btrfs.h", "BTRFS_IOC_GET_FSLABEL", 0x9431}, + {"linux/btrfs.h", "BTRFS_IOC_SET_FSLABEL", 0x9432}, + {"linux/btrfs.h", "BTRFS_IOC_GET_DEV_STATS", 0x9434}, + {"linux/btrfs.h", "BTRFS_IOC_DEV_REPLACE", 0x9435}, {"linux/nbd.h", "NBD_SET_SOCK", 0xab00}, {"linux/nbd.h", "NBD_SET_BLKSIZE", 0xab01}, {"linux/nbd.h", "NBD_SET_SIZE", 0xab02}, @@ -1769,6 +1855,7 @@ {"linux/nbd.h", "NBD_SET_SIZE_BLOCKS", 0xab07}, {"linux/nbd.h", "NBD_DISCONNECT", 0xab08}, {"linux/nbd.h", "NBD_SET_TIMEOUT", 0xab09}, + {"linux/nbd.h", "NBD_SET_FLAGS", 0xab0a}, {"linux/raw.h", "RAW_SETBIND", 0xac00}, {"linux/raw.h", "RAW_GETBIND", 0xac01}, {"linux/kvm.h", "KVM_GET_API_VERSION", 0xae00}, @@ -1787,6 +1874,9 @@ {"linux/kvm.h", "KVM_SET_USER_MEMORY_REGION", 0xae46}, {"linux/kvm.h", "KVM_SET_TSS_ADDR", 0xae47}, {"linux/kvm.h", "KVM_SET_IDENTITY_MAP_ADDR", 0xae48}, + {"linux/kvm.h", "KVM_S390_UCAS_MAP", 0xae50}, + {"linux/kvm.h", "KVM_S390_UCAS_UNMAP", 0xae51}, + {"linux/kvm.h", "KVM_S390_VCPU_FAULT", 0xae52}, {"linux/kvm.h", "KVM_CREATE_IRQCHIP", 0xae60}, {"linux/kvm.h", "KVM_IRQ_LINE", 0xae61}, {"linux/kvm.h", "KVM_GET_IRQCHIP", 0xae62}, @@ -1852,12 +1942,24 @@ {"linux/kvm.h", "KVM_SET_TSC_KHZ", 0xaea2}, {"linux/kvm.h", "KVM_ENABLE_CAP", 0xaea3}, {"linux/kvm.h", "KVM_GET_TSC_KHZ", 0xaea3}, + {"linux/kvm.h", "KVM_ASSIGN_SET_INTX_MASK", 0xaea4}, {"linux/kvm.h", "KVM_GET_XSAVE", 0xaea4}, {"linux/kvm.h", "KVM_SET_XSAVE", 0xaea5}, + {"linux/kvm.h", "KVM_SIGNAL_MSI", 0xaea5}, {"linux/kvm.h", "KVM_GET_XCRS", 0xaea6}, + {"linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", 0xaea6}, + {"linux/kvm.h", "KVM_PPC_ALLOCATE_HTAB", 0xaea7}, {"linux/kvm.h", "KVM_SET_XCRS", 0xaea7}, {"linux/kvm.h", "KVM_CREATE_SPAPR_TCE", 0xaea8}, {"linux/kvm.h", "KVM_ALLOCATE_RMA", 0xaea9}, + {"linux/kvm.h", "KVM_DIRTY_TLB", 0xaeaa}, + {"linux/kvm.h", "KVM_PPC_GET_HTAB_FD", 0xaeaa}, + {"linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", 0xaeab}, + {"linux/kvm.h", "KVM_GET_ONE_REG", 0xaeab}, + {"linux/kvm.h", "KVM_SET_ONE_REG", 0xaeac}, + {"linux/kvm.h", "KVM_KVMCLOCK_CTRL", 0xaead}, + {"linux/kvm.h", "KVM_ARM_VCPU_INIT", 0xaeae}, + {"linux/kvm.h", "KVM_GET_REG_LIST", 0xaeb0}, {"linux/vhost.h", "VHOST_GET_FEATURES", 0xaf00}, {"linux/vhost.h", "VHOST_SET_FEATURES", 0xaf00}, {"linux/vhost.h", "VHOST_SET_OWNER", 0xaf01}, @@ -1876,10 +1978,6 @@ {"linux/if_pppox.h", "PPPOEIOCSFWD", 0xb100}, {"linux/if_pppox.h", "PPPOEIOCDFWD", 0xb101}, {"linux/mmc/ioctl.h", "MMC_IOC_CMD", 0xb300}, - {"linux/usb/iowarrior.h", "IOW_WRITE", 0xc001}, - {"linux/usb/iowarrior.h", "IOW_READ", 0xc002}, - {"linux/usb/iowarrior.h", "IOW_GETINFO", 0xc003}, - {"linux/reiserfs_fs.h", "REISERFS_IOC32_UNPACK", 0xcd01}, {"linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK", 0xcd01}, {"video/sisfb.h", "SISFB_GET_INFO_SIZE", 0xf300}, {"video/sisfb.h", "SISFB_GET_INFO", 0xf301}, diff --git a/linux/ioctlent.sh b/linux/ioctlent.sh index 9bcff5f8..c483ba88 100755 --- a/linux/ioctlent.sh +++ b/linux/ioctlent.sh @@ -47,7 +47,7 @@ lookup_ioctls() # Build the list of all ioctls regexp='^[[:space:]]*#[[:space:]]*define[[:space:]]\+[A-Z][A-Z0-9_]*[[:space:]]\+0x'"$type"'..\>' - (cd "$dir" && grep "$regexp" "$@" /dev/null 2>/dev/null) | + (cd "$dir" && for f; do grep "$regexp" "$f" "uapi/$f" 2>/dev/null; done) | sed -ne "s,$asm/,asm/,g"' s/^\(.*\):[[:space:]]*#[[:space:]]*define[[:space:]]*\([A-Z0-9_]*\)[[:space:]]*\(0x'"$type"'..\).*/ { "\1", "\2", \3 },/p' \ >> ioctls.h @@ -94,8 +94,11 @@ regexp='^[[:space:]]*#[[:space:]]*define[[:space:]]\+[A-Z][A-Z0-9_]*[[:space:]]\ -e 's/^\(.*\):[[:space:]]*#[[:space:]]*define[[:space:]]*\([A-Z0-9_]*\)[[:space:]]*_S\?I.*(\([^[,]*\)[[:space:]]*,[[:space:]]*\([^,)]*\).*/ { "\1", "\2", _IOC(_IOC_NONE,\3,\4,0) },/p' \ >> ioctls.h -# Sort and drop dups? -# sort -u ioctls1.h && mv ioctls1.h ioctls.h +# Strip uapi/ prefix +sed -i 's|"uapi/|"|' ioctls.h + +# Sort and drop dups +sort -u -o ioctls.h ioctls.h > ioctldefs.h diff --git a/linux/m68k/syscallent.h b/linux/m68k/syscallent.h index 5b8d8d15..d3eec794 100644 --- a/linux/m68k/syscallent.h +++ b/linux/m68k/syscallent.h @@ -29,12 +29,12 @@ { 0, 0, sys_restart_syscall, "restart_syscall" }, /* 0 */ { 1, TP, sys_exit, "_exit" }, /* 1 */ { 0, TP, sys_fork, "fork" }, /* 2 */ - { 3, 0, sys_read, "read" }, /* 3 */ - { 3, 0, sys_write, "write" }, /* 4 */ - { 3, TF, sys_open, "open" }, /* 5 */ - { 1, 0, sys_close, "close" }, /* 6 */ + { 3, TD, sys_read, "read" }, /* 3 */ + { 3, TD, sys_write, "write" }, /* 4 */ + { 3, TD|TF, sys_open, "open" }, /* 5 */ + { 1, TD, sys_close, "close" }, /* 6 */ { 3, TP, sys_waitpid, "waitpid" }, /* 7 */ - { 2, TF, sys_creat, "creat" }, /* 8 */ + { 2, TD|TF, sys_creat, "creat" }, /* 8 */ { 2, TF, sys_link, "link" }, /* 9 */ { 1, TF, sys_unlink, "unlink" }, /* 10 */ { 3, TF|TP, sys_execve, "execve" }, /* 11 */ @@ -43,9 +43,9 @@ { 3, TF, sys_mknod, "mknod" }, /* 14 */ { 2, TF, sys_chmod, "chmod" }, /* 15 */ { 3, TF, sys_chown, "chown" }, /* 16 */ - { 0, 0, sys_break, "break" }, /* 17 */ + { 0, TM, sys_break, "break" }, /* 17 */ { 2, TF, sys_oldstat, "oldstat" }, /* 18 */ - { 3, 0, sys_lseek, "lseek" }, /* 19 */ + { 3, TD, sys_lseek, "lseek" }, /* 19 */ { 0, 0, sys_getpid, "getpid" }, /* 20 */ { 5, TF, sys_mount, "mount" }, /* 21 */ { 1, TF, sys_umount, "oldumount" }, /* 22 */ @@ -54,7 +54,7 @@ { 1, 0, sys_stime, "stime" }, /* 25 */ { 4, 0, sys_ptrace, "ptrace" }, /* 26 */ { 1, 0, sys_alarm, "alarm" }, /* 27 */ - { 2, 0, sys_oldfstat, "oldfstat" }, /* 28 */ + { 2, TD, sys_oldfstat, "oldfstat" }, /* 28 */ { 0, TS, sys_pause, "pause" }, /* 29 */ { 2, TF, sys_utime, "utime" }, /* 30 */ { 2, 0, sys_stty, "stty" }, /* 31 */ @@ -67,11 +67,11 @@ { 2, TF, sys_rename, "rename" }, /* 38 */ { 2, TF, sys_mkdir, "mkdir" }, /* 39 */ { 1, TF, sys_rmdir, "rmdir" }, /* 40 */ - { 1, 0, sys_dup, "dup" }, /* 41 */ - { 1, 0, sys_pipe, "pipe" }, /* 42 */ + { 1, TD, sys_dup, "dup" }, /* 41 */ + { 1, TD, sys_pipe, "pipe" }, /* 42 */ { 1, 0, sys_times, "times" }, /* 43 */ { 0, 0, sys_prof, "prof" }, /* 44 */ - { 1, 0, sys_brk, "brk" }, /* 45 */ + { 1, TM, sys_brk, "brk" }, /* 45 */ { 1, 0, sys_setgid, "setgid" }, /* 46 */ { 0, NF, sys_getgid, "getgid" }, /* 47 */ { 3, TS, sys_signal, "signal" }, /* 48 */ @@ -80,8 +80,8 @@ { 1, TF, sys_acct, "acct" }, /* 51 */ { 2, TF, sys_umount2, "umount" }, /* 52 */ { 0, 0, sys_lock, "lock" }, /* 53 */ - { 3, 0, sys_ioctl, "ioctl" }, /* 54 */ - { 3, 0, sys_fcntl, "fcntl" }, /* 55 */ + { 3, TD, sys_ioctl, "ioctl" }, /* 54 */ + { 3, TD, sys_fcntl, "fcntl" }, /* 55 */ { 0, 0, sys_mpx, "mpx" }, /* 56 */ { 2, 0, sys_setpgid, "setpgid" }, /* 57 */ { 2, 0, sys_ulimit, "ulimit" }, /* 58 */ @@ -89,7 +89,7 @@ { 1, 0, sys_umask, "umask" }, /* 60 */ { 1, TF, sys_chroot, "chroot" }, /* 61 */ { 2, 0, sys_ustat, "ustat" }, /* 62 */ - { 2, 0, sys_dup2, "dup2" }, /* 63 */ + { 2, TD, sys_dup2, "dup2" }, /* 63 */ { 0, 0, sys_getppid, "getppid" }, /* 64 */ { 0, 0, sys_getpgrp, "getpgrp" }, /* 65 */ { 0, 0, sys_setsid, "setsid" }, /* 66 */ @@ -108,33 +108,33 @@ { 2, 0, sys_settimeofday, "settimeofday" }, /* 79 */ { 2, 0, sys_getgroups, "getgroups" }, /* 80 */ { 2, 0, sys_setgroups, "setgroups" }, /* 81 */ - { 1, 0, sys_oldselect, "oldselect" }, /* 82 */ + { 1, TD, sys_oldselect, "oldselect" }, /* 82 */ { 2, TF, sys_symlink, "symlink" }, /* 83 */ { 2, TF, sys_oldlstat, "oldlstat" }, /* 84 */ { 3, TF, sys_readlink, "readlink" }, /* 85 */ { 1, TF, sys_uselib, "uselib" }, /* 86 */ { 2, TF, sys_swapon, "swapon" }, /* 87 */ { 4, 0, sys_reboot, "reboot" }, /* 88 */ - { 3, 0, sys_readdir, "readdir" }, /* 89 */ - { 6, TD, sys_old_mmap, "old_mmap" }, /* 90 */ - { 2, 0, sys_munmap, "munmap" }, /* 91 */ + { 3, TD, sys_readdir, "readdir" }, /* 89 */ + { 1, TD|TM, sys_old_mmap, "old_mmap" }, /* 90 */ + { 2, TM, sys_munmap, "munmap" }, /* 91 */ { 2, TF, sys_truncate, "truncate" }, /* 92 */ - { 2, 0, sys_ftruncate, "ftruncate" }, /* 93 */ - { 2, 0, sys_fchmod, "fchmod" }, /* 94 */ - { 3, 0, sys_fchown, "fchown" }, /* 95 */ + { 2, TD, sys_ftruncate, "ftruncate" }, /* 93 */ + { 2, TD, sys_fchmod, "fchmod" }, /* 94 */ + { 3, TD, sys_fchown, "fchown" }, /* 95 */ { 2, 0, sys_getpriority, "getpriority" }, /* 96 */ { 3, 0, sys_setpriority, "setpriority" }, /* 97 */ { 4, 0, sys_profil, "profil" }, /* 98 */ { 2, TF, sys_statfs, "statfs" }, /* 99 */ - { 2, 0, sys_fstatfs, "fstatfs" }, /* 100 */ + { 2, TD, sys_fstatfs, "fstatfs" }, /* 100 */ { 3, 0, sys_ioperm, "ioperm" }, /* 101 */ - { 2, 0, sys_socketcall, "socketcall" }, /* 102 */ + { 2, TD, sys_socketcall, "socketcall" }, /* 102 */ { 3, 0, sys_syslog, "syslog" }, /* 103 */ { 3, 0, sys_setitimer, "setitimer" }, /* 104 */ { 2, 0, sys_getitimer, "getitimer" }, /* 105 */ { 2, TF, sys_stat, "stat" }, /* 106 */ { 2, TF, sys_lstat, "lstat" }, /* 107 */ - { 2, 0, sys_fstat, "fstat" }, /* 108 */ + { 2, TD, sys_fstat, "fstat" }, /* 108 */ { 1, 0, sys_olduname, "olduname" }, /* 109 */ { 1, 0, sys_iopl, "iopl" }, /* 110 */ { 0, 0, sys_vhangup, "vhangup" }, /* 111 */ @@ -151,35 +151,35 @@ { 1, 0, sys_uname, "uname" }, /* 122 */ { 4, 0, sys_cacheflush, "cacheflush" }, /* 123 */ { 1, 0, sys_adjtimex, "adjtimex" }, /* 124 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 125 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 125 */ { 3, TS, sys_sigprocmask, "sigprocmask" }, /* 126 */ { 2, 0, sys_create_module, "create_module" }, /* 127 */ { 3, 0, sys_init_module, "init_module" }, /* 128 */ { 2, 0, sys_delete_module, "delete_module" }, /* 129 */ { 1, 0, sys_get_kernel_syms, "get_kernel_syms"}, /* 130 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 131 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 131 */ { 1, 0, sys_getpgid, "getpgid" }, /* 132 */ - { 1, 0, sys_fchdir, "fchdir" }, /* 133 */ + { 1, TD, sys_fchdir, "fchdir" }, /* 133 */ { 0, 0, sys_bdflush, "bdflush" }, /* 134 */ { 3, 0, sys_sysfs, "sysfs" }, /* 135 */ { 1, 0, sys_personality, "personality" }, /* 136 */ { 5, 0, sys_afs_syscall, "afs_syscall" }, /* 137 */ { 1, NF, sys_setfsuid, "setfsuid" }, /* 138 */ { 1, NF, sys_setfsgid, "setfsgid" }, /* 139 */ - { 5, 0, sys_llseek, "_llseek" }, /* 140 */ - { 3, 0, sys_getdents, "getdents" }, /* 141 */ - { 5, 0, sys_select, "select" }, /* 142 */ - { 2, 0, sys_flock, "flock" }, /* 143 */ - { 3, 0, sys_msync, "msync" }, /* 144 */ - { 3, 0, sys_readv, "readv" }, /* 145 */ - { 3, 0, sys_writev, "writev" }, /* 146 */ + { 5, TD, sys_llseek, "_llseek" }, /* 140 */ + { 3, TD, sys_getdents, "getdents" }, /* 141 */ + { 5, TD, sys_select, "select" }, /* 142 */ + { 2, TD, sys_flock, "flock" }, /* 143 */ + { 3, TM, sys_msync, "msync" }, /* 144 */ + { 3, TD, sys_readv, "readv" }, /* 145 */ + { 3, TD, sys_writev, "writev" }, /* 146 */ { 1, 0, sys_getsid, "getsid" }, /* 147 */ - { 1, 0, sys_fdatasync, "fdatasync" }, /* 148 */ + { 1, TD, sys_fdatasync, "fdatasync" }, /* 148 */ { 1, 0, sys_sysctl, "_sysctl" }, /* 149 */ - { 2, 0, sys_mlock, "mlock" }, /* 150 */ - { 2, 0, sys_munlock, "munlock" }, /* 151 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 152 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 153 */ + { 2, TM, sys_mlock, "mlock" }, /* 150 */ + { 2, TM, sys_munlock, "munlock" }, /* 151 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 152 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 153 */ { 0, 0, sys_sched_setparam, "sched_setparam"}, /* 154 */ { 2, 0, sys_sched_getparam, "sched_getparam"}, /* 155 */ { 3, 0, sys_sched_setscheduler, "sched_setscheduler"}, /* 156 */ @@ -189,12 +189,12 @@ { 1, 0, sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */ { 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */ { 2, 0, sys_nanosleep, "nanosleep" }, /* 162 */ - { 5, 0, sys_mremap, "mremap" }, /* 163 */ + { 5, TM, sys_mremap, "mremap" }, /* 163 */ { 3, 0, sys_setresuid, "setresuid" }, /* 164 */ { 3, 0, sys_getresuid, "getresuid" }, /* 165 */ { 5, 0, printargs, "getpagesize" }, /* 166 */ { 5, 0, sys_query_module, "query_module" }, /* 167 */ - { 3, 0, sys_poll, "poll" }, /* 168 */ + { 3, TD, sys_poll, "poll" }, /* 168 */ { 3, 0, sys_nfsservctl, "nfsservctl" }, /* 169 */ { 3, 0, sys_setresgid, "setresgid" }, /* 170 */ { 3, 0, sys_getresgid, "getresgid" }, /* 171 */ @@ -206,8 +206,8 @@ { 4, TS, sys_rt_sigtimedwait, "rt_sigtimedwait"}, /* 177 */ { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo"}, /* 178 */ { 2, TS, sys_rt_sigsuspend, "rt_sigsuspend" }, /* 179 */ - { 5, TF, sys_pread, "pread64" }, /* 180 */ - { 5, TF, sys_pwrite, "pwrite64" }, /* 181 */ + { 5, TD, sys_pread, "pread64" }, /* 180 */ + { 5, TD, sys_pwrite, "pwrite64" }, /* 181 */ { 3, TF, sys_chown, "lchown" }, /* 182 */ { 2, TF, sys_getcwd, "getcwd" }, /* 183 */ { 2, 0, sys_capget, "capget" }, /* 184 */ @@ -218,12 +218,12 @@ { 5, 0, sys_putpmsg, "putpmsg" }, /* 189 */ { 0, TP, sys_vfork, "vfork" }, /* 190 */ { 2, 0, sys_getrlimit, "getrlimit" }, /* 191 */ - { 6, TD, sys_mmap, "mmap2" }, /* 192 */ + { 6, TD|TM, sys_mmap_pgoff, "mmap2" }, /* 192 */ { 3, TF, sys_truncate64, "truncate64" }, /* 193 */ - { 3, TF, sys_ftruncate64, "ftruncate64" }, /* 194 */ + { 3, TD, sys_ftruncate64, "ftruncate64" }, /* 194 */ { 2, TF, sys_stat64, "stat64" }, /* 195 */ { 2, TF, sys_lstat64, "lstat64" }, /* 196 */ - { 2, TF, sys_fstat64, "fstat64" }, /* 197 */ + { 2, TD, sys_fstat64, "fstat64" }, /* 197 */ { 3, TF, sys_chown, "chown32" }, /* 198 */ { 0, NF, sys_getuid, "getuid32" }, /* 199 */ { 0, NF, sys_getgid, "getgid32" }, /* 200 */ @@ -233,7 +233,7 @@ { 2, 0, sys_setregid, "setregid32" }, /* 204 */ { 2, 0, sys_getgroups32, "getgroups32" }, /* 205 */ { 2, 0, sys_setgroups32, "setgroups32" }, /* 206 */ - { 3, 0, sys_fchown, "fchown32" }, /* 207 */ + { 3, TD, sys_fchown, "fchown32" }, /* 207 */ { 3, 0, sys_setresuid, "setresuid32" }, /* 208 */ { 3, 0, sys_getresuid, "getresuid32" }, /* 209 */ { 3, 0, sys_setresgid, "setresgid32" }, /* 210 */ @@ -251,7 +251,7 @@ { 2, TS, sys_kill, "tkill" }, /* 222 */ { 5, TF, sys_setxattr, "setxattr" }, /* 223 */ { 5, TF, sys_setxattr, "lsetxattr" }, /* 224 */ - { 5, 0, sys_fsetxattr, "fsetxattr" }, /* 225 */ + { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 225 */ { 4, TF, sys_getxattr, "getxattr" }, /* 226 */ { 4, TF, sys_getxattr, "lgetxattr" }, /* 227 */ { 4, TD, sys_fgetxattr, "fgetxattr" }, /* 228 */ @@ -263,10 +263,10 @@ { 2, TD, sys_fremovexattr, "fremovexattr" }, /* 234 */ { 6, 0, sys_futex, "futex" }, /* 235 */ { 4, TD|TN, sys_sendfile64, "sendfile64" }, /* 236 */ - { 3, 0, sys_mincore, "mincore" }, /* 237 */ - { 3, 0, sys_madvise, "madvise" }, /* 238 */ - { 3, 0, sys_fcntl, "fcntl64" }, /* 239 */ - { 4, 0, sys_readahead, "readahead" }, /* 240 */ + { 3, TM, sys_mincore, "mincore" }, /* 237 */ + { 3, TM, sys_madvise, "madvise" }, /* 238 */ + { 3, TD, sys_fcntl, "fcntl64" }, /* 239 */ + { 4, TD, sys_readahead, "readahead" }, /* 240 */ { 2, 0, sys_io_setup, "io_setup" }, /* 241 */ { 1, 0, sys_io_destroy, "io_destroy" }, /* 242 */ { 5, 0, sys_io_getevents, "io_getevents" }, /* 243 */ @@ -278,7 +278,7 @@ { 1, TD, sys_epoll_create, "epoll_create" }, /* 249 */ { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 250 */ { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 251 */ - { 5, 0, sys_remap_file_pages, "remap_file_pages"}, /* 252 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages"}, /* 252 */ { 1, 0, sys_set_tid_address, "set_tid_address"}, /* 253 */ { 3, 0, sys_timer_create, "timer_create" }, /* 254 */ { 4, 0, sys_timer_settime, "timer_settime" }, /* 255 */ @@ -290,13 +290,13 @@ { 2, 0, sys_clock_getres, "clock_getres" }, /* 261 */ { 4, 0, sys_clock_nanosleep, "clock_nanosleep"}, /* 262 */ { 3, TF, sys_statfs64, "statfs64" }, /* 263 */ - { 3, TF, sys_fstatfs64, "fstatfs64" }, /* 264 */ + { 3, TD, sys_fstatfs64, "fstatfs64" }, /* 264 */ { 3, TS, sys_tgkill, "tgkill" }, /* 265 */ { 2, TF, sys_utimes, "utimes" }, /* 266 */ { 6, TD, sys_fadvise64_64, "fadvise64_64" }, /* 267 */ - { 6, 0, sys_mbind, "mbind" }, /* 268 */ - { 5, 0, sys_get_mempolicy, "get_mempolicy" }, /* 269 */ - { 3, 0, sys_set_mempolicy, "set_mempolicy" }, /* 270 */ + { 6, TM, sys_mbind, "mbind" }, /* 268 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 269 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 270 */ { 4, 0, sys_mq_open, "mq_open" }, /* 271 */ { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 272 */ { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 273 */ @@ -313,7 +313,7 @@ { 0, TD, sys_inotify_init, "inotify_init" }, /* 284 */ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 285 */ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 286 */ - { 4, 0, sys_migrate_pages, "migrate_pages" }, /* 287 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 287 */ { 4, TD|TF, sys_openat, "openat" }, /* 288 */ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 289 */ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 290 */ @@ -333,10 +333,10 @@ { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 304 */ { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 305 */ { 6, TD, sys_splice, "splice" }, /* 306 */ - { 4, TD, sys_sync_file_range, "sync_file_range" }, /* 307 */ + { 6, TD, sys_sync_file_range, "sync_file_range" }, /* 307 */ { 4, TD, sys_tee, "tee" }, /* 308 */ { 4, TD, sys_vmsplice, "vmsplice" }, /* 309 */ - { 6, 0, sys_move_pages, "move_pages" }, /* 310 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 310 */ { 3, 0, sys_sched_setaffinity, "sched_setaffinity" },/* 311 */ { 3, 0, sys_sched_getaffinity, "sched_getaffinity" },/* 312 */ { 4, 0, sys_kexec_load, "kexec_load" }, /* 313 */ @@ -373,8 +373,8 @@ { 2, TD, sys_setns, "setns" }, /* 344 */ { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 345 */ { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 346 */ - { 5, 0, NULL, NULL }, /* 347 */ - { 5, 0, NULL, NULL }, /* 348 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 347 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 348 */ { 5, 0, NULL, NULL }, /* 349 */ { 5, 0, NULL, NULL }, /* 350 */ { 5, 0, NULL, NULL }, /* 351 */ @@ -426,10 +426,8 @@ { 5, 0, NULL, NULL }, /* 397 */ { 5, 0, NULL, NULL }, /* 398 */ { 5, 0, NULL, NULL }, /* 399 */ - -#if SYS_socket_subcall != 400 - #error fix me -#endif +#define SYS_socket_subcall 400 +#include "subcall.h" { 6, 0, printargs, "socket_subcall"}, /* 400 */ { 3, TN, sys_socket, "socket" }, /* 401 */ { 3, TN, sys_bind, "bind" }, /* 402 */ @@ -447,7 +445,7 @@ { 5, TN, sys_setsockopt, "setsockopt" }, /* 414 */ { 5, TN, sys_getsockopt, "getsockopt" }, /* 415 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 416 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 417 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 417 */ { 4, TN, sys_accept4, "accept4" }, /* 418 */ { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 419 */ diff --git a/linux/metag/ioctlent.h.in b/linux/metag/ioctlent.h.in new file mode 100644 index 00000000..52ac99ba --- /dev/null +++ b/linux/metag/ioctlent.h.in @@ -0,0 +1 @@ +#include "../i386/ioctlent.h.in" diff --git a/linux/metag/syscallent.h b/linux/metag/syscallent.h new file mode 100644 index 00000000..9401ca46 --- /dev/null +++ b/linux/metag/syscallent.h @@ -0,0 +1,266 @@ + { 2, 0, sys_io_setup, "io_setup" }, /* 0 */ + { 1, 0, sys_io_destroy, "io_destroy" }, /* 1 */ + { 3, 0, sys_io_submit, "io_submit" }, /* 2 */ + { 3, 0, sys_io_cancel, "io_cancel" }, /* 3 */ + { 5, 0, sys_io_getevents, "io_getevents" }, /* 4 */ + { 5, TF, sys_setxattr, "setxattr" }, /* 5 */ + { 5, TF, sys_setxattr, "lsetxattr" }, /* 6 */ + { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 7 */ + { 4, TF, sys_getxattr, "getxattr" }, /* 8 */ + { 4, TF, sys_getxattr, "lgetxattr" }, /* 9 */ + { 4, TD, sys_fgetxattr, "fgetxattr" }, /* 10 */ + { 3, TF, sys_listxattr, "listxattr" }, /* 11 */ + { 3, TF, sys_listxattr, "llistxattr" }, /* 12 */ + { 3, TD, sys_flistxattr, "flistxattr" }, /* 13 */ + { 2, TF, sys_removexattr, "removexattr" }, /* 14 */ + { 2, TF, sys_removexattr, "lremovexattr" }, /* 15 */ + { 2, TD, sys_fremovexattr, "fremovexattr" }, /* 16 */ + { 2, TF, sys_getcwd, "getcwd" }, /* 17 */ + { 4, 0, sys_lookup_dcookie, "lookup_dcookie" }, /* 18 */ + { 2, TD, sys_eventfd2, "eventfd2" }, /* 19 */ + { 1, TD, sys_epoll_create1, "epoll_create1" }, /* 20 */ + { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 21 */ + { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 22 */ + { 1, TD, sys_dup, "dup" }, /* 23 */ + { 3, TD, sys_dup3, "dup3" }, /* 24 */ + { 3, TD, sys_fcntl, "fcntl64" }, /* 25 */ + { 1, TD, sys_inotify_init1, "inotify_init1" }, /* 26 */ + { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 27 */ + { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 28 */ + { 3, TD, sys_ioctl, "ioctl" }, /* 29 */ + { 3, 0, sys_ioprio_set, "ioprio_set" }, /* 30 */ + { 2, 0, sys_ioprio_get, "ioprio_get" }, /* 31 */ + { 2, TD, sys_flock, "flock" }, /* 32 */ + { 4, TD|TF, sys_mknodat, "mknodat" }, /* 33 */ + { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 34 */ + { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 35 */ + { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 36 */ + { 5, TD|TF, sys_linkat, "linkat" }, /* 37 */ + { 4, TD|TF, sys_renameat, "renameat" }, /* 38 */ + { 2, TF, sys_umount2, "umount" }, /* 39 */ + { 5, TF, sys_mount, "mount" }, /* 40 */ + { 2, TF, sys_pivotroot, "pivot_root" }, /* 41 */ + { }, /* 42 */ + { 3, TF, sys_statfs64, "statfs64" }, /* 43 */ + { 3, TD, sys_fstatfs64, "fstatfs64" }, /* 44 */ + { 3, TF, sys_truncate64, "truncate64" }, /* 45 */ + { 3, TD, sys_ftruncate64, "ftruncate64" }, /* 46 */ + { 6, TD, sys_fallocate, "fallocate" }, /* 47 */ + { 3, TD|TF, sys_faccessat, "faccessat" }, /* 48 */ + { 1, TF, sys_chdir, "chdir" }, /* 49 */ + { 1, TD, sys_fchdir, "fchdir" }, /* 50 */ + { 1, TF, sys_chroot, "chroot" }, /* 51 */ + { 2, TD, sys_fchmod, "fchmod" }, /* 52 */ + { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 53 */ + { 5, TD|TF, sys_fchownat, "fchownat" }, /* 54 */ + { 3, TD, sys_fchown, "fchown" }, /* 55 */ + { 4, TD|TF, sys_openat, "openat" }, /* 56 */ + { 1, TD, sys_close, "close" }, /* 57 */ + { 0, 0, sys_vhangup, "vhangup" }, /* 58 */ + { 2, TD, sys_pipe2, "pipe2" }, /* 59 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 60 */ + { 3, TD, sys_getdents64, "getdents64" }, /* 61 */ + { 5, TD, sys_llseek, "_llseek" }, /* 62 */ + { 3, TD, sys_read, "read" }, /* 63 */ + { 3, TD, sys_write, "write" }, /* 64 */ + { 3, TD, sys_readv, "readv" }, /* 65 */ + { 3, TD, sys_writev, "writev" }, /* 66 */ + { 5, TD, sys_pread, "pread64" }, /* 67 */ + { 5, TD, sys_pwrite, "pwrite64" }, /* 68 */ + { 5, TD, sys_preadv, "preadv" }, /* 69 */ + { 5, TD, sys_pwritev, "pwritev" }, /* 70 */ + { 4, TD|TN, sys_sendfile64, "sendfile" }, /* 71 */ + { 6, TD, sys_pselect6, "pselect6" }, /* 72 */ + { 5, TD, sys_ppoll, "ppoll" }, /* 73 */ + { 4, TD|TS, sys_signalfd4, "signalfd4" }, /* 74 */ + { 4, TD, sys_vmsplice, "vmsplice" }, /* 75 */ + { 6, TD, sys_splice, "splice" }, /* 76 */ + { 4, TD, sys_tee, "tee" }, /* 77 */ + { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 78 */ + { 4, TD|TF, sys_newfstatat, "fstatat64" }, /* 79 */ + { 2, TD, sys_fstat64, "fstat64" }, /* 80 */ + { 0, 0, sys_sync, "sync" }, /* 81 */ + { 1, TD, sys_fsync, "fsync" }, /* 82 */ + { 1, TD, sys_fdatasync, "fdatasync" }, /* 83 */ + { 6, TD, sys_sync_file_range, "sync_file_range" }, /* 84 */ + { 2, TD, sys_timerfd_create, "timerfd_create" }, /* 85 */ + { 4, TD, sys_timerfd_settime, "timerfd_settime" }, /* 86 */ + { 2, TD, sys_timerfd_gettime, "timerfd_gettime" }, /* 87 */ + { 4, TD|TF, sys_utimensat, "utimensat" }, /* 88 */ + { 1, TF, sys_acct, "acct" }, /* 89 */ + { 2, 0, sys_capget, "capget" }, /* 90 */ + { 2, 0, sys_capset, "capset" }, /* 91 */ + { 1, 0, sys_personality, "personality" }, /* 92 */ + { 1, TP, sys_exit, "exit" }, /* 93 */ + { 1, TP, sys_exit, "exit_group" }, /* 94 */ + { 5, TP, sys_waitid, "waitid" }, /* 95 */ + { 1, 0, sys_set_tid_address, "set_tid_address" }, /* 96 */ + { 1, TP, sys_unshare, "unshare" }, /* 97 */ + { 6, 0, sys_futex, "futex" }, /* 98 */ + { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 99 */ + { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 100 */ + { 2, 0, sys_nanosleep, "nanosleep" }, /* 101 */ + { 2, 0, sys_getitimer, "getitimer" }, /* 102 */ + { 3, 0, sys_setitimer, "setitimer" }, /* 103 */ + { 4, 0, sys_kexec_load, "kexec_load" }, /* 104 */ + { 3, 0, sys_init_module, "init_module" }, /* 105 */ + { 2, 0, sys_delete_module, "delete_module" }, /* 106 */ + { 3, 0, sys_timer_create, "timer_create" }, /* 107 */ + { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 108 */ + { 1, 0, sys_timer_getoverrun, "timer_getoverrun" }, /* 109 */ + { 4, 0, sys_timer_settime, "timer_settime" }, /* 110 */ + { 1, 0, sys_timer_delete, "timer_delete" }, /* 111 */ + { 2, 0, sys_clock_settime, "clock_settime" }, /* 112 */ + { 2, 0, sys_clock_gettime, "clock_gettime" }, /* 113 */ + { 2, 0, sys_clock_getres, "clock_getres" }, /* 114 */ + { 4, 0, sys_clock_nanosleep, "clock_nanosleep" }, /* 115 */ + { 3, 0, sys_syslog, "syslog" }, /* 116 */ + { 4, 0, sys_ptrace, "ptrace" }, /* 117 */ + { 2, 0, sys_sched_setparam, "sched_setparam" }, /* 118 */ + { 3, 0, sys_sched_setscheduler, "sched_setscheduler" }, /* 119 */ + { 1, 0, sys_sched_getscheduler, "sched_getscheduler" }, /* 120 */ + { 2, 0, sys_sched_getparam, "sched_getparam" }, /* 121 */ + { 3, 0, sys_sched_setaffinity, "sched_setaffinity" }, /* 122 */ + { 3, 0, sys_sched_getaffinity, "sched_getaffinity" }, /* 123 */ + { 0, 0, sys_sched_yield, "sched_yield" }, /* 124 */ + { 1, 0, sys_sched_get_priority_max, "sched_get_priority_max"}, /* 125 */ + { 1, 0, sys_sched_get_priority_min, "sched_get_priority_min"}, /* 126 */ + { 2, 0, sys_sched_rr_get_interval, "sched_rr_get_interval" }, /* 127 */ + { 0, 0, sys_restart_syscall, "restart_syscall" }, /* 128 */ + { 2, TS, sys_kill, "kill" }, /* 129 */ + { 2, TS, sys_kill, "tkill" }, /* 130 */ + { 3, TS, sys_tgkill, "tgkill" }, /* 131 */ + { 2, TS, sys_sigaltstack, "sigaltstack" }, /* 132 */ + { 2, TS, sys_rt_sigsuspend, "rt_sigsuspend" }, /* 133 */ + { 4, TS, sys_rt_sigaction, "rt_sigaction" }, /* 134 */ + { 4, TS, sys_rt_sigprocmask, "rt_sigprocmask" }, /* 135 */ + { 2, TS, sys_rt_sigpending, "rt_sigpending" }, /* 136 */ + { 4, TS, sys_rt_sigtimedwait, "rt_sigtimedwait" }, /* 137 */ + { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo" }, /* 138 */ + { 0, TS, sys_rt_sigreturn, "rt_sigreturn" }, /* 139 */ + { 3, 0, sys_setpriority, "setpriority" }, /* 140 */ + { 2, 0, sys_getpriority, "getpriority" }, /* 141 */ + { 4, 0, sys_reboot, "reboot" }, /* 142 */ + { 2, 0, sys_setregid, "setregid" }, /* 143 */ + { 1, 0, sys_setgid, "setgid" }, /* 144 */ + { 2, 0, sys_setreuid, "setreuid" }, /* 145 */ + { 1, 0, sys_setuid, "setuid" }, /* 146 */ + { 3, 0, sys_setresuid, "setresuid" }, /* 147 */ + { 3, 0, sys_getresuid, "getresuid" }, /* 148 */ + { 3, 0, sys_setresgid, "setresgid" }, /* 149 */ + { 3, 0, sys_getresgid, "getresgid" }, /* 150 */ + { 1, NF, sys_setfsuid, "setfsuid" }, /* 151 */ + { 1, NF, sys_setfsgid, "setfsgid" }, /* 152 */ + { 1, 0, sys_times, "times" }, /* 153 */ + { 2, 0, sys_setpgid, "setpgid" }, /* 154 */ + { 1, 0, sys_getpgid, "getpgid" }, /* 155 */ + { 1, 0, sys_getsid, "getsid" }, /* 156 */ + { 0, 0, sys_setsid, "setsid" }, /* 157 */ + { 2, 0, sys_getgroups, "getgroups" }, /* 158 */ + { 2, 0, sys_setgroups, "setgroups" }, /* 159 */ + { 1, 0, sys_uname, "uname" }, /* 160 */ + { 2, 0, sys_sethostname, "sethostname" }, /* 161 */ + { 2, 0, sys_setdomainname, "setdomainname" }, /* 162 */ + { 2, 0, sys_getrlimit, "getrlimit" }, /* 163 */ + { 2, 0, sys_setrlimit, "setrlimit" }, /* 164 */ + { 2, 0, sys_getrusage, "getrusage" }, /* 165 */ + { 1, 0, sys_umask, "umask" }, /* 166 */ + { 5, 0, sys_prctl, "prctl" }, /* 167 */ + { 3, 0, sys_getcpu, "getcpu" }, /* 168 */ + { 2, 0, sys_gettimeofday, "gettimeofday" }, /* 169 */ + { 2, 0, sys_settimeofday, "settimeofday" }, /* 170 */ + { 1, 0, sys_adjtimex, "adjtimex" }, /* 171 */ + { 0, 0, sys_getpid, "getpid" }, /* 172 */ + { 0, 0, sys_getppid, "getppid" }, /* 173 */ + { 0, NF, sys_getuid, "getuid" }, /* 174 */ + { 0, NF, sys_geteuid, "geteuid" }, /* 175 */ + { 0, NF, sys_getgid, "getgid" }, /* 176 */ + { 0, NF, sys_getegid, "getegid" }, /* 177 */ + { 0, 0, sys_gettid, "gettid" }, /* 178 */ + { 1, 0, sys_sysinfo, "sysinfo" }, /* 179 */ + { 4, 0, sys_mq_open, "mq_open" }, /* 180 */ + { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 181 */ + { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 182 */ + { 5, 0, sys_mq_timedreceive, "mq_timedreceive" }, /* 183 */ + { 2, 0, sys_mq_notify, "mq_notify" }, /* 184 */ + { 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 185 */ + { 2, TI, sys_msgget, "msgget" }, /* 186 */ + { 3, TI, sys_msgctl, "msgctl" }, /* 187 */ + { 5, TI, sys_msgrcv, "msgrcv" }, /* 188 */ + { 4, TI, sys_msgsnd, "msgsnd" }, /* 189 */ + { 3, TI, sys_semget, "semget" }, /* 190 */ + { 4, TI, sys_semctl, "semctl" }, /* 191 */ + { 4, TI, sys_semtimedop, "semtimedop" }, /* 192 */ + { 3, TI, sys_semop, "semop" }, /* 193 */ + { 3, TI, sys_shmget, "shmget" }, /* 194 */ + { 3, TI, sys_shmctl, "shmctl" }, /* 195 */ + { 3, TI, sys_shmat, "shmat" }, /* 196 */ + { 1, TI, sys_shmdt, "shmdt" }, /* 197 */ + { 3, TN, sys_socket, "socket" }, /* 198 */ + { 4, TN, sys_socketpair, "socketpair" }, /* 199 */ + { 3, TN, sys_bind, "bind" }, /* 200 */ + { 2, TN, sys_listen, "listen" }, /* 201 */ + { 3, TN, sys_accept, "accept" }, /* 202 */ + { 3, TN, sys_connect, "connect" }, /* 203 */ + { 3, TN, sys_getsockname, "getsockname" }, /* 204 */ + { 3, TN, sys_getpeername, "getpeername" }, /* 205 */ + { 6, TN, sys_sendto, "sendto" }, /* 206 */ + { 6, TN, sys_recvfrom, "recvfrom" }, /* 207 */ + { 5, TN, sys_setsockopt, "setsockopt" }, /* 208 */ + { 5, TN, sys_getsockopt, "getsockopt" }, /* 209 */ + { 2, TN, sys_shutdown, "shutdown" }, /* 210 */ + { 3, TN, sys_sendmsg, "sendmsg" }, /* 211 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 212 */ + { 4, TD, sys_readahead, "readahead" }, /* 213 */ + { 1, TM, sys_brk, "brk" }, /* 214 */ + { 2, TM, sys_munmap, "munmap" }, /* 215 */ + { 5, TM, sys_mremap, "mremap" }, /* 216 */ + { 5, 0, sys_add_key, "add_key" }, /* 217 */ + { 4, 0, sys_request_key, "request_key" }, /* 218 */ + { 5, 0, sys_keyctl, "keyctl" }, /* 219 */ + { 5, TP, sys_clone, "clone" }, /* 220 */ + { 3, TF|TP, sys_execve, "execve" }, /* 221 */ + { 6, TD|TM, sys_mmap, "mmap2" }, /* 222 */ + { 6, TD, sys_fadvise64_64, "fadvise64_64" }, /* 223 */ + { 2, TF, sys_swapon, "swapon" }, /* 224 */ + { 1, TF, sys_swapoff, "swapoff" }, /* 225 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 226 */ + { 3, TM, sys_msync, "msync" }, /* 227 */ + { 2, TM, sys_mlock, "mlock" }, /* 228 */ + { 2, TM, sys_munlock, "munlock" }, /* 229 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 230 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 231 */ + { 3, TM, sys_mincore, "mincore" }, /* 232 */ + { 3, TM, sys_madvise, "madvise" }, /* 233 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages" }, /* 234 */ + { 6, TM, sys_mbind, "mbind" }, /* 235 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 236 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 237 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 238 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 239 */ + { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo" }, /* 240 */ + { 5, TD, sys_perf_event_open, "perf_event_open" }, /* 241 */ + { 4, TN, sys_accept4, "accept4" }, /* 242 */ + { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 243 */ + { }, /* 244 */ + { 2, 0, printargs, "metag_setglobalbit" }, /* 245 */ + { 1, 0, printargs, "metag_set_fpu_flags" }, /* 246 */ + { 1, 0, printargs, "metag_set_tls" }, /* 247 */ + { 0, 0, printargs, "metag_get_tls" }, /* 248 */ + + [249 ... 259] = { }, + + { 4, TP, sys_wait4, "wait4" }, /* 260 */ + { 4, 0, sys_prlimit64, "prlimit64" }, /* 261 */ + { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 262 */ + { 5, TD|TF, sys_fanotify_mark, "fanotify_mark" }, /* 263 */ + { 5, TD|TF, sys_name_to_handle_at, "name_to_handle_at" }, /* 264 */ + { 3, TD, sys_open_by_handle_at, "open_by_handle_at" }, /* 265 */ + { 2, 0, sys_clock_adjtime, "clock_adjtime" }, /* 266 */ + { 1, TD, sys_syncfs, "syncfs" }, /* 267 */ + { 2, TD, sys_setns, "setns" }, /* 268 */ + { 4, TN, sys_sendmmsg, "sendmmsg" }, /* 269 */ + { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 270 */ + { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 271 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 272 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 273 */ diff --git a/linux/microblaze/syscallent.h b/linux/microblaze/syscallent.h index f2da85ae..22b69c48 100644 --- a/linux/microblaze/syscallent.h +++ b/linux/microblaze/syscallent.h @@ -29,12 +29,12 @@ { 0, 0, sys_restart_syscall, "restart_syscall" }, /* 0 */ { 1, TP, sys_exit, "_exit" }, /* 1 */ { 0, TP, sys_fork, "fork" }, /* 2 */ - { 3, 0, sys_read, "read" }, /* 3 */ - { 3, 0, sys_write, "write" }, /* 4 */ - { 3, TF, sys_open, "open" }, /* 5 */ - { 1, 0, sys_close, "close" }, /* 6 */ + { 3, TD, sys_read, "read" }, /* 3 */ + { 3, TD, sys_write, "write" }, /* 4 */ + { 3, TD|TF, sys_open, "open" }, /* 5 */ + { 1, TD, sys_close, "close" }, /* 6 */ { 3, TP, sys_waitpid, "waitpid" }, /* 7 */ - { 2, TF, sys_creat, "creat" }, /* 8 */ + { 2, TD|TF, sys_creat, "creat" }, /* 8 */ { 2, TF, sys_link, "link" }, /* 9 */ { 1, TF, sys_unlink, "unlink" }, /* 10 */ { 3, TF|TP, sys_execve, "execve" }, /* 11 */ @@ -43,9 +43,9 @@ { 3, TF, sys_mknod, "mknod" }, /* 14 */ { 2, TF, sys_chmod, "chmod" }, /* 15 */ { 3, TF, sys_chown, "lchown" }, /* 16 */ - { 0, 0, sys_break, "break" }, /* 17 */ + { 0, TM, sys_break, "break" }, /* 17 */ { 2, TF, sys_oldstat, "oldstat" }, /* 18 */ - { 3, 0, sys_lseek, "lseek" }, /* 19 */ + { 3, TD, sys_lseek, "lseek" }, /* 19 */ { 0, 0, sys_getpid, "getpid" }, /* 20 */ { 5, TF, sys_mount, "mount" }, /* 21 */ { 1, TF, sys_umount, "oldumount" }, /* 22 */ @@ -54,7 +54,7 @@ { 1, 0, sys_stime, "stime" }, /* 25 */ { 4, 0, sys_ptrace, "ptrace" }, /* 26 */ { 1, 0, sys_alarm, "alarm" }, /* 27 */ - { 2, 0, sys_oldfstat, "oldfstat" }, /* 28 */ + { 2, TD, sys_oldfstat, "oldfstat" }, /* 28 */ { 0, TS, sys_pause, "pause" }, /* 29 */ { 2, TF, sys_utime, "utime" }, /* 30 */ { 2, 0, sys_stty, "stty" }, /* 31 */ @@ -67,11 +67,11 @@ { 2, TF, sys_rename, "rename" }, /* 38 */ { 2, TF, sys_mkdir, "mkdir" }, /* 39 */ { 1, TF, sys_rmdir, "rmdir" }, /* 40 */ - { 1, 0, sys_dup, "dup" }, /* 41 */ - { 1, 0, sys_pipe, "pipe" }, /* 42 */ + { 1, TD, sys_dup, "dup" }, /* 41 */ + { 1, TD, sys_pipe, "pipe" }, /* 42 */ { 1, 0, sys_times, "times" }, /* 43 */ { 0, 0, sys_prof, "prof" }, /* 44 */ - { 1, 0, sys_brk, "brk" }, /* 45 */ + { 1, TM, sys_brk, "brk" }, /* 45 */ { 1, 0, sys_setgid, "setgid" }, /* 46 */ { 0, NF, sys_getgid, "getgid" }, /* 47 */ { 3, TS, sys_signal, "signal" }, /* 48 */ @@ -80,8 +80,8 @@ { 1, TF, sys_acct, "acct" }, /* 51 */ { 2, TF, sys_umount2, "umount" }, /* 52 */ { 0, 0, sys_lock, "lock" }, /* 53 */ - { 3, 0, sys_ioctl, "ioctl" }, /* 54 */ - { 3, 0, sys_fcntl, "fcntl" }, /* 55 */ + { 3, TD, sys_ioctl, "ioctl" }, /* 54 */ + { 3, TD, sys_fcntl, "fcntl" }, /* 55 */ { 0, 0, sys_mpx, "mpx" }, /* 56 */ { 2, 0, sys_setpgid, "setpgid" }, /* 57 */ { 2, 0, sys_ulimit, "ulimit" }, /* 58 */ @@ -89,7 +89,7 @@ { 1, 0, sys_umask, "umask" }, /* 60 */ { 1, TF, sys_chroot, "chroot" }, /* 61 */ { 2, 0, sys_ustat, "ustat" }, /* 62 */ - { 2, 0, sys_dup2, "dup2" }, /* 63 */ + { 2, TD, sys_dup2, "dup2" }, /* 63 */ { 0, 0, sys_getppid, "getppid" }, /* 64 */ { 0, 0, sys_getpgrp, "getpgrp" }, /* 65 */ { 0, 0, sys_setsid, "setsid" }, /* 66 */ @@ -108,33 +108,33 @@ { 2, 0, sys_settimeofday, "settimeofday" }, /* 79 */ { 2, 0, sys_getgroups, "getgroups" }, /* 80 */ { 2, 0, sys_setgroups, "setgroups" }, /* 81 */ - { 1, 0, sys_oldselect, "oldselect" }, /* 82 */ + { 1, TD, sys_oldselect, "oldselect" }, /* 82 */ { 2, TF, sys_symlink, "symlink" }, /* 83 */ { 2, TF, sys_oldlstat, "oldlstat" }, /* 84 */ { 3, TF, sys_readlink, "readlink" }, /* 85 */ { 1, TF, sys_uselib, "uselib" }, /* 86 */ { 2, TF, sys_swapon, "swapon" }, /* 87 */ { 4, 0, sys_reboot, "reboot" }, /* 88 */ - { 3, 0, sys_readdir, "readdir" }, /* 89 */ - { 6, TD, sys_old_mmap, "old_mmap" }, /* 90 */ - { 2, 0, sys_munmap, "munmap" }, /* 91 */ + { 3, TD, sys_readdir, "readdir" }, /* 89 */ + { 6, TD|TM, sys_mmap, "old_mmap" }, /* 90 */ + { 2, TM, sys_munmap, "munmap" }, /* 91 */ { 2, TF, sys_truncate, "truncate" }, /* 92 */ - { 2, 0, sys_ftruncate, "ftruncate" }, /* 93 */ - { 2, 0, sys_fchmod, "fchmod" }, /* 94 */ - { 3, 0, sys_fchown, "fchown" }, /* 95 */ + { 2, TD, sys_ftruncate, "ftruncate" }, /* 93 */ + { 2, TD, sys_fchmod, "fchmod" }, /* 94 */ + { 3, TD, sys_fchown, "fchown" }, /* 95 */ { 2, 0, sys_getpriority, "getpriority" }, /* 96 */ { 3, 0, sys_setpriority, "setpriority" }, /* 97 */ { 4, 0, sys_profil, "profil" }, /* 98 */ { 2, TF, sys_statfs, "statfs" }, /* 99 */ - { 2, 0, sys_fstatfs, "fstatfs" }, /* 100 */ + { 2, TD, sys_fstatfs, "fstatfs" }, /* 100 */ { 3, 0, sys_ioperm, "ioperm" }, /* 101 */ - { 2, 0, sys_socketcall, "socketcall" }, /* 102 */ + { 2, TD, sys_socketcall, "socketcall" }, /* 102 */ { 3, 0, sys_syslog, "syslog" }, /* 103 */ { 3, 0, sys_setitimer, "setitimer" }, /* 104 */ { 2, 0, sys_getitimer, "getitimer" }, /* 105 */ { 2, TF, sys_stat, "stat" }, /* 106 */ { 2, TF, sys_lstat, "lstat" }, /* 107 */ - { 2, 0, sys_fstat, "fstat" }, /* 108 */ + { 2, TD, sys_fstat, "fstat" }, /* 108 */ { 1, 0, sys_olduname, "olduname" }, /* 109 */ { 1, 0, sys_iopl, "iopl" }, /* 110 */ { 0, 0, sys_vhangup, "vhangup" }, /* 111 */ @@ -151,35 +151,35 @@ { 1, 0, sys_uname, "uname" }, /* 122 */ { 3, 0, sys_modify_ldt, "modify_ldt" }, /* 123 */ { 1, 0, sys_adjtimex, "adjtimex" }, /* 124 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 125 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 125 */ { 3, TS, sys_sigprocmask, "sigprocmask" }, /* 126 */ { 2, 0, sys_create_module, "create_module" }, /* 127 */ { 3, 0, sys_init_module, "init_module" }, /* 128 */ { 2, 0, sys_delete_module, "delete_module" }, /* 129 */ { 1, 0, sys_get_kernel_syms, "get_kernel_syms"}, /* 130 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 131 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 131 */ { 1, 0, sys_getpgid, "getpgid" }, /* 132 */ - { 1, 0, sys_fchdir, "fchdir" }, /* 133 */ + { 1, TD, sys_fchdir, "fchdir" }, /* 133 */ { 0, 0, sys_bdflush, "bdflush" }, /* 134 */ { 3, 0, sys_sysfs, "sysfs" }, /* 135 */ { 1, 0, sys_personality, "personality" }, /* 136 */ { 5, 0, sys_afs_syscall, "afs_syscall" }, /* 137 */ { 1, NF, sys_setfsuid, "setfsuid" }, /* 138 */ { 1, NF, sys_setfsgid, "setfsgid" }, /* 139 */ - { 5, 0, sys_llseek, "_llseek" }, /* 140 */ - { 3, 0, sys_getdents, "getdents" }, /* 141 */ - { 5, 0, sys_select, "select" }, /* 142 */ - { 2, 0, sys_flock, "flock" }, /* 143 */ - { 3, 0, sys_msync, "msync" }, /* 144 */ - { 3, 0, sys_readv, "readv" }, /* 145 */ - { 3, 0, sys_writev, "writev" }, /* 146 */ + { 5, TD, sys_llseek, "_llseek" }, /* 140 */ + { 3, TD, sys_getdents, "getdents" }, /* 141 */ + { 5, TD, sys_select, "select" }, /* 142 */ + { 2, TD, sys_flock, "flock" }, /* 143 */ + { 3, TM, sys_msync, "msync" }, /* 144 */ + { 3, TD, sys_readv, "readv" }, /* 145 */ + { 3, TD, sys_writev, "writev" }, /* 146 */ { 1, 0, sys_getsid, "getsid" }, /* 147 */ - { 1, 0, sys_fdatasync, "fdatasync" }, /* 148 */ + { 1, TD, sys_fdatasync, "fdatasync" }, /* 148 */ { 1, 0, sys_sysctl, "_sysctl" }, /* 149 */ - { 2, 0, sys_mlock, "mlock" }, /* 150 */ - { 2, 0, sys_munlock, "munlock" }, /* 151 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 152 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 153 */ + { 2, TM, sys_mlock, "mlock" }, /* 150 */ + { 2, TM, sys_munlock, "munlock" }, /* 151 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 152 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 153 */ { 0, 0, sys_sched_setparam, "sched_setparam"}, /* 154 */ { 2, 0, sys_sched_getparam, "sched_getparam"}, /* 155 */ { 3, 0, sys_sched_setscheduler, "sched_setscheduler"}, /* 156 */ @@ -189,12 +189,12 @@ { 1, 0, sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */ { 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */ { 2, 0, sys_nanosleep, "nanosleep" }, /* 162 */ - { 5, 0, sys_mremap, "mremap" }, /* 163 */ + { 5, TM, sys_mremap, "mremap" }, /* 163 */ { 3, 0, sys_setresuid, "setresuid" }, /* 164 */ { 3, 0, sys_getresuid, "getresuid" }, /* 165 */ { 5, 0, sys_vm86, "vm86" }, /* 166 */ { 5, 0, sys_query_module, "query_module" }, /* 167 */ - { 3, 0, sys_poll, "poll" }, /* 168 */ + { 3, TD, sys_poll, "poll" }, /* 168 */ { 3, 0, sys_nfsservctl, "nfsservctl" }, /* 169 */ { 3, 0, sys_setresgid, "setresgid" }, /* 170 */ { 3, 0, sys_getresgid, "getresgid" }, /* 171 */ @@ -206,8 +206,8 @@ { 4, TS, sys_rt_sigtimedwait, "rt_sigtimedwait"}, /* 177 */ { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo"}, /* 178 */ { 2, TS, sys_rt_sigsuspend, "rt_sigsuspend" }, /* 179 */ - { 5, TF, sys_pread, "pread64" }, /* 180 */ - { 5, TF, sys_pwrite, "pwrite64" }, /* 181 */ + { 5, TD, sys_pread, "pread64" }, /* 180 */ + { 5, TD, sys_pwrite, "pwrite64" }, /* 181 */ { 3, TF, sys_chown, "chown" }, /* 182 */ { 2, TF, sys_getcwd, "getcwd" }, /* 183 */ { 2, 0, sys_capget, "capget" }, /* 184 */ @@ -218,12 +218,12 @@ { 5, 0, sys_putpmsg, "putpmsg" }, /* 189 */ { 0, TP, sys_vfork, "vfork" }, /* 190 */ { 2, 0, sys_getrlimit, "getrlimit" }, /* 191 */ - { 6, TD, sys_mmap, "mmap2" }, /* 192 */ + { 6, TD|TM, sys_mmap_pgoff, "mmap2" }, /* 192 */ { 3, TF, sys_truncate64, "truncate64" }, /* 193 */ - { 3, TF, sys_ftruncate64, "ftruncate64" }, /* 194 */ + { 3, TD, sys_ftruncate64, "ftruncate64" }, /* 194 */ { 2, TF, sys_stat64, "stat64" }, /* 195 */ { 2, TF, sys_lstat64, "lstat64" }, /* 196 */ - { 2, TF, sys_fstat64, "fstat64" }, /* 197 */ + { 2, TD, sys_fstat64, "fstat64" }, /* 197 */ { 3, TF, sys_chown, "lchown32" }, /* 198 */ { 0, NF, sys_getuid, "getuid32" }, /* 199 */ { 0, NF, sys_getgid, "getgid32" }, /* 200 */ @@ -233,7 +233,7 @@ { 2, 0, sys_setregid, "setregid32" }, /* 204 */ { 2, 0, sys_getgroups32, "getgroups32" }, /* 205 */ { 2, 0, sys_setgroups32, "setgroups32" }, /* 206 */ - { 3, 0, sys_fchown, "fchown32" }, /* 207 */ + { 3, TD, sys_fchown, "fchown32" }, /* 207 */ { 3, 0, sys_setresuid, "setresuid32" }, /* 208 */ { 3, 0, sys_getresuid, "getresuid32" }, /* 209 */ { 3, 0, sys_setresgid, "setresgid32" }, /* 210 */ @@ -244,17 +244,17 @@ { 1, NF, sys_setfsuid, "setfsuid32" }, /* 215 */ { 1, NF, sys_setfsgid, "setfsgid32" }, /* 216 */ { 2, TF, sys_pivotroot, "pivot_root" }, /* 217 */ - { 3, 0, sys_mincore, "mincore" }, /* 218 */ - { 3, 0, sys_madvise, "madvise" }, /* 219 */ + { 3, TM, sys_mincore, "mincore" }, /* 218 */ + { 3, TM, sys_madvise, "madvise" }, /* 219 */ { 3, TD, sys_getdents64, "getdents64" }, /* 220 */ - { 3, 0, sys_fcntl, "fcntl64" }, /* 221 */ + { 3, TD, sys_fcntl, "fcntl64" }, /* 221 */ { 4, 0, NULL, NULL }, /* 222 */ { 4, 0, NULL, NULL }, /* 223 */ { 0, 0, sys_gettid, "gettid" }, /* 224 */ - { 4, 0, sys_readahead, "readahead" }, /* 225 */ + { 4, TD, sys_readahead, "readahead" }, /* 225 */ { 5, TF, sys_setxattr, "setxattr" }, /* 226 */ { 5, TF, sys_setxattr, "lsetxattr" }, /* 227 */ - { 5, 0, sys_fsetxattr, "fsetxattr" }, /* 228 */ + { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 228 */ { 4, TF, sys_getxattr, "getxattr" }, /* 229 */ { 4, TF, sys_getxattr, "lgetxattr" }, /* 230 */ { 4, TD, sys_fgetxattr, "fgetxattr" }, /* 231 */ @@ -283,7 +283,7 @@ { 1, TD, sys_epoll_create, "epoll_create" }, /* 254 */ { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 255 */ { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 256 */ - { 5, 0, sys_remap_file_pages, "remap_file_pages"}, /* 257 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages"}, /* 257 */ { 1, 0, sys_set_tid_address, "set_tid_address"}, /* 258 */ { 3, 0, sys_timer_create, "timer_create" }, /* 259 */ { 4, 0, sys_timer_settime, "timer_settime" }, /* 260 */ @@ -300,9 +300,9 @@ { 2, TF, sys_utimes, "utimes" }, /* 271 */ { 6, TD, sys_fadvise64_64, "fadvise64_64" }, /* 272 */ { 5, 0, sys_vserver, "vserver" }, /* 273 */ - { 4, 0, sys_mbind, "mbind" }, /* 274 */ - { 5, 0, sys_get_mempolicy, "get_mempolicy" }, /* 275 */ - { 3, 0, sys_set_mempolicy, "set_mempolicy" }, /* 276 */ + { 4, TM, sys_mbind, "mbind" }, /* 274 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 275 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 276 */ { 4, 0, sys_mq_open, "mq_open" }, /* 277 */ { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 278 */ { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 279 */ @@ -320,7 +320,7 @@ { 0, TD, sys_inotify_init, "inotify_init" }, /* 291 */ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 292 */ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 293 */ - { 4, 0, sys_migrate_pages, "migrate_pages" }, /* 294 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 294 */ { 4, TD|TF, sys_openat, "openat" }, /* 295 */ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 296 */ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 297 */ @@ -340,17 +340,17 @@ { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 311 */ { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 312 */ { 6, TD, sys_splice, "splice" }, /* 313 */ - { 4, TD, sys_sync_file_range, "sync_file_range"}, /* 314 */ + { 6, TD, sys_sync_file_range, "sync_file_range"}, /* 314 */ { 4, TD, sys_tee, "tee" }, /* 315 */ { 5, TD, sys_vmsplice, "vmsplice" }, /* 316 */ - { 6, 0, sys_move_pages, "move_pages" }, /* 317 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 317 */ { 3, 0, sys_getcpu, "getcpu" }, /* 318 */ { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 319 */ { 4, TD|TF, sys_utimensat, "utimensat" }, /* 320 */ { 3, TD|TS, sys_signalfd, "signalfd" }, /* 321 */ { 2, TD, sys_timerfd_create, "timerfd_create" }, /* 322 */ { 1, TD, sys_eventfd, "eventfd" }, /* 323 */ - { 6, 0, printargs, "fallocate" }, /* 324 */ + { 6, TD, sys_fallocate, "fallocate" }, /* 324 */ { 5, TI, sys_semtimedop, "semtimedop" }, /* 325 */ { 4, TD, sys_timerfd_settime, "timerfd_settime" }, /* 326 */ { 2, TD, sys_timerfd_gettime, "timerfd_gettime" }, /* 327 */ @@ -387,12 +387,12 @@ { 5, TN, sys_getsockopt, "getsockopt" }, /* 358 */ { 2, TN, sys_shutdown, "shutdown" }, /* 359 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 360 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 361 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 361 */ { 4, TN, sys_accept4, "accept4" }, /* 362 */ { 5, TD, sys_preadv, "preadv" }, /* 363 */ { 5, TD, sys_pwritev, "pwritev" }, /* 364 */ { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo" }, /* 365 */ - { 5, TN, sys_perf_event_open, "perf_event_open" }, /* 366 */ + { 5, TD, sys_perf_event_open, "perf_event_open" }, /* 366 */ { 5, TN, printargs, "recvmmsg" }, /* 367 */ { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 368 */ { 5, TD|TF, sys_fanotify_mark, "fanotify_mark" }, /* 369 */ @@ -405,3 +405,5 @@ { 4, TN, sys_sendmmsg, "sendmmsg" }, /* 376 */ { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 377 */ { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 378 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 379 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 380 */ diff --git a/linux/mips/syscallent-compat.h b/linux/mips/syscallent-compat.h new file mode 100644 index 00000000..696108fd --- /dev/null +++ b/linux/mips/syscallent-compat.h @@ -0,0 +1,870 @@ + { 0, 0, printargs, "svr4_syscall" }, /* 000 */ + { 0, 0, printargs, "svr4_exit" }, /* 001 */ + { 0, 0, printargs, "svr4_fork" }, /* 002 */ + { 0, 0, printargs, "svr4_read" }, /* 003 */ + { 0, 0, printargs, "svr4_write" }, /* 004 */ + { 0, 0, printargs, "svr4_open" }, /* 005 */ + { 0, 0, printargs, "svr4_close" }, /* 006 */ + { 0, 0, printargs, "svr4_wait" }, /* 007 */ + { 0, 0, printargs, "svr4_creat" }, /* 008 */ + { 0, 0, printargs, "svr4_link" }, /* 009 */ + { 0, 0, printargs, "svr4_unlink" }, /* 010 */ + { 0, 0, printargs, "svr4_exec" }, /* 011 */ + { 0, 0, printargs, "svr4_chdir" }, /* 012 */ + { 0, 0, printargs, "svr4_gtime" }, /* 013 */ + { 0, 0, printargs, "svr4_mknod" }, /* 014 */ + { 0, 0, printargs, "svr4_chmod" }, /* 015 */ + { 0, 0, printargs, "svr4_chown" }, /* 016 */ + { 0, TM, printargs, "svr4_sbreak" }, /* 017 */ + { 0, 0, printargs, "svr4_stat" }, /* 018 */ + { 0, 0, printargs, "svr4_lseek" }, /* 019 */ + { 0, 0, printargs, "svr4_getpid" }, /* 020 */ + { 0, 0, printargs, "svr4_mount" }, /* 021 */ + { 0, 0, printargs, "svr4_umount" }, /* 022 */ + { 0, 0, printargs, "svr4_setuid" }, /* 023 */ + { 0, 0, printargs, "svr4_getuid" }, /* 024 */ + { 0, 0, printargs, "svr4_stime" }, /* 025 */ + { 0, 0, printargs, "svr4_ptrace" }, /* 026 */ + { 0, 0, printargs, "svr4_alarm" }, /* 027 */ + { 0, 0, printargs, "svr4_fstat" }, /* 028 */ + { 0, 0, printargs, "svr4_pause" }, /* 029 */ + { 0, 0, printargs, "svr4_utime" }, /* 030 */ + { 0, 0, printargs, "svr4_stty" }, /* 031 */ + { 0, 0, printargs, "svr4_gtty" }, /* 032 */ + { 0, 0, printargs, "svr4_access" }, /* 033 */ + { 0, 0, printargs, "svr4_nice" }, /* 034 */ + { 0, 0, printargs, "svr4_statfs" }, /* 035 */ + { 0, 0, printargs, "svr4_sync" }, /* 036 */ + { 0, 0, printargs, "svr4_kill" }, /* 037 */ + { 0, 0, printargs, "svr4_fstatfs" }, /* 038 */ + { 0, 0, printargs, "svr4_setpgrp" }, /* 039 */ + { 0, 0, printargs, "svr4_cxenix" }, /* 040 */ + { 0, 0, printargs, "svr4_dup" }, /* 041 */ + { 0, 0, printargs, "svr4_pipe" }, /* 042 */ + { 0, 0, printargs, "svr4_times" }, /* 043 */ + { 0, 0, printargs, "svr4_profil" }, /* 044 */ + { 0, 0, printargs, "svr4_plock" }, /* 045 */ + { 0, 0, printargs, "svr4_setgid" }, /* 046 */ + { 0, 0, printargs, "svr4_getgid" }, /* 047 */ + { 0, 0, printargs, "svr4_sig" }, /* 048 */ + { 0, 0, printargs, "svr4_msgsys" }, /* 049 */ + { 0, 0, printargs, "svr4_sysmips" }, /* 050 */ + { 0, 0, printargs, "svr4_sysacct" }, /* 051 */ + { 0, 0, printargs, "svr4_shmsys" }, /* 052 */ + { 0, 0, printargs, "svr4_semsys" }, /* 053 */ + { 0, 0, printargs, "svr4_ioctl" }, /* 054 */ + { 0, 0, printargs, "svr4_uadmin" }, /* 055 */ + { 0, 0, printargs, "svr4_exch" }, /* 056 */ + { 0, 0, printargs, "svr4_utssys" }, /* 057 */ + { 0, 0, printargs, "svr4_fsync" }, /* 058 */ + { 0, 0, printargs, "svr4_exece" }, /* 059 */ + { 0, 0, printargs, "svr4_umask" }, /* 060 */ + { 0, 0, printargs, "svr4_chroot" }, /* 061 */ + { 0, 0, printargs, "svr4_fcntl" }, /* 062 */ + { 0, 0, printargs, "svr4_ulimit" }, /* 063 */ + { 0, 0, NULL, NULL }, /* 064 */ + { 0, 0, NULL, NULL }, /* 065 */ + { 0, 0, NULL, NULL }, /* 066 */ + { 0, 0, NULL, NULL }, /* 067 */ + { 0, 0, NULL, NULL }, /* 068 */ + { 0, 0, NULL, NULL }, /* 069 */ + { 0, 0, printargs, "svr4_advfs" }, /* 070 */ + { 0, 0, printargs, "svr4_unadvfs" }, /* 071 */ + { 0, 0, NULL, NULL }, /* 072 */ + { 0, 0, NULL, NULL }, /* 073 */ + { 0, 0, printargs, "svr4_rfstart" }, /* 074 */ + { 0, 0, NULL, NULL }, /* 075 */ + { 0, 0, printargs, "svr4_rdebug" }, /* 076 */ + { 0, 0, printargs, "svr4_rfstop" }, /* 077 */ + { 0, 0, printargs, "svr4_rfsys" }, /* 078 */ + { 0, 0, printargs, "svr4_rmdir" }, /* 079 */ + { 0, 0, printargs, "svr4_mkdir" }, /* 080 */ + { 0, 0, printargs, "svr4_getdents" }, /* 081 */ + { 0, 0, printargs, "svr4_libattach" }, /* 082 */ + { 0, 0, printargs, "svr4_libdetach" }, /* 083 */ + { 0, 0, printargs, "svr4_sysfs" }, /* 084 */ + { 0, 0, printargs, "svr4_getmsg" }, /* 085 */ + { 0, 0, printargs, "svr4_putmsg" }, /* 086 */ + { 0, 0, printargs, "svr4_poll" }, /* 087 */ + { 0, 0, printargs, "svr4_lstat" }, /* 088 */ + { 0, 0, printargs, "svr4_symlink" }, /* 089 */ + { 0, 0, printargs, "svr4_readlink" }, /* 090 */ + { 0, 0, printargs, "svr4_setgroups" }, /* 091 */ + { 0, 0, printargs, "svr4_getgroups" }, /* 092 */ + { 0, 0, printargs, "svr4_fchmod" }, /* 093 */ + { 0, 0, printargs, "svr4_fchown" }, /* 094 */ + { 0, 0, printargs, "svr4_sigprocmask" }, /* 095 */ + { 0, 0, printargs, "svr4_sigsuspend" }, /* 096 */ + { 0, 0, printargs, "svr4_sigaltstack" }, /* 097 */ + { 0, 0, printargs, "svr4_sigaction" }, /* 098 */ + { 0, 0, printargs, "svr4_sigpending" }, /* 099 */ + { 0, 0, printargs, "svr4_setcontext" }, /* 0100 */ + { 0, 0, printargs, "svr4_evsys" }, /* 0101 */ + { 0, 0, printargs, "svr4_evtrapret" }, /* 0102 */ + { 0, 0, printargs, "svr4_statvfs" }, /* 0103 */ + { 0, 0, printargs, "svr4_fstatvfs" }, /* 0104 */ + { 0, 0, NULL, NULL }, /* 105 */ + { 0, 0, printargs, "svr4_nfssys" }, /* 0106 */ + { 0, 0, printargs, "svr4_waitid" }, /* 0107 */ + { 0, 0, printargs, "svr4_sigsendset" }, /* 0108 */ + { 0, 0, printargs, "svr4_hrtsys" }, /* 0109 */ + { 0, 0, printargs, "svr4_acancel" }, /* 0110 */ + { 0, 0, printargs, "svr4_async" }, /* 0111 */ + { 0, 0, printargs, "svr4_priocntlset" }, /* 0112 */ + { 0, 0, printargs, "svr4_pathconf" }, /* 0113 */ + { 0, TM, printargs, "svr4_mincore" }, /* 0114 */ + { 0, TD|TM, printargs, "svr4_mmap" }, /* 0115 */ + { 0, TM, printargs, "svr4_mprotect" }, /* 0116 */ + { 0, TM, printargs, "svr4_munmap" }, /* 0117 */ + { 0, 0, printargs, "svr4_fpathconf" }, /* 0118 */ + { 0, 0, printargs, "svr4_vfork" }, /* 0119 */ + { 0, 0, printargs, "svr4_fchdir" }, /* 0120 */ + { 0, 0, printargs, "svr4_readv" }, /* 0121 */ + { 0, 0, printargs, "svr4_writev" }, /* 0122 */ + { 0, 0, printargs, "svr4_xstat" }, /* 0123 */ + { 0, 0, printargs, "svr4_lxstat" }, /* 0124 */ + { 0, 0, printargs, "svr4_fxstat" }, /* 0125 */ + { 0, 0, printargs, "svr4_xmknod" }, /* 0126 */ + { 0, 0, printargs, "svr4_clocal" }, /* 0127 */ + { 0, 0, printargs, "svr4_setrlimit" }, /* 0128 */ + { 0, 0, printargs, "svr4_getrlimit" }, /* 0129 */ + { 0, 0, printargs, "svr4_lchown" }, /* 0130 */ + { 0, 0, printargs, "svr4_memcntl" }, /* 0131 */ + { 0, 0, printargs, "svr4_getpmsg" }, /* 0132 */ + { 0, 0, printargs, "svr4_putpmsg" }, /* 0133 */ + { 0, 0, printargs, "svr4_rename" }, /* 0134 */ + { 0, 0, printargs, "svr4_nuname" }, /* 0135 */ + { 0, 0, printargs, "svr4_setegid" }, /* 0136 */ + { 0, 0, printargs, "svr4_sysconf" }, /* 0137 */ + { 0, 0, printargs, "svr4_adjtime" }, /* 0138 */ + { 0, 0, printargs, "svr4_sysinfo" }, /* 0139 */ + { 0, 0, NULL, NULL }, /* 140 */ + { 0, 0, printargs, "svr4_seteuid" }, /* 0141 */ + { 0, 0, printargs, "svr4_PYRAMID_statis" }, /* 0142 */ + { 0, 0, printargs, "svr4_PYRAMID_tuning" }, /* 0143 */ + { 0, 0, printargs, "svr4_PYRAMID_forcerr" }, /* 0144 */ + { 0, 0, printargs, "svr4_PYRAMID_mpcntl" }, /* 0145 */ + { 0, 0, NULL, NULL }, /* 146 */ + { 0, 0, NULL, NULL }, /* 147 */ + { 0, 0, NULL, NULL }, /* 148 */ + { 0, 0, NULL, NULL }, /* 149 */ + { 0, 0, NULL, NULL }, /* 150 */ + { 0, 0, NULL, NULL }, /* 151 */ + { 0, 0, NULL, NULL }, /* 152 */ + { 0, 0, NULL, NULL }, /* 153 */ + { 0, 0, NULL, NULL }, /* 154 */ + { 0, 0, NULL, NULL }, /* 155 */ + { 0, 0, NULL, NULL }, /* 156 */ + { 0, 0, NULL, NULL }, /* 157 */ + { 0, 0, NULL, NULL }, /* 158 */ + { 0, 0, NULL, NULL }, /* 159 */ + { 0, 0, NULL, NULL }, /* 160 */ + { 0, 0, NULL, NULL }, /* 161 */ + { 0, 0, NULL, NULL }, /* 162 */ + { 0, 0, NULL, NULL }, /* 163 */ + { 0, 0, NULL, NULL }, /* 164 */ + { 0, 0, NULL, NULL }, /* 165 */ + { 0, 0, NULL, NULL }, /* 166 */ + { 0, 0, NULL, NULL }, /* 167 */ + { 0, 0, NULL, NULL }, /* 168 */ + { 0, 0, NULL, NULL }, /* 169 */ + { 0, 0, NULL, NULL }, /* 170 */ + { 0, 0, NULL, NULL }, /* 171 */ + { 0, 0, NULL, NULL }, /* 172 */ + { 0, 0, NULL, NULL }, /* 173 */ + { 0, 0, NULL, NULL }, /* 174 */ + { 0, 0, NULL, NULL }, /* 175 */ + { 0, 0, NULL, NULL }, /* 176 */ + { 0, 0, NULL, NULL }, /* 177 */ + { 0, 0, NULL, NULL }, /* 178 */ + { 0, 0, NULL, NULL }, /* 179 */ + { 0, 0, NULL, NULL }, /* 180 */ + { 0, 0, NULL, NULL }, /* 181 */ + { 0, 0, NULL, NULL }, /* 182 */ + { 0, 0, NULL, NULL }, /* 183 */ + { 0, 0, NULL, NULL }, /* 184 */ + { 0, 0, NULL, NULL }, /* 185 */ + { 0, 0, NULL, NULL }, /* 186 */ + { 0, 0, NULL, NULL }, /* 187 */ + { 0, 0, NULL, NULL }, /* 188 */ + { 0, 0, NULL, NULL }, /* 189 */ + { 0, 0, NULL, NULL }, /* 190 */ + { 0, 0, NULL, NULL }, /* 191 */ + { 0, 0, NULL, NULL }, /* 192 */ + { 0, 0, NULL, NULL }, /* 193 */ + { 0, 0, NULL, NULL }, /* 194 */ + { 0, 0, NULL, NULL }, /* 195 */ + { 0, 0, NULL, NULL }, /* 196 */ + { 0, 0, NULL, NULL }, /* 197 */ + { 0, 0, NULL, NULL }, /* 198 */ + { 0, 0, NULL, NULL }, /* 199 */ + { 0, 0, NULL, NULL }, /* 200 */ + { 0, 0, printargs, "svr4_aread" }, /* 0201 */ + { 0, 0, printargs, "svr4_awrite" }, /* 0202 */ + { 0, 0, printargs, "svr4_listio" }, /* 0203 */ + { 0, 0, printargs, "svr4_mips_acancel" }, /* 0204 */ + { 0, 0, printargs, "svr4_astatus" }, /* 0205 */ + { 0, 0, printargs, "svr4_await" }, /* 0206 */ + { 0, 0, printargs, "svr4_areadv" }, /* 0207 */ + { 0, 0, printargs, "svr4_awritev" }, /* 0208 */ + + [209 ... 999] = { }, /* 999 */ /* end of SVR4 */ + + { 0, 0, printargs, "sysv_syscall" }, /* 1000 */ /* start of SYSV */ + { 0, 0, printargs, "sysv_exit" }, /* 1001 */ + { 0, 0, printargs, "sysv_fork" }, /* 1002 */ + { 0, 0, printargs, "sysv_read" }, /* 1003 */ + { 0, 0, printargs, "sysv_write" }, /* 1004 */ + { 0, 0, printargs, "sysv_open" }, /* 1005 */ + { 0, 0, printargs, "sysv_close" }, /* 1006 */ + { 0, 0, printargs, "sysv_wait" }, /* 1007 */ + { 0, 0, printargs, "sysv_creat" }, /* 1008 */ + { 0, 0, printargs, "sysv_link" }, /* 1009 */ + { 0, 0, printargs, "sysv_unlink" }, /* 1010 */ + { 0, 0, printargs, "sysv_execv" }, /* 1011 */ + { 0, 0, printargs, "sysv_chdir" }, /* 1012 */ + { 0, 0, printargs, "sysv_time" }, /* 1013 */ + { 0, 0, printargs, "sysv_mknod" }, /* 1014 */ + { 0, 0, printargs, "sysv_chmod" }, /* 1015 */ + { 0, 0, printargs, "sysv_chown" }, /* 1016 */ + { 0, TM, printargs, "sysv_brk" }, /* 1017 */ + { 0, 0, printargs, "sysv_stat" }, /* 1018 */ + { 0, 0, printargs, "sysv_lseek" }, /* 1019 */ + { 0, 0, printargs, "sysv_getpid" }, /* 1020 */ + { 0, 0, printargs, "sysv_mount" }, /* 1021 */ + { 0, 0, printargs, "sysv_umount" }, /* 1022 */ + { 0, 0, printargs, "sysv_setuid" }, /* 1023 */ + { 0, 0, printargs, "sysv_getuid" }, /* 1024 */ + { 0, 0, printargs, "sysv_stime" }, /* 1025 */ + { 0, 0, printargs, "sysv_ptrace" }, /* 1026 */ + { 0, 0, printargs, "sysv_alarm" }, /* 1027 */ + { 0, 0, printargs, "sysv_fstat" }, /* 1028 */ + { 0, 0, printargs, "sysv_pause" }, /* 1029 */ + { 0, 0, printargs, "sysv_utime" }, /* 1030 */ + { 0, 0, printargs, "sysv_stty" }, /* 1031 */ + { 0, 0, printargs, "sysv_gtty" }, /* 1032 */ + { 0, 0, printargs, "sysv_access" }, /* 1033 */ + { 0, 0, printargs, "sysv_nice" }, /* 1034 */ + { 0, 0, printargs, "sysv_statfs" }, /* 1035 */ + { 0, 0, printargs, "sysv_sync" }, /* 1036 */ + { 0, 0, printargs, "sysv_kill" }, /* 1037 */ + { 0, 0, printargs, "sysv_fstatfs" }, /* 1038 */ + { 0, 0, printargs, "sysv_setpgrp" }, /* 1039 */ + { 0, 0, printargs, "sysv_syssgi" }, /* 1040 */ + { 0, 0, printargs, "sysv_dup" }, /* 1041 */ + { 0, 0, printargs, "sysv_pipe" }, /* 1042 */ + { 0, 0, printargs, "sysv_times" }, /* 1043 */ + { 0, 0, printargs, "sysv_profil" }, /* 1044 */ + { 0, 0, printargs, "sysv_plock" }, /* 1045 */ + { 0, 0, printargs, "sysv_setgid" }, /* 1046 */ + { 0, 0, printargs, "sysv_getgid" }, /* 1047 */ + { 0, 0, printargs, "sysv_sig" }, /* 1048 */ + { 0, 0, printargs, "sysv_msgsys" }, /* 1049 */ + { 0, 0, printargs, "sysv_sysmips" }, /* 1050 */ + { 0, 0, printargs, "sysv_acct" }, /* 1051 */ + { 0, 0, printargs, "sysv_shmsys" }, /* 1052 */ + { 0, 0, printargs, "sysv_semsys" }, /* 1053 */ + { 0, 0, printargs, "sysv_ioctl" }, /* 1054 */ + { 0, 0, printargs, "sysv_uadmin" }, /* 1055 */ + { 0, 0, printargs, "sysv_sysmp" }, /* 1056 */ + { 0, 0, printargs, "sysv_utssys" }, /* 1057 */ + { 0, 0, NULL, NULL }, /* 1058 */ + { 0, 0, printargs, "sysv_execve" }, /* 1059 */ + { 0, 0, printargs, "sysv_umask" }, /* 1060 */ + { 0, 0, printargs, "sysv_chroot" }, /* 1061 */ + { 0, 0, printargs, "sysv_fcntl" }, /* 1062 */ + { 0, 0, printargs, "sysv_ulimit" }, /* 1063 */ + { 0, 0, NULL, NULL }, /* 1064 */ + { 0, 0, NULL, NULL }, /* 1065 */ + { 0, 0, NULL, NULL }, /* 1066 */ + { 0, 0, NULL, NULL }, /* 1067 */ + { 0, 0, NULL, NULL }, /* 1068 */ + { 0, 0, NULL, NULL }, /* 1069 */ + { 0, 0, printargs, "sysv_advfs" }, /* 1070 */ + { 0, 0, printargs, "sysv_unadvfs" }, /* 1071 */ + { 0, 0, printargs, "sysv_rmount" }, /* 1072 */ + { 0, 0, printargs, "sysv_rumount" }, /* 1073 */ + { 0, 0, printargs, "sysv_rfstart" }, /* 1074 */ + { 0, 0, printargs, "sysv_getrlimit64" }, /* 1075 */ + { 0, 0, printargs, "sysv_setrlimit64" }, /* 1076 */ + { 0, 0, printargs, "sysv_nanosleep" }, /* 1077 */ + { 0, 0, printargs, "sysv_lseek64" }, /* 1078 */ + { 0, 0, printargs, "sysv_rmdir" }, /* 1079 */ + { 0, 0, printargs, "sysv_mkdir" }, /* 1080 */ + { 0, 0, printargs, "sysv_getdents" }, /* 1081 */ + { 0, 0, printargs, "sysv_sginap" }, /* 1082 */ + { 0, 0, printargs, "sysv_sgikopt" }, /* 1083 */ + { 0, 0, printargs, "sysv_sysfs" }, /* 1084 */ + { 0, 0, printargs, "sysv_getmsg" }, /* 1085 */ + { 0, 0, printargs, "sysv_putmsg" }, /* 1086 */ + { 0, 0, printargs, "sysv_poll" }, /* 1087 */ + { 0, 0, printargs, "sysv_sigreturn" }, /* 1088 */ + { 0, 0, printargs, "sysv_accept" }, /* 1089 */ + { 0, 0, printargs, "sysv_bind" }, /* 1090 */ + { 0, 0, printargs, "sysv_connect" }, /* 1091 */ + { 0, 0, printargs, "sysv_gethostid" }, /* 1092 */ + { 0, 0, printargs, "sysv_getpeername" }, /* 1093 */ + { 0, 0, printargs, "sysv_getsockname" }, /* 1094 */ + { 0, 0, printargs, "sysv_getsockopt" }, /* 1095 */ + { 0, 0, printargs, "sysv_listen" }, /* 1096 */ + { 0, 0, printargs, "sysv_recv" }, /* 1097 */ + { 0, 0, printargs, "sysv_recvfrom" }, /* 1098 */ + { 0, 0, printargs, "sysv_recvmsg" }, /* 1099 */ + { 0, 0, printargs, "sysv_select" }, /* 1100 */ + { 0, 0, printargs, "sysv_send" }, /* 1101 */ + { 0, 0, printargs, "sysv_sendmsg" }, /* 1102 */ + { 0, 0, printargs, "sysv_sendto" }, /* 1103 */ + { 0, 0, printargs, "sysv_sethostid" }, /* 1104 */ + { 0, 0, printargs, "sysv_setsockopt" }, /* 1105 */ + { 0, 0, printargs, "sysv_shutdown" }, /* 1106 */ + { 0, 0, printargs, "sysv_socket" }, /* 1107 */ + { 0, 0, printargs, "sysv_gethostname" }, /* 1108 */ + { 0, 0, printargs, "sysv_sethostname" }, /* 1109 */ + { 0, 0, printargs, "sysv_getdomainname" }, /* 1110 */ + { 0, 0, printargs, "sysv_setdomainname" }, /* 1111 */ + { 0, 0, printargs, "sysv_truncate" }, /* 1112 */ + { 0, 0, printargs, "sysv_ftruncate" }, /* 1113 */ + { 0, 0, printargs, "sysv_rename" }, /* 1114 */ + { 0, 0, printargs, "sysv_symlink" }, /* 1115 */ + { 0, 0, printargs, "sysv_readlink" }, /* 1116 */ + { 0, 0, printargs, "sysv_lstat" }, /* 1117 */ + { 0, 0, printargs, "sysv_nfsmount" }, /* 1118 */ + { 0, 0, printargs, "sysv_nfssvc" }, /* 1119 */ + { 0, 0, printargs, "sysv_getfh" }, /* 1120 */ + { 0, 0, printargs, "sysv_async_daemon" }, /* 1121 */ + { 0, 0, printargs, "sysv_exportfs" }, /* 1122 */ + { 0, 0, printargs, "sysv_setregid" }, /* 1123 */ + { 0, 0, printargs, "sysv_setreuid" }, /* 1124 */ + { 0, 0, printargs, "sysv_getitimer" }, /* 1125 */ + { 0, 0, printargs, "sysv_setitimer" }, /* 1126 */ + { 0, 0, printargs, "sysv_adjtime" }, /* 1127 */ + { 0, 0, printargs, "sysv_BSD_getime" }, /* 1128 */ + { 0, 0, printargs, "sysv_sproc" }, /* 1129 */ + { 0, 0, printargs, "sysv_prctl" }, /* 1130 */ + { 0, 0, printargs, "sysv_procblk" }, /* 1131 */ + { 0, 0, printargs, "sysv_sprocsp" }, /* 1132 */ + { 0, 0, printargs, "sysv_sgigsc" }, /* 1133 */ + { 0, TD|TM, printargs, "sysv_mmap" }, /* 1134 */ + { 0, TM, printargs, "sysv_munmap" }, /* 1135 */ + { 0, TM, printargs, "sysv_mprotect" }, /* 1136 */ + { 0, TM, printargs, "sysv_msync" }, /* 1137 */ + { 0, TM, printargs, "sysv_madvise" }, /* 1138 */ + { 0, 0, printargs, "sysv_pagelock" }, /* 1139 */ + { 0, 0, printargs, "sysv_getpagesize" }, /* 1140 */ + { 0, TF, printargs, "sysv_quotactl" }, /* 1141 */ + { 0, 0, printargs, "sysv_libdetach" }, /* 1142 */ + { 0, 0, printargs, "sysv_BSDgetpgrp" }, /* 1143 */ + { 0, 0, printargs, "sysv_BSDsetpgrp" }, /* 1144 */ + { 0, 0, printargs, "sysv_vhangup" }, /* 1145 */ + { 0, 0, printargs, "sysv_fsync" }, /* 1146 */ + { 0, 0, printargs, "sysv_fchdir" }, /* 1147 */ + { 0, 0, printargs, "sysv_getrlimit" }, /* 1148 */ + { 0, 0, printargs, "sysv_setrlimit" }, /* 1149 */ + { 0, 0, printargs, "sysv_cacheflush" }, /* 1150 */ + { 0, 0, printargs, "sysv_cachectl" }, /* 1151 */ + { 0, 0, printargs, "sysv_fchown" }, /* 1152 */ + { 0, 0, printargs, "sysv_fchmod" }, /* 1153 */ + { 0, 0, printargs, "sysv_wait3" }, /* 1154 */ + { 0, 0, printargs, "sysv_socketpair" }, /* 1155 */ + { 0, 0, printargs, "sysv_sysinfo" }, /* 1156 */ + { 0, 0, printargs, "sysv_nuname" }, /* 1157 */ + { 0, 0, printargs, "sysv_xstat" }, /* 1158 */ + { 0, 0, printargs, "sysv_lxstat" }, /* 1159 */ + { 0, 0, printargs, "sysv_fxstat" }, /* 1160 */ + { 0, 0, printargs, "sysv_xmknod" }, /* 1161 */ + { 0, 0, printargs, "sysv_ksigaction" }, /* 1162 */ + { 0, 0, printargs, "sysv_sigpending" }, /* 1163 */ + { 0, 0, printargs, "sysv_sigprocmask" }, /* 1164 */ + { 0, 0, printargs, "sysv_sigsuspend" }, /* 1165 */ + { 0, 0, printargs, "sysv_sigpoll" }, /* 1166 */ + { 0, 0, printargs, "sysv_swapctl" }, /* 1167 */ + { 0, 0, printargs, "sysv_getcontext" }, /* 1168 */ + { 0, 0, printargs, "sysv_setcontext" }, /* 1169 */ + { 0, 0, printargs, "sysv_waitsys" }, /* 1170 */ + { 0, 0, printargs, "sysv_sigstack" }, /* 1171 */ + { 0, 0, printargs, "sysv_sigaltstack" }, /* 1172 */ + { 0, 0, printargs, "sysv_sigsendset" }, /* 1173 */ + { 0, 0, printargs, "sysv_statvfs" }, /* 1174 */ + { 0, 0, printargs, "sysv_fstatvfs" }, /* 1175 */ + { 0, 0, printargs, "sysv_getpmsg" }, /* 1176 */ + { 0, 0, printargs, "sysv_putpmsg" }, /* 1177 */ + { 0, 0, printargs, "sysv_lchown" }, /* 1178 */ + { 0, 0, printargs, "sysv_priocntl" }, /* 1179 */ + { 0, 0, printargs, "sysv_ksigqueue" }, /* 1180 */ + { 0, 0, printargs, "sysv_readv" }, /* 1181 */ + { 0, 0, printargs, "sysv_writev" }, /* 1182 */ + { 0, 0, printargs, "sysv_truncate64" }, /* 1183 */ + { 0, 0, printargs, "sysv_ftruncate64" }, /* 1184 */ + { 0, TD|TM, printargs, "sysv_mmap64" }, /* 1185 */ + { 0, 0, printargs, "sysv_dmi" }, /* 1186 */ + { 0, 0, printargs, "sysv_pread" }, /* 1187 */ + { 0, 0, printargs, "sysv_pwrite" }, /* 1188 */ + + [1189 ... 1999] = { }, /* 1999 */ /* end of SYSV */ + + { 0, 0, printargs, "bsd43_syscall" }, /* 2000 */ /* start of BSD 4.3 */ + { 0, 0, printargs, "bsd43_exit" }, /* 2001 */ + { 0, 0, printargs, "bsd43_fork" }, /* 2002 */ + { 0, 0, printargs, "bsd43_read" }, /* 2003 */ + { 0, 0, printargs, "bsd43_write" }, /* 2004 */ + { 0, 0, printargs, "bsd43_open" }, /* 2005 */ + { 0, 0, printargs, "bsd43_close" }, /* 2006 */ + { 0, 0, printargs, "bsd43_wait" }, /* 2007 */ + { 0, 0, printargs, "bsd43_creat" }, /* 2008 */ + { 0, 0, printargs, "bsd43_link" }, /* 2009 */ + { 0, 0, printargs, "bsd43_unlink" }, /* 2010 */ + { 0, 0, printargs, "bsd43_exec" }, /* 2011 */ + { 0, 0, printargs, "bsd43_chdir" }, /* 2012 */ + { 0, 0, printargs, "bsd43_time" }, /* 2013 */ + { 0, 0, printargs, "bsd43_mknod" }, /* 2014 */ + { 0, 0, printargs, "bsd43_chmod" }, /* 2015 */ + { 0, 0, printargs, "bsd43_chown" }, /* 2016 */ + { 0, TM, printargs, "bsd43_sbreak" }, /* 2017 */ + { 0, 0, printargs, "bsd43_oldstat" }, /* 2018 */ + { 0, 0, printargs, "bsd43_lseek" }, /* 2019 */ + { 0, 0, printargs, "bsd43_getpid" }, /* 2020 */ + { 0, 0, printargs, "bsd43_oldmount" }, /* 2021 */ + { 0, 0, printargs, "bsd43_umount" }, /* 2022 */ + { 0, 0, printargs, "bsd43_setuid" }, /* 2023 */ + { 0, 0, printargs, "bsd43_getuid" }, /* 2024 */ + { 0, 0, printargs, "bsd43_stime" }, /* 2025 */ + { 0, 0, printargs, "bsd43_ptrace" }, /* 2026 */ + { 0, 0, printargs, "bsd43_alarm" }, /* 2027 */ + { 0, 0, printargs, "bsd43_oldfstat" }, /* 2028 */ + { 0, 0, printargs, "bsd43_pause" }, /* 2029 */ + { 0, 0, printargs, "bsd43_utime" }, /* 2030 */ + { 0, 0, printargs, "bsd43_stty" }, /* 2031 */ + { 0, 0, printargs, "bsd43_gtty" }, /* 2032 */ + { 0, 0, printargs, "bsd43_access" }, /* 2033 */ + { 0, 0, printargs, "bsd43_nice" }, /* 2034 */ + { 0, 0, printargs, "bsd43_ftime" }, /* 2035 */ + { 0, 0, printargs, "bsd43_sync" }, /* 2036 */ + { 0, 0, printargs, "bsd43_kill" }, /* 2037 */ + { 0, 0, printargs, "bsd43_stat" }, /* 2038 */ + { 0, 0, printargs, "bsd43_oldsetpgrp" }, /* 2039 */ + { 0, 0, printargs, "bsd43_lstat" }, /* 2040 */ + { 0, 0, printargs, "bsd43_dup" }, /* 2041 */ + { 0, 0, printargs, "bsd43_pipe" }, /* 2042 */ + { 0, 0, printargs, "bsd43_times" }, /* 2043 */ + { 0, 0, printargs, "bsd43_profil" }, /* 2044 */ + { 0, 0, printargs, "bsd43_msgsys" }, /* 2045 */ + { 0, 0, printargs, "bsd43_setgid" }, /* 2046 */ + { 0, 0, printargs, "bsd43_getgid" }, /* 2047 */ + { 0, 0, printargs, "bsd43_ssig" }, /* 2048 */ + { 0, 0, NULL, NULL }, /* 2049 */ + { 0, 0, NULL, NULL }, /* 2050 */ + { 0, 0, printargs, "bsd43_sysacct" }, /* 2051 */ + { 0, 0, printargs, "bsd43_phys" }, /* 2052 */ + { 0, 0, printargs, "bsd43_lock" }, /* 2053 */ + { 0, 0, printargs, "bsd43_ioctl" }, /* 2054 */ + { 0, 0, printargs, "bsd43_reboot" }, /* 2055 */ + { 0, 0, printargs, "bsd43_mpxchan" }, /* 2056 */ + { 0, 0, printargs, "bsd43_symlink" }, /* 2057 */ + { 0, 0, printargs, "bsd43_readlink" }, /* 2058 */ + { 0, 0, printargs, "bsd43_execve" }, /* 2059 */ + { 0, 0, printargs, "bsd43_umask" }, /* 2060 */ + { 0, 0, printargs, "bsd43_chroot" }, /* 2061 */ + { 0, 0, printargs, "bsd43_fstat" }, /* 2062 */ + { 0, 0, NULL, NULL }, /* 2063 */ + { 0, 0, printargs, "bsd43_getpagesize" }, /* 2064 */ + { 0, TM, printargs, "bsd43_mremap" }, /* 2065 */ + { 0, 0, printargs, "bsd43_vfork" }, /* 2066 */ + { 0, 0, printargs, "bsd43_vread" }, /* 2067 */ + { 0, 0, printargs, "bsd43_vwrite" }, /* 2068 */ + { 0, TM, printargs, "bsd43_sbrk" }, /* 2069 */ + { 0, 0, printargs, "bsd43_sstk" }, /* 2070 */ + { 0, TD|TM, printargs, "bsd43_mmap" }, /* 2071 */ + { 0, 0, printargs, "bsd43_vadvise" }, /* 2072 */ + { 0, TM, printargs, "bsd43_munmap" }, /* 2073 */ + { 0, TM, printargs, "bsd43_mprotect" }, /* 2074 */ + { 0, TM, printargs, "bsd43_madvise" }, /* 2075 */ + { 0, 0, printargs, "bsd43_vhangup" }, /* 2076 */ + { 0, 0, printargs, "bsd43_vlimit" }, /* 2077 */ + { 0, TM, printargs, "bsd43_mincore" }, /* 2078 */ + { 0, 0, printargs, "bsd43_getgroups" }, /* 2079 */ + { 0, 0, printargs, "bsd43_setgroups" }, /* 2080 */ + { 0, 0, printargs, "bsd43_getpgrp" }, /* 2081 */ + { 0, 0, printargs, "bsd43_setpgrp" }, /* 2082 */ + { 0, 0, printargs, "bsd43_setitimer" }, /* 2083 */ + { 0, 0, printargs, "bsd43_wait3" }, /* 2084 */ + { 0, 0, printargs, "bsd43_swapon" }, /* 2085 */ + { 0, 0, printargs, "bsd43_getitimer" }, /* 2086 */ + { 0, 0, printargs, "bsd43_gethostname" }, /* 2087 */ + { 0, 0, printargs, "bsd43_sethostname" }, /* 2088 */ + { 0, 0, printargs, "bsd43_getdtablesize" }, /* 2089 */ + { 0, 0, printargs, "bsd43_dup2" }, /* 2090 */ + { 0, 0, printargs, "bsd43_getdopt" }, /* 2091 */ + { 0, 0, printargs, "bsd43_fcntl" }, /* 2092 */ + { 0, 0, printargs, "bsd43_select" }, /* 2093 */ + { 0, 0, printargs, "bsd43_setdopt" }, /* 2094 */ + { 0, 0, printargs, "bsd43_fsync" }, /* 2095 */ + { 0, 0, printargs, "bsd43_setpriority" }, /* 2096 */ + { 0, 0, printargs, "bsd43_socket" }, /* 2097 */ + { 0, 0, printargs, "bsd43_connect" }, /* 2098 */ + { 0, 0, printargs, "bsd43_oldaccept" }, /* 2099 */ + { 0, 0, printargs, "bsd43_getpriority" }, /* 2100 */ + { 0, 0, printargs, "bsd43_send" }, /* 2101 */ + { 0, 0, printargs, "bsd43_recv" }, /* 2102 */ + { 0, 0, printargs, "bsd43_sigreturn" }, /* 2103 */ + { 0, 0, printargs, "bsd43_bind" }, /* 2104 */ + { 0, 0, printargs, "bsd43_setsockopt" }, /* 2105 */ + { 0, 0, printargs, "bsd43_listen" }, /* 2106 */ + { 0, 0, printargs, "bsd43_vtimes" }, /* 2107 */ + { 0, 0, printargs, "bsd43_sigvec" }, /* 2108 */ + { 0, 0, printargs, "bsd43_sigblock" }, /* 2109 */ + { 0, 0, printargs, "bsd43_sigsetmask" }, /* 2110 */ + { 0, 0, printargs, "bsd43_sigpause" }, /* 2111 */ + { 0, 0, printargs, "bsd43_sigstack" }, /* 2112 */ + { 0, 0, printargs, "bsd43_oldrecvmsg" }, /* 2113 */ + { 0, 0, printargs, "bsd43_oldsendmsg" }, /* 2114 */ + { 0, 0, printargs, "bsd43_vtrace" }, /* 2115 */ + { 0, 0, printargs, "bsd43_gettimeofday" }, /* 2116 */ + { 0, 0, printargs, "bsd43_getrusage" }, /* 2117 */ + { 0, 0, printargs, "bsd43_getsockopt" }, /* 2118 */ + { 0, 0, NULL, NULL }, /* 2119 */ + { 0, 0, printargs, "bsd43_readv" }, /* 2120 */ + { 0, 0, printargs, "bsd43_writev" }, /* 2121 */ + { 0, 0, printargs, "bsd43_settimeofday" }, /* 2122 */ + { 0, 0, printargs, "bsd43_fchown" }, /* 2123 */ + { 0, 0, printargs, "bsd43_fchmod" }, /* 2124 */ + { 0, 0, printargs, "bsd43_oldrecvfrom" }, /* 2125 */ + { 0, 0, printargs, "bsd43_setreuid" }, /* 2126 */ + { 0, 0, printargs, "bsd43_setregid" }, /* 2127 */ + { 0, 0, printargs, "bsd43_rename" }, /* 2128 */ + { 0, 0, printargs, "bsd43_truncate" }, /* 2129 */ + { 0, 0, printargs, "bsd43_ftruncate" }, /* 2130 */ + { 0, 0, printargs, "bsd43_flock" }, /* 2131 */ + { 0, 0, printargs, "bsd43_semsys" }, /* 2132 */ + { 0, 0, printargs, "bsd43_sendto" }, /* 2133 */ + { 0, 0, printargs, "bsd43_shutdown" }, /* 2134 */ + { 0, 0, printargs, "bsd43_socketpair" }, /* 2135 */ + { 0, 0, printargs, "bsd43_mkdir" }, /* 2136 */ + { 0, 0, printargs, "bsd43_rmdir" }, /* 2137 */ + { 0, 0, printargs, "bsd43_utimes" }, /* 2138 */ + { 0, 0, printargs, "bsd43_sigcleanup" }, /* 2139 */ + { 0, 0, printargs, "bsd43_adjtime" }, /* 2140 */ + { 0, 0, printargs, "bsd43_oldgetpeername" }, /* 2141 */ + { 0, 0, printargs, "bsd43_gethostid" }, /* 2142 */ + { 0, 0, printargs, "bsd43_sethostid" }, /* 2143 */ + { 0, 0, printargs, "bsd43_getrlimit" }, /* 2144 */ + { 0, 0, printargs, "bsd43_setrlimit" }, /* 2145 */ + { 0, 0, printargs, "bsd43_killpg" }, /* 2146 */ + { 0, 0, printargs, "bsd43_shmsys" }, /* 2147 */ + { 0, 0, printargs, "bsd43_quota" }, /* 2148 */ + { 0, 0, printargs, "bsd43_qquota" }, /* 2149 */ + { 0, 0, printargs, "bsd43_oldgetsockname" }, /* 2150 */ + { 0, 0, printargs, "bsd43_sysmips" }, /* 2151 */ + { 0, 0, printargs, "bsd43_cacheflush" }, /* 2152 */ + { 0, 0, printargs, "bsd43_cachectl" }, /* 2153 */ + { 0, 0, printargs, "bsd43_debug" }, /* 2154 */ + { 0, 0, NULL, NULL }, /* 2155 */ + { 0, 0, NULL, NULL }, /* 2156 */ + { 0, 0, printargs, "bsd43_nfs_mount" }, /* 2157 */ + { 0, 0, printargs, "bsd43_nfs_svc" }, /* 2158 */ + { 0, 0, printargs, "bsd43_getdirentries" }, /* 2159 */ + { 0, 0, printargs, "bsd43_statfs" }, /* 2160 */ + { 0, 0, printargs, "bsd43_fstatfs" }, /* 2161 */ + { 0, 0, printargs, "bsd43_unmount" }, /* 2162 */ + { 0, 0, printargs, "bsd43_async_daemon" }, /* 2163 */ + { 0, 0, printargs, "bsd43_nfs_getfh" }, /* 2164 */ + { 0, 0, printargs, "bsd43_getdomainname" }, /* 2165 */ + { 0, 0, printargs, "bsd43_setdomainname" }, /* 2166 */ + { 0, 0, printargs, "bsd43_pcfs_mount" }, /* 2167 */ + { 0, TF, printargs, "bsd43_quotactl" }, /* 2168 */ + { 0, 0, printargs, "bsd43_oldexportfs" }, /* 2169 */ + { 0, 0, printargs, "bsd43_smount" }, /* 2170 */ + { 0, 0, printargs, "bsd43_mipshwconf" }, /* 2171 */ + { 0, 0, printargs, "bsd43_exportfs" }, /* 2172 */ + { 0, 0, printargs, "bsd43_nfsfh_open" }, /* 2173 */ + { 0, 0, printargs, "bsd43_libattach" }, /* 2174 */ + { 0, 0, printargs, "bsd43_libdetach" }, /* 2175 */ + { 0, 0, printargs, "bsd43_accept" }, /* 2176 */ + { 0, 0, NULL, NULL }, /* 2177 */ + { 0, 0, NULL, NULL }, /* 2178 */ + { 0, 0, printargs, "bsd43_recvmsg" }, /* 2179 */ + { 0, 0, printargs, "bsd43_recvfrom" }, /* 2180 */ + { 0, 0, printargs, "bsd43_sendmsg" }, /* 2181 */ + { 0, 0, printargs, "bsd43_getpeername" }, /* 2182 */ + { 0, 0, printargs, "bsd43_getsockname" }, /* 2183 */ + { 0, 0, printargs, "bsd43_aread" }, /* 2184 */ + { 0, 0, printargs, "bsd43_awrite" }, /* 2185 */ + { 0, 0, printargs, "bsd43_listio" }, /* 2186 */ + { 0, 0, printargs, "bsd43_acancel" }, /* 2187 */ + { 0, 0, printargs, "bsd43_astatus" }, /* 2188 */ + { 0, 0, printargs, "bsd43_await" }, /* 2189 */ + { 0, 0, printargs, "bsd43_areadv" }, /* 2190 */ + { 0, 0, printargs, "bsd43_awritev" }, /* 2191 */ + + [2192 ... 2999] = { }, /* 2999 */ /* end of BSD 4.3 */ + + { 0, 0, printargs, "posix_syscall" }, /* 3000 */ /* start of POSIX */ + { 0, 0, printargs, "posix_exit" }, /* 3001 */ + { 0, 0, printargs, "posix_fork" }, /* 3002 */ + { 0, 0, printargs, "posix_read" }, /* 3003 */ + { 0, 0, printargs, "posix_write" }, /* 3004 */ + { 0, 0, printargs, "posix_open" }, /* 3005 */ + { 0, 0, printargs, "posix_close" }, /* 3006 */ + { 0, 0, printargs, "posix_wait" }, /* 3007 */ + { 0, 0, printargs, "posix_creat" }, /* 3008 */ + { 0, 0, printargs, "posix_link" }, /* 3009 */ + { 0, 0, printargs, "posix_unlink" }, /* 3010 */ + { 0, 0, printargs, "posix_exec" }, /* 3011 */ + { 0, 0, printargs, "posix_chdir" }, /* 3012 */ + { 0, 0, printargs, "posix_gtime" }, /* 3013 */ + { 0, 0, printargs, "posix_mknod" }, /* 3014 */ + { 0, 0, printargs, "posix_chmod" }, /* 3015 */ + { 0, 0, printargs, "posix_chown" }, /* 3016 */ + { 0, TM, printargs, "posix_sbreak" }, /* 3017 */ + { 0, 0, printargs, "posix_stat" }, /* 3018 */ + { 0, 0, printargs, "posix_lseek" }, /* 3019 */ + { 0, 0, printargs, "posix_getpid" }, /* 3020 */ + { 0, 0, printargs, "posix_mount" }, /* 3021 */ + { 0, 0, printargs, "posix_umount" }, /* 3022 */ + { 0, 0, printargs, "posix_setuid" }, /* 3023 */ + { 0, 0, printargs, "posix_getuid" }, /* 3024 */ + { 0, 0, printargs, "posix_stime" }, /* 3025 */ + { 0, 0, printargs, "posix_ptrace" }, /* 3026 */ + { 0, 0, printargs, "posix_alarm" }, /* 3027 */ + { 0, 0, printargs, "posix_fstat" }, /* 3028 */ + { 0, 0, printargs, "posix_pause" }, /* 3029 */ + { 0, 0, printargs, "posix_utime" }, /* 3030 */ + { 0, 0, printargs, "posix_stty" }, /* 3031 */ + { 0, 0, printargs, "posix_gtty" }, /* 3032 */ + { 0, 0, printargs, "posix_access" }, /* 3033 */ + { 0, 0, printargs, "posix_nice" }, /* 3034 */ + { 0, 0, printargs, "posix_statfs" }, /* 3035 */ + { 0, 0, printargs, "posix_sync" }, /* 3036 */ + { 0, 0, printargs, "posix_kill" }, /* 3037 */ + { 0, 0, printargs, "posix_fstatfs" }, /* 3038 */ + { 0, 0, printargs, "posix_getpgrp" }, /* 3039 */ + { 0, 0, printargs, "posix_syssgi" }, /* 3040 */ + { 0, 0, printargs, "posix_dup" }, /* 3041 */ + { 0, 0, printargs, "posix_pipe" }, /* 3042 */ + { 0, 0, printargs, "posix_times" }, /* 3043 */ + { 0, 0, printargs, "posix_profil" }, /* 3044 */ + { 0, 0, printargs, "posix_lock" }, /* 3045 */ + { 0, 0, printargs, "posix_setgid" }, /* 3046 */ + { 0, 0, printargs, "posix_getgid" }, /* 3047 */ + { 0, 0, printargs, "posix_sig" }, /* 3048 */ + { 0, 0, printargs, "posix_msgsys" }, /* 3049 */ + { 0, 0, printargs, "posix_sysmips" }, /* 3050 */ + { 0, 0, printargs, "posix_sysacct" }, /* 3051 */ + { 0, 0, printargs, "posix_shmsys" }, /* 3052 */ + { 0, 0, printargs, "posix_semsys" }, /* 3053 */ + { 0, 0, printargs, "posix_ioctl" }, /* 3054 */ + { 0, 0, printargs, "posix_uadmin" }, /* 3055 */ + { 0, 0, printargs, "posix_exch" }, /* 3056 */ + { 0, 0, printargs, "posix_utssys" }, /* 3057 */ + { 0, 0, NULL, NULL }, /* 3058 */ + { 0, 0, printargs, "posix_exece" }, /* 3059 */ + { 0, 0, printargs, "posix_umask" }, /* 3060 */ + { 0, 0, printargs, "posix_chroot" }, /* 3061 */ + { 0, 0, printargs, "posix_fcntl" }, /* 3062 */ + { 0, 0, printargs, "posix_ulimit" }, /* 3063 */ + { 0, 0, NULL, NULL }, /* 3064 */ + { 0, 0, NULL, NULL }, /* 3065 */ + { 0, 0, NULL, NULL }, /* 3066 */ + { 0, 0, NULL, NULL }, /* 3067 */ + { 0, 0, NULL, NULL }, /* 3068 */ + { 0, 0, NULL, NULL }, /* 3069 */ + { 0, 0, printargs, "posix_advfs" }, /* 3070 */ + { 0, 0, printargs, "posix_unadvfs" }, /* 3071 */ + { 0, 0, printargs, "posix_rmount" }, /* 3072 */ + { 0, 0, printargs, "posix_rumount" }, /* 3073 */ + { 0, 0, printargs, "posix_rfstart" }, /* 3074 */ + { 0, 0, NULL, NULL }, /* 3075 */ + { 0, 0, printargs, "posix_rdebug" }, /* 3076 */ + { 0, 0, printargs, "posix_rfstop" }, /* 3077 */ + { 0, 0, printargs, "posix_rfsys" }, /* 3078 */ + { 0, 0, printargs, "posix_rmdir" }, /* 3079 */ + { 0, 0, printargs, "posix_mkdir" }, /* 3080 */ + { 0, 0, printargs, "posix_getdents" }, /* 3081 */ + { 0, 0, printargs, "posix_sginap" }, /* 3082 */ + { 0, 0, printargs, "posix_sgikopt" }, /* 3083 */ + { 0, 0, printargs, "posix_sysfs" }, /* 3084 */ + { 0, 0, printargs, "posix_getmsg" }, /* 3085 */ + { 0, 0, printargs, "posix_putmsg" }, /* 3086 */ + { 0, 0, printargs, "posix_poll" }, /* 3087 */ + { 0, 0, printargs, "posix_sigreturn" }, /* 3088 */ + { 0, 0, printargs, "posix_accept" }, /* 3089 */ + { 0, 0, printargs, "posix_bind" }, /* 3090 */ + { 0, 0, printargs, "posix_connect" }, /* 3091 */ + { 0, 0, printargs, "posix_gethostid" }, /* 3092 */ + { 0, 0, printargs, "posix_getpeername" }, /* 3093 */ + { 0, 0, printargs, "posix_getsockname" }, /* 3094 */ + { 0, 0, printargs, "posix_getsockopt" }, /* 3095 */ + { 0, 0, printargs, "posix_listen" }, /* 3096 */ + { 0, 0, printargs, "posix_recv" }, /* 3097 */ + { 0, 0, printargs, "posix_recvfrom" }, /* 3098 */ + { 0, 0, printargs, "posix_recvmsg" }, /* 3099 */ + { 0, 0, printargs, "posix_select" }, /* 3100 */ + { 0, 0, printargs, "posix_send" }, /* 3101 */ + { 0, 0, printargs, "posix_sendmsg" }, /* 3102 */ + { 0, 0, printargs, "posix_sendto" }, /* 3103 */ + { 0, 0, printargs, "posix_sethostid" }, /* 3104 */ + { 0, 0, printargs, "posix_setsockopt" }, /* 3105 */ + { 0, 0, printargs, "posix_shutdown" }, /* 3106 */ + { 0, 0, printargs, "posix_socket" }, /* 3107 */ + { 0, 0, printargs, "posix_gethostname" }, /* 3108 */ + { 0, 0, printargs, "posix_sethostname" }, /* 3109 */ + { 0, 0, printargs, "posix_getdomainname" }, /* 3110 */ + { 0, 0, printargs, "posix_setdomainname" }, /* 3111 */ + { 0, 0, printargs, "posix_truncate" }, /* 3112 */ + { 0, 0, printargs, "posix_ftruncate" }, /* 3113 */ + { 0, 0, printargs, "posix_rename" }, /* 3114 */ + { 0, 0, printargs, "posix_symlink" }, /* 3115 */ + { 0, 0, printargs, "posix_readlink" }, /* 3116 */ + { 0, 0, printargs, "posix_lstat" }, /* 3117 */ + { 0, 0, printargs, "posix_nfs_mount" }, /* 3118 */ + { 0, 0, printargs, "posix_nfs_svc" }, /* 3119 */ + { 0, 0, printargs, "posix_nfs_getfh" }, /* 3120 */ + { 0, 0, printargs, "posix_async_daemon" }, /* 3121 */ + { 0, 0, printargs, "posix_exportfs" }, /* 3122 */ + { 0, 0, printargs, "posix_SGI_setregid" }, /* 3123 */ + { 0, 0, printargs, "posix_SGI_setreuid" }, /* 3124 */ + { 0, 0, printargs, "posix_getitimer" }, /* 3125 */ + { 0, 0, printargs, "posix_setitimer" }, /* 3126 */ + { 0, 0, printargs, "posix_adjtime" }, /* 3127 */ + { 0, 0, printargs, "posix_SGI_bsdgettime" }, /* 3128 */ + { 0, 0, printargs, "posix_SGI_sproc" }, /* 3129 */ + { 0, 0, printargs, "posix_SGI_prctl" }, /* 3130 */ + { 0, 0, printargs, "posix_SGI_blkproc" }, /* 3131 */ + { 0, 0, NULL, NULL }, /* 3132 */ + { 0, 0, printargs, "posix_SGI_sgigsc" }, /* 3133 */ + { 0, TD|TM, printargs, "posix_SGI_mmap" }, /* 3134 */ + { 0, TM, printargs, "posix_SGI_munmap" }, /* 3135 */ + { 0, TM, printargs, "posix_SGI_mprotect" }, /* 3136 */ + { 0, TM, printargs, "posix_SGI_msync" }, /* 3137 */ + { 0, TM, printargs, "posix_SGI_madvise" }, /* 3138 */ + { 0, 0, printargs, "posix_SGI_mpin" }, /* 3139 */ + { 0, 0, printargs, "posix_SGI_getpagesize" }, /* 3140 */ + { 0, 0, printargs, "posix_SGI_libattach" }, /* 3141 */ + { 0, 0, printargs, "posix_SGI_libdetach" }, /* 3142 */ + { 0, 0, printargs, "posix_SGI_getpgrp" }, /* 3143 */ + { 0, 0, printargs, "posix_SGI_setpgrp" }, /* 3144 */ + { 0, 0, NULL, NULL }, /* 3145 */ + { 0, 0, NULL, NULL }, /* 3146 */ + { 0, 0, NULL, NULL }, /* 3147 */ + { 0, 0, NULL, NULL }, /* 3148 */ + { 0, 0, NULL, NULL }, /* 3149 */ + { 0, 0, printargs, "posix_cacheflush" }, /* 3150 */ + { 0, 0, printargs, "posix_cachectl" }, /* 3151 */ + { 0, 0, printargs, "posix_fchown" }, /* 3152 */ + { 0, 0, printargs, "posix_fchmod" }, /* 3153 */ + { 0, 0, printargs, "posix_wait3" }, /* 3154 */ + { 0, TD|TM, printargs, "posix_mmap" }, /* 3155 */ + { 0, TM, printargs, "posix_munmap" }, /* 3156 */ + { 0, TM, printargs, "posix_madvise" }, /* 3157 */ + { 0, 0, printargs, "posix_BSD_getpagesize" }, /* 3158 */ + { 0, 0, printargs, "posix_setreuid" }, /* 3159 */ + { 0, 0, printargs, "posix_setregid" }, /* 3160 */ + { 0, 0, printargs, "posix_setpgid" }, /* 3161 */ + { 0, 0, printargs, "posix_getgroups" }, /* 3162 */ + { 0, 0, printargs, "posix_setgroups" }, /* 3163 */ + { 0, 0, printargs, "posix_gettimeofday" }, /* 3164 */ + { 0, 0, printargs, "posix_getrusage" }, /* 3165 */ + { 0, 0, printargs, "posix_getrlimit" }, /* 3166 */ + { 0, 0, printargs, "posix_setrlimit" }, /* 3167 */ + { 0, 0, printargs, "posix_waitpid" }, /* 3168 */ + { 0, 0, printargs, "posix_dup2" }, /* 3169 */ + { 0, 0, NULL, NULL }, /* 3170 */ + { 0, 0, NULL, NULL }, /* 3171 */ + { 0, 0, NULL, NULL }, /* 3172 */ + { 0, 0, NULL, NULL }, /* 3173 */ + { 0, 0, NULL, NULL }, /* 3174 */ + { 0, 0, NULL, NULL }, /* 3175 */ + { 0, 0, NULL, NULL }, /* 3176 */ + { 0, 0, NULL, NULL }, /* 3177 */ + { 0, 0, NULL, NULL }, /* 3178 */ + { 0, 0, NULL, NULL }, /* 3179 */ + { 0, 0, NULL, NULL }, /* 3180 */ + { 0, 0, NULL, NULL }, /* 3181 */ + { 0, 0, NULL, NULL }, /* 3182 */ + { 0, 0, NULL, NULL }, /* 3183 */ + { 0, 0, NULL, NULL }, /* 3184 */ + { 0, 0, NULL, NULL }, /* 3185 */ + { 0, 0, NULL, NULL }, /* 3186 */ + { 0, 0, NULL, NULL }, /* 3187 */ + { 0, 0, NULL, NULL }, /* 3188 */ + { 0, 0, NULL, NULL }, /* 3189 */ + { 0, 0, NULL, NULL }, /* 3190 */ + { 0, 0, NULL, NULL }, /* 3191 */ + { 0, 0, NULL, NULL }, /* 3192 */ + { 0, 0, NULL, NULL }, /* 3193 */ + { 0, 0, NULL, NULL }, /* 3194 */ + { 0, 0, NULL, NULL }, /* 3195 */ + { 0, 0, NULL, NULL }, /* 3196 */ + { 0, 0, NULL, NULL }, /* 3197 */ + { 0, 0, NULL, NULL }, /* 3198 */ + { 0, 0, NULL, NULL }, /* 3199 */ + { 0, 0, NULL, NULL }, /* 3200 */ + { 0, 0, NULL, NULL }, /* 3201 */ + { 0, 0, NULL, NULL }, /* 3202 */ + { 0, 0, NULL, NULL }, /* 3203 */ + { 0, 0, NULL, NULL }, /* 3204 */ + { 0, 0, NULL, NULL }, /* 3205 */ + { 0, 0, NULL, NULL }, /* 3206 */ + { 0, 0, NULL, NULL }, /* 3207 */ + { 0, 0, NULL, NULL }, /* 3208 */ + { 0, 0, NULL, NULL }, /* 3209 */ + { 0, 0, NULL, NULL }, /* 3210 */ + { 0, 0, NULL, NULL }, /* 3211 */ + { 0, 0, NULL, NULL }, /* 3212 */ + { 0, 0, NULL, NULL }, /* 3213 */ + { 0, 0, NULL, NULL }, /* 3214 */ + { 0, 0, NULL, NULL }, /* 3215 */ + { 0, 0, NULL, NULL }, /* 3216 */ + { 0, 0, NULL, NULL }, /* 3217 */ + { 0, 0, NULL, NULL }, /* 3218 */ + { 0, 0, NULL, NULL }, /* 3219 */ + { 0, 0, NULL, NULL }, /* 3220 */ + { 0, 0, NULL, NULL }, /* 3221 */ + { 0, 0, NULL, NULL }, /* 3222 */ + { 0, 0, NULL, NULL }, /* 3223 */ + { 0, 0, NULL, NULL }, /* 3224 */ + { 0, 0, NULL, NULL }, /* 3225 */ + { 0, 0, NULL, NULL }, /* 3226 */ + { 0, 0, NULL, NULL }, /* 3227 */ + { 0, 0, NULL, NULL }, /* 3228 */ + { 0, 0, NULL, NULL }, /* 3229 */ + { 0, 0, NULL, NULL }, /* 3230 */ + { 0, 0, NULL, NULL }, /* 3231 */ + { 0, 0, NULL, NULL }, /* 3232 */ + { 0, 0, NULL, NULL }, /* 3233 */ + { 0, 0, NULL, NULL }, /* 3234 */ + { 0, 0, NULL, NULL }, /* 3235 */ + { 0, 0, NULL, NULL }, /* 3236 */ + { 0, 0, NULL, NULL }, /* 3237 */ + { 0, 0, NULL, NULL }, /* 3238 */ + { 0, 0, NULL, NULL }, /* 3239 */ + { 0, 0, NULL, NULL }, /* 3240 */ + { 0, 0, NULL, NULL }, /* 3241 */ + { 0, 0, NULL, NULL }, /* 3242 */ + { 0, 0, NULL, NULL }, /* 3243 */ + { 0, 0, NULL, NULL }, /* 3244 */ + { 0, 0, NULL, NULL }, /* 3245 */ + { 0, 0, NULL, NULL }, /* 3246 */ + { 0, 0, NULL, NULL }, /* 3247 */ + { 0, 0, NULL, NULL }, /* 3248 */ + { 0, 0, NULL, NULL }, /* 3249 */ + { 0, 0, NULL, NULL }, /* 3250 */ + { 0, 0, NULL, NULL }, /* 3251 */ + { 0, 0, NULL, NULL }, /* 3252 */ + { 0, 0, NULL, NULL }, /* 3253 */ + { 0, 0, NULL, NULL }, /* 3254 */ + { 0, 0, NULL, NULL }, /* 3255 */ + { 0, 0, NULL, NULL }, /* 3256 */ + { 0, 0, NULL, NULL }, /* 3257 */ + { 0, 0, NULL, NULL }, /* 3258 */ + { 0, 0, NULL, NULL }, /* 3259 */ + { 0, 0, printargs, "posix_netboot" }, /* 3260 */ + { 0, 0, printargs, "posix_netunboot" }, /* 3261 */ + { 0, 0, printargs, "posix_rdump" }, /* 3262 */ + { 0, 0, printargs, "posix_setsid" }, /* 3263 */ + { 0, 0, printargs, "posix_getmaxsig" }, /* 3264 */ + { 0, 0, printargs, "posix_sigpending" }, /* 3265 */ + { 0, 0, printargs, "posix_sigprocmask" }, /* 3266 */ + { 0, 0, printargs, "posix_sigsuspend" }, /* 3267 */ + { 0, 0, printargs, "posix_sigaction" }, /* 3268 */ + + [3269 ... 3999] = { }, /* 3999 */ /* end of POSIX */ diff --git a/linux/mips/syscallent-n32.h b/linux/mips/syscallent-n32.h new file mode 100644 index 00000000..69453b13 --- /dev/null +++ b/linux/mips/syscallent-n32.h @@ -0,0 +1,630 @@ +#if defined LINUX_MIPSN32 + /* For an N32 strace decode the N32 64-bit syscalls. */ + { 3, TD, sys_read, "read" }, /* 6000 */ /* start of Linux N32 */ + { 3, TD, sys_write, "write" }, /* 6001 */ + { 3, TD|TF, sys_open, "open" }, /* 6002 */ + { 1, TD, sys_close, "close" }, /* 6003 */ + { 2, TF, sys_stat64, "stat" }, /* 6004 */ + { 2, TD, sys_fstat64, "fstat" }, /* 6005 */ + { 2, TF, sys_lstat64, "lstat" }, /* 6006 */ + { 3, TD, sys_poll, "poll" }, /* 6007 */ + { 3, TD, sys_lseek, "lseek" }, /* 6008 */ + { 6, TD|TM, sys_mmap, "mmap" }, /* 6009 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 6010 */ + { 2, TM, sys_munmap, "munmap" }, /* 6011 */ + { 1, TM, sys_brk, "brk" }, /* 6012 */ + { 4, TS, sys_rt_sigaction, "rt_sigaction" }, /* 6013 */ + { 4, TS, sys_rt_sigprocmask, "rt_sigprocmask"}, /* 6014 */ + { 3, TD, sys_ioctl, "ioctl" }, /* 6015 */ + { 4, TD, sys_pread, "pread64" }, /* 6016 */ + { 4, TD, sys_pwrite, "pwrite64" }, /* 6017 */ + { 3, TD, sys_readv, "readv" }, /* 6018 */ + { 3, TD, sys_writev, "writev" }, /* 6019 */ + { 2, TF, sys_access, "access" }, /* 6020 */ + { 1, TD, sys_pipe, "pipe" }, /* 6021 */ + { 5, TD, sys_select, "_newselect" }, /* 6022 */ + { 0, 0, sys_sched_yield, "sched_yield" }, /* 6023 */ + { 5, TM, sys_mremap, "mremap" }, /* 6024 */ + { 3, TM, sys_msync, "msync" }, /* 6025 */ + { 3, TM, sys_mincore, "mincore" }, /* 6026 */ + { 3, TM, sys_madvise, "madvise" }, /* 6027 */ + { 3, TI, sys_shmget, "shmget" }, /* 6028 */ + { 3, TI, sys_shmat, "shmat" }, /* 6029 */ + { 3, TI, sys_shmctl, "shmctl" }, /* 6030 */ + { 1, TD, sys_dup, "dup" }, /* 6031 */ + { 2, TD, sys_dup2, "dup2" }, /* 6032 */ + { 0, TS, sys_pause, "pause" }, /* 6033 */ + { 2, 0, sys_nanosleep, "nanosleep" }, /* 6034 */ + { 2, 0, sys_getitimer, "getitimer" }, /* 6035 */ + { 3, 0, sys_setitimer, "setitimer" }, /* 6036 */ + { 1, 0, sys_alarm, "alarm" }, /* 6037 */ + { 0, 0, sys_getpid, "getpid" }, /* 6038 */ + { 4, TD|TN, sys_sendfile, "sendfile" }, /* 6039 */ + { 3, TN, sys_socket, "socket" }, /* 6040 */ + { 3, TN, sys_connect, "connect" }, /* 6041 */ + { 3, TN, sys_accept, "accept" }, /* 6042 */ + { 6, TN, sys_sendto, "sendto" }, /* 6043 */ + { 6, TN, sys_recvfrom, "recvfrom" }, /* 6044 */ + { 3, TN, sys_sendmsg, "sendmsg" }, /* 6045 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 6046 */ + { 2, TN, sys_shutdown, "shutdown" }, /* 6047 */ + { 3, TN, sys_bind, "bind" }, /* 6048 */ + { 2, TN, sys_listen, "listen" }, /* 6049 */ + { 3, TN, sys_getsockname, "getsockname" }, /* 6050 */ + { 3, TN, sys_getpeername, "getpeername" }, /* 6051 */ + { 4, TN, sys_socketpair, "socketpair" }, /* 6052 */ + { 5, TN, sys_setsockopt, "setsockopt" }, /* 6053 */ + { 5, TN, sys_getsockopt, "getsockopt" }, /* 6054 */ + { 2, TP, sys_clone, "clone" }, /* 6055 */ + { 0, TP, sys_fork, "fork" }, /* 6056 */ + { 3, TF|TP, sys_execve, "execve" }, /* 6057 */ + { 1, TP, sys_exit, "exit" }, /* 6058 */ + { 4, TP, sys_wait4, "wait4" }, /* 6059 */ + { 2, TS, sys_kill, "kill" }, /* 6060 */ + { 1, 0, sys_uname, "uname" }, /* 6061 */ + { 3, TI, sys_semget, "semget" }, /* 6062 */ + { 3, TI, printargs, "semop" }, /* 6063 */ + { 4, TI, sys_semctl, "semctl" }, /* 6064 */ + { 1, TI, sys_shmdt, "shmdt" }, /* 6065 */ + { 2, TI, sys_msgget, "msgget" }, /* 6066 */ + { 4, TI, sys_msgsnd, "msgsnd" }, /* 6067 */ + { 5, TI, sys_msgrcv, "msgrcv" }, /* 6068 */ + { 3, TI, sys_msgctl, "msgctl" }, /* 6069 */ + { 3, TD, sys_fcntl, "fcntl" }, /* 6070 */ + { 2, TD, sys_flock, "flock" }, /* 6071 */ + { 1, TD, sys_fsync, "fsync" }, /* 6072 */ + { 1, TD, sys_fdatasync, "fdatasync" }, /* 6073 */ + { 2, TF, sys_truncate64, "truncate" }, /* 6074 */ + { 2, TD, sys_ftruncate64, "ftruncate" }, /* 6075 */ + { 3, TD, sys_getdents, "getdents" }, /* 6076 */ + { 2, TF, sys_getcwd, "getcwd" }, /* 6077 */ + { 1, TF, sys_chdir, "chdir" }, /* 6078 */ + { 1, TD, sys_fchdir, "fchdir" }, /* 6079 */ + { 2, TF, sys_rename, "rename" }, /* 6080 */ + { 2, TF, sys_mkdir, "mkdir" }, /* 6081 */ + { 1, TF, sys_rmdir, "rmdir" }, /* 6082 */ + { 2, TD|TF, sys_creat, "creat" }, /* 6083 */ + { 2, TF, sys_link, "link" }, /* 6084 */ + { 1, TF, sys_unlink, "unlink" }, /* 6085 */ + { 2, TF, sys_symlink, "symlink" }, /* 6086 */ + { 3, TF, sys_readlink, "readlink" }, /* 6087 */ + { 2, TF, sys_chmod, "chmod" }, /* 6088 */ + { 2, TD, sys_fchmod, "fchmod" }, /* 6089 */ + { 3, TF, sys_chown, "chown" }, /* 6090 */ + { 3, TD, sys_fchown, "fchown" }, /* 6091 */ + { 3, TF, sys_chown, "lchown" }, /* 6092 */ + { 1, 0, sys_umask, "umask" }, /* 6093 */ + { 2, 0, sys_gettimeofday, "gettimeofday" }, /* 6094 */ + { 2, 0, sys_getrlimit, "getrlimit" }, /* 6095 */ + { 2, 0, sys_getrusage, "getrusage" }, /* 6096 */ + { 1, 0, sys_sysinfo, "sysinfo" }, /* 6097 */ + { 1, 0, sys_times, "times" }, /* 6098 */ + { 4, 0, sys_ptrace, "ptrace" }, /* 6099 */ + { 0, NF, sys_getuid, "getuid" }, /* 6100 */ + { 3, 0, sys_syslog, "syslog" }, /* 6101 */ + { 0, NF, sys_getgid, "getgid" }, /* 6102 */ + { 1, 0, sys_setuid, "setuid" }, /* 6103 */ + { 1, 0, sys_setgid, "setgid" }, /* 6104 */ + { 0, NF, sys_geteuid, "geteuid" }, /* 6105 */ + { 0, NF, sys_getegid, "getegid" }, /* 6106 */ + { 2, 0, sys_setpgid, "setpgid" }, /* 6107 */ + { 0, 0, sys_getppid, "getppid" }, /* 6108 */ + { 0, 0, sys_getpgrp, "getpgrp" }, /* 6109 */ + { 0, 0, sys_setsid, "setsid" }, /* 6110 */ + { 2, 0, sys_setreuid, "setreuid" }, /* 6111 */ + { 2, 0, sys_setregid, "setregid" }, /* 6112 */ + { 2, 0, sys_getgroups, "getgroups" }, /* 6113 */ + { 2, 0, sys_setgroups, "setgroups" }, /* 6114 */ + { 3, 0, sys_setresuid, "setresuid" }, /* 6115 */ + { 3, 0, sys_getresuid, "getresuid" }, /* 6116 */ + { 3, 0, sys_setresgid, "setresgid" }, /* 6117 */ + { 3, 0, sys_getresgid, "getresgid" }, /* 6118 */ + { 0, 0, sys_getpgid, "getpgid" }, /* 6119 */ + { 1, NF, sys_setfsuid, "setfsuid" }, /* 6120 */ + { 1, NF, sys_setfsgid, "setfsgid" }, /* 6121 */ + { 1, 0, sys_getsid, "getsid" }, /* 6122 */ + { 2, 0, sys_capget, "capget" }, /* 6123 */ + { 2, 0, sys_capset, "capset" }, /* 6124 */ + { 2, TS, sys_rt_sigpending, "rt_sigpending" }, /* 6125 */ + { 4, TS, sys_rt_sigtimedwait, "rt_sigtimedwait"},/* 6126 */ + { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo"},/* 6127 */ + { 2, TS, sys_rt_sigsuspend, "rt_sigsuspend" }, /* 6128 */ + { 2, TS, sys_sigaltstack, "sigaltstack" }, /* 6129 */ + { 2, TF, sys_utime, "utime" }, /* 6130 */ + { 3, TF, sys_mknod, "mknod" }, /* 6131 */ + { 1, 0, sys_personality, "personality" }, /* 6132 */ + { 2, 0, sys_ustat, "ustat" }, /* 6133 */ + { 3, TF, sys_statfs, "statfs" }, /* 6134 */ + { 3, TD, sys_fstatfs, "fstatfs" }, /* 6135 */ + { 5, 0, sys_sysfs, "sysfs" }, /* 6136 */ + { 2, 0, sys_getpriority, "getpriority" }, /* 6137 */ + { 3, 0, sys_setpriority, "setpriority" }, /* 6138 */ + { 2, 0, sys_sched_setparam, "sched_setparam"}, /* 6139 */ + { 2, 0, sys_sched_getparam, "sched_getparam"}, /* 6140 */ + { 3, 0, sys_sched_setscheduler, "sched_setscheduler"}, /* 6141 */ + { 1, 0, sys_sched_getscheduler, "sched_getscheduler"}, /* 6142 */ + { 1, 0, sys_sched_get_priority_max,"sched_get_priority_max"}, /* 6143 */ + { 1, 0, sys_sched_get_priority_min,"sched_get_priority_min"}, /* 6144 */ + { 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 6145 */ + { 2, TM, sys_mlock, "mlock" }, /* 6146 */ + { 2, TM, sys_munlock, "munlock" }, /* 6147 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 6148 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 6149 */ + { 0, 0, sys_vhangup, "vhangup" }, /* 6150 */ + { 2, TF, sys_pivotroot, "pivot_root" }, /* 6151 */ + { 1, 0, sys_sysctl, "_sysctl" }, /* 6152 */ + { 5, 0, sys_prctl, "prctl" }, /* 6153 */ + { 1, 0, sys_adjtimex, "adjtimex" }, /* 6154 */ + { 2, 0, sys_setrlimit, "setrlimit" }, /* 6155 */ + { 1, TF, sys_chroot, "chroot" }, /* 6156 */ + { 0, 0, sys_sync, "sync" }, /* 6157 */ + { 1, TF, sys_acct, "acct" }, /* 6158 */ + { 2, 0, sys_settimeofday, "settimeofday" }, /* 6159 */ + { 5, TF, sys_mount, "mount" }, /* 6160 */ + { 2, TF, sys_umount2, "umount2" }, /* 6161 */ + { 2, TF, sys_swapon, "swapon" }, /* 6162 */ + { 1, TF, sys_swapoff, "swapoff" }, /* 6163 */ + { 4, 0, sys_reboot, "reboot" }, /* 6164 */ + { 2, 0, sys_sethostname, "sethostname" }, /* 6165 */ + { 2, 0, sys_setdomainname, "setdomainname" }, /* 6166 */ + { 2, 0, sys_create_module, "create_module" }, /* 6167 */ + { 4, 0, sys_init_module, "init_module" }, /* 6168 */ + { 1, 0, sys_delete_module, "delete_module" }, /* 6169 */ + { 1, 0, sys_get_kernel_syms, "get_kernel_syms"}, /* 6170 */ + { 5, 0, sys_query_module, "query_module" }, /* 6171 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 6172 */ + { 3, 0, sys_nfsservctl, "nfsservctl" }, /* 6173 */ + { 5, TN, printargs, "getpmsg" }, /* 6174 */ + { 5, TN, printargs, "putpmsg" }, /* 6175 */ + { 0, 0, sys_afs_syscall, "afs_syscall" }, /* 6176 */ + { 0, 0, printargs, "reserved177" }, /* 6177 */ + { 0, 0, sys_gettid, "gettid" }, /* 6178 */ + { 3, TD, sys_readahead, "readahead" }, /* 6179 */ + { 5, TF, sys_setxattr, "setxattr" }, /* 6180 */ + { 5, TF, sys_setxattr, "lsetxattr" }, /* 6181 */ + { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 6182 */ + { 4, TF, sys_getxattr, "getxattr" }, /* 6183 */ + { 4, TF, sys_getxattr, "lgetxattr" }, /* 6184 */ + { 4, TD, sys_fgetxattr, "fgetxattr" }, /* 6185 */ + { 3, TF, sys_listxattr, "listxattr" }, /* 6186 */ + { 3, TF, sys_listxattr, "llistxattr" }, /* 6187 */ + { 3, TD, sys_flistxattr, "flistxattr" }, /* 6188 */ + { 2, TF, sys_removexattr, "removexattr" }, /* 6189 */ + { 2, TF, sys_removexattr, "lremovexattr" }, /* 6190 */ + { 2, TD, sys_fremovexattr, "fremovexattr" }, /* 6191 */ + { 2, TS, sys_kill, "tkill" }, /* 6192 */ + { 1, 0, sys_time, "time" }, /* 6193 */ + { 6, 0, sys_futex, "futex" }, /* 6194 */ + { 3, 0, sys_sched_setaffinity, "sched_setaffinity"}, /* 6195 */ + { 3, 0, sys_sched_getaffinity, "sched_getaffinity"}, /* 6196 */ + { 3, 0, printargs, "cacheflush" }, /* 6197 */ + { 3, 0, printargs, "cachectl" }, /* 6198 */ + { 4, 0, sys_sysmips, "sysmips" }, /* 6199 */ + { 2, 0, sys_io_setup, "io_setup" }, /* 6200 */ + { 1, 0, sys_io_destroy, "io_destroy" }, /* 6201 */ + { 5, 0, sys_io_getevents, "io_getevents" }, /* 6202 */ + { 3, 0, sys_io_submit, "io_submit" }, /* 6203 */ + { 3, 0, sys_io_cancel, "io_cancel" }, /* 6204 */ + { 1, TP, sys_exit, "exit_group" }, /* 6205 */ + { 3, 0, sys_lookup_dcookie, "lookup_dcookie" }, /* 6206 */ + { 1, TD, sys_epoll_create, "epoll_create" }, /* 6207 */ + { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 6208 */ + { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 6209 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages" }, /* 6210 */ + { 0, TS, sys_rt_sigreturn, "rt_sigreturn" }, /* 6211 */ + { 3, TD, sys_fcntl, "fcntl64" }, /* 6212 */ + { 1, 0, sys_set_tid_address, "set_tid_address" }, /* 6213 */ + { 0, 0, sys_restart_syscall, "restart_syscall" }, /* 6214 */ + { 5, TI, sys_semtimedop, "semtimedop" }, /* 6215 */ + { 4, TD, sys_fadvise64, "fadvise64" }, /* 6216 */ + { 3, TF, sys_statfs64, "statfs64" }, /* 6217 */ + { 3, TD, sys_fstatfs64, "fstatfs64" }, /* 6218 */ + { 4, TD|TN, sys_sendfile64, "sendfile64" }, /* 6219 */ + { 3, 0, sys_timer_create, "timer_create" }, /* 6220 */ + { 4, 0, sys_timer_settime, "timer_settime" }, /* 6221 */ + { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 6222 */ + { 1, 0, sys_timer_getoverrun, "timer_getoverrun" }, /* 6223 */ + { 1, 0, sys_timer_delete, "timer_delete" }, /* 6224 */ + { 2, 0, sys_clock_settime, "clock_settime" }, /* 6225 */ + { 2, 0, sys_clock_gettime, "clock_gettime" }, /* 6226 */ + { 2, 0, sys_clock_getres, "clock_getres" }, /* 6227 */ + { 4, 0, sys_clock_nanosleep, "clock_nanosleep" }, /* 6228 */ + { 3, TS, sys_tgkill, "tgkill" }, /* 6229 */ + { 2, TF, sys_utimes, "utimes" }, /* 6230 */ + { 6, TM, sys_mbind, "mbind" }, /* 6231 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 6232 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 6233 */ + { 4, 0, sys_mq_open, "mq_open" }, /* 6234 */ + { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 6235 */ + { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 6236 */ + { 5, 0, sys_mq_timedreceive, "mq_timedreceive" }, /* 6237 */ + { 2, 0, sys_mq_notify, "mq_notify" }, /* 6238 */ + { 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 6239 */ + { 5, 0, sys_vserver, "vserver" }, /* 6240 */ + { 5, TP, sys_waitid, "waitid" }, /* 6241 */ + [6242] = { }, + { 5, 0, sys_add_key, "add_key" }, /* 6243 */ + { 4, 0, sys_request_key, "request_key" }, /* 6244 */ + { 5, 0, sys_keyctl, "keyctl" }, /* 6245 */ + { 1, 0, sys_set_thread_area, "set_thread_area" }, /* 6246 */ + { 0, TD, sys_inotify_init, "inotify_init" }, /* 6247 */ + { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 6248 */ + { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 6249 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 6250 */ + { 4, TD|TF, sys_openat, "openat" }, /* 6251 */ + { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 6252 */ + { 4, TD|TF, sys_mknodat, "mknodat" }, /* 6253 */ + { 5, TD|TF, sys_fchownat, "fchownat" }, /* 6254 */ + { 3, TD|TF, sys_futimesat, "futimesat" }, /* 6255 */ + { 4, TD|TF, sys_newfstatat, "newfstatat" }, /* 6256 */ + { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 6257 */ + { 4, TD|TF, sys_renameat, "renameat" }, /* 6258 */ + { 5, TD|TF, sys_linkat, "linkat" }, /* 6259 */ + { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 6260 */ + { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 6261 */ + { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 6262 */ + { 3, TD|TF, sys_faccessat, "faccessat" }, /* 6263 */ + { 6, TD, sys_pselect6, "pselect6" }, /* 6264 */ + { 5, TD, sys_ppoll, "ppoll" }, /* 6265 */ + { 1, TP, sys_unshare, "unshare" }, /* 6266 */ + { 6, TD, sys_splice, "splice" }, /* 6267 */ + { 4, TD, sys_sync_file_range, "sync_file_range" }, /* 6268 */ + { 4, TD, sys_tee, "tee" }, /* 6269 */ + { 4, TD, sys_vmsplice, "vmsplice" }, /* 6270 */ + { 6, TM, printargs, "move_pages" }, /* 6271 */ + { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 6272 */ + { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 6273 */ + { 4, 0, sys_kexec_load, "kexec_load" }, /* 6274 */ + { 3, 0, sys_getcpu, "getcpu" }, /* 6275 */ + { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 6276 */ + { 3, 0, sys_ioprio_set, "ioprio_set" }, /* 6277 */ + { 2, 0, sys_ioprio_get, "ioprio_get" }, /* 6278 */ + { 4, TD|TF, sys_utimensat, "utimensat" }, /* 6279 */ + { 3, TD|TS, sys_signalfd, "signalfd" }, /* 6280 */ + { 4, TD, sys_timerfd, "timerfd" }, /* 6281 */ + { 1, TD, sys_eventfd, "eventfd" }, /* 6282 */ + { 4, TD, sys_fallocate, "fallocate" }, /* 6283 */ + { 2, TD, sys_timerfd_create, "timerfd_create" }, /* 6284 */ + { 2, TD, sys_timerfd_gettime, "timerfd_gettime" }, /* 6285 */ + { 4, TD, sys_timerfd_settime, "timerfd_settime" }, /* 6286 */ + { 4, TD|TS, sys_signalfd4, "signalfd4" }, /* 6287 */ + { 2, TD, sys_eventfd2, "eventfd2" }, /* 6288 */ + { 1, TD, sys_epoll_create1, "epoll_create1" }, /* 6289 */ + { 3, TD, sys_dup3, "dup3" }, /* 6290 */ + { 2, TD, sys_pipe2, "pipe2" }, /* 6291 */ + { 1, TD, sys_inotify_init1, "inotify_init1" }, /* 6292 */ + { 4, TD, sys_preadv, "preadv" }, /* 6293 */ + { 4, TD, sys_pwritev, "pwritev" }, /* 6294 */ + { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo" }, /* 6295 */ + { 5, TD, sys_perf_event_open, "perf_event_open" }, /* 6296 */ + { 4, TN, sys_accept4, "accept4" }, /* 6297 */ + { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 6298 */ + { 3, TD, sys_getdents64, "getdents64" }, /* 6299 */ + { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 6300 */ + { 5, TD|TF, sys_fanotify_mark, "fanotify_mark" }, /* 6301 */ + { 4, 0, sys_prlimit64, "prlimit64" }, /* 6302 */ + { 5, TD|TF, sys_name_to_handle_at, "name_to_handle_at"}, /* 6303 */ + { 3, TD, sys_open_by_handle_at, "open_by_handle_at"}, /* 6304 */ + { 2, 0, sys_clock_adjtime, "clock_adjtime" }, /* 6305 */ + { 1, TD, sys_syncfs, "syncfs" }, /* 6306 */ + { 4, TN, sys_sendmmsg, "sendmmsg" }, /* 6307 */ + { 2, TD, sys_setns, "setns" }, /* 6308 */ + { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 6309 */ + { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 6310 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 6311 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 6312 */ +#else + { 0, 0, printargs, "n32_read" }, /* 6000 */ + { 0, 0, printargs, "n32_write" }, /* 6001 */ + { 0, 0, printargs, "n32_open" }, /* 6002 */ + { 0, 0, printargs, "n32_close" }, /* 6003 */ + { 0, 0, printargs, "n32_stat" }, /* 6004 */ + { 0, 0, printargs, "n32_fstat" }, /* 6005 */ + { 0, 0, printargs, "n32_lstat" }, /* 6006 */ + { 0, 0, printargs, "n32_poll" }, /* 6007 */ + { 0, 0, printargs, "n32_lseek" }, /* 6008 */ + { 0, TD|TM, printargs, "n32_mmap" }, /* 6009 */ + { 0, TM, printargs, "n32_mprotect" }, /* 6010 */ + { 0, TM, printargs, "n32_munmap" }, /* 6011 */ + { 0, TM, printargs, "n32_brk" }, /* 6012 */ + { 0, 0, printargs, "n32_rt_sigaction" }, /* 6013 */ + { 0, 0, printargs, "n32_rt_sigprocmask" }, /* 6014 */ + { 0, 0, printargs, "n32_ioctl" }, /* 6015 */ + { 0, 0, printargs, "n32_pread64" }, /* 6016 */ + { 0, 0, printargs, "n32_pwrite64" }, /* 6017 */ + { 0, 0, printargs, "n32_readv" }, /* 6018 */ + { 0, 0, printargs, "n32_writev" }, /* 6019 */ + { 0, 0, printargs, "n32_access" }, /* 6020 */ + { 0, 0, printargs, "n32_pipe" }, /* 6021 */ + { 0, 0, printargs, "n32__newselect" }, /* 6022 */ + { 0, 0, printargs, "n32_sched_yield" }, /* 6023 */ + { 0, TM, printargs, "n32_mremap" }, /* 6024 */ + { 0, TM, printargs, "n32_msync" }, /* 6025 */ + { 0, TM, printargs, "n32_mincore" }, /* 6026 */ + { 0, TM, printargs, "n32_madvise" }, /* 6027 */ + { 0, 0, printargs, "n32_shmget" }, /* 6028 */ + { 0, 0, printargs, "n32_shmat" }, /* 6029 */ + { 0, 0, printargs, "n32_shmctl" }, /* 6030 */ + { 0, 0, printargs, "n32_dup" }, /* 6031 */ + { 0, 0, printargs, "n32_dup2" }, /* 6032 */ + { 0, 0, printargs, "n32_pause" }, /* 6033 */ + { 0, 0, printargs, "n32_nanosleep" }, /* 6034 */ + { 0, 0, printargs, "n32_getitimer" }, /* 6035 */ + { 0, 0, printargs, "n32_setitimer" }, /* 6036 */ + { 0, 0, printargs, "n32_alarm" }, /* 6037 */ + { 0, 0, printargs, "n32_getpid" }, /* 6038 */ + { 0, 0, printargs, "n32_sendfile" }, /* 6039 */ + { 0, 0, printargs, "n32_socket" }, /* 6040 */ + { 0, 0, printargs, "n32_connect" }, /* 6041 */ + { 0, 0, printargs, "n32_accept" }, /* 6042 */ + { 0, 0, printargs, "n32_sendto" }, /* 6043 */ + { 0, 0, printargs, "n32_recvfrom" }, /* 6044 */ + { 0, 0, printargs, "n32_sendmsg" }, /* 6045 */ + { 0, 0, printargs, "n32_recvmsg" }, /* 6046 */ + { 0, 0, printargs, "n32_shutdown" }, /* 6047 */ + { 0, 0, printargs, "n32_bind" }, /* 6048 */ + { 0, 0, printargs, "n32_listen" }, /* 6049 */ + { 0, 0, printargs, "n32_getsockname" }, /* 6050 */ + { 0, 0, printargs, "n32_getpeername" }, /* 6051 */ + { 0, 0, printargs, "n32_socketpair" }, /* 6052 */ + { 0, 0, printargs, "n32_setsockopt" }, /* 6053 */ + { 0, 0, printargs, "n32_getsockopt" }, /* 6054 */ + { 0, 0, printargs, "n32_clone" }, /* 6055 */ + { 0, 0, printargs, "n32_fork" }, /* 6056 */ + { 0, 0, printargs, "n32_execve" }, /* 6057 */ + { 0, 0, printargs, "n32_exit" }, /* 6058 */ + { 0, 0, printargs, "n32_wait4" }, /* 6059 */ + { 0, 0, printargs, "n32_kill" }, /* 6060 */ + { 0, 0, printargs, "n32_uname" }, /* 6061 */ + { 0, 0, printargs, "n32_semget" }, /* 6062 */ + { 0, 0, printargs, "n32_semop" }, /* 6063 */ + { 0, 0, printargs, "n32_semctl" }, /* 6064 */ + { 0, 0, printargs, "n32_shmdt" }, /* 6065 */ + { 0, 0, printargs, "n32_msgget" }, /* 6066 */ + { 0, 0, printargs, "n32_msgsnd" }, /* 6067 */ + { 0, 0, printargs, "n32_msgrcv" }, /* 6068 */ + { 0, 0, printargs, "n32_msgctl" }, /* 6069 */ + { 0, 0, printargs, "n32_fcntl" }, /* 6070 */ + { 0, 0, printargs, "n32_flock" }, /* 6071 */ + { 0, 0, printargs, "n32_fsync" }, /* 6072 */ + { 0, 0, printargs, "n32_fdatasync" }, /* 6073 */ + { 0, 0, printargs, "n32_truncate" }, /* 6074 */ + { 0, 0, printargs, "n32_ftruncate" }, /* 6075 */ + { 0, 0, printargs, "n32_getdents" }, /* 6076 */ + { 0, 0, printargs, "n32_getcwd" }, /* 6077 */ + { 0, 0, printargs, "n32_chdir" }, /* 6078 */ + { 0, 0, printargs, "n32_fchdir" }, /* 6079 */ + { 0, 0, printargs, "n32_rename" }, /* 6080 */ + { 0, 0, printargs, "n32_mkdir" }, /* 6081 */ + { 0, 0, printargs, "n32_rmdir" }, /* 6082 */ + { 0, 0, printargs, "n32_creat" }, /* 6083 */ + { 0, 0, printargs, "n32_link" }, /* 6084 */ + { 0, 0, printargs, "n32_unlink" }, /* 6085 */ + { 0, 0, printargs, "n32_symlink" }, /* 6086 */ + { 0, 0, printargs, "n32_readlink" }, /* 6087 */ + { 0, 0, printargs, "n32_chmod" }, /* 6088 */ + { 0, 0, printargs, "n32_fchmod" }, /* 6089 */ + { 0, 0, printargs, "n32_chown" }, /* 6090 */ + { 0, 0, printargs, "n32_fchown" }, /* 6091 */ + { 0, 0, printargs, "n32_lchown" }, /* 6092 */ + { 0, 0, printargs, "n32_umask" }, /* 6093 */ + { 0, 0, printargs, "n32_gettimeofday" }, /* 6094 */ + { 0, 0, printargs, "n32_getrlimit" }, /* 6095 */ + { 0, 0, printargs, "n32_getrusage" }, /* 6096 */ + { 0, 0, printargs, "n32_sysinfo" }, /* 6097 */ + { 0, 0, printargs, "n32_times" }, /* 6098 */ + { 0, 0, printargs, "n32_ptrace" }, /* 6099 */ + { 0, 0, printargs, "n32_getuid" }, /* 6100 */ + { 0, 0, printargs, "n32_syslog" }, /* 6101 */ + { 0, 0, printargs, "n32_getgid" }, /* 6102 */ + { 0, 0, printargs, "n32_setuid" }, /* 6103 */ + { 0, 0, printargs, "n32_setgid" }, /* 6104 */ + { 0, 0, printargs, "n32_geteuid" }, /* 6105 */ + { 0, 0, printargs, "n32_getegid" }, /* 6106 */ + { 0, 0, printargs, "n32_setpgid" }, /* 6107 */ + { 0, 0, printargs, "n32_getppid" }, /* 6108 */ + { 0, 0, printargs, "n32_getpgrp" }, /* 6109 */ + { 0, 0, printargs, "n32_setsid" }, /* 6110 */ + { 0, 0, printargs, "n32_setreuid" }, /* 6111 */ + { 0, 0, printargs, "n32_setregid" }, /* 6112 */ + { 0, 0, printargs, "n32_getgroups" }, /* 6113 */ + { 0, 0, printargs, "n32_setgroups" }, /* 6114 */ + { 0, 0, printargs, "n32_setresuid" }, /* 6115 */ + { 0, 0, printargs, "n32_getresuid" }, /* 6116 */ + { 0, 0, printargs, "n32_setresgid" }, /* 6117 */ + { 0, 0, printargs, "n32_getresgid" }, /* 6118 */ + { 0, 0, printargs, "n32_getpgid" }, /* 6119 */ + { 0, 0, printargs, "n32_setfsuid" }, /* 6120 */ + { 0, 0, printargs, "n32_setfsgid" }, /* 6121 */ + { 0, 0, printargs, "n32_getsid" }, /* 6122 */ + { 0, 0, printargs, "n32_capget" }, /* 6123 */ + { 0, 0, printargs, "n32_capset" }, /* 6124 */ + { 0, 0, printargs, "n32_rt_sigpending" }, /* 6125 */ + { 0, 0, printargs, "n32_rt_sigtimedwait" }, /* 6126 */ + { 0, 0, printargs, "n32_rt_sigqueueinfo" }, /* 6127 */ + { 0, 0, printargs, "n32_rt_sigsuspend" }, /* 6128 */ + { 0, 0, printargs, "n32_sigaltstack" }, /* 6129 */ + { 0, 0, printargs, "n32_utime" }, /* 6130 */ + { 0, 0, printargs, "n32_mknod" }, /* 6131 */ + { 0, 0, printargs, "n32_personality" }, /* 6132 */ + { 0, 0, printargs, "n32_ustat" }, /* 6133 */ + { 0, 0, printargs, "n32_statfs" }, /* 6134 */ + { 0, 0, printargs, "n32_fstatfs" }, /* 6135 */ + { 0, 0, printargs, "n32_sysfs" }, /* 6136 */ + { 0, 0, printargs, "n32_getpriority" }, /* 6137 */ + { 0, 0, printargs, "n32_setpriority" }, /* 6138 */ + { 0, 0, printargs, "n32_sched_setparam" }, /* 6139 */ + { 0, 0, printargs, "n32_sched_getparam" }, /* 6140 */ + { 0, 0, printargs, "n32_sched_setscheduler"}, /* 6141 */ + { 0, 0, printargs, "n32_sched_getscheduler"}, /* 6142 */ + { 0, 0, printargs, "n32_sched_get_priority_max"}, /* 6143 */ + { 0, 0, printargs, "n32_sched_get_priority_min"}, /* 6144 */ + { 0, 0, printargs, "n32_sched_rr_get_interval"}, /* 6145 */ + { 0, TM, printargs, "n32_mlock" }, /* 6146 */ + { 0, TM, printargs, "n32_munlock" }, /* 6147 */ + { 0, TM, printargs, "n32_mlockall" }, /* 6148 */ + { 0, TM, printargs, "n32_munlockall" }, /* 6149 */ + { 0, 0, printargs, "n32_vhangup" }, /* 6150 */ + { 0, 0, printargs, "n32_pivot_root" }, /* 6151 */ + { 0, 0, printargs, "n32__sysctl" }, /* 6152 */ + { 0, 0, printargs, "n32_prctl" }, /* 6153 */ + { 0, 0, printargs, "n32_adjtimex" }, /* 6154 */ + { 0, 0, printargs, "n32_setrlimit" }, /* 6155 */ + { 0, 0, printargs, "n32_chroot" }, /* 6156 */ + { 0, 0, printargs, "n32_sync" }, /* 6157 */ + { 0, 0, printargs, "n32_acct" }, /* 6158 */ + { 0, 0, printargs, "n32_settimeofday" }, /* 6159 */ + { 0, 0, printargs, "n32_mount" }, /* 6160 */ + { 0, 0, printargs, "n32_umount2" }, /* 6161 */ + { 0, 0, printargs, "n32_swapon" }, /* 6162 */ + { 0, 0, printargs, "n32_swapoff" }, /* 6163 */ + { 0, 0, printargs, "n32_reboot" }, /* 6164 */ + { 0, 0, printargs, "n32_sethostname" }, /* 6165 */ + { 0, 0, printargs, "n32_setdomainname" }, /* 6166 */ + { 0, 0, printargs, "n32_create_module" }, /* 6167 */ + { 0, 0, printargs, "n32_init_module" }, /* 6168 */ + { 0, 0, printargs, "n32_delete_module" }, /* 6169 */ + { 0, 0, printargs, "n32_get_kernel_syms" }, /* 6170 */ + { 0, 0, printargs, "n32_query_module" }, /* 6171 */ + { 0, TF, printargs, "n32_quotactl" }, /* 6172 */ + { 0, 0, printargs, "n32_nfsservctl" }, /* 6173 */ + { 0, 0, printargs, "n32_getpmsg" }, /* 6174 */ + { 0, 0, printargs, "n32_putpmsg" }, /* 6175 */ + { 0, 0, printargs, "n32_afs_syscall" }, /* 6176 */ + { 0, 0, printargs, "n32_reserved177" }, /* 6177 */ + { 0, 0, printargs, "n32_gettid" }, /* 6178 */ + { 0, 0, printargs, "n32_readahead" }, /* 6179 */ + { 0, 0, printargs, "n32_setxattr" }, /* 6180 */ + { 0, 0, printargs, "n32_lsetxattr" }, /* 6181 */ + { 0, 0, printargs, "n32_fsetxattr" }, /* 6182 */ + { 0, 0, printargs, "n32_getxattr" }, /* 6183 */ + { 0, 0, printargs, "n32_lgetxattr" }, /* 6184 */ + { 0, 0, printargs, "n32_fgetxattr" }, /* 6185 */ + { 0, 0, printargs, "n32_listxattr" }, /* 6186 */ + { 0, 0, printargs, "n32_llistxattr" }, /* 6187 */ + { 0, 0, printargs, "n32_flistxattr" }, /* 6188 */ + { 0, 0, printargs, "n32_removexattr" }, /* 6189 */ + { 0, 0, printargs, "n32_lremovexattr" }, /* 6190 */ + { 0, 0, printargs, "n32_fremovexattr" }, /* 6191 */ + { 0, 0, printargs, "n32_tkill" }, /* 6192 */ + { 0, 0, printargs, "n32_time" }, /* 6193 */ + { 0, 0, printargs, "n32_futex" }, /* 6194 */ + { 0, 0, printargs, "n32_sched_setaffinity" }, /* 6195 */ + { 0, 0, printargs, "n32_sched_getaffinity" }, /* 6196 */ + { 0, 0, printargs, "n32_cacheflush" }, /* 6197 */ + { 0, 0, printargs, "n32_cachectl" }, /* 6198 */ + { 0, 0, printargs, "n32_sysmips" }, /* 6199 */ + { 0, 0, printargs, "n32_io_setup" }, /* 6200 */ + { 0, 0, printargs, "n32_io_destroy" }, /* 6201 */ + { 0, 0, printargs, "n32_io_getevents" }, /* 6202 */ + { 0, 0, printargs, "n32_io_submit" }, /* 6203 */ + { 0, 0, printargs, "n32_io_cancel" }, /* 6204 */ + { 1, TP, printargs, "n32_exit_group" }, /* 6205 */ + { 0, 0, printargs, "n32_lookup_dcookie" }, /* 6206 */ + { 0, 0, printargs, "n32_epoll_create" }, /* 6207 */ + { 0, 0, printargs, "n32_epoll_ctl" }, /* 6208 */ + { 0, 0, printargs, "n32_epoll_wait" }, /* 6209 */ + { 0, TM, printargs, "n32_remap_file_pages" }, /* 6210 */ + { 0, 0, printargs, "n32_rt_sigreturn" }, /* 6211 */ + { 0, 0, printargs, "n32_fcntl64" }, /* 6212 */ + { 0, 0, printargs, "n32_set_tid_address" }, /* 6213 */ + { 0, 0, printargs, "n32_restart_syscall" }, /* 6214 */ + { 0, 0, printargs, "n32_semtimedop" }, /* 6215 */ + { 0, 0, printargs, "n32_fadvise64" }, /* 6216 */ + { 0, 0, printargs, "n32_statfs64" }, /* 6217 */ + { 0, 0, printargs, "n32_fstatfs64" }, /* 6218 */ + { 0, 0, printargs, "n32_sendfile64" }, /* 6219 */ + { 3, 0, printargs, "n32_timer_create" }, /* 6220 */ + { 4, 0, printargs, "n32_timer_settime" }, /* 6221 */ + { 2, 0, printargs, "n32_timer_gettime" }, /* 6222 */ + { 1, 0, printargs, "n32_timer_getoverrun" }, /* 6223 */ + { 1, 0, printargs, "n32_timer_delete" }, /* 6224 */ + { 2, 0, printargs, "n32_clock_settime" }, /* 6225 */ + { 2, 0, printargs, "n32_clock_gettime" }, /* 6226 */ + { 2, 0, printargs, "n32_clock_getres" }, /* 6227 */ + { 4, 0, printargs, "n32_clock_nanosleep" }, /* 6228 */ + { 3, 0, printargs, "n32_tgkill" }, /* 6229 */ + { 2, 0, printargs, "n32_utimes" }, /* 6230 */ + { 6, TM, printargs, "n32_mbind" }, /* 6231 */ + { 5, TM, printargs, "n32_get_mempolicy" }, /* 6232 */ + { 3, TM, printargs, "n32_set_mempolicy" }, /* 6233 */ + { 4, 0, printargs, "n32_mq_open" }, /* 6234 */ + { 1, 0, printargs, "n32_mq_unlink" }, /* 6235 */ + { 5, 0, printargs, "n32_mq_timedsend" }, /* 6236 */ + { 5, 0, printargs, "n32_mq_timedreceive" }, /* 6237 */ + { 2, 0, printargs, "n32_mq_notify" }, /* 6238 */ + { 3, 0, printargs, "n32_mq_getsetattr" }, /* 6239 */ + { 5, 0, printargs, "n32_vserver" }, /* 6240 */ + { 5, TP, printargs, "n32_waitid" }, /* 6241 */ + { 0, 0, printargs, "n32_SYS_6242" }, /* 6242 */ + { 5, 0, printargs, "n32_add_key" }, /* 6243 */ + { 4, 0, printargs, "n32_request_key" }, /* 6244 */ + { 5, 0, printargs, "n32_keyctl" }, /* 6245 */ + { 1, 0, printargs, "n32_set_thread_area" }, /* 6246 */ + { 0, TD, printargs, "n32_inotify_init" }, /* 6247 */ + { 3, TD, printargs, "n32_inotify_add_watch" }, /* 6248 */ + { 2, TD, printargs, "n32_inotify_rm_watch" }, /* 6249 */ + { 4, TM, printargs, "n32_migrate_pages" }, /* 6250 */ + { 4, TD|TF, printargs, "n32_openat" }, /* 6251 */ + { 3, TD|TF, printargs, "n32_mkdirat" }, /* 6252 */ + { 4, TD|TF, printargs, "n32_mknodat" }, /* 6253 */ + { 5, TD|TF, printargs, "n32_fchownat" }, /* 6254 */ + { 3, TD|TF, printargs, "n32_futimesat" }, /* 6255 */ + { 4, TD|TF, printargs, "n32_newfstatat" }, /* 6256 */ + { 3, TD|TF, printargs, "n32_unlinkat" }, /* 6257 */ + { 4, TD|TF, printargs, "n32_renameat" }, /* 6258 */ + { 5, TD|TF, printargs, "n32_linkat" }, /* 6259 */ + { 3, TD|TF, printargs, "n32_symlinkat" }, /* 6260 */ + { 4, TD|TF, printargs, "n32_readlinkat" }, /* 6261 */ + { 3, TD|TF, printargs, "n32_fchmodat" }, /* 6262 */ + { 3, TD|TF, printargs, "n32_faccessat" }, /* 6263 */ + { 6, TD, printargs, "n32_pselect6" }, /* 6264 */ + { 5, TD, printargs, "n32_ppoll" }, /* 6265 */ + { 1, TP, printargs, "n32_unshare" }, /* 6266 */ + { 6, TD, printargs, "n32_splice" }, /* 6267 */ + { 4, TD, printargs, "n32_sync_file_range" }, /* 6268 */ + { 4, TD, printargs, "n32_tee" }, /* 6269 */ + { 4, TD, printargs, "n32_vmsplice" }, /* 6270 */ + { 6, TM, printargs, "n32_move_pages" }, /* 6271 */ + { 2, 0, printargs, "n32_set_robust_list" }, /* 6272 */ + { 3, 0, printargs, "n32_get_robust_list" }, /* 6273 */ + { 5, 0, printargs, "n32_kexec_load" }, /* 6274 */ + { 3, 0, printargs, "n32_getcpu" }, /* 6275 */ + { 5, TD, printargs, "n32_epoll_pwait" }, /* 6276 */ + { 3, 0, printargs, "n32_ioprio_set" }, /* 6277 */ + { 2, 0, printargs, "n32_ioprio_get" }, /* 6278 */ + { 4, TD|TF, printargs, "n32_utimensat" }, /* 6279 */ + { 3, TD|TS, printargs, "n32_signalfd" }, /* 6280 */ + { 4, TD, printargs, "n32_timerfd" }, /* 6281 */ + { 1, TD, printargs, "n32_eventfd" }, /* 6282 */ + { 6, TD, printargs, "n32_fallocate" }, /* 6283 */ + { 2, TD, printargs, "n32_timerfd_create" }, /* 6284 */ + { 2, TD, printargs, "n32_timerfd_gettime" }, /* 6285 */ + { 4, TD, printargs, "n32_timerfd_settime" }, /* 6286 */ + { 4, TD|TS, printargs, "n32_signalfd4" }, /* 6287 */ + { 2, TD, printargs, "n32_eventfd2" }, /* 6288 */ + { 1, TD, printargs, "n32_epoll_create1" }, /* 6289 */ + { 3, TD, printargs, "n32_dup3" }, /* 6290 */ + { 2, TD, printargs, "n32_pipe2" }, /* 6291 */ + { 1, TD, printargs, "n32_inotify_init1" }, /* 6292 */ + { 5, TD, printargs, "n32_preadv" }, /* 6293 */ + { 5, TD, printargs, "n32_pwritev" }, /* 6294 */ + { 4, TP|TS, printargs, "n32_rt_tgsigqueueinfo" }, /* 6295 */ + { 5, TD, printargs, "n32_perf_event_open" }, /* 6296 */ + { 4, TN, printargs, "n32_accept4" }, /* 6297 */ + { 5, TN, printargs, "n32_recvmmsg" }, /* 6298 */ + { 3, TD, printargs, "n32_getdents64" }, /* 6299 */ + { 2, 0, printargs, "n32_fanotify_init" }, /* 6300 */ + { 5, 0, printargs, "n32_fanotify_mark" }, /* 6301 */ + { 4, 0, printargs, "n32_prlimit64" }, /* 6302 */ + { 5, TD|TF, printargs, "n32_name_to_handle_at" }, /* 6303 */ + { 3, TD, printargs, "n32_open_by_handle_at" }, /* 6304 */ + { 2, 0, printargs, "n32_clock_adjtime" }, /* 6305 */ + { 1, TD, printargs, "n32_syncfs" }, /* 6306 */ + { 4, TN, printargs, "n32_sendmmsg" }, /* 6307 */ + { 2, TD, printargs, "n32_setns" }, /* 6308 */ + { 6, 0, printargs, "n32_process_vm_readv" }, /* 6309 */ + { 6, 0, printargs, "n32_process_vm_writev" }, /* 6310 */ + { 5, 0, printargs, "n32_kcmp" }, /* 6311 */ + { 3, TD, printargs, "n32_finit_module" }, /* 6312 */ +#endif diff --git a/linux/mips/syscallent-n64.h b/linux/mips/syscallent-n64.h new file mode 100644 index 00000000..dd5da40c --- /dev/null +++ b/linux/mips/syscallent-n64.h @@ -0,0 +1,621 @@ +#if defined LINUX_MIPSN64 + /* For an N64 strace decode the N64 64-bit syscalls. */ + { 3, TD, sys_read, "read" }, /* 5000 */ /* start of Linux N64 */ + { 3, TD, sys_write, "write" }, /* 5001 */ + { 3, TD|TF, sys_open, "open" }, /* 5002 */ + { 1, TD, sys_close, "close" }, /* 5003 */ + { 2, TF, sys_stat, "stat" }, /* 5004 */ + { 2, TD, sys_fstat, "fstat" }, /* 5005 */ + { 2, TF, sys_lstat, "lstat" }, /* 5006 */ + { 3, TD, sys_poll, "poll" }, /* 5007 */ + { 3, TD, sys_lseek, "lseek" }, /* 5008 */ + { 6, TD|TM, sys_mmap, "mmap" }, /* 5009 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 5010 */ + { 2, TM, sys_munmap, "munmap" }, /* 5011 */ + { 1, TM, sys_brk, "brk" }, /* 5012 */ + { 4, TS, sys_rt_sigaction, "rt_sigaction" }, /* 5013 */ + { 4, TS, sys_rt_sigprocmask, "rt_sigprocmask"}, /* 5014 */ + { 3, TD, sys_ioctl, "ioctl" }, /* 5015 */ + { 4, TD, sys_pread, "pread64" }, /* 5016 */ + { 4, TD, sys_pwrite, "pwrite64" }, /* 5017 */ + { 3, TD, sys_readv, "readv" }, /* 5018 */ + { 3, TD, sys_writev, "writev" }, /* 5019 */ + { 2, TF, sys_access, "access" }, /* 5020 */ + { 1, TD, sys_pipe, "pipe" }, /* 5021 */ + { 5, TD, sys_select, "_newselect" }, /* 5022 */ + { 0, 0, sys_sched_yield, "sched_yield" }, /* 5023 */ + { 5, TM, sys_mremap, "mremap" }, /* 5024 */ + { 3, TM, sys_msync, "msync" }, /* 5025 */ + { 3, TM, sys_mincore, "mincore" }, /* 5026 */ + { 3, TM, sys_madvise, "madvise" }, /* 5027 */ + { 3, TI, sys_shmget, "shmget" }, /* 5028 */ + { 3, TI, sys_shmat, "shmat" }, /* 5029 */ + { 3, TI, sys_shmctl, "shmctl" }, /* 5030 */ + { 1, TD, sys_dup, "dup" }, /* 5031 */ + { 2, TD, sys_dup2, "dup2" }, /* 5032 */ + { 0, TS, sys_pause, "pause" }, /* 5033 */ + { 2, 0, sys_nanosleep, "nanosleep" }, /* 5034 */ + { 2, 0, sys_getitimer, "getitimer" }, /* 5035 */ + { 3, 0, sys_setitimer, "setitimer" }, /* 5036 */ + { 1, 0, sys_alarm, "alarm" }, /* 5037 */ + { 0, 0, sys_getpid, "getpid" }, /* 5038 */ + { 4, TD|TN, sys_sendfile, "sendfile" }, /* 5039 */ + { 3, TN, sys_socket, "socket" }, /* 5040 */ + { 3, TN, sys_connect, "connect" }, /* 5041 */ + { 3, TN, sys_accept, "accept" }, /* 5042 */ + { 6, TN, sys_sendto, "sendto" }, /* 5043 */ + { 6, TN, sys_recvfrom, "recvfrom" }, /* 5044 */ + { 3, TN, sys_sendmsg, "sendmsg" }, /* 5045 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 5046 */ + { 2, TN, sys_shutdown, "shutdown" }, /* 5047 */ + { 3, TN, sys_bind, "bind" }, /* 5048 */ + { 2, TN, sys_listen, "listen" }, /* 5049 */ + { 3, TN, sys_getsockname, "getsockname" }, /* 5050 */ + { 3, TN, sys_getpeername, "getpeername" }, /* 5051 */ + { 4, TN, sys_socketpair, "socketpair" }, /* 5052 */ + { 5, TN, sys_setsockopt, "setsockopt" }, /* 5053 */ + { 5, TN, sys_getsockopt, "getsockopt" }, /* 5054 */ + { 2, TP, sys_clone, "clone" }, /* 5055 */ + { 0, TP, sys_fork, "fork" }, /* 5056 */ + { 3, TF|TP, sys_execve, "execve" }, /* 5057 */ + { 1, TP, sys_exit, "exit" }, /* 5058 */ + { 4, TP, sys_wait4, "wait4" }, /* 5059 */ + { 2, TS, sys_kill, "kill" }, /* 5060 */ + { 1, 0, sys_uname, "uname" }, /* 5061 */ + { 3, TI, sys_semget, "semget" }, /* 5062 */ + { 3, TI, printargs, "semop" }, /* 5063 */ + { 4, TI, sys_semctl, "semctl" }, /* 5064 */ + { 1, TI, sys_shmdt, "shmdt" }, /* 5065 */ + { 2, TI, sys_msgget, "msgget" }, /* 5066 */ + { 4, TI, sys_msgsnd, "msgsnd" }, /* 5067 */ + { 5, TI, sys_msgrcv, "msgrcv" }, /* 5068 */ + { 3, TI, sys_msgctl, "msgctl" }, /* 5069 */ + { 3, TD, sys_fcntl, "fcntl" }, /* 5070 */ + { 2, TD, sys_flock, "flock" }, /* 5071 */ + { 1, TD, sys_fsync, "fsync" }, /* 5072 */ + { 1, TD, sys_fdatasync, "fdatasync" }, /* 5073 */ + { 2, TF, sys_truncate, "truncate" }, /* 5074 */ + { 2, TD, sys_ftruncate, "ftruncate" }, /* 5075 */ + { 3, TD, sys_getdents, "getdents" }, /* 5076 */ + { 2, TF, sys_getcwd, "getcwd" }, /* 5077 */ + { 1, TF, sys_chdir, "chdir" }, /* 5078 */ + { 1, TD, sys_fchdir, "fchdir" }, /* 5079 */ + { 2, TF, sys_rename, "rename" }, /* 5080 */ + { 2, TF, sys_mkdir, "mkdir" }, /* 5081 */ + { 1, TF, sys_rmdir, "rmdir" }, /* 5082 */ + { 2, TD|TF, sys_creat, "creat" }, /* 5083 */ + { 2, TF, sys_link, "link" }, /* 5084 */ + { 1, TF, sys_unlink, "unlink" }, /* 5085 */ + { 2, TF, sys_symlink, "symlink" }, /* 5086 */ + { 3, TF, sys_readlink, "readlink" }, /* 5087 */ + { 2, TF, sys_chmod, "chmod" }, /* 5088 */ + { 2, TD, sys_fchmod, "fchmod" }, /* 5089 */ + { 3, TF, sys_chown, "chown" }, /* 5090 */ + { 3, TD, sys_fchown, "fchown" }, /* 5091 */ + { 3, TF, sys_chown, "lchown" }, /* 5092 */ + { 1, 0, sys_umask, "umask" }, /* 5093 */ + { 2, 0, sys_gettimeofday, "gettimeofday" }, /* 5094 */ + { 2, 0, sys_getrlimit, "getrlimit" }, /* 5095 */ + { 2, 0, sys_getrusage, "getrusage" }, /* 5096 */ + { 1, 0, sys_sysinfo, "sysinfo" }, /* 5097 */ + { 1, 0, sys_times, "times" }, /* 5098 */ + { 4, 0, sys_ptrace, "ptrace" }, /* 5099 */ + { 0, NF, sys_getuid, "getuid" }, /* 5100 */ + { 3, 0, sys_syslog, "syslog" }, /* 5101 */ + { 0, NF, sys_getgid, "getgid" }, /* 5102 */ + { 1, 0, sys_setuid, "setuid" }, /* 5103 */ + { 1, 0, sys_setgid, "setgid" }, /* 5104 */ + { 0, NF, sys_geteuid, "geteuid" }, /* 5105 */ + { 0, NF, sys_getegid, "getegid" }, /* 5106 */ + { 2, 0, sys_setpgid, "setpgid" }, /* 5107 */ + { 0, 0, sys_getppid, "getppid" }, /* 5108 */ + { 0, 0, sys_getpgrp, "getpgrp" }, /* 5109 */ + { 0, 0, sys_setsid, "setsid" }, /* 5110 */ + { 2, 0, sys_setreuid, "setreuid" }, /* 5111 */ + { 2, 0, sys_setregid, "setregid" }, /* 5112 */ + { 2, 0, sys_getgroups, "getgroups" }, /* 5113 */ + { 2, 0, sys_setgroups, "setgroups" }, /* 5114 */ + { 3, 0, sys_setresuid, "setresuid" }, /* 5115 */ + { 3, 0, sys_getresuid, "getresuid" }, /* 5116 */ + { 3, 0, sys_setresgid, "setresgid" }, /* 5117 */ + { 3, 0, sys_getresgid, "getresgid" }, /* 5118 */ + { 0, 0, sys_getpgid, "getpgid" }, /* 5119 */ + { 1, NF, sys_setfsuid, "setfsuid" }, /* 5120 */ + { 1, NF, sys_setfsgid, "setfsgid" }, /* 5121 */ + { 1, 0, sys_getsid, "getsid" }, /* 5122 */ + { 2, 0, sys_capget, "capget" }, /* 5123 */ + { 2, 0, sys_capset, "capset" }, /* 5124 */ + { 2, TS, sys_rt_sigpending, "rt_sigpending" }, /* 5125 */ + { 4, TS, sys_rt_sigtimedwait, "rt_sigtimedwait"},/* 5126 */ + { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo"},/* 5127 */ + { 2, TS, sys_rt_sigsuspend, "rt_sigsuspend" }, /* 5128 */ + { 2, TS, sys_sigaltstack, "sigaltstack" }, /* 5129 */ + { 2, TF, sys_utime, "utime" }, /* 5130 */ + { 3, TF, sys_mknod, "mknod" }, /* 5131 */ + { 1, 0, sys_personality, "personality" }, /* 5132 */ + { 2, 0, sys_ustat, "ustat" }, /* 5133 */ + { 3, TF, sys_statfs, "statfs" }, /* 5134 */ + { 3, TD, sys_fstatfs, "fstatfs" }, /* 5135 */ + { 5, 0, sys_sysfs, "sysfs" }, /* 5136 */ + { 2, 0, sys_getpriority, "getpriority" }, /* 5137 */ + { 3, 0, sys_setpriority, "setpriority" }, /* 5138 */ + { 2, 0, sys_sched_setparam, "sched_setparam"}, /* 5139 */ + { 2, 0, sys_sched_getparam, "sched_getparam"}, /* 5140 */ + { 3, 0, sys_sched_setscheduler, "sched_setscheduler"}, /* 5141 */ + { 1, 0, sys_sched_getscheduler, "sched_getscheduler"}, /* 5142 */ + { 1, 0, sys_sched_get_priority_max,"sched_get_priority_max"}, /* 5143 */ + { 1, 0, sys_sched_get_priority_min,"sched_get_priority_min"}, /* 5144 */ + { 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 5145 */ + { 2, TM, sys_mlock, "mlock" }, /* 5146 */ + { 2, TM, sys_munlock, "munlock" }, /* 5147 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 5148 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 5149 */ + { 0, 0, sys_vhangup, "vhangup" }, /* 5150 */ + { 2, TF, sys_pivotroot, "pivot_root" }, /* 5151 */ + { 1, 0, sys_sysctl, "_sysctl" }, /* 5152 */ + { 5, 0, sys_prctl, "prctl" }, /* 5153 */ + { 1, 0, sys_adjtimex, "adjtimex" }, /* 5154 */ + { 2, 0, sys_setrlimit, "setrlimit" }, /* 5155 */ + { 1, TF, sys_chroot, "chroot" }, /* 5156 */ + { 0, 0, sys_sync, "sync" }, /* 5157 */ + { 1, TF, sys_acct, "acct" }, /* 5158 */ + { 2, 0, sys_settimeofday, "settimeofday" }, /* 5159 */ + { 5, TF, sys_mount, "mount" }, /* 5160 */ + { 2, TF, sys_umount2, "umount2" }, /* 5161 */ + { 2, TF, sys_swapon, "swapon" }, /* 5162 */ + { 1, TF, sys_swapoff, "swapoff" }, /* 5163 */ + { 4, 0, sys_reboot, "reboot" }, /* 5164 */ + { 2, 0, sys_sethostname, "sethostname" }, /* 5165 */ + { 2, 0, sys_setdomainname, "setdomainname" }, /* 5166 */ + { 2, 0, sys_create_module, "create_module" }, /* 5167 */ + { 4, 0, sys_init_module, "init_module" }, /* 5168 */ + { 1, 0, sys_delete_module, "delete_module" }, /* 5169 */ + { 1, 0, sys_get_kernel_syms, "get_kernel_syms"}, /* 5170 */ + { 5, 0, sys_query_module, "query_module" }, /* 5171 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 5172 */ + { 3, 0, sys_nfsservctl, "nfsservctl" }, /* 5173 */ + { 5, TN, printargs, "getpmsg" }, /* 5174 */ + { 5, TN, printargs, "putpmsg" }, /* 5175 */ + { 0, 0, sys_afs_syscall, "afs_syscall" }, /* 5176 */ + { 0, 0, printargs, "reserved177" }, /* 5177 */ + { 0, 0, sys_gettid, "gettid" }, /* 5178 */ + { 3, TD, sys_readahead, "readahead" }, /* 5179 */ + { 5, TF, sys_setxattr, "setxattr" }, /* 5180 */ + { 5, TF, sys_setxattr, "lsetxattr" }, /* 5181 */ + { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 5182 */ + { 4, TF, sys_getxattr, "getxattr" }, /* 5183 */ + { 4, TF, sys_getxattr, "lgetxattr" }, /* 5184 */ + { 4, TD, sys_fgetxattr, "fgetxattr" }, /* 5185 */ + { 3, TF, sys_listxattr, "listxattr" }, /* 5186 */ + { 3, TF, sys_listxattr, "llistxattr" }, /* 5187 */ + { 3, TD, sys_flistxattr, "flistxattr" }, /* 5188 */ + { 2, TF, sys_removexattr, "removexattr" }, /* 5189 */ + { 2, TF, sys_removexattr, "lremovexattr" }, /* 5190 */ + { 2, TD, sys_fremovexattr, "fremovexattr" }, /* 5191 */ + { 2, TS, sys_kill, "tkill" }, /* 5192 */ + { 1, 0, sys_time, "time" }, /* 5193 */ + { 6, 0, sys_futex, "futex" }, /* 5194 */ + { 3, 0, sys_sched_setaffinity, "sched_setaffinity"}, /* 5195 */ + { 3, 0, sys_sched_getaffinity, "sched_getaffinity"}, /* 5196 */ + { 3, 0, printargs, "cacheflush" }, /* 5197 */ + { 3, 0, printargs, "cachectl" }, /* 5198 */ + { 4, 0, sys_sysmips, "sysmips" }, /* 5199 */ + { 2, 0, sys_io_setup, "io_setup" }, /* 5200 */ + { 1, 0, sys_io_destroy, "io_destroy" }, /* 5201 */ + { 5, 0, sys_io_getevents, "io_getevents" }, /* 5202 */ + { 3, 0, sys_io_submit, "io_submit" }, /* 5203 */ + { 3, 0, sys_io_cancel, "io_cancel" }, /* 5204 */ + { 1, TP, sys_exit, "exit_group" }, /* 5205 */ + { 3, 0, sys_lookup_dcookie, "lookup_dcookie" }, /* 5206 */ + { 1, TD, sys_epoll_create, "epoll_create" }, /* 5207 */ + { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 5208 */ + { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 5209 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages" }, /* 5210 */ + { 0, TS, sys_rt_sigreturn, "rt_sigreturn" }, /* 5211 */ + { 1, 0, sys_set_tid_address, "set_tid_address" }, /* 5212 */ + { 0, 0, sys_restart_syscall, "restart_syscall" }, /* 5213 */ + { 5, TI, sys_semtimedop, "semtimedop" }, /* 5214 */ + { 4, TD, sys_fadvise64_64, "fadvise64_64" }, /* 5215 */ + { 3, 0, sys_timer_create, "timer_create" }, /* 5216 */ + { 4, 0, sys_timer_settime, "timer_settime" }, /* 5217 */ + { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 5218 */ + { 1, 0, sys_timer_getoverrun, "timer_getoverrun"}, /* 5219 */ + { 1, 0, sys_timer_delete, "timer_delete" }, /* 5220 */ + { 2, 0, sys_clock_settime, "clock_settime" }, /* 5221 */ + { 2, 0, sys_clock_gettime, "clock_gettime" }, /* 5222 */ + { 2, 0, sys_clock_getres, "clock_getres" }, /* 5223 */ + { 4, 0, sys_clock_nanosleep, "clock_nanosleep"}, /* 5224 */ + { 3, TS, sys_tgkill, "tgkill" }, /* 5225 */ + { 2, TF, sys_utimes, "utimes" }, /* 5226 */ + { 6, TM, sys_mbind, "mbind" }, /* 5227 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 5228 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 5229 */ + { 4, 0, sys_mq_open, "mq_open" }, /* 5230 */ + { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 5231 */ + { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 5232 */ + { 5, 0, sys_mq_timedreceive, "mq_timedreceive" }, /* 5233 */ + { 2, 0, sys_mq_notify, "mq_notify" }, /* 5234 */ + { 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 5235 */ + { 5, 0, sys_vserver, "vserver" }, /* 5236 */ + { 5, TP, sys_waitid, "waitid" }, /* 5237 */ + [5238] = { }, + { 5, 0, sys_add_key, "add_key" }, /* 5239 */ + { 4, 0, sys_request_key, "request_key" }, /* 5230 */ + { 5, 0, sys_keyctl, "keyctl" }, /* 5241 */ + { 1, 0, sys_set_thread_area, "set_thread_area" }, /* 5242 */ + { 0, TD, sys_inotify_init, "inotify_init" }, /* 5243 */ + { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 5244 */ + { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 5245 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 5246 */ + { 4, TD|TF, sys_openat, "openat" }, /* 5247 */ + { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 5248 */ + { 4, TD|TF, sys_mknodat, "mknodat" }, /* 5249 */ + { 5, TD|TF, sys_fchownat, "fchownat" }, /* 5250 */ + { 3, TD|TF, sys_futimesat, "futimesat" }, /* 5251 */ + { 4, TD|TF, sys_newfstatat, "newfstatat" }, /* 5252 */ + { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 5253 */ + { 4, TD|TF, sys_renameat, "renameat" }, /* 5254 */ + { 5, TD|TF, sys_linkat, "linkat" }, /* 5255 */ + { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 5256 */ + { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 5257 */ + { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 5258 */ + { 3, TD|TF, sys_faccessat, "faccessat" }, /* 5259 */ + { 6, TD, sys_pselect6, "pselect6" }, /* 5260 */ + { 5, TD, sys_ppoll, "ppoll" }, /* 5261 */ + { 1, TP, sys_unshare, "unshare" }, /* 5262 */ + { 6, TD, sys_splice, "splice" }, /* 5263 */ + { 4, TD, sys_sync_file_range, "sync_file_range" }, /* 5264 */ + { 4, TD, sys_tee, "tee" }, /* 5265 */ + { 4, TD, sys_vmsplice, "vmsplice" }, /* 5266 */ + { 6, TM, printargs, "move_pages" }, /* 5267 */ + { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 5268 */ + { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 5269 */ + { 4, 0, sys_kexec_load, "kexec_load" }, /* 5270 */ + { 3, 0, sys_getcpu, "getcpu" }, /* 5271 */ + { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 5272 */ + { 3, 0, sys_ioprio_set, "ioprio_set" }, /* 5273 */ + { 2, 0, sys_ioprio_get, "ioprio_get" }, /* 5274 */ + { 4, TD|TF, sys_utimensat, "utimensat" }, /* 5275 */ + { 3, TD|TS, sys_signalfd, "signalfd" }, /* 5276 */ + { 4, TD, sys_timerfd, "timerfd" }, /* 5277 */ + { 1, TD, sys_eventfd, "eventfd" }, /* 5278 */ + { 4, TD, sys_fallocate, "fallocate" }, /* 5279 */ + { 2, TD, sys_timerfd_create, "timerfd_create" }, /* 5280 */ + { 2, TD, sys_timerfd_gettime, "timerfd_gettime" }, /* 5281 */ + { 4, TD, sys_timerfd_settime, "timerfd_settime" }, /* 5282 */ + { 4, TD|TS, sys_signalfd4, "signalfd4" }, /* 5283 */ + { 2, TD, sys_eventfd2, "eventfd2" }, /* 5284 */ + { 1, TD, sys_epoll_create1, "epoll_create1" }, /* 5285 */ + { 3, TD, sys_dup3, "dup3" }, /* 5286 */ + { 2, TD, sys_pipe2, "pipe2" }, /* 5287 */ + { 1, TD, sys_inotify_init1, "inotify_init1" }, /* 5288 */ + { 4, TD, sys_preadv, "preadv" }, /* 5289 */ + { 4, TD, sys_pwritev, "pwritev" }, /* 5290 */ + { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo" }, /* 5291 */ + { 5, TD, sys_perf_event_open, "perf_event_open" }, /* 5292 */ + { 4, TN, sys_accept4, "accept4" }, /* 5293 */ + { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 5294 */ + { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 5295 */ + { 5, TD|TF, sys_fanotify_mark, "fanotify_mark" }, /* 5296 */ + { 4, 0, sys_prlimit64, "prlimit64" }, /* 5297 */ + { 5, TD|TF, sys_name_to_handle_at, "name_to_handle_at"}, /* 5298 */ + { 3, TD, sys_open_by_handle_at, "open_by_handle_at"}, /* 5299 */ + { 2, 0, sys_clock_adjtime, "clock_adjtime" }, /* 5300 */ + { 1, TD, sys_syncfs, "syncfs" }, /* 5301 */ + { 4, TN, sys_sendmmsg, "sendmmsg" }, /* 5302 */ + { 2, TD, sys_setns, "setns" }, /* 5303 */ + { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 5304 */ + { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 5305 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 5306 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 5307 */ +#else + { 0, 0, printargs, "n64_read" }, /* 5000 */ + { 0, 0, printargs, "n64_write" }, /* 5001 */ + { 0, 0, printargs, "n64_open" }, /* 5002 */ + { 0, 0, printargs, "n64_close" }, /* 5003 */ + { 0, 0, printargs, "n64_stat" }, /* 5004 */ + { 0, 0, printargs, "n64_fstat" }, /* 5005 */ + { 0, 0, printargs, "n64_lstat" }, /* 5006 */ + { 0, 0, printargs, "n64_poll" }, /* 5007 */ + { 0, 0, printargs, "n64_lseek" }, /* 5008 */ + { 0, TD|TM, printargs, "n64_mmap" }, /* 5009 */ + { 0, TM, printargs, "n64_mprotect" }, /* 5010 */ + { 0, TM, printargs, "n64_munmap" }, /* 5011 */ + { 0, TM, printargs, "n64_brk" }, /* 5012 */ + { 0, 0, printargs, "n64_rt_sigaction" }, /* 5013 */ + { 0, 0, printargs, "n64_rt_sigprocmask" }, /* 5014 */ + { 0, 0, printargs, "n64_ioctl" }, /* 5015 */ + { 0, 0, printargs, "n64_pread" }, /* 5016 */ + { 0, 0, printargs, "n64_pwrite" }, /* 5017 */ + { 0, 0, printargs, "n64_readv" }, /* 5018 */ + { 0, 0, printargs, "n64_writev" }, /* 5019 */ + { 0, 0, printargs, "n64_access" }, /* 5020 */ + { 0, 0, printargs, "n64_pipe" }, /* 5021 */ + { 0, 0, printargs, "n64__newselect" }, /* 5022 */ + { 0, 0, printargs, "n64_sched_yield" }, /* 5023 */ + { 0, TM, printargs, "n64_mremap" }, /* 5024 */ + { 0, TM, printargs, "n64_msync" }, /* 5025 */ + { 0, TM, printargs, "n64_mincore" }, /* 5026 */ + { 0, TM, printargs, "n64_madvise" }, /* 5027 */ + { 0, 0, printargs, "n64_shmget" }, /* 5028 */ + { 0, 0, printargs, "n64_shmat" }, /* 5029 */ + { 0, 0, printargs, "n64_shmctl" }, /* 5030 */ + { 0, 0, printargs, "n64_dup" }, /* 5031 */ + { 0, 0, printargs, "n64_dup2" }, /* 5032 */ + { 0, 0, printargs, "n64_pause" }, /* 5033 */ + { 0, 0, printargs, "n64_nanosleep" }, /* 5034 */ + { 0, 0, printargs, "n64_getitimer" }, /* 5035 */ + { 0, 0, printargs, "n64_setitimer" }, /* 5036 */ + { 0, 0, printargs, "n64_alarm" }, /* 5037 */ + { 0, 0, printargs, "n64_getpid" }, /* 5038 */ + { 0, 0, printargs, "n64_sendfile" }, /* 5039 */ + { 0, 0, printargs, "n64_socketcall" }, /* 5040 */ + { 0, 0, printargs, "n64_connect" }, /* 5041 */ + { 0, 0, printargs, "n64_accept" }, /* 5042 */ + { 0, 0, printargs, "n64_sendto" }, /* 5043 */ + { 0, 0, printargs, "n64_recvfrom" }, /* 5044 */ + { 0, 0, printargs, "n64_sendmsg" }, /* 5045 */ + { 0, 0, printargs, "n64_recvmsg" }, /* 5046 */ + { 0, 0, printargs, "n64_shutdown" }, /* 5047 */ + { 0, 0, printargs, "n64_bind" }, /* 5048 */ + { 0, 0, printargs, "n64_listen" }, /* 5049 */ + { 0, 0, printargs, "n64_getsockname" }, /* 5050 */ + { 0, 0, printargs, "n64_getpeername" }, /* 5051 */ + { 0, 0, printargs, "n64_socketpair" }, /* 5052 */ + { 0, 0, printargs, "n64_setsockopt" }, /* 5053 */ + { 0, 0, printargs, "n64_getsockopt" }, /* 5054 */ + { 0, 0, printargs, "n64_clone" }, /* 5055 */ + { 0, 0, printargs, "n64_fork" }, /* 5056 */ + { 0, 0, printargs, "n64_execve" }, /* 5057 */ + { 0, 0, printargs, "n64_exit" }, /* 5058 */ + { 0, 0, printargs, "n64_wait4" }, /* 5059 */ + { 0, 0, printargs, "n64_kill" }, /* 5060 */ + { 0, 0, printargs, "n64_uname" }, /* 5061 */ + { 0, 0, printargs, "n64_semget" }, /* 5062 */ + { 0, 0, printargs, "n64_semop" }, /* 5063 */ + { 0, 0, printargs, "n64_semctl" }, /* 5064 */ + { 0, 0, printargs, "n64_shmdt" }, /* 5065 */ + { 0, 0, printargs, "n64_msgget" }, /* 5066 */ + { 0, 0, printargs, "n64_msgsnd" }, /* 5067 */ + { 0, 0, printargs, "n64_msgrcv" }, /* 5068 */ + { 0, 0, printargs, "n64_msgctl" }, /* 5069 */ + { 0, 0, printargs, "n64_fcntl" }, /* 5070 */ + { 0, 0, printargs, "n64_flock" }, /* 5071 */ + { 0, 0, printargs, "n64_fsync" }, /* 5072 */ + { 0, 0, printargs, "n64_fdatasync" }, /* 5073 */ + { 0, 0, printargs, "n64_truncate" }, /* 5074 */ + { 0, 0, printargs, "n64_ftruncate" }, /* 5075 */ + { 0, 0, printargs, "n64_getdents" }, /* 5076 */ + { 0, 0, printargs, "n64_getcwd" }, /* 5077 */ + { 0, 0, printargs, "n64_chdir" }, /* 5078 */ + { 0, 0, printargs, "n64_fchdir" }, /* 5079 */ + { 0, 0, printargs, "n64_rename" }, /* 5080 */ + { 0, 0, printargs, "n64_mkdir" }, /* 5081 */ + { 0, 0, printargs, "n64_rmdir" }, /* 5082 */ + { 0, 0, printargs, "n64_creat" }, /* 5083 */ + { 0, 0, printargs, "n64_link" }, /* 5084 */ + { 0, 0, printargs, "n64_unlink" }, /* 5085 */ + { 0, 0, printargs, "n64_symlink" }, /* 5086 */ + { 0, 0, printargs, "n64_readlink" }, /* 5087 */ + { 0, 0, printargs, "n64_chmod" }, /* 5088 */ + { 0, 0, printargs, "n64_fchmod" }, /* 5089 */ + { 0, 0, printargs, "n64_chown" }, /* 5090 */ + { 0, 0, printargs, "n64_fchown" }, /* 5091 */ + { 0, 0, printargs, "n64_lchown" }, /* 5092 */ + { 0, 0, printargs, "n64_umask" }, /* 5093 */ + { 0, 0, printargs, "n64_gettimeofday" }, /* 5094 */ + { 0, 0, printargs, "n64_getrlimit" }, /* 5095 */ + { 0, 0, printargs, "n64_getrusage" }, /* 5096 */ + { 0, 0, printargs, "n64_sysinfo" }, /* 5097 */ + { 0, 0, printargs, "n64_times" }, /* 5098 */ + { 0, 0, printargs, "n64_ptrace" }, /* 5099 */ + { 0, 0, printargs, "n64_getuid" }, /* 5100 */ + { 0, 0, printargs, "n64_syslog" }, /* 5101 */ + { 0, 0, printargs, "n64_getgid" }, /* 5102 */ + { 0, 0, printargs, "n64_setuid" }, /* 5103 */ + { 0, 0, printargs, "n64_setgid" }, /* 5104 */ + { 0, 0, printargs, "n64_geteuid" }, /* 5105 */ + { 0, 0, printargs, "n64_getegid" }, /* 5106 */ + { 0, 0, printargs, "n64_setpgid" }, /* 5107 */ + { 0, 0, printargs, "n64_getppid" }, /* 5108 */ + { 0, 0, printargs, "n64_getpgrp" }, /* 5109 */ + { 0, 0, printargs, "n64_setsid" }, /* 5110 */ + { 0, 0, printargs, "n64_setreuid" }, /* 5111 */ + { 0, 0, printargs, "n64_setregid" }, /* 5112 */ + { 0, 0, printargs, "n64_getgroups" }, /* 5113 */ + { 0, 0, printargs, "n64_setgroups" }, /* 5114 */ + { 0, 0, printargs, "n64_setresuid" }, /* 5115 */ + { 0, 0, printargs, "n64_getresuid" }, /* 5116 */ + { 0, 0, printargs, "n64_setresgid" }, /* 5117 */ + { 0, 0, printargs, "n64_getresgid" }, /* 5118 */ + { 0, 0, printargs, "n64_getpgid" }, /* 5119 */ + { 0, 0, printargs, "n64_setfsuid" }, /* 5120 */ + { 0, 0, printargs, "n64_setfsgid" }, /* 5121 */ + { 0, 0, printargs, "n64_getsid" }, /* 5122 */ + { 0, 0, printargs, "n64_capget" }, /* 5123 */ + { 0, 0, printargs, "n64_capset" }, /* 5124 */ + { 0, 0, printargs, "n64_rt_sigpending" }, /* 5125 */ + { 0, 0, printargs, "n64_rt_sigtimedwait" }, /* 5126 */ + { 0, 0, printargs, "n64_rt_sigqueueinfo" }, /* 5127 */ + { 0, 0, printargs, "n64_rt_sigsuspend" }, /* 5128 */ + { 0, 0, printargs, "n64_sigaltstack" }, /* 5129 */ + { 0, 0, printargs, "n64_utime" }, /* 5130 */ + { 0, 0, printargs, "n64_mknod" }, /* 5131 */ + { 0, 0, printargs, "n64_personality" }, /* 5132 */ + { 0, 0, printargs, "n64_ustat" }, /* 5133 */ + { 0, 0, printargs, "n64_statfs" }, /* 5134 */ + { 0, 0, printargs, "n64_fstatfs" }, /* 5135 */ + { 0, 0, printargs, "n64_sysfs" }, /* 5136 */ + { 0, 0, printargs, "n64_getpriority" }, /* 5137 */ + { 0, 0, printargs, "n64_setpriority" }, /* 5138 */ + { 0, 0, printargs, "n64_sched_setparam" }, /* 5139 */ + { 0, 0, printargs, "n64_sched_getparam" }, /* 5140 */ + { 0, 0, printargs, "n64_sched_setscheduler"}, /* 5141 */ + { 0, 0, printargs, "n64_sched_getscheduler"}, /* 5142 */ + { 0, 0, printargs, "n64_sched_get_priority_max"}, /* 5143 */ + { 0, 0, printargs, "n64_sched_get_priority_min"}, /* 5144 */ + { 0, 0, printargs, "n64_sched_rr_get_interval"}, /* 5145 */ + { 0, TM, printargs, "n64_mlock" }, /* 5146 */ + { 0, TM, printargs, "n64_munlock" }, /* 5147 */ + { 0, TM, printargs, "n64_mlockall" }, /* 5148 */ + { 0, TM, printargs, "n64_munlockall" }, /* 5149 */ + { 0, 0, printargs, "n64_vhangup" }, /* 5150 */ + { 0, 0, printargs, "n64_pivot_root" }, /* 5151 */ + { 0, 0, printargs, "n64__sysctl" }, /* 5152 */ + { 0, 0, printargs, "n64_prctl" }, /* 5153 */ + { 0, 0, printargs, "n64_adjtimex" }, /* 5154 */ + { 0, 0, printargs, "n64_setrlimit" }, /* 5155 */ + { 0, 0, printargs, "n64_chroot" }, /* 5156 */ + { 0, 0, printargs, "n64_sync" }, /* 5157 */ + { 0, 0, printargs, "n64_acct" }, /* 5158 */ + { 0, 0, printargs, "n64_settimeofday" }, /* 5159 */ + { 0, 0, printargs, "n64_mount" }, /* 5160 */ + { 0, 0, printargs, "n64_umount" }, /* 5161 */ + { 0, 0, printargs, "n64_swapon" }, /* 5162 */ + { 0, 0, printargs, "n64_swapoff" }, /* 5163 */ + { 0, 0, printargs, "n64_reboot" }, /* 5164 */ + { 0, 0, printargs, "n64_sethostname" }, /* 5165 */ + { 0, 0, printargs, "n64_setdomainname" }, /* 5166 */ + { 0, 0, printargs, "n64_create_module" }, /* 5167 */ + { 0, 0, printargs, "n64_init_module" }, /* 5168 */ + { 0, 0, printargs, "n64_delete_module" }, /* 5169 */ + { 0, 0, printargs, "n64_get_kernel_syms" }, /* 5170 */ + { 0, 0, printargs, "n64_query_module" }, /* 5171 */ + { 0, TF, printargs, "n64_quotactl" }, /* 5172 */ + { 0, 0, printargs, "n64_nfsservctl" }, /* 5173 */ + { 0, 0, printargs, "n64_getpmsg" }, /* 5174 */ + { 0, 0, printargs, "n64_putpmsg" }, /* 5175 */ + { 0, 0, printargs, "n64_afs_syscall" }, /* 5176 */ + { 0, 0, printargs, "n64_reserved177" }, /* 5177 */ + { 0, 0, printargs, "n64_gettid" }, /* 5178 */ + { 0, 0, printargs, "n64_readahead" }, /* 5179 */ + { 0, 0, printargs, "n64_setxattr" }, /* 5180 */ + { 0, 0, printargs, "n64_lsetxattr" }, /* 5181 */ + { 0, 0, printargs, "n64_fsetxattr" }, /* 5182 */ + { 0, 0, printargs, "n64_getxattr" }, /* 5183 */ + { 0, 0, printargs, "n64_lgetxattr" }, /* 5184 */ + { 0, 0, printargs, "n64_fgetxattr" }, /* 5185 */ + { 0, 0, printargs, "n64_listxattr" }, /* 5186 */ + { 0, 0, printargs, "n64_llistxattr" }, /* 5187 */ + { 0, 0, printargs, "n64_flistxattr" }, /* 5188 */ + { 0, 0, printargs, "n64_removexattr" }, /* 5189 */ + { 0, 0, printargs, "n64_lremovexattr" }, /* 5190 */ + { 0, 0, printargs, "n64_fremovexattr" }, /* 5191 */ + { 0, 0, printargs, "n64_tkill" }, /* 5192 */ + { 0, 0, printargs, "n64_time" }, /* 5193 */ + { 0, 0, printargs, "n64_futex" }, /* 5194 */ + { 0, 0, printargs, "n64_sched_setaffinity" }, /* 5195 */ + { 0, 0, printargs, "n64_sched_getaffinity" }, /* 5196 */ + { 0, 0, printargs, "n64_cacheflush" }, /* 5197 */ + { 0, 0, printargs, "n64_cachectl" }, /* 5198 */ + { 0, 0, printargs, "n64_sysmips" }, /* 5199 */ + { 0, 0, printargs, "n64_io_setup" }, /* 5200 */ + { 0, 0, printargs, "n64_io_destroy" }, /* 5201 */ + { 0, 0, printargs, "n64_io_getevents" }, /* 5202 */ + { 0, 0, printargs, "n64_io_submit" }, /* 5203 */ + { 0, 0, printargs, "n64_io_cancel" }, /* 5204 */ + { 1, TP, printargs, "n64_exit_group" }, /* 5205 */ + { 0, 0, printargs, "n64_lookup_dcookie" }, /* 5206 */ + { 0, 0, printargs, "n64_epoll_create" }, /* 5207 */ + { 0, 0, printargs, "n64_epoll_ctl" }, /* 5208 */ + { 0, 0, printargs, "n64_epoll_wait" }, /* 5209 */ + { 0, TM, printargs, "n64_remap_file_pages" }, /* 5210 */ + { 0, 0, printargs, "n64_rt_sigreturn" }, /* 5211 */ + { 1, 0, printargs, "n64_set_tid_address" }, /* 5212 */ + { 0, 0, printargs, "n64_restart_syscall" }, /* 5213 */ + { 5, TI, printargs, "n64_semtimedop" }, /* 5214 */ + { 0, 0, printargs, "n64_fadvise64_64" }, /* 5215 */ + { 0, 0, printargs, "n64_timer_create" }, /* 5216 */ + { 0, 0, printargs, "n64_timer_settime" }, /* 5217 */ + { 0, 0, printargs, "n64_timer_gettime" }, /* 5218 */ + { 0, 0, printargs, "n64_timer_getoverrun" }, /* 5219 */ + { 0, 0, printargs, "n64_timer_delete" }, /* 5220 */ + { 0, 0, printargs, "n64_clock_settime" }, /* 5221 */ + { 0, 0, printargs, "n64_clock_gettime" }, /* 5222 */ + { 0, 0, printargs, "n64_clock_getres" }, /* 5223 */ + { 0, 0, printargs, "n64_clock_nanosleep" }, /* 5224 */ + { 0, 0, printargs, "n64_tgkill" }, /* 5225 */ + { 0, 0, printargs, "n64_utimes" }, /* 5226 */ + { 6, TM, printargs, "n64_mbind" }, /* 5227 */ + { 5, TM, printargs, "n64_get_mempolicy" }, /* 5228 */ + { 3, TM, printargs, "n64_set_mempolicy" }, /* 5229 */ + { 0, 0, printargs, "n64_mq_open" }, /* 5230 */ + { 0, 0, printargs, "n64_mq_unlink" }, /* 5231 */ + { 0, 0, printargs, "n64_mq_timedsend" }, /* 5232 */ + { 0, 0, printargs, "n64_mq_timedreceive" }, /* 5233 */ + { 0, 0, printargs, "n64_mq_notify" }, /* 5234 */ + { 0, 0, printargs, "n64_mq_getsetattr" }, /* 5235 */ + { 5, 0, printargs, "n64_vserver" }, /* 5236 */ + { 0, 0, printargs, "n64_waitid" }, /* 5237 */ + { 0, 0, printargs, "n64_SYS_5238" }, /* 5238 */ + { 0, 0, printargs, "n64_add_key" }, /* 5239 */ + { 0, 0, printargs, "n64_request_key" }, /* 5230 */ + { 0, 0, printargs, "n64_keyctl" }, /* 5241 */ + { 0, 0, printargs, "n64_set_thread_area" }, /* 5242 */ + { 0, 0, printargs, "n64_inotify_init" }, /* 5243 */ + { 0, 0, printargs, "n64_inotify_add_watch" }, /* 5244 */ + { 0, 0, printargs, "n64_inotify_rm_watch" }, /* 5245 */ + { 0, TM, printargs, "n64_migrate_pages" }, /* 5246 */ + { 0, 0, printargs, "n64_openat" }, /* 5247 */ + { 0, 0, printargs, "n64_mkdirat" }, /* 5248 */ + { 0, 0, printargs, "n64_mknodat" }, /* 5249 */ + { 0, 0, printargs, "n64_fchownat" }, /* 5250 */ + { 0, 0, printargs, "n64_futimesat" }, /* 5251 */ + { 0, 0, printargs, "n64_newfstatat" }, /* 5252 */ + { 0, 0, printargs, "n64_unlinkat" }, /* 5253 */ + { 0, 0, printargs, "n64_renameat" }, /* 5254 */ + { 0, 0, printargs, "n64_linkat" }, /* 5255 */ + { 0, 0, printargs, "n64_symlinkat" }, /* 5256 */ + { 0, 0, printargs, "n64_readlinkat" }, /* 5257 */ + { 0, 0, printargs, "n64_fchmodat" }, /* 5258 */ + { 0, 0, printargs, "n64_faccessat" }, /* 5259 */ + { 0, 0, printargs, "n64_pselect6" }, /* 5260 */ + { 0, 0, printargs, "n64_ppoll" }, /* 5261 */ + { 0, 0, printargs, "n64_unshare" }, /* 5262 */ + { 0, 0, printargs, "n64_splice" }, /* 5263 */ + { 0, 0, printargs, "n64_sync_file_range" }, /* 5264 */ + { 0, 0, printargs, "n64_tee" }, /* 5265 */ + { 0, 0, printargs, "n64_vmsplice" }, /* 5266 */ + { 0, TM, printargs, "n64_move_pages" }, /* 5267 */ + { 0, 0, printargs, "n64_set_robust_list" }, /* 5268 */ + { 0, 0, printargs, "n64_get_robust_list" }, /* 5269 */ + { 0, 0, printargs, "n64_kexec_load" }, /* 5270 */ + { 0, 0, printargs, "n64_getcpu" }, /* 5271 */ + { 0, 0, printargs, "n64_epoll_pwait" }, /* 5272 */ + { 0, 0, printargs, "n64_ioprio_set" }, /* 5273 */ + { 0, 0, printargs, "n64_ioprio_get" }, /* 5274 */ + { 0, 0, printargs, "n64_utimensat" }, /* 5275 */ + { 0, 0, printargs, "n64_signalfd" }, /* 5276 */ + { 4, TD, printargs, "n64_timerfd" }, /* 5277 */ + { 0, 0, printargs, "n64_eventfd" }, /* 5278 */ + { 0, 0, printargs, "n64_fallocate" }, /* 5279 */ + { 0, 0, printargs, "n64_timerfd_create" }, /* 5280 */ + { 0, 0, printargs, "n64_timerfd_gettime" }, /* 5281 */ + { 0, 0, printargs, "n64_timerfd_settime" }, /* 5282 */ + { 0, 0, printargs, "n64_signalfd4" }, /* 5283 */ + { 0, 0, printargs, "n64_eventfd2" }, /* 5284 */ + { 0, 0, printargs, "n64_epoll_create1" }, /* 5285 */ + { 0, 0, printargs, "n64_dup3" }, /* 5286 */ + { 0, 0, printargs, "n64_pipe2" }, /* 5287 */ + { 0, 0, printargs, "n64_inotify_init1" }, /* 5288 */ + { 0, 0, printargs, "n64_preadv" }, /* 5289 */ + { 0, 0, printargs, "n64_pwritev" }, /* 5290 */ + { 0, 0, printargs, "n64_rt_tgsigqueueinfo" }, /* 5291 */ + { 0, 0, printargs, "n64_perf_event_open" }, /* 5292 */ + { 0, 0, printargs, "n64_accept4" }, /* 5293 */ + { 0, 0, printargs, "n64_recvmmsg" }, /* 5294 */ + { 2, 0, printargs, "n64_fanotify_init" }, /* 5295 */ + { 5, 0, printargs, "n64_fanotify_mark" }, /* 5296 */ + { 4, 0, printargs, "n64_prlimit64" }, /* 5297 */ + { 5, TD|TF, printargs, "n64_name_to_handle_at" }, /* 5298 */ + { 3, TD, printargs, "n64_open_by_handle_at" }, /* 5299 */ + { 2, 0, printargs, "n64_clock_adjtime" }, /* 5300 */ + { 1, TD, printargs, "n64_syncfs" }, /* 5301 */ + { 4, TN, printargs, "n64_sendmmsg" }, /* 5302 */ + { 2, TD, printargs, "n64_setns" }, /* 5303 */ + { 6, 0, printargs, "n64_process_vm_readv" }, /* 5304 */ + { 6, 0, printargs, "n64_process_vm_writev" }, /* 5305 */ + { 5, 0, printargs, "kcmp" }, /* 5306 */ + { 3, TD, printargs, "finit_module" }, /* 5307 */ +#endif + [5308 ... 5999] = { }, /* 5999 */ /* end of Linux N64 */ diff --git a/linux/mips/syscallent-o32.h b/linux/mips/syscallent-o32.h new file mode 100644 index 00000000..c23ac146 --- /dev/null +++ b/linux/mips/syscallent-o32.h @@ -0,0 +1,703 @@ +#if defined LINUX_MIPSO32 + /* For an O32 strace, decode the o32 syscalls. */ + { MA, 0, printargs, "syscall" }, /* 4000 */ /* start of Linux o32 */ + { 1, TP, sys_exit, "exit" }, /* 4001 */ + { 0, TP, sys_fork, "fork" }, /* 4002 */ + { 3, TD, sys_read, "read" }, /* 4003 */ + { 3, TD, sys_write, "write" }, /* 4004 */ + { 3, TD|TF, sys_open, "open" }, /* 4005 */ + { 1, TD, sys_close, "close" }, /* 4006 */ + { 3, TP, sys_waitpid, "waitpid" }, /* 4007 */ + { 2, TD|TF, sys_creat, "creat" }, /* 4008 */ + { 2, TF, sys_link, "link" }, /* 4009 */ + { 1, TF, sys_unlink, "unlink" }, /* 4010 */ + { 3, TF|TP, sys_execve, "execve" }, /* 4011 */ + { 1, TF, sys_chdir, "chdir" }, /* 4012 */ + { 1, 0, sys_time, "time" }, /* 4013 */ + { 3, TF, sys_mknod, "mknod" }, /* 4014 */ + { 2, TF, sys_chmod, "chmod" }, /* 4015 */ + { 3, TF, sys_chown, "lchown" }, /* 4016 */ + { 0, TM, sys_break, "break" }, /* 4017 */ + { 2, TF, sys_oldstat, "oldstat" }, /* 4018 */ + { 3, TD, sys_lseek, "lseek" }, /* 4019 */ + { 0, 0, sys_getpid, "getpid" }, /* 4020 */ + { 5, TF, sys_mount, "mount" }, /* 4021 */ + { 1, TF, sys_umount, "umount" }, /* 4022 */ + { 1, 0, sys_setuid, "setuid" }, /* 4023 */ + { 0, NF, sys_getuid, "getuid" }, /* 4024 */ + { 1, 0, sys_stime, "stime" }, /* 4025 */ + { 4, 0, sys_ptrace, "ptrace" }, /* 4026 */ + { 1, 0, sys_alarm, "alarm" }, /* 4027 */ + { 2, TD, sys_oldfstat, "oldfstat" }, /* 4028 */ + { 0, TS, sys_pause, "pause" }, /* 4029 */ + { 2, TF, sys_utime, "utime" }, /* 4030 */ + { 0, 0, sys_stty, "stty" }, /* 4031 */ + { 0, 0, sys_gtty, "gtty" }, /* 4032 */ + { 2, TF, sys_access, "access" }, /* 4033 */ + { 1, 0, sys_nice, "nice" }, /* 4034 */ + { 1, 0, sys_ftime, "ftime" }, /* 4035 */ + { 0, 0, sys_sync, "sync" }, /* 4036 */ + { 2, TS, sys_kill, "kill" }, /* 4037 */ + { 2, TF, sys_rename, "rename" }, /* 4038 */ + { 2, TF, sys_mkdir, "mkdir" }, /* 4039 */ + { 1, TF, sys_rmdir, "rmdir" }, /* 4040 */ + { 1, TD, sys_dup, "dup" }, /* 4041 */ + { 1, TD, sys_pipe, "pipe" }, /* 4042 */ + { 1, 0, sys_times, "times" }, /* 4043 */ + { 0, 0, sys_prof, "prof" }, /* 4044 */ + { 1, TM, sys_brk, "brk" }, /* 4045 */ + { 1, 0, sys_setgid, "setgid" }, /* 4046 */ + { 0, NF, sys_getgid, "getgid" }, /* 4047 */ + { 1, TS, sys_signal, "signal" }, /* 4048 */ + { 0, NF, sys_geteuid, "geteuid" }, /* 4049 */ + { 0, NF, sys_getegid, "getegid" }, /* 4050 */ + { 1, TF, sys_acct, "acct" }, /* 4051 */ + { 2, TF, sys_umount2, "umount2" }, /* 4052 */ + { 0, 0, sys_lock, "lock" }, /* 4053 */ + { 3, TD, sys_ioctl, "ioctl" }, /* 4054 */ + { 3, TD, sys_fcntl, "fcntl" }, /* 4055 */ + { 0, 0, sys_mpx, "mpx" }, /* 4056 */ + { 2, 0, sys_setpgid, "setpgid" }, /* 4057 */ + { 0, 0, sys_ulimit, "ulimit" }, /* 4058 */ + { 1, 0, sys_oldolduname, "oldolduname" }, /* 4059 */ + { 1, 0, sys_umask, "umask" }, /* 4060 */ + { 1, TF, sys_chroot, "chroot" }, /* 4061 */ + { 2, 0, sys_ustat, "ustat" }, /* 4062 */ + { 2, TD, sys_dup2, "dup2" }, /* 4063 */ + { 0, 0, sys_getppid, "getppid" }, /* 4064 */ + { 0, 0, sys_getpgrp, "getpgrp" }, /* 4065 */ + { 0, 0, sys_setsid, "setsid" }, /* 4066 */ + { 3, TS, sys_sigaction, "sigaction" }, /* 4067 */ + { 0, TS, sys_siggetmask, "sgetmask" }, /* 4068 */ + { 1, TS, sys_sigsetmask, "ssetmask" }, /* 4069 */ + { 2, 0, sys_setreuid, "setreuid" }, /* 4070 */ + { 2, 0, sys_setregid, "setregid" }, /* 4071 */ + { 3, TS, sys_sigsuspend, "sigsuspend" }, /* 4072 */ + { 1, TS, sys_sigpending, "sigpending" }, /* 4073 */ + { 2, 0, sys_sethostname, "sethostname" }, /* 4074 */ + { 2, 0, sys_setrlimit, "setrlimit" }, /* 4075 */ + { 2, 0, sys_getrlimit, "getrlimit" }, /* 4076 */ + { 2, 0, sys_getrusage, "getrusage" }, /* 4077 */ + { 2, 0, sys_gettimeofday, "gettimeofday" }, /* 4078 */ + { 2, 0, sys_settimeofday, "settimeofday" }, /* 4079 */ + { 2, 0, sys_getgroups, "getgroups" }, /* 4080 */ + { 2, 0, sys_setgroups, "setgroups" }, /* 4081 */ + { 0, 0, printargs, "reserved82" }, /* 4082 */ + { 2, TF, sys_symlink, "symlink" }, /* 4083 */ + { 2, TF, sys_oldlstat, "oldlstat" }, /* 4084 */ + { 3, TF, sys_readlink, "readlink" }, /* 4085 */ + { 1, TF, sys_uselib, "uselib" }, /* 4086 */ + { 2, TF, sys_swapon, "swapon" }, /* 4087 */ + { 4, 0, sys_reboot, "reboot" }, /* 4088 */ + { 3, TD, sys_readdir, "readdir" }, /* 4089 */ + { 6, TD|TM, sys_mmap, "mmap" }, /* 4090 */ + { 2, TM, sys_munmap, "munmap" }, /* 4091 */ + { 2, TF, sys_truncate, "truncate" }, /* 4092 */ + { 2, TD, sys_ftruncate, "ftruncate" }, /* 4093 */ + { 2, TD, sys_fchmod, "fchmod" }, /* 4094 */ + { 3, TD, sys_fchown, "fchown" }, /* 4095 */ + { 2, 0, sys_getpriority, "getpriority" }, /* 4096 */ + { 3, 0, sys_setpriority, "setpriority" }, /* 4097 */ + { 0, 0, sys_profil, "profil" }, /* 4098 */ + { 3, TF, sys_statfs, "statfs" }, /* 4099 */ + { 3, TD, sys_fstatfs, "fstatfs" }, /* 4100 */ + { 0, 0, sys_ioperm, "ioperm" }, /* 4101 */ + { 2, TD, sys_socketcall, "socketcall" }, /* 4102 */ + { 3, 0, sys_syslog, "syslog" }, /* 4103 */ + { 3, 0, sys_setitimer, "setitimer" }, /* 4104 */ + { 2, 0, sys_getitimer, "getitimer" }, /* 4105 */ + { 2, TF, sys_stat, "stat" }, /* 4106 */ + { 2, TF, sys_lstat, "lstat" }, /* 4107 */ + { 2, TD, sys_fstat, "fstat" }, /* 4108 */ + { 1, 0, sys_olduname, "olduname" }, /* 4109 */ + { 0, 0, sys_iopl, "iopl" }, /* 4110 */ + { 0, 0, sys_vhangup, "vhangup" }, /* 4111 */ + { 0, 0, sys_idle, "idle" }, /* 4112 */ + { 5, 0, sys_vm86old, "vm86" }, /* 4113 */ + { 4, TP, sys_wait4, "wait4" }, /* 4114 */ + { 1, TF, sys_swapoff, "swapoff" }, /* 4115 */ + { 1, 0, sys_sysinfo, "sysinfo" }, /* 4116 */ + { 6, TI, sys_ipc, "ipc" }, /* 4117 */ + { 1, TD, sys_fsync, "fsync" }, /* 4118 */ + { 0, TS, sys_sigreturn, "sigreturn" }, /* 4119 */ + { 5, TP, sys_clone, "clone" }, /* 4120 */ + { 2, 0, sys_setdomainname, "setdomainname" }, /* 4121 */ + { 1, 0, sys_uname, "uname" }, /* 4122 */ + { 0, 0, sys_modify_ldt, "modify_ldt" }, /* 4123 */ + { 1, 0, sys_adjtimex, "adjtimex" }, /* 4124 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 4125 */ + { 3, TS, sys_sigprocmask, "sigprocmask" }, /* 4126 */ + { 2, 0, sys_create_module, "create_module" }, /* 4127 */ + { 3, 0, sys_init_module, "init_module" }, /* 4128 */ + { 2, 0, sys_delete_module, "delete_module" }, /* 4129 */ + { 1, 0, sys_get_kernel_syms, "get_kernel_syms"}, /* 4130 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 4131 */ + { 1, 0, sys_getpgid, "getpgid" }, /* 4132 */ + { 1, TD, sys_fchdir, "fchdir" }, /* 4133 */ + { 2, 0, sys_bdflush, "bdflush" }, /* 4134 */ + { 3, 0, sys_sysfs, "sysfs" }, /* 4135 */ + { 1, 0, sys_personality, "personality" }, /* 4136 */ + { 0, 0, sys_afs_syscall, "afs_syscall" }, /* 4137 */ + { 1, NF, sys_setfsuid, "setfsuid" }, /* 4138 */ + { 1, NF, sys_setfsgid, "setfsgid" }, /* 4139 */ + { 5, TD, sys_llseek, "_llseek" }, /* 4140 */ + { 3, TD, sys_getdents, "getdents" }, /* 4141 */ + { 5, TD, sys_select, "_newselect" }, /* 4142 */ + { 2, TD, sys_flock, "flock" }, /* 4143 */ + { 3, TM, sys_msync, "msync" }, /* 4144 */ + { 3, TD, sys_readv, "readv" }, /* 4145 */ + { 3, TD, sys_writev, "writev" }, /* 4146 */ + { 3, 0, printargs, "cacheflush" }, /* 4147 */ + { 3, 0, printargs, "cachectl" }, /* 4148 */ + { 4, 0, sys_sysmips, "sysmips" }, /* 4149 */ + { 0, 0, sys_setup, "setup" }, /* 4150 */ + { 1, 0, sys_getsid, "getsid" }, /* 4151 */ + { 1, TD, sys_fdatasync, "fdatasync" }, /* 4152 */ + { 1, 0, sys_sysctl, "_sysctl" }, /* 4153 */ + { 2, TM, sys_mlock, "mlock" }, /* 4154 */ + { 2, TM, sys_munlock, "munlock" }, /* 4155 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 4156 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 4157 */ + { 2, 0, sys_sched_setparam, "sched_setparam"}, /* 4158 */ + { 2, 0, sys_sched_getparam, "sched_getparam"}, /* 4159 */ + { 3, 0, sys_sched_setscheduler, "sched_setscheduler"}, /* 4160 */ + { 1, 0, sys_sched_getscheduler, "sched_getscheduler"}, /* 4161 */ + { 0, 0, sys_sched_yield, "sched_yield" }, /* 4162 */ + { 1, 0, sys_sched_get_priority_max,"sched_get_priority_max"}, /* 4163 */ + { 1, 0, sys_sched_get_priority_min,"sched_get_priority_min"}, /* 4164 */ + { 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 4165 */ + { 2, 0, sys_nanosleep, "nanosleep" }, /* 4166 */ + { 5, TM, sys_mremap, "mremap" }, /* 4167 */ + { 3, TN, sys_accept, "accept" }, /* 4168 */ + { 3, TN, sys_bind, "bind" }, /* 4169 */ + { 3, TN, sys_connect, "connect" }, /* 4170 */ + { 3, TN, sys_getpeername, "getpeername" }, /* 4171 */ + { 3, TN, sys_getsockname, "getsockname" }, /* 4172 */ + { 5, TN, sys_getsockopt, "getsockopt" }, /* 4173 */ + { 2, TN, sys_listen, "listen" }, /* 4174 */ + { 4, TN, sys_recv, "recv" }, /* 4175 */ + { 6, TN, sys_recvfrom, "recvfrom" }, /* 4176 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 4177 */ + { 4, TN, sys_send, "send" }, /* 4178 */ + { 3, TN, sys_sendmsg, "sendmsg" }, /* 4179 */ + { 6, TN, sys_sendto, "sendto" }, /* 4180 */ + { 5, TN, sys_setsockopt, "setsockopt" }, /* 4181 */ + { 2, TN, sys_shutdown, "shutdown" }, /* 4182 */ + { 3, TN, sys_socket, "socket" }, /* 4183 */ + { 4, TN, sys_socketpair, "socketpair" }, /* 4184 */ + { 3, 0, sys_setresuid, "setresuid" }, /* 4185 */ + { 3, 0, sys_getresuid, "getresuid" }, /* 4186 */ + { 5, 0, sys_query_module, "query_module" }, /* 4187 */ + { 3, TD, sys_poll, "poll" }, /* 4188 */ + { 3, 0, sys_nfsservctl, "nfsservctl" }, /* 4189 */ + { 3, 0, sys_setresgid, "setresgid" }, /* 4190 */ + { 3, 0, sys_getresgid, "getresgid" }, /* 4191 */ + { 5, 0, sys_prctl, "prctl" }, /* 4192 */ + { 0, TS, sys_rt_sigreturn, "rt_sigreturn" }, /* 4193 */ + { 4, TS, sys_rt_sigaction, "rt_sigaction" }, /* 4194 */ + { 4, TS, sys_rt_sigprocmask, "rt_sigprocmask"}, /* 4195 */ + { 2, TS, sys_rt_sigpending, "rt_sigpending" }, /* 4196 */ + { 4, TS, sys_rt_sigtimedwait, "rt_sigtimedwait"},/* 4197 */ + { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo"},/* 4198 */ + { 2, TS, sys_rt_sigsuspend, "rt_sigsuspend" }, /* 4199 */ + { 6, TD, sys_pread, "pread64" }, /* 4200 */ + { 6, TD, sys_pwrite, "pwrite64" }, /* 4201 */ + { 3, TF, sys_chown, "chown" }, /* 4202 */ + { 2, TF, sys_getcwd, "getcwd" }, /* 4203 */ + { 2, 0, sys_capget, "capget" }, /* 4204 */ + { 2, 0, sys_capset, "capset" }, /* 4205 */ + { 2, TS, sys_sigaltstack, "sigaltstack" }, /* 4206 */ + { 4, TD|TN, sys_sendfile, "sendfile" }, /* 4207 */ + { 5, TN, printargs, "getpmsg" }, /* 4208 */ + { 5, TN, printargs, "putpmsg" }, /* 4209 */ + { 6, TD|TM, sys_mmap_4koff, "mmap2" }, /* 4210 */ + { 4, TF, sys_truncate64, "truncate64" }, /* 4211 */ + { 4, TD, sys_ftruncate64, "ftruncate64" }, /* 4212 */ + { 2, TF, sys_stat64, "stat64" }, /* 4213 */ + { 2, TF, sys_lstat64, "lstat64" }, /* 4214 */ + { 2, TD, sys_fstat64, "fstat64" }, /* 4215 */ + { 2, TF, sys_pivotroot, "pivot_root" }, /* 4216 */ + { 3, TM, sys_mincore, "mincore" }, /* 4217 */ + { 3, TM, sys_madvise, "madvise" }, /* 4218 */ + { 3, TD, sys_getdents64, "getdents64" }, /* 4219 */ + { 3, TD, sys_fcntl, "fcntl64" }, /* 4220 */ + { 0, 0, NULL, NULL }, /* 4221 */ + { 0, 0, sys_gettid, "gettid" }, /* 4222 */ + { 5, TD, sys_readahead, "readahead" }, /* 4223 */ + { 5, TF, sys_setxattr, "setxattr" }, /* 4224 */ + { 5, TF, sys_setxattr, "lsetxattr" }, /* 4225 */ + { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 4226 */ + { 4, TF, sys_getxattr, "getxattr" }, /* 4227 */ + { 4, TF, sys_getxattr, "lgetxattr" }, /* 4228 */ + { 4, TD, sys_fgetxattr, "fgetxattr" }, /* 4229 */ + { 3, TF, sys_listxattr, "listxattr" }, /* 4230 */ + { 3, TF, sys_listxattr, "llistxattr" }, /* 4231 */ + { 3, TD, sys_flistxattr, "flistxattr" }, /* 4232 */ + { 2, TF, sys_removexattr, "removexattr" }, /* 4233 */ + { 2, TF, sys_removexattr, "lremovexattr" }, /* 4234 */ + { 2, TD, sys_fremovexattr, "fremovexattr" }, /* 4235 */ + { 2, TS, sys_kill, "tkill" }, /* 4236 */ + { 4, TD|TN, sys_sendfile64, "sendfile64" }, /* 4237 */ + { 6, 0, sys_futex, "futex" }, /* 4238 */ + { 3, 0, sys_sched_setaffinity, "sched_setaffinity"}, /* 4239 */ + { 3, 0, sys_sched_getaffinity, "sched_getaffinity"}, /* 4240 */ + { 2, 0, sys_io_setup, "io_setup" }, /* 4241 */ + { 1, 0, sys_io_destroy, "io_destroy" }, /* 4242 */ + { 5, 0, sys_io_getevents, "io_getevents" }, /* 4243 */ + { 3, 0, sys_io_submit, "io_submit" }, /* 4244 */ + { 3, 0, sys_io_cancel, "io_cancel" }, /* 4245 */ + { 1, TP, sys_exit, "exit_group" }, /* 4246 */ + { 4, 0, sys_lookup_dcookie, "lookup_dcookie"}, /* 4247 */ + { 1, TD, sys_epoll_create, "epoll_create" }, /* 4248 */ + { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 4249 */ + { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 4250 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages"}, /* 4251 */ + { 1, 0, sys_set_tid_address, "set_tid_address"}, /* 4252 */ + { 0, 0, sys_restart_syscall, "restart_syscall"}, /* 4253 */ + { 7, TD, sys_fadvise64_64, "fadvise64_64" }, /* 4254 */ + { 3, TF, sys_statfs64, "statfs64" }, /* 4255 */ + { 2, TD, sys_fstatfs64, "fstatfs64" }, /* 4256 */ + { 3, 0, sys_timer_create, "timer_create" }, /* 4257 */ + { 4, 0, sys_timer_settime, "timer_settime" }, /* 4258 */ + { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 4259 */ + { 1, 0, sys_timer_getoverrun, "timer_getoverrun"}, /* 4260 */ + { 1, 0, sys_timer_delete, "timer_delete" }, /* 4261 */ + { 2, 0, sys_clock_settime, "clock_settime" }, /* 4262 */ + { 2, 0, sys_clock_gettime, "clock_gettime" }, /* 4263 */ + { 2, 0, sys_clock_getres, "clock_getres" }, /* 4264 */ + { 4, 0, sys_clock_nanosleep, "clock_nanosleep"}, /* 4265 */ + { 3, TS, sys_tgkill, "tgkill" }, /* 4266 */ + { 2, TF, sys_utimes, "utimes" }, /* 4267 */ + { 4, TM, sys_mbind, "mbind" }, /* 4268 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 4269 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 4270 */ + { 4, 0, sys_mq_open, "mq_open" }, /* 4271 */ + { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 4272 */ + { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 4273 */ + { 5, 0, sys_mq_timedreceive, "mq_timedreceive"}, /* 4274 */ + { 2, 0, sys_mq_notify, "mq_notify" }, /* 4275 */ + { 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 4276 */ + { 5, 0, sys_vserver, "vserver" }, /* 4277 */ + { 5, TP, sys_waitid, "waitid" }, /* 4278 */ + { 0, 0, NULL, NULL }, /* 4279 */ + { 5, 0, sys_add_key, "add_key" }, /* 4280 */ + { 4, 0, sys_request_key, "request_key" }, /* 4281 */ + { 5, 0, sys_keyctl, "keyctl" }, /* 4282 */ + { 1, 0, sys_set_thread_area, "set_thread_area" }, /* 4283 */ + { 0, TD, sys_inotify_init, "inotify_init" }, /* 4284 */ + { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 4285 */ + { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 4286 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 4287 */ + { 4, TD|TF, sys_openat, "openat" }, /* 4288 */ + { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 4289 */ + { 4, TD|TF, sys_mknodat, "mknodat" }, /* 4290 */ + { 5, TD|TF, sys_fchownat, "fchownat" }, /* 4291 */ + { 3, TD|TF, sys_futimesat, "futimesat" }, /* 4292 */ + { 4, TD|TF, sys_newfstatat, "fstatat64" }, /* 4293 */ + { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 4294 */ + { 4, TD|TF, sys_renameat, "renameat" }, /* 4295 */ + { 5, TD|TF, sys_linkat, "linkat" }, /* 4296 */ + { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 4297 */ + { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 4298 */ + { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 4299 */ + { 3, TD|TF, sys_faccessat, "faccessat" }, /* 4300 */ + { 6, TD, sys_pselect6, "pselect6" }, /* 4301 */ + { 5, TD, sys_ppoll, "ppoll" }, /* 4302 */ + { 1, TP, sys_unshare, "unshare" }, /* 4303 */ + { 6, TD, sys_splice, "splice" }, /* 4304 */ + { 6, TD, sys_sync_file_range, "sync_file_range" }, /* 4305 */ + { 4, TD, sys_tee, "tee" }, /* 4306 */ + { 4, TD, sys_vmsplice, "vmsplice" }, /* 4307 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 4308 */ + { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 4309 */ + { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 4310 */ + { 4, 0, sys_kexec_load, "kexec_load" }, /* 4311 */ + { 3, 0, sys_getcpu, "getcpu" }, /* 4312 */ + { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 4313 */ + { 3, 0, sys_ioprio_set, "ioprio_set" }, /* 4314 */ + { 2, 0, sys_ioprio_get, "ioprio_get" }, /* 4315 */ + { 4, 0, printargs, "utimensat" }, /* 4316 */ + { 3, TD|TS, sys_signalfd, "signalfd" }, /* 4317 */ + { 4, TD, sys_timerfd, "timerfd" }, /* 4318 */ + { 1, TD, sys_eventfd, "eventfd" }, /* 4319 */ + { 6, TD, sys_fallocate, "fallocate" }, /* 4320 */ + { 2, TD, sys_timerfd_create, "timerfd_create" }, /* 4321 */ + { 2, TD, sys_timerfd_gettime, "timerfd_gettime" }, /* 4322 */ + { 4, TD, sys_timerfd_settime, "timerfd_settime" }, /* 4323 */ + { 4, TD|TS, sys_signalfd4, "signalfd4" }, /* 4324 */ + { 2, TD, sys_eventfd2, "eventfd2" }, /* 4325 */ + { 1, TD, sys_epoll_create1, "epoll_create1" }, /* 4326 */ + { 3, TD, sys_dup3, "dup3" }, /* 4327 */ + { 2, TD, sys_pipe2, "pipe2" }, /* 4328 */ + { 1, TD, sys_inotify_init1, "inotify_init1" }, /* 4329 */ + { 6, TD, sys_preadv, "preadv" }, /* 4330 */ + { 6, TD, sys_pwritev, "pwritev" }, /* 4331 */ + { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo" }, /* 4332 */ + { 5, TD, sys_perf_event_open, "perf_event_open" }, /* 4333 */ + { 4, TN, sys_accept4, "accept4" }, /* 4334 */ + { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 4335 */ + { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 4336 */ + { 5, TD|TF, sys_fanotify_mark, "fanotify_mark" }, /* 4337 */ + { 4, 0, sys_prlimit64, "prlimit64" }, /* 4338 */ + { 5, TD|TF, sys_name_to_handle_at, "name_to_handle_at"}, /* 4339 */ + { 3, TD, sys_open_by_handle_at, "open_by_handle_at"}, /* 4340 */ + { 2, 0, sys_clock_adjtime, "clock_adjtime" }, /* 4341 */ + { 1, TD, sys_syncfs, "syncfs" }, /* 4342 */ + { 4, TN, sys_sendmmsg, "sendmmsg" }, /* 4343 */ + { 2, TD, sys_setns, "setns" }, /* 4344 */ + { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 4345 */ + { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 4346 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 4347 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 4348 */ +#else + { 0, 0, printargs, "o32_syscall" }, /* 4000 */ + { 0, 0, printargs, "o32_exit" }, /* 4001 */ + { 0, 0, printargs, "o32_fork" }, /* 4002 */ + { 0, 0, printargs, "o32_read" }, /* 4003 */ + { 0, 0, printargs, "o32_write" }, /* 4004 */ + { 0, 0, printargs, "o32_open" }, /* 4005 */ + { 0, 0, printargs, "o32_close" }, /* 4006 */ + { 0, 0, printargs, "o32_waitpid" }, /* 4007 */ + { 0, 0, printargs, "o32_creat" }, /* 4008 */ + { 0, 0, printargs, "o32_link" }, /* 4009 */ + { 0, 0, printargs, "o32_unlink" }, /* 4010 */ + { 0, 0, printargs, "o32_execve" }, /* 4011 */ + { 0, 0, printargs, "o32_chdir" }, /* 4012 */ + { 0, 0, printargs, "o32_time" }, /* 4013 */ + { 0, 0, printargs, "o32_mknod" }, /* 4014 */ + { 0, 0, printargs, "o32_chmod" }, /* 4015 */ + { 0, 0, printargs, "o32_lchown" }, /* 4016 */ + { 0, TM, printargs, "o32_break" }, /* 4017 */ + { 0, 0, printargs, "o32_oldstat" }, /* 4018 */ + { 0, 0, printargs, "o32_lseek" }, /* 4019 */ + { 0, 0, printargs, "o32_getpid" }, /* 4020 */ + { 0, 0, printargs, "o32_mount" }, /* 4021 */ + { 0, 0, printargs, "o32_umount" }, /* 4022 */ + { 0, 0, printargs, "o32_setuid" }, /* 4023 */ + { 0, 0, printargs, "o32_getuid" }, /* 4024 */ + { 0, 0, printargs, "o32_stime" }, /* 4025 */ + { 0, 0, printargs, "o32_ptrace" }, /* 4026 */ + { 0, 0, printargs, "o32_alarm" }, /* 4027 */ + { 0, 0, printargs, "o32_oldfstat" }, /* 4028 */ + { 0, 0, printargs, "o32_pause" }, /* 4029 */ + { 0, 0, printargs, "o32_utime" }, /* 4030 */ + { 0, 0, printargs, "o32_stty" }, /* 4031 */ + { 0, 0, printargs, "o32_gtty" }, /* 4032 */ + { 0, 0, printargs, "o32_access" }, /* 4033 */ + { 0, 0, printargs, "o32_nice" }, /* 4034 */ + { 0, 0, printargs, "o32_ftime" }, /* 4035 */ + { 0, 0, printargs, "o32_sync" }, /* 4036 */ + { 0, 0, printargs, "o32_kill" }, /* 4037 */ + { 0, 0, printargs, "o32_rename" }, /* 4038 */ + { 0, 0, printargs, "o32_mkdir" }, /* 4039 */ + { 0, 0, printargs, "o32_rmdir" }, /* 4040 */ + { 0, 0, printargs, "o32_dup" }, /* 4041 */ + { 0, 0, printargs, "o32_pipe" }, /* 4042 */ + { 0, 0, printargs, "o32_times" }, /* 4043 */ + { 0, 0, printargs, "o32_prof" }, /* 4044 */ + { 0, TM, printargs, "o32_brk" }, /* 4045 */ + { 0, 0, printargs, "o32_setgid" }, /* 4046 */ + { 0, 0, printargs, "o32_getgid" }, /* 4047 */ + { 0, 0, printargs, "o32_signal" }, /* 4048 */ + { 0, 0, printargs, "o32_geteuid" }, /* 4049 */ + { 0, 0, printargs, "o32_getegid" }, /* 4050 */ + { 0, 0, printargs, "o32_acct" }, /* 4051 */ + { 0, 0, printargs, "o32_umount2" }, /* 4052 */ + { 0, 0, printargs, "o32_lock" }, /* 4053 */ + { 0, 0, printargs, "o32_ioctl" }, /* 4054 */ + { 0, 0, printargs, "o32_fcntl" }, /* 4055 */ + { 0, 0, printargs, "o32_mpx" }, /* 4056 */ + { 0, 0, printargs, "o32_setpgid" }, /* 4057 */ + { 0, 0, printargs, "o32_ulimit" }, /* 4058 */ + { 0, 0, printargs, "o32_oldolduname" }, /* 4059 */ + { 0, 0, printargs, "o32_umask" }, /* 4060 */ + { 0, 0, printargs, "o32_chroot" }, /* 4061 */ + { 0, 0, printargs, "o32_ustat" }, /* 4062 */ + { 0, 0, printargs, "o32_dup2" }, /* 4063 */ + { 0, 0, printargs, "o32_getppid" }, /* 4064 */ + { 0, 0, printargs, "o32_getpgrp" }, /* 4065 */ + { 0, 0, printargs, "o32_setsid" }, /* 4066 */ + { 0, 0, printargs, "o32_sigaction" }, /* 4067 */ + { 0, 0, printargs, "o32_siggetmask" }, /* 4068 */ + { 0, 0, printargs, "o32_sigsetmask" }, /* 4069 */ + { 0, 0, printargs, "o32_setreuid" }, /* 4070 */ + { 0, 0, printargs, "o32_setregid" }, /* 4071 */ + { 0, 0, printargs, "o32_sigsuspend" }, /* 4072 */ + { 0, 0, printargs, "o32_sigpending" }, /* 4073 */ + { 0, 0, printargs, "o32_sethostname" }, /* 4074 */ + { 0, 0, printargs, "o32_setrlimit" }, /* 4075 */ + { 0, 0, printargs, "o32_getrlimit" }, /* 4076 */ + { 0, 0, printargs, "o32_getrusage" }, /* 4077 */ + { 0, 0, printargs, "o32_gettimeofday" }, /* 4078 */ + { 0, 0, printargs, "o32_settimeofday" }, /* 4079 */ + { 0, 0, printargs, "o32_getgroups" }, /* 4080 */ + { 0, 0, printargs, "o32_setgroups" }, /* 4081 */ + { 0, 0, printargs, "o32_reserved82" }, /* 4082 */ + { 0, 0, printargs, "o32_symlink" }, /* 4083 */ + { 0, 0, printargs, "o32_oldlstat" }, /* 4084 */ + { 0, 0, printargs, "o32_readlink" }, /* 4085 */ + { 0, 0, printargs, "o32_uselib" }, /* 4086 */ + { 0, 0, printargs, "o32_swapon" }, /* 4087 */ + { 0, 0, printargs, "o32_reboot" }, /* 4088 */ + { 0, 0, printargs, "o32_readdir" }, /* 4089 */ + { 0, TD|TM, printargs, "o32_mmap" }, /* 4090 */ + { 0, TM, printargs, "o32_munmap" }, /* 4091 */ + { 0, 0, printargs, "o32_truncate" }, /* 4092 */ + { 0, 0, printargs, "o32_ftruncate" }, /* 4093 */ + { 0, 0, printargs, "o32_fchmod" }, /* 4094 */ + { 0, 0, printargs, "o32_fchown" }, /* 4095 */ + { 0, 0, printargs, "o32_getpriority" }, /* 4096 */ + { 0, 0, printargs, "o32_setpriority" }, /* 4097 */ + { 0, 0, printargs, "o32_profil" }, /* 4098 */ + { 0, 0, printargs, "o32_statfs" }, /* 4099 */ + { 0, 0, printargs, "o32_fstatfs" }, /* 4100 */ + { 0, 0, printargs, "o32_ioperm" }, /* 4101 */ + { 0, 0, printargs, "o32_socketcall" }, /* 4102 */ + { 0, 0, printargs, "o32_syslog" }, /* 4103 */ + { 0, 0, printargs, "o32_setitimer" }, /* 4104 */ + { 0, 0, printargs, "o32_getitimer" }, /* 4105 */ + { 0, 0, printargs, "o32_stat" }, /* 4106 */ + { 0, 0, printargs, "o32_lstat" }, /* 4107 */ + { 0, 0, printargs, "o32_fstat" }, /* 4108 */ + { 0, 0, printargs, "o32_olduname" }, /* 4109 */ + { 0, 0, printargs, "o32_iopl" }, /* 4110 */ + { 0, 0, printargs, "o32_vhangup" }, /* 4111 */ + { 0, 0, printargs, "o32_idle" }, /* 4112 */ + { 0, 0, printargs, "o32_vm86" }, /* 4113 */ + { 0, 0, printargs, "o32_wait4" }, /* 4114 */ + { 0, 0, printargs, "o32_swapoff" }, /* 4115 */ + { 0, 0, printargs, "o32_sysinfo" }, /* 4116 */ + { 0, 0, printargs, "o32_ipc" }, /* 4117 */ + { 0, 0, printargs, "o32_fsync" }, /* 4118 */ + { 0, 0, printargs, "o32_sigreturn" }, /* 4119 */ + { 0, 0, printargs, "o32_clone" }, /* 4120 */ + { 0, 0, printargs, "o32_setdomainname" }, /* 4121 */ + { 0, 0, printargs, "o32_uname" }, /* 4122 */ + { 0, 0, printargs, "o32_modify_ldt" }, /* 4123 */ + { 0, 0, printargs, "o32_adjtimex" }, /* 4124 */ + { 0, TM, printargs, "o32_mprotect" }, /* 4125 */ + { 0, 0, printargs, "o32_sigprocmask" }, /* 4126 */ + { 0, 0, printargs, "o32_create_module" }, /* 4127 */ + { 0, 0, printargs, "o32_init_module" }, /* 4128 */ + { 0, 0, printargs, "o32_delete_module" }, /* 4129 */ + { 0, 0, printargs, "o32_get_kernel_syms"}, /* 4130 */ + { 0, TF, printargs, "o32_quotactl" }, /* 4131 */ + { 0, 0, printargs, "o32_getpgid" }, /* 4132 */ + { 0, 0, printargs, "o32_fchdir" }, /* 4133 */ + { 0, 0, printargs, "o32_bdflush" }, /* 4134 */ + { 0, 0, printargs, "o32_sysfs" }, /* 4135 */ + { 0, 0, printargs, "o32_personality" }, /* 4136 */ + { 0, 0, printargs, "o32_afs_syscall" }, /* 4137 */ + { 0, 0, printargs, "o32_setfsuid" }, /* 4138 */ + { 0, 0, printargs, "o32_setfsgid" }, /* 4139 */ + { 0, 0, printargs, "o32__llseek" }, /* 4140 */ + { 0, 0, printargs, "o32_getdents" }, /* 4141 */ + { 0, 0, printargs, "o32__newselect" }, /* 4142 */ + { 0, 0, printargs, "o32_flock" }, /* 4143 */ + { 0, TM, printargs, "o32_msync" }, /* 4144 */ + { 0, 0, printargs, "o32_readv" }, /* 4145 */ + { 0, 0, printargs, "o32_writev" }, /* 4146 */ + { 0, 0, printargs, "o32_cacheflush" }, /* 4147 */ + { 0, 0, printargs, "o32_cachectl" }, /* 4148 */ + { 0, 0, printargs, "o32_sysmips" }, /* 4149 */ + { 0, 0, printargs, "o32_setup" }, /* 4150 */ + { 0, 0, printargs, "o32_getsid" }, /* 4151 */ + { 0, 0, printargs, "o32_fdatasync" }, /* 4152 */ + { 0, 0, printargs, "o32__sysctl" }, /* 4153 */ + { 0, TM, printargs, "o32_mlock" }, /* 4154 */ + { 0, TM, printargs, "o32_munlock" }, /* 4155 */ + { 0, TM, printargs, "o32_mlockall" }, /* 4156 */ + { 0, TM, printargs, "o32_munlockall" }, /* 4157 */ + { 0, 0, printargs, "o32_sched_setparam"}, /* 4158 */ + { 0, 0, printargs, "o32_sched_getparam"}, /* 4159 */ + { 0, 0, printargs, "o32_sched_setscheduler"}, /* 4160 */ + { 0, 0, printargs, "o32_sched_getscheduler"}, /* 4161 */ + { 0, 0, printargs, "o32_sched_yield" }, /* 4162 */ + { 0, 0, printargs, "o32_sched_get_priority_max"}, /* 4163 */ + { 0, 0, printargs, "o32_sched_get_priority_min"},/* 4164 */ + { 0, 0, printargs, "o32_sched_rr_get_interval"}, /* 4165 */ + { 0, 0, printargs, "o32_nanosleep" }, /* 4166 */ + { 0, TM, printargs, "o32_mremap" }, /* 4167 */ + { 0, 0, printargs, "o32_accept" }, /* 4168 */ + { 0, 0, printargs, "o32_bind" }, /* 4169 */ + { 0, 0, printargs, "o32_connect" }, /* 4170 */ + { 0, 0, printargs, "o32_getpeername" }, /* 4171 */ + { 0, 0, printargs, "o32_getsockname" }, /* 4172 */ + { 0, 0, printargs, "o32_getsockopt" }, /* 4173 */ + { 0, 0, printargs, "o32_listen" }, /* 4174 */ + { 0, 0, printargs, "o32_recv" }, /* 4175 */ + { 0, 0, printargs, "o32_recvfrom" }, /* 4176 */ + { 0, 0, printargs, "o32_recvmsg" }, /* 4177 */ + { 0, 0, printargs, "o32_send" }, /* 4178 */ + { 0, 0, printargs, "o32_sendmsg" }, /* 4179 */ + { 0, 0, printargs, "o32_sendto" }, /* 4180 */ + { 0, 0, printargs, "o32_setsockopt" }, /* 4181 */ + { 0, 0, printargs, "o32_shutdown" }, /* 4182 */ + { 0, 0, printargs, "o32_socket" }, /* 4183 */ + { 0, 0, printargs, "o32_socketpair" }, /* 4184 */ + { 0, 0, printargs, "o32_setresuid" }, /* 4185 */ + { 0, 0, printargs, "o32_getresuid" }, /* 4186 */ + { 0, 0, printargs, "o32_query_module" }, /* 4187 */ + { 0, 0, printargs, "o32_poll" }, /* 4188 */ + { 0, 0, printargs, "o32_nfsservctl" }, /* 4189 */ + { 0, 0, printargs, "o32_setresgid" }, /* 4190 */ + { 0, 0, printargs, "o32_getresgid" }, /* 4191 */ + { 0, 0, printargs, "o32_prctl" }, /* 4192 */ + { 0, 0, printargs, "o32_rt_sigreturn" }, /* 4193 */ + { 0, 0, printargs, "o32_rt_sigaction" }, /* 4194 */ + { 0, 0, printargs, "o32_rt_sigprocmask"}, /* 4195 */ + { 0, 0, printargs, "o32_rt_sigpending" }, /* 4196 */ + { 0, 0, printargs, "o32_rt_sigtimedwait"},/* 4197 */ + { 0, 0, printargs, "o32_rt_sigqueueinfo"},/* 4198 */ + { 0, 0, printargs, "o32_rt_siguspend" }, /* 4199 */ + { 0, 0, printargs, "o32_pread64" }, /* 4200 */ + { 0, 0, printargs, "o32_pwrite64" }, /* 4201 */ + { 0, 0, printargs, "o32_chown" }, /* 4202 */ + { 0, 0, printargs, "o32_getcwd" }, /* 4203 */ + { 0, 0, printargs, "o32_capget" }, /* 4204 */ + { 0, 0, printargs, "o32_capset" }, /* 4205 */ + { 0, 0, printargs, "o32_sigaltstack" }, /* 4206 */ + { 0, 0, printargs, "o32_sendfile" }, /* 4207 */ + { 5, TN, printargs, "o32_getpmsg" }, /* 4208 */ + { 5, TN, printargs, "o32_putpmsg" }, /* 4209 */ + { 6, TD|TM, printargs, "o32_mmap2" }, /* 4210 */ + { 0, 0, printargs, "o32_truncate64" }, /* 4211 */ + { 0, 0, printargs, "o32_ftruncate64" }, /* 4212 */ + { 0, 0, printargs, "o32_stat64" }, /* 4213 */ + { 0, 0, printargs, "o32_lstat64" }, /* 4214 */ + { 0, 0, printargs, "o32_fstat64" }, /* 4215 */ + { 0, 0, printargs, "o32_pivot_root" }, /* 4216 */ + { 0, TM, printargs, "o32_mincore" }, /* 4217 */ + { 0, TM, printargs, "o32_madvise" }, /* 4218 */ + { 0, 0, printargs, "o32_getdents64" }, /* 4219 */ + { 0, 0, printargs, "o32_fcntl64" }, /* 4220 */ + { 0, 0, NULL, NULL }, /* 4221 */ + { 0, 0, printargs, "o32_gettid" }, /* 4222 */ + { 5, TD, printargs, "o32_readahead" }, /* 4223 */ + { 5, TF, printargs, "o32_setxattr" }, /* 4224 */ + { 5, TF, printargs, "o32_lsetxattr" }, /* 4225 */ + { 5, TD, printargs, "o32_fsetxattr" }, /* 4226 */ + { 4, TF, printargs, "o32_getxattr" }, /* 4227 */ + { 4, TF, printargs, "o32_lgetxattr" }, /* 4228 */ + { 4, TD, printargs, "o32_fgetxattr" }, /* 4229 */ + { 3, TF, printargs, "o32_listxattr" }, /* 4230 */ + { 3, TF, printargs, "o32_llistxattr" }, /* 4231 */ + { 3, TD, printargs, "o32_flistxattr" }, /* 4232 */ + { 2, TF, printargs, "o32_removexattr" }, /* 4233 */ + { 2, TF, printargs, "o32_lremovexattr" }, /* 4234 */ + { 2, TD, printargs, "o32_fremovexattr" }, /* 4235 */ + { 2, TS, printargs, "o32_tkill" }, /* 4236 */ + { 5, TD|TN, printargs, "o32_sendfile64" }, /* 4237 */ + { 6, 0, printargs, "o32_futex" }, /* 4238 */ + { 3, 0, printargs, "o32_sched_setaffinity"}, /* 4239 */ + { 3, 0, printargs, "o32_sched_getaffinity"}, /* 4240 */ + { 2, 0, printargs, "o32_io_setup" }, /* 4241 */ + { 1, 0, printargs, "o32_io_destroy" }, /* 4242 */ + { 5, 0, printargs, "o32_io_getevents" }, /* 4243 */ + { 3, 0, printargs, "o32_io_submit" }, /* 4244 */ + { 3, 0, printargs, "o32_io_cancel" }, /* 4245 */ + { 1, TP, printargs, "o32_exit_group" }, /* 4246 */ + { 3, 0, printargs, "o32_lookup_dcookie"}, /* 4247 */ + { 1, TD, printargs, "o32_epoll_create" }, /* 4248 */ + { 4, TD, printargs, "o32_epoll_ctl" }, /* 4249 */ + { 4, TD, printargs, "o32_epoll_wait" }, /* 4250 */ + { 5, TM, printargs, "o32_remap_file_pages"}, /* 4251 */ + { 1, 0, printargs, "o32_set_tid_address"}, /* 4252 */ + { 0, 0, printargs, "o32_restart_syscall"}, /* 4253 */ + { MA, 0, printargs, "o32_fadvise64_64" }, /* 4254 */ + { 3, TF, printargs, "o32_statfs64" }, /* 4255 */ + { 2, TD, printargs, "o32_fstatfs64" }, /* 4256 */ + { 3, 0, printargs, "o32_timer_create" }, /* 4257 */ + { 4, 0, printargs, "o32_timer_settime" }, /* 4258 */ + { 2, 0, printargs, "o32_timer_gettime" }, /* 4259 */ + { 1, 0, printargs, "o32_timer_getoverrun"}, /* 4260 */ + { 1, 0, printargs, "o32_timer_delete" }, /* 4261 */ + { 2, 0, printargs, "o32_clock_settime" }, /* 4262 */ + { 2, 0, printargs, "o32_clock_gettime" }, /* 4263 */ + { 2, 0, printargs, "o32_clock_getres" }, /* 4264 */ + { 4, 0, printargs, "o32_clock_nanosleep"}, /* 4265 */ + { 3, TS, printargs, "o32_tgkill" }, /* 4266 */ + { 2, TF, printargs, "o32_utimes" }, /* 4267 */ + { 4, TM, printargs, "o32_mbind" }, /* 4268 */ + { 5, TM, printargs, "o32_get_mempolicy" }, /* 4269 */ + { 3, TM, printargs, "o32_set_mempolicy" }, /* 4270 */ + { 4, 0, printargs, "o32_mq_open" }, /* 4271 */ + { 1, 0, printargs, "o32_mq_unlink" }, /* 4272 */ + { 5, 0, printargs, "o32_mq_timedsend" }, /* 4273 */ + { 5, 0, printargs, "o32_mq_timedreceive"}, /* 4274 */ + { 2, 0, printargs, "o32_mq_notify" }, /* 4275 */ + { 3, 0, printargs, "o32_mq_getsetattr" }, /* 4276 */ + { 5, 0, printargs, "o32_vserver" }, /* 4277 */ + { 5, TP, printargs, "o32_waitid" }, /* 4278 */ + { 0, 0, printargs, "o32_SYS_4279" }, /* 4279 */ + { 5, 0, printargs, "o32_add_key" }, /* 4280 */ + { 4, 0, printargs, "o32_request_key" }, /* 4281 */ + { 5, 0, printargs, "o32_keyctl" }, /* 4282 */ + { 1, 0, printargs, "o32_set_thread_area" }, /* 4283 */ + { 0, TD, printargs, "o32_inotify_init" }, /* 4284 */ + { 3, TD, printargs, "o32_inotify_add_watch" }, /* 4285 */ + { 2, TD, printargs, "o32_inotify_rm_watch" }, /* 4286 */ + { 4, TM, printargs, "o32_migrate_pages" }, /* 4287 */ + { 4, TD|TF, printargs, "o32_openat" }, /* 4288 */ + { 3, TD|TF, printargs, "o32_mkdirat" }, /* 4289 */ + { 4, TD|TF, printargs, "o32_mknodat" }, /* 4290 */ + { 5, TD|TF, printargs, "o32_fchownat" }, /* 4291 */ + { 3, TD|TF, printargs, "o32_futimesat" }, /* 4292 */ + { 4, TD|TF, printargs, "o32_fstatat64" }, /* 4293 */ + { 3, TD|TF, printargs, "o32_unlinkat" }, /* 4294 */ + { 4, TD|TF, printargs, "o32_renameat" }, /* 4295 */ + { 5, TD|TF, printargs, "o32_linkat" }, /* 4296 */ + { 3, TD|TF, printargs, "o32_symlinkat" }, /* 4297 */ + { 4, TD|TF, printargs, "o32_readlinkat" }, /* 4298 */ + { 3, TD|TF, printargs, "o32_fchmodat" }, /* 4299 */ + { 3, TD|TF, printargs, "o32_faccessat" }, /* 4300 */ + { 6, TD, printargs, "o32_pselect6" }, /* 4301 */ + { 5, TD, printargs, "o32_ppoll" }, /* 4302 */ + { 1, TP, printargs, "o32_unshare" }, /* 4303 */ + { 6, TD, printargs, "o32_splice" }, /* 4304 */ + { 4, TD, printargs, "o32_sync_file_range" }, /* 4305 */ + { 4, TD, printargs, "o32_tee" }, /* 4306 */ + { 4, TD, printargs, "o32_vmsplice" }, /* 4307 */ + { 6, TM, printargs, "o32_move_pages" }, /* 4308 */ + { 2, 0, printargs, "o32_set_robust_list" }, /* 4309 */ + { 3, 0, printargs, "o32_get_robust_list" }, /* 4310 */ + { 4, 0, printargs, "o32_kexec_load" }, /* 4311 */ + { 3, 0, printargs, "o32_getcpu" }, /* 4312 */ + { 5, TD, printargs, "o32_epoll_pwait" }, /* 4313 */ + { 3, 0, printargs, "o32_ioprio_set" }, /* 4314 */ + { 2, 0, printargs, "o32_ioprio_get" }, /* 4315 */ + { 4, 0, printargs, "o32_utimensat" }, /* 4316 */ + { 3, TD|TS, printargs, "o32_signalfd" }, /* 4317 */ + { 4, TD, printargs, "o32_timerfd" }, /* 4318 */ + { 1, TD, printargs, "o32_eventfd" }, /* 4319 */ + { 6, TD, printargs, "o32_fallocate" }, /* 4320 */ + { 2, TD, printargs, "o32_timerfd_create" }, /* 4321 */ + { 2, TD, printargs, "o32_timerfd_gettime" }, /* 4322 */ + { 4, TD, printargs, "o32_timerfd_settime" }, /* 4323 */ + { 4, TD|TS, printargs, "o32_signalfd4" }, /* 4324 */ + { 2, TD, printargs, "o32_eventfd2" }, /* 4325 */ + { 1, TD, printargs, "o32_epoll_create1" }, /* 4326 */ + { 3, TD, printargs, "o32_dup3" }, /* 4327 */ + { 2, TD, printargs, "o32_pipe2" }, /* 4328 */ + { 1, TD, printargs, "o32_inotify_init1" }, /* 4329 */ + { 6, TD, printargs, "o32_preadv" }, /* 4330 */ + { 6, TD, printargs, "o32_pwritev" }, /* 4331 */ + { 4, TP|TS, printargs, "o32_rt_tgsigqueueinfo" }, /* 4332 */ + { 5, TD, printargs, "o32_perf_event_open" }, /* 4333 */ + { 4, TN, printargs, "o32_accept4" }, /* 4334 */ + { 5, TN, printargs, "o32_recvmmsg" }, /* 4335 */ + { 2, TD, printargs, "o32_fanotify_init" }, /* 4336 */ + { 5, TD|TF, printargs, "o32_fanotify_mark" }, /* 4337 */ + { 4, 0, printargs, "o32_prlimit64" }, /* 4338 */ + { 5, TD|TF, printargs, "o32_name_to_handle_at"}, /* 4339 */ + { 3, TD, printargs, "o32_open_by_handle_at"}, /* 4340 */ + { 2, 0, printargs, "o32_clock_adjtime" }, /* 4341 */ + { 1, TD, printargs, "o32_syncfs" }, /* 4342 */ + { 4, TN, printargs, "o32_sendmmsg" }, /* 4343 */ + { 2, TD, printargs, "o32_setns" }, /* 4344 */ + { 6, 0, printargs, "o32_process_vm_readv" }, /* 4345 */ + { 6, 0, printargs, "o32_process_vm_writev" }, /* 4346 */ + { 5, 0, printargs, "o32_kcmp" }, /* 4347 */ + { 3, TD, printargs, "o32_finit_module" }, /* 4348 */ +#endif + [4349 ... 4999] = { }, /* 4999 */ /* end of Linux o32 */ diff --git a/linux/mips/syscallent.h b/linux/mips/syscallent.h index ebb93f96..61430d21 100644 --- a/linux/mips/syscallent.h +++ b/linux/mips/syscallent.h @@ -1,7980 +1,5 @@ #include "../dummy.h" - - { 0, 0, printargs, "svr4_syscall" }, /* 000 */ - { 0, 0, printargs, "svr4_exit" }, /* 001 */ - { 0, 0, printargs, "svr4_fork" }, /* 002 */ - { 0, 0, printargs, "svr4_read" }, /* 003 */ - { 0, 0, printargs, "svr4_write" }, /* 004 */ - { 0, 0, printargs, "svr4_open" }, /* 005 */ - { 0, 0, printargs, "svr4_close" }, /* 006 */ - { 0, 0, printargs, "svr4_wait" }, /* 007 */ - { 0, 0, printargs, "svr4_creat" }, /* 008 */ - { 0, 0, printargs, "svr4_link" }, /* 009 */ - { 0, 0, printargs, "svr4_unlink" }, /* 010 */ - { 0, 0, printargs, "svr4_exec" }, /* 011 */ - { 0, 0, printargs, "svr4_chdir" }, /* 012 */ - { 0, 0, printargs, "svr4_gtime" }, /* 013 */ - { 0, 0, printargs, "svr4_mknod" }, /* 014 */ - { 0, 0, printargs, "svr4_chmod" }, /* 015 */ - { 0, 0, printargs, "svr4_chown" }, /* 016 */ - { 0, 0, printargs, "svr4_sbreak" }, /* 017 */ - { 0, 0, printargs, "svr4_stat" }, /* 018 */ - { 0, 0, printargs, "svr4_lseek" }, /* 019 */ - { 0, 0, printargs, "svr4_getpid" }, /* 020 */ - { 0, 0, printargs, "svr4_mount" }, /* 021 */ - { 0, 0, printargs, "svr4_umount" }, /* 022 */ - { 0, 0, printargs, "svr4_setuid" }, /* 023 */ - { 0, 0, printargs, "svr4_getuid" }, /* 024 */ - { 0, 0, printargs, "svr4_stime" }, /* 025 */ - { 0, 0, printargs, "svr4_ptrace" }, /* 026 */ - { 0, 0, printargs, "svr4_alarm" }, /* 027 */ - { 0, 0, printargs, "svr4_fstat" }, /* 028 */ - { 0, 0, printargs, "svr4_pause" }, /* 029 */ - { 0, 0, printargs, "svr4_utime" }, /* 030 */ - { 0, 0, printargs, "svr4_stty" }, /* 031 */ - { 0, 0, printargs, "svr4_gtty" }, /* 032 */ - { 0, 0, printargs, "svr4_access" }, /* 033 */ - { 0, 0, printargs, "svr4_nice" }, /* 034 */ - { 0, 0, printargs, "svr4_statfs" }, /* 035 */ - { 0, 0, printargs, "svr4_sync" }, /* 036 */ - { 0, 0, printargs, "svr4_kill" }, /* 037 */ - { 0, 0, printargs, "svr4_fstatfs" }, /* 038 */ - { 0, 0, printargs, "svr4_setpgrp" }, /* 039 */ - { 0, 0, printargs, "svr4_cxenix" }, /* 040 */ - { 0, 0, printargs, "svr4_dup" }, /* 041 */ - { 0, 0, printargs, "svr4_pipe" }, /* 042 */ - { 0, 0, printargs, "svr4_times" }, /* 043 */ - { 0, 0, printargs, "svr4_profil" }, /* 044 */ - { 0, 0, printargs, "svr4_plock" }, /* 045 */ - { 0, 0, printargs, "svr4_setgid" }, /* 046 */ - { 0, 0, printargs, "svr4_getgid" }, /* 047 */ - { 0, 0, printargs, "svr4_sig" }, /* 048 */ - { 0, 0, printargs, "svr4_msgsys" }, /* 049 */ - { 0, 0, printargs, "svr4_sysmips" }, /* 050 */ - { 0, 0, printargs, "svr4_sysacct" }, /* 051 */ - { 0, 0, printargs, "svr4_shmsys" }, /* 052 */ - { 0, 0, printargs, "svr4_semsys" }, /* 053 */ - { 0, 0, printargs, "svr4_ioctl" }, /* 054 */ - { 0, 0, printargs, "svr4_uadmin" }, /* 055 */ - { 0, 0, printargs, "svr4_exch" }, /* 056 */ - { 0, 0, printargs, "svr4_utssys" }, /* 057 */ - { 0, 0, printargs, "svr4_fsync" }, /* 058 */ - { 0, 0, printargs, "svr4_exece" }, /* 059 */ - { 0, 0, printargs, "svr4_umask" }, /* 060 */ - { 0, 0, printargs, "svr4_chroot" }, /* 061 */ - { 0, 0, printargs, "svr4_fcntl" }, /* 062 */ - { 0, 0, printargs, "svr4_ulimit" }, /* 063 */ - { 0, 0, NULL, NULL , }, /* 064 */ - { 0, 0, NULL, NULL , }, /* 065 */ - { 0, 0, NULL, NULL , }, /* 066 */ - { 0, 0, NULL, NULL , }, /* 067 */ - { 0, 0, NULL, NULL , }, /* 068 */ - { 0, 0, NULL, NULL , }, /* 069 */ - { 0, 0, printargs, "svr4_advfs" }, /* 070 */ - { 0, 0, printargs, "svr4_unadvfs" }, /* 071 */ - { 0, 0, NULL, NULL , }, /* 072 */ - { 0, 0, NULL, NULL , }, /* 073 */ - { 0, 0, printargs, "svr4_rfstart" }, /* 074 */ - { 0, 0, NULL, NULL , }, /* 075 */ - { 0, 0, printargs, "svr4_rdebug" }, /* 076 */ - { 0, 0, printargs, "svr4_rfstop" }, /* 077 */ - { 0, 0, printargs, "svr4_rfsys" }, /* 078 */ - { 0, 0, printargs, "svr4_rmdir" }, /* 079 */ - { 0, 0, printargs, "svr4_mkdir" }, /* 080 */ - { 0, 0, printargs, "svr4_getdents" }, /* 081 */ - { 0, 0, printargs, "svr4_libattach" }, /* 082 */ - { 0, 0, printargs, "svr4_libdetach" }, /* 083 */ - { 0, 0, printargs, "svr4_sysfs" }, /* 084 */ - { 0, 0, printargs, "svr4_getmsg" }, /* 085 */ - { 0, 0, printargs, "svr4_putmsg" }, /* 086 */ - { 0, 0, printargs, "svr4_poll" }, /* 087 */ - { 0, 0, printargs, "svr4_lstat" }, /* 088 */ - { 0, 0, printargs, "svr4_symlink" }, /* 089 */ - { 0, 0, printargs, "svr4_readlink" }, /* 090 */ - { 0, 0, printargs, "svr4_setgroups" }, /* 091 */ - { 0, 0, printargs, "svr4_getgroups" }, /* 092 */ - { 0, 0, printargs, "svr4_fchmod" }, /* 093 */ - { 0, 0, printargs, "svr4_fchown" }, /* 094 */ - { 0, 0, printargs, "svr4_sigprocmask" }, /* 095 */ - { 0, 0, printargs, "svr4_sigsuspend" }, /* 096 */ - { 0, 0, printargs, "svr4_sigaltstack" }, /* 097 */ - { 0, 0, printargs, "svr4_sigaction" }, /* 098 */ - { 0, 0, printargs, "svr4_sigpending" }, /* 099 */ - { 0, 0, printargs, "svr4_setcontext" }, /* 0100 */ - { 0, 0, printargs, "svr4_evsys" }, /* 0101 */ - { 0, 0, printargs, "svr4_evtrapret" }, /* 0102 */ - { 0, 0, printargs, "svr4_statvfs" }, /* 0103 */ - { 0, 0, printargs, "svr4_fstatvfs" }, /* 0104 */ - { 0, 0, NULL, NULL , }, /* 105 */ - { 0, 0, printargs, "svr4_nfssys" }, /* 0106 */ - { 0, 0, printargs, "svr4_waitid" }, /* 0107 */ - { 0, 0, printargs, "svr4_sigsendset" }, /* 0108 */ - { 0, 0, printargs, "svr4_hrtsys" }, /* 0109 */ - { 0, 0, printargs, "svr4_acancel" }, /* 0110 */ - { 0, 0, printargs, "svr4_async" }, /* 0111 */ - { 0, 0, printargs, "svr4_priocntlset" }, /* 0112 */ - { 0, 0, printargs, "svr4_pathconf" }, /* 0113 */ - { 0, 0, printargs, "svr4_mincore" }, /* 0114 */ - { 0, 0, printargs, "svr4_mmap" }, /* 0115 */ - { 0, 0, printargs, "svr4_mprotect" }, /* 0116 */ - { 0, 0, printargs, "svr4_munmap" }, /* 0117 */ - { 0, 0, printargs, "svr4_fpathconf" }, /* 0118 */ - { 0, 0, printargs, "svr4_vfork" }, /* 0119 */ - { 0, 0, printargs, "svr4_fchdir" }, /* 0120 */ - { 0, 0, printargs, "svr4_readv" }, /* 0121 */ - { 0, 0, printargs, "svr4_writev" }, /* 0122 */ - { 0, 0, printargs, "svr4_xstat" }, /* 0123 */ - { 0, 0, printargs, "svr4_lxstat" }, /* 0124 */ - { 0, 0, printargs, "svr4_fxstat" }, /* 0125 */ - { 0, 0, printargs, "svr4_xmknod" }, /* 0126 */ - { 0, 0, printargs, "svr4_clocal" }, /* 0127 */ - { 0, 0, printargs, "svr4_setrlimit" }, /* 0128 */ - { 0, 0, printargs, "svr4_getrlimit" }, /* 0129 */ - { 0, 0, printargs, "svr4_lchown" }, /* 0130 */ - { 0, 0, printargs, "svr4_memcntl" }, /* 0131 */ - { 0, 0, printargs, "svr4_getpmsg" }, /* 0132 */ - { 0, 0, printargs, "svr4_putpmsg" }, /* 0133 */ - { 0, 0, printargs, "svr4_rename" }, /* 0134 */ - { 0, 0, printargs, "svr4_nuname" }, /* 0135 */ - { 0, 0, printargs, "svr4_setegid" }, /* 0136 */ - { 0, 0, printargs, "svr4_sysconf" }, /* 0137 */ - { 0, 0, printargs, "svr4_adjtime" }, /* 0138 */ - { 0, 0, printargs, "svr4_sysinfo" }, /* 0139 */ - { 0, 0, NULL, NULL , }, /* 140 */ - { 0, 0, printargs, "svr4_seteuid" }, /* 0141 */ - { 0, 0, printargs, "svr4_PYRAMID_statis" }, /* 0142 */ - { 0, 0, printargs, "svr4_PYRAMID_tuning" }, /* 0143 */ - { 0, 0, printargs, "svr4_PYRAMID_forcerr" }, /* 0144 */ - { 0, 0, printargs, "svr4_PYRAMID_mpcntl" }, /* 0145 */ - { 0, 0, NULL, NULL , }, /* 146 */ - { 0, 0, NULL, NULL , }, /* 147 */ - { 0, 0, NULL, NULL , }, /* 148 */ - { 0, 0, NULL, NULL , }, /* 149 */ - { 0, 0, NULL, NULL , }, /* 150 */ - { 0, 0, NULL, NULL , }, /* 151 */ - { 0, 0, NULL, NULL , }, /* 152 */ - { 0, 0, NULL, NULL , }, /* 153 */ - { 0, 0, NULL, NULL , }, /* 154 */ - { 0, 0, NULL, NULL , }, /* 155 */ - { 0, 0, NULL, NULL , }, /* 156 */ - { 0, 0, NULL, NULL , }, /* 157 */ - { 0, 0, NULL, NULL , }, /* 158 */ - { 0, 0, NULL, NULL , }, /* 159 */ - { 0, 0, NULL, NULL , }, /* 160 */ - { 0, 0, NULL, NULL , }, /* 161 */ - { 0, 0, NULL, NULL , }, /* 162 */ - { 0, 0, NULL, NULL , }, /* 163 */ - { 0, 0, NULL, NULL , }, /* 164 */ - { 0, 0, NULL, NULL , }, /* 165 */ - { 0, 0, NULL, NULL , }, /* 166 */ - { 0, 0, NULL, NULL , }, /* 167 */ - { 0, 0, NULL, NULL , }, /* 168 */ - { 0, 0, NULL, NULL , }, /* 169 */ - { 0, 0, NULL, NULL , }, /* 170 */ - { 0, 0, NULL, NULL , }, /* 171 */ - { 0, 0, NULL, NULL , }, /* 172 */ - { 0, 0, NULL, NULL , }, /* 173 */ - { 0, 0, NULL, NULL , }, /* 174 */ - { 0, 0, NULL, NULL , }, /* 175 */ - { 0, 0, NULL, NULL , }, /* 176 */ - { 0, 0, NULL, NULL , }, /* 177 */ - { 0, 0, NULL, NULL , }, /* 178 */ - { 0, 0, NULL, NULL , }, /* 179 */ - { 0, 0, NULL, NULL , }, /* 180 */ - { 0, 0, NULL, NULL , }, /* 181 */ - { 0, 0, NULL, NULL , }, /* 182 */ - { 0, 0, NULL, NULL , }, /* 183 */ - { 0, 0, NULL, NULL , }, /* 184 */ - { 0, 0, NULL, NULL , }, /* 185 */ - { 0, 0, NULL, NULL , }, /* 186 */ - { 0, 0, NULL, NULL , }, /* 187 */ - { 0, 0, NULL, NULL , }, /* 188 */ - { 0, 0, NULL, NULL , }, /* 189 */ - { 0, 0, NULL, NULL , }, /* 190 */ - { 0, 0, NULL, NULL , }, /* 191 */ - { 0, 0, NULL, NULL , }, /* 192 */ - { 0, 0, NULL, NULL , }, /* 193 */ - { 0, 0, NULL, NULL , }, /* 194 */ - { 0, 0, NULL, NULL , }, /* 195 */ - { 0, 0, NULL, NULL , }, /* 196 */ - { 0, 0, NULL, NULL , }, /* 197 */ - { 0, 0, NULL, NULL , }, /* 198 */ - { 0, 0, NULL, NULL , }, /* 199 */ - { 0, 0, NULL, NULL , }, /* 200 */ - { 0, 0, printargs, "svr4_aread" }, /* 0201 */ - { 0, 0, printargs, "svr4_awrite" }, /* 0202 */ - { 0, 0, printargs, "svr4_listio" }, /* 0203 */ - { 0, 0, printargs, "svr4_mips_acancel" }, /* 0204 */ - { 0, 0, printargs, "svr4_astatus" }, /* 0205 */ - { 0, 0, printargs, "svr4_await" }, /* 0206 */ - { 0, 0, printargs, "svr4_areadv" }, /* 0207 */ - { 0, 0, printargs, "svr4_awritev" }, /* 0208 */ - { 0, 0, NULL, NULL , }, /* 209 */ - { 0, 0, NULL, NULL , }, /* 210 */ - { 0, 0, NULL, NULL , }, /* 211 */ - { 0, 0, NULL, NULL , }, /* 212 */ - { 0, 0, NULL, NULL , }, /* 213 */ - { 0, 0, NULL, NULL , }, /* 214 */ - { 0, 0, NULL, NULL , }, /* 215 */ - { 0, 0, NULL, NULL , }, /* 216 */ - { 0, 0, NULL, NULL , }, /* 217 */ - { 0, 0, NULL, NULL , }, /* 218 */ - { 0, 0, NULL, NULL , }, /* 219 */ - { 0, 0, NULL, NULL , }, /* 220 */ - { 0, 0, NULL, NULL , }, /* 221 */ - { 0, 0, NULL, NULL , }, /* 222 */ - { 0, 0, NULL, NULL , }, /* 223 */ - { 0, 0, NULL, NULL , }, /* 224 */ - { 0, 0, NULL, NULL , }, /* 225 */ - { 0, 0, NULL, NULL , }, /* 226 */ - { 0, 0, NULL, NULL , }, /* 227 */ - { 0, 0, NULL, NULL , }, /* 228 */ - { 0, 0, NULL, NULL , }, /* 229 */ - { 0, 0, NULL, NULL , }, /* 230 */ - { 0, 0, NULL, NULL , }, /* 231 */ - { 0, 0, NULL, NULL , }, /* 232 */ - { 0, 0, NULL, NULL , }, /* 233 */ - { 0, 0, NULL, NULL , }, /* 234 */ - { 0, 0, NULL, NULL , }, /* 235 */ - { 0, 0, NULL, NULL , }, /* 236 */ - { 0, 0, NULL, NULL , }, /* 237 */ - { 0, 0, NULL, NULL , }, /* 238 */ - { 0, 0, NULL, NULL , }, /* 239 */ - { 0, 0, NULL, NULL , }, /* 240 */ - { 0, 0, NULL, NULL }, /* 241 */ - { 0, 0, NULL, NULL }, /* 242 */ - { 0, 0, NULL, NULL }, /* 243 */ - { 0, 0, NULL, NULL }, /* 244 */ - { 0, 0, NULL, NULL }, /* 245 */ - { 0, 0, NULL, NULL }, /* 246 */ - { 0, 0, NULL, NULL }, /* 247 */ - { 0, 0, NULL, NULL }, /* 248 */ - { 0, 0, NULL, NULL }, /* 249 */ - { 0, 0, NULL, NULL }, /* 250 */ - { 0, 0, NULL, NULL }, /* 251 */ - { 0, 0, NULL, NULL }, /* 252 */ - { 0, 0, NULL, NULL }, /* 253 */ - { 0, 0, NULL, NULL }, /* 254 */ - { 0, 0, NULL, NULL }, /* 255 */ - { 0, 0, NULL, NULL }, /* 256 */ - { 0, 0, NULL, NULL }, /* 257 */ - { 0, 0, NULL, NULL }, /* 258 */ - { 0, 0, NULL, NULL }, /* 259 */ - { 0, 0, NULL, NULL }, /* 260 */ - { 0, 0, NULL, NULL }, /* 261 */ - { 0, 0, NULL, NULL }, /* 262 */ - { 0, 0, NULL, NULL }, /* 263 */ - { 0, 0, NULL, NULL }, /* 264 */ - { 0, 0, NULL, NULL }, /* 265 */ - { 0, 0, NULL, NULL }, /* 266 */ - { 0, 0, NULL, NULL }, /* 267 */ - { 0, 0, NULL, NULL }, /* 268 */ - { 0, 0, NULL, NULL }, /* 269 */ - { 0, 0, NULL, NULL }, /* 270 */ - { 0, 0, NULL, NULL }, /* 271 */ - { 0, 0, NULL, NULL }, /* 272 */ - { 0, 0, NULL, NULL }, /* 273 */ - { 0, 0, NULL, NULL }, /* 274 */ - { 0, 0, NULL, NULL }, /* 275 */ - { 0, 0, NULL, NULL }, /* 276 */ - { 0, 0, NULL, NULL }, /* 277 */ - { 0, 0, NULL, NULL }, /* 278 */ - { 0, 0, NULL, NULL }, /* 279 */ - { 0, 0, NULL, NULL }, /* 280 */ - { 0, 0, NULL, NULL }, /* 281 */ - { 0, 0, NULL, NULL }, /* 282 */ - { 0, 0, NULL, NULL }, /* 283 */ - { 0, 0, NULL, NULL }, /* 284 */ - { 0, 0, NULL, NULL }, /* 285 */ - { 0, 0, NULL, NULL }, /* 286 */ - { 0, 0, NULL, NULL }, /* 287 */ - { 0, 0, NULL, NULL }, /* 288 */ - { 0, 0, NULL, NULL }, /* 289 */ - { 0, 0, NULL, NULL }, /* 290 */ - { 0, 0, NULL, NULL }, /* 291 */ - { 0, 0, NULL, NULL }, /* 292 */ - { 0, 0, NULL, NULL }, /* 293 */ - { 0, 0, NULL, NULL }, /* 294 */ - { 0, 0, NULL, NULL }, /* 295 */ - { 0, 0, NULL, NULL }, /* 296 */ - { 0, 0, NULL, NULL }, /* 297 */ - { 0, 0, NULL, NULL }, /* 298 */ - { 0, 0, NULL, NULL }, /* 299 */ - { 0, 0, NULL, NULL }, /* 300 */ - { 0, 0, NULL, NULL }, /* 301 */ - { 0, 0, NULL, NULL }, /* 302 */ - { 0, 0, NULL, NULL }, /* 303 */ - { 0, 0, NULL, NULL }, /* 304 */ - { 0, 0, NULL, NULL }, /* 305 */ - { 0, 0, NULL, NULL }, /* 306 */ - { 0, 0, NULL, NULL }, /* 307 */ - { 0, 0, NULL, NULL }, /* 308 */ - { 0, 0, NULL, NULL }, /* 309 */ - { 0, 0, NULL, NULL }, /* 310 */ - { 0, 0, NULL, NULL }, /* 311 */ - { 0, 0, NULL, NULL }, /* 312 */ - { 0, 0, NULL, NULL }, /* 313 */ - { 0, 0, NULL, NULL }, /* 314 */ - { 0, 0, NULL, NULL }, /* 315 */ - { 0, 0, NULL, NULL }, /* 316 */ - { 0, 0, NULL, NULL }, /* 317 */ - { 0, 0, NULL, NULL }, /* 318 */ - { 0, 0, NULL, NULL }, /* 319 */ - { 0, 0, NULL, NULL }, /* 320 */ - { 0, 0, NULL, NULL }, /* 321 */ - { 0, 0, NULL, NULL }, /* 322 */ - { 0, 0, NULL, NULL }, /* 323 */ - { 0, 0, NULL, NULL }, /* 324 */ - { 0, 0, NULL, NULL }, /* 325 */ - { 0, 0, NULL, NULL }, /* 326 */ - { 0, 0, NULL, NULL }, /* 327 */ - { 0, 0, NULL, NULL }, /* 328 */ - { 0, 0, NULL, NULL }, /* 329 */ - { 0, 0, NULL, NULL }, /* 330 */ - { 0, 0, NULL, NULL }, /* 331 */ - { 0, 0, NULL, NULL }, /* 332 */ - { 0, 0, NULL, NULL }, /* 333 */ - { 0, 0, NULL, NULL }, /* 334 */ - { 0, 0, NULL, NULL }, /* 335 */ - { 0, 0, NULL, NULL }, /* 336 */ - { 0, 0, NULL, NULL }, /* 337 */ - { 0, 0, NULL, NULL }, /* 338 */ - { 0, 0, NULL, NULL }, /* 339 */ - { 0, 0, NULL, NULL }, /* 340 */ - { 0, 0, NULL, NULL }, /* 341 */ - { 0, 0, NULL, NULL }, /* 342 */ - { 0, 0, NULL, NULL }, /* 343 */ - { 0, 0, NULL, NULL }, /* 344 */ - { 0, 0, NULL, NULL }, /* 345 */ - { 0, 0, NULL, NULL }, /* 346 */ - { 0, 0, NULL, NULL }, /* 347 */ - { 0, 0, NULL, NULL }, /* 348 */ - { 0, 0, NULL, NULL }, /* 349 */ - { 0, 0, NULL, NULL }, /* 350 */ - { 0, 0, NULL, NULL }, /* 351 */ - { 0, 0, NULL, NULL }, /* 352 */ - { 0, 0, NULL, NULL }, /* 353 */ - { 0, 0, NULL, NULL }, /* 354 */ - { 0, 0, NULL, NULL }, /* 355 */ - { 0, 0, NULL, NULL }, /* 356 */ - { 0, 0, NULL, NULL }, /* 357 */ - { 0, 0, NULL, NULL }, /* 358 */ - { 0, 0, NULL, NULL }, /* 359 */ - { 0, 0, NULL, NULL }, /* 360 */ - { 0, 0, NULL, NULL }, /* 361 */ - { 0, 0, NULL, NULL }, /* 362 */ - { 0, 0, NULL, NULL }, /* 363 */ - { 0, 0, NULL, NULL }, /* 364 */ - { 0, 0, NULL, NULL }, /* 365 */ - { 0, 0, NULL, NULL }, /* 366 */ - { 0, 0, NULL, NULL }, /* 367 */ - { 0, 0, NULL, NULL }, /* 368 */ - { 0, 0, NULL, NULL }, /* 369 */ - { 0, 0, NULL, NULL }, /* 370 */ - { 0, 0, NULL, NULL }, /* 371 */ - { 0, 0, NULL, NULL }, /* 372 */ - { 0, 0, NULL, NULL }, /* 373 */ - { 0, 0, NULL, NULL }, /* 374 */ - { 0, 0, NULL, NULL }, /* 375 */ - { 0, 0, NULL, NULL }, /* 376 */ - { 0, 0, NULL, NULL }, /* 377 */ - { 0, 0, NULL, NULL }, /* 378 */ - { 0, 0, NULL, NULL }, /* 379 */ - { 0, 0, NULL, NULL }, /* 380 */ - { 0, 0, NULL, NULL }, /* 381 */ - { 0, 0, NULL, NULL }, /* 382 */ - { 0, 0, NULL, NULL }, /* 383 */ - { 0, 0, NULL, NULL }, /* 384 */ - { 0, 0, NULL, NULL }, /* 385 */ - { 0, 0, NULL, NULL }, /* 386 */ - { 0, 0, NULL, NULL }, /* 387 */ - { 0, 0, NULL, NULL }, /* 388 */ - { 0, 0, NULL, NULL }, /* 389 */ - { 0, 0, NULL, NULL }, /* 390 */ - { 0, 0, NULL, NULL }, /* 391 */ - { 0, 0, NULL, NULL }, /* 392 */ - { 0, 0, NULL, NULL }, /* 393 */ - { 0, 0, NULL, NULL }, /* 394 */ - { 0, 0, NULL, NULL }, /* 395 */ - { 0, 0, NULL, NULL }, /* 396 */ - { 0, 0, NULL, NULL }, /* 397 */ - { 0, 0, NULL, NULL }, /* 398 */ - { 0, 0, NULL, NULL }, /* 399 */ - { 0, 0, NULL, NULL }, /* 400 */ - { 0, 0, NULL, NULL }, /* 401 */ - { 0, 0, NULL, NULL }, /* 402 */ - { 0, 0, NULL, NULL }, /* 403 */ - { 0, 0, NULL, NULL }, /* 404 */ - { 0, 0, NULL, NULL }, /* 405 */ - { 0, 0, NULL, NULL }, /* 406 */ - { 0, 0, NULL, NULL }, /* 407 */ - { 0, 0, NULL, NULL }, /* 408 */ - { 0, 0, NULL, NULL }, /* 409 */ - { 0, 0, NULL, NULL }, /* 410 */ - { 0, 0, NULL, NULL }, /* 411 */ - { 0, 0, NULL, NULL }, /* 412 */ - { 0, 0, NULL, NULL }, /* 413 */ - { 0, 0, NULL, NULL }, /* 414 */ - { 0, 0, NULL, NULL }, /* 415 */ - { 0, 0, NULL, NULL }, /* 416 */ - { 0, 0, NULL, NULL }, /* 417 */ - { 0, 0, NULL, NULL }, /* 418 */ - { 0, 0, NULL, NULL }, /* 419 */ - { 0, 0, NULL, NULL }, /* 420 */ - { 0, 0, NULL, NULL }, /* 421 */ - { 0, 0, NULL, NULL }, /* 422 */ - { 0, 0, NULL, NULL }, /* 423 */ - { 0, 0, NULL, NULL }, /* 424 */ - { 0, 0, NULL, NULL }, /* 425 */ - { 0, 0, NULL, NULL }, /* 426 */ - { 0, 0, NULL, NULL }, /* 427 */ - { 0, 0, NULL, NULL }, /* 428 */ - { 0, 0, NULL, NULL }, /* 429 */ - { 0, 0, NULL, NULL }, /* 430 */ - { 0, 0, NULL, NULL }, /* 431 */ - { 0, 0, NULL, NULL }, /* 432 */ - { 0, 0, NULL, NULL }, /* 433 */ - { 0, 0, NULL, NULL }, /* 434 */ - { 0, 0, NULL, NULL }, /* 435 */ - { 0, 0, NULL, NULL }, /* 436 */ - { 0, 0, NULL, NULL }, /* 437 */ - { 0, 0, NULL, NULL }, /* 438 */ - { 0, 0, NULL, NULL }, /* 439 */ - { 0, 0, NULL, NULL }, /* 440 */ - { 0, 0, NULL, NULL }, /* 441 */ - { 0, 0, NULL, NULL }, /* 442 */ - { 0, 0, NULL, NULL }, /* 443 */ - { 0, 0, NULL, NULL }, /* 444 */ - { 0, 0, NULL, NULL }, /* 445 */ - { 0, 0, NULL, NULL }, /* 446 */ - { 0, 0, NULL, NULL }, /* 447 */ - { 0, 0, NULL, NULL }, /* 448 */ - { 0, 0, NULL, NULL }, /* 449 */ - { 0, 0, NULL, NULL }, /* 450 */ - { 0, 0, NULL, NULL }, /* 451 */ - { 0, 0, NULL, NULL }, /* 452 */ - { 0, 0, NULL, NULL }, /* 453 */ - { 0, 0, NULL, NULL }, /* 454 */ - { 0, 0, NULL, NULL }, /* 455 */ - { 0, 0, NULL, NULL }, /* 456 */ - { 0, 0, NULL, NULL }, /* 457 */ - { 0, 0, NULL, NULL }, /* 458 */ - { 0, 0, NULL, NULL }, /* 459 */ - { 0, 0, NULL, NULL }, /* 460 */ - { 0, 0, NULL, NULL }, /* 461 */ - { 0, 0, NULL, NULL }, /* 462 */ - { 0, 0, NULL, NULL }, /* 463 */ - { 0, 0, NULL, NULL }, /* 464 */ - { 0, 0, NULL, NULL }, /* 465 */ - { 0, 0, NULL, NULL }, /* 466 */ - { 0, 0, NULL, NULL }, /* 467 */ - { 0, 0, NULL, NULL }, /* 468 */ - { 0, 0, NULL, NULL }, /* 469 */ - { 0, 0, NULL, NULL }, /* 470 */ - { 0, 0, NULL, NULL }, /* 471 */ - { 0, 0, NULL, NULL }, /* 472 */ - { 0, 0, NULL, NULL }, /* 473 */ - { 0, 0, NULL, NULL }, /* 474 */ - { 0, 0, NULL, NULL }, /* 475 */ - { 0, 0, NULL, NULL }, /* 476 */ - { 0, 0, NULL, NULL }, /* 477 */ - { 0, 0, NULL, NULL }, /* 478 */ - { 0, 0, NULL, NULL }, /* 479 */ - { 0, 0, NULL, NULL }, /* 480 */ - { 0, 0, NULL, NULL }, /* 481 */ - { 0, 0, NULL, NULL }, /* 482 */ - { 0, 0, NULL, NULL }, /* 483 */ - { 0, 0, NULL, NULL }, /* 484 */ - { 0, 0, NULL, NULL }, /* 485 */ - { 0, 0, NULL, NULL }, /* 486 */ - { 0, 0, NULL, NULL }, /* 487 */ - { 0, 0, NULL, NULL }, /* 488 */ - { 0, 0, NULL, NULL }, /* 489 */ - { 0, 0, NULL, NULL }, /* 490 */ - { 0, 0, NULL, NULL }, /* 491 */ - { 0, 0, NULL, NULL }, /* 492 */ - { 0, 0, NULL, NULL }, /* 493 */ - { 0, 0, NULL, NULL }, /* 494 */ - { 0, 0, NULL, NULL }, /* 495 */ - { 0, 0, NULL, NULL }, /* 496 */ - { 0, 0, NULL, NULL }, /* 497 */ - { 0, 0, NULL, NULL }, /* 498 */ - { 0, 0, NULL, NULL }, /* 499 */ - { 0, 0, NULL, NULL }, /* 500 */ - { 0, 0, NULL, NULL }, /* 501 */ - { 0, 0, NULL, NULL }, /* 502 */ - { 0, 0, NULL, NULL }, /* 503 */ - { 0, 0, NULL, NULL }, /* 504 */ - { 0, 0, NULL, NULL }, /* 505 */ - { 0, 0, NULL, NULL }, /* 506 */ - { 0, 0, NULL, NULL }, /* 507 */ - { 0, 0, NULL, NULL }, /* 508 */ - { 0, 0, NULL, NULL }, /* 509 */ - { 0, 0, NULL, NULL }, /* 510 */ - { 0, 0, NULL, NULL }, /* 511 */ - { 0, 0, NULL, NULL }, /* 512 */ - { 0, 0, NULL, NULL }, /* 513 */ - { 0, 0, NULL, NULL }, /* 514 */ - { 0, 0, NULL, NULL }, /* 515 */ - { 0, 0, NULL, NULL }, /* 516 */ - { 0, 0, NULL, NULL }, /* 517 */ - { 0, 0, NULL, NULL }, /* 518 */ - { 0, 0, NULL, NULL }, /* 519 */ - { 0, 0, NULL, NULL }, /* 520 */ - { 0, 0, NULL, NULL }, /* 521 */ - { 0, 0, NULL, NULL }, /* 522 */ - { 0, 0, NULL, NULL }, /* 523 */ - { 0, 0, NULL, NULL }, /* 524 */ - { 0, 0, NULL, NULL }, /* 525 */ - { 0, 0, NULL, NULL }, /* 526 */ - { 0, 0, NULL, NULL }, /* 527 */ - { 0, 0, NULL, NULL }, /* 528 */ - { 0, 0, NULL, NULL }, /* 529 */ - { 0, 0, NULL, NULL }, /* 530 */ - { 0, 0, NULL, NULL }, /* 531 */ - { 0, 0, NULL, NULL }, /* 532 */ - { 0, 0, NULL, NULL }, /* 533 */ - { 0, 0, NULL, NULL }, /* 534 */ - { 0, 0, NULL, NULL }, /* 535 */ - { 0, 0, NULL, NULL }, /* 536 */ - { 0, 0, NULL, NULL }, /* 537 */ - { 0, 0, NULL, NULL }, /* 538 */ - { 0, 0, NULL, NULL }, /* 539 */ - { 0, 0, NULL, NULL }, /* 540 */ - { 0, 0, NULL, NULL }, /* 541 */ - { 0, 0, NULL, NULL }, /* 542 */ - { 0, 0, NULL, NULL }, /* 543 */ - { 0, 0, NULL, NULL }, /* 544 */ - { 0, 0, NULL, NULL }, /* 545 */ - { 0, 0, NULL, NULL }, /* 546 */ - { 0, 0, NULL, NULL }, /* 547 */ - { 0, 0, NULL, NULL }, /* 548 */ - { 0, 0, NULL, NULL }, /* 549 */ - { 0, 0, NULL, NULL }, /* 550 */ - { 0, 0, NULL, NULL }, /* 551 */ - { 0, 0, NULL, NULL }, /* 552 */ - { 0, 0, NULL, NULL }, /* 553 */ - { 0, 0, NULL, NULL }, /* 554 */ - { 0, 0, NULL, NULL }, /* 555 */ - { 0, 0, NULL, NULL }, /* 556 */ - { 0, 0, NULL, NULL }, /* 557 */ - { 0, 0, NULL, NULL }, /* 558 */ - { 0, 0, NULL, NULL }, /* 559 */ - { 0, 0, NULL, NULL }, /* 560 */ - { 0, 0, NULL, NULL }, /* 561 */ - { 0, 0, NULL, NULL }, /* 562 */ - { 0, 0, NULL, NULL }, /* 563 */ - { 0, 0, NULL, NULL }, /* 564 */ - { 0, 0, NULL, NULL }, /* 565 */ - { 0, 0, NULL, NULL }, /* 566 */ - { 0, 0, NULL, NULL }, /* 567 */ - { 0, 0, NULL, NULL }, /* 568 */ - { 0, 0, NULL, NULL }, /* 569 */ - { 0, 0, NULL, NULL }, /* 570 */ - { 0, 0, NULL, NULL }, /* 571 */ - { 0, 0, NULL, NULL }, /* 572 */ - { 0, 0, NULL, NULL }, /* 573 */ - { 0, 0, NULL, NULL }, /* 574 */ - { 0, 0, NULL, NULL }, /* 575 */ - { 0, 0, NULL, NULL }, /* 576 */ - { 0, 0, NULL, NULL }, /* 577 */ - { 0, 0, NULL, NULL }, /* 578 */ - { 0, 0, NULL, NULL }, /* 579 */ - { 0, 0, NULL, NULL }, /* 580 */ - { 0, 0, NULL, NULL }, /* 581 */ - { 0, 0, NULL, NULL }, /* 582 */ - { 0, 0, NULL, NULL }, /* 583 */ - { 0, 0, NULL, NULL }, /* 584 */ - { 0, 0, NULL, NULL }, /* 585 */ - { 0, 0, NULL, NULL }, /* 586 */ - { 0, 0, NULL, NULL }, /* 587 */ - { 0, 0, NULL, NULL }, /* 588 */ - { 0, 0, NULL, NULL }, /* 589 */ - { 0, 0, NULL, NULL }, /* 590 */ - { 0, 0, NULL, NULL }, /* 591 */ - { 0, 0, NULL, NULL }, /* 592 */ - { 0, 0, NULL, NULL }, /* 593 */ - { 0, 0, NULL, NULL }, /* 594 */ - { 0, 0, NULL, NULL }, /* 595 */ - { 0, 0, NULL, NULL }, /* 596 */ - { 0, 0, NULL, NULL }, /* 597 */ - { 0, 0, NULL, NULL }, /* 598 */ - { 0, 0, NULL, NULL }, /* 599 */ - { 0, 0, NULL, NULL }, /* 600 */ - { 0, 0, NULL, NULL }, /* 601 */ - { 0, 0, NULL, NULL }, /* 602 */ - { 0, 0, NULL, NULL }, /* 603 */ - { 0, 0, NULL, NULL }, /* 604 */ - { 0, 0, NULL, NULL }, /* 605 */ - { 0, 0, NULL, NULL }, /* 606 */ - { 0, 0, NULL, NULL }, /* 607 */ - { 0, 0, NULL, NULL }, /* 608 */ - { 0, 0, NULL, NULL }, /* 609 */ - { 0, 0, NULL, NULL }, /* 610 */ - { 0, 0, NULL, NULL }, /* 611 */ - { 0, 0, NULL, NULL }, /* 612 */ - { 0, 0, NULL, NULL }, /* 613 */ - { 0, 0, NULL, NULL }, /* 614 */ - { 0, 0, NULL, NULL }, /* 615 */ - { 0, 0, NULL, NULL }, /* 616 */ - { 0, 0, NULL, NULL }, /* 617 */ - { 0, 0, NULL, NULL }, /* 618 */ - { 0, 0, NULL, NULL }, /* 619 */ - { 0, 0, NULL, NULL }, /* 620 */ - { 0, 0, NULL, NULL }, /* 621 */ - { 0, 0, NULL, NULL }, /* 622 */ - { 0, 0, NULL, NULL }, /* 623 */ - { 0, 0, NULL, NULL }, /* 624 */ - { 0, 0, NULL, NULL }, /* 625 */ - { 0, 0, NULL, NULL }, /* 626 */ - { 0, 0, NULL, NULL }, /* 627 */ - { 0, 0, NULL, NULL }, /* 628 */ - { 0, 0, NULL, NULL }, /* 629 */ - { 0, 0, NULL, NULL }, /* 630 */ - { 0, 0, NULL, NULL }, /* 631 */ - { 0, 0, NULL, NULL }, /* 632 */ - { 0, 0, NULL, NULL }, /* 633 */ - { 0, 0, NULL, NULL }, /* 634 */ - { 0, 0, NULL, NULL }, /* 635 */ - { 0, 0, NULL, NULL }, /* 636 */ - { 0, 0, NULL, NULL }, /* 637 */ - { 0, 0, NULL, NULL }, /* 638 */ - { 0, 0, NULL, NULL }, /* 639 */ - { 0, 0, NULL, NULL }, /* 640 */ - { 0, 0, NULL, NULL }, /* 641 */ - { 0, 0, NULL, NULL }, /* 642 */ - { 0, 0, NULL, NULL }, /* 643 */ - { 0, 0, NULL, NULL }, /* 644 */ - { 0, 0, NULL, NULL }, /* 645 */ - { 0, 0, NULL, NULL }, /* 646 */ - { 0, 0, NULL, NULL }, /* 647 */ - { 0, 0, NULL, NULL }, /* 648 */ - { 0, 0, NULL, NULL }, /* 649 */ - { 0, 0, NULL, NULL }, /* 650 */ - { 0, 0, NULL, NULL }, /* 651 */ - { 0, 0, NULL, NULL }, /* 652 */ - { 0, 0, NULL, NULL }, /* 653 */ - { 0, 0, NULL, NULL }, /* 654 */ - { 0, 0, NULL, NULL }, /* 655 */ - { 0, 0, NULL, NULL }, /* 656 */ - { 0, 0, NULL, NULL }, /* 657 */ - { 0, 0, NULL, NULL }, /* 658 */ - { 0, 0, NULL, NULL }, /* 659 */ - { 0, 0, NULL, NULL }, /* 660 */ - { 0, 0, NULL, NULL }, /* 661 */ - { 0, 0, NULL, NULL }, /* 662 */ - { 0, 0, NULL, NULL }, /* 663 */ - { 0, 0, NULL, NULL }, /* 664 */ - { 0, 0, NULL, NULL }, /* 665 */ - { 0, 0, NULL, NULL }, /* 666 */ - { 0, 0, NULL, NULL }, /* 667 */ - { 0, 0, NULL, NULL }, /* 668 */ - { 0, 0, NULL, NULL }, /* 669 */ - { 0, 0, NULL, NULL }, /* 670 */ - { 0, 0, NULL, NULL }, /* 671 */ - { 0, 0, NULL, NULL }, /* 672 */ - { 0, 0, NULL, NULL }, /* 673 */ - { 0, 0, NULL, NULL }, /* 674 */ - { 0, 0, NULL, NULL }, /* 675 */ - { 0, 0, NULL, NULL }, /* 676 */ - { 0, 0, NULL, NULL }, /* 677 */ - { 0, 0, NULL, NULL }, /* 678 */ - { 0, 0, NULL, NULL }, /* 679 */ - { 0, 0, NULL, NULL }, /* 680 */ - { 0, 0, NULL, NULL }, /* 681 */ - { 0, 0, NULL, NULL }, /* 682 */ - { 0, 0, NULL, NULL }, /* 683 */ - { 0, 0, NULL, NULL }, /* 684 */ - { 0, 0, NULL, NULL }, /* 685 */ - { 0, 0, NULL, NULL }, /* 686 */ - { 0, 0, NULL, NULL }, /* 687 */ - { 0, 0, NULL, NULL }, /* 688 */ - { 0, 0, NULL, NULL }, /* 689 */ - { 0, 0, NULL, NULL }, /* 690 */ - { 0, 0, NULL, NULL }, /* 691 */ - { 0, 0, NULL, NULL }, /* 692 */ - { 0, 0, NULL, NULL }, /* 693 */ - { 0, 0, NULL, NULL }, /* 694 */ - { 0, 0, NULL, NULL }, /* 695 */ - { 0, 0, NULL, NULL }, /* 696 */ - { 0, 0, NULL, NULL }, /* 697 */ - { 0, 0, NULL, NULL }, /* 698 */ - { 0, 0, NULL, NULL }, /* 699 */ - { 0, 0, NULL, NULL }, /* 700 */ - { 0, 0, NULL, NULL }, /* 701 */ - { 0, 0, NULL, NULL }, /* 702 */ - { 0, 0, NULL, NULL }, /* 703 */ - { 0, 0, NULL, NULL }, /* 704 */ - { 0, 0, NULL, NULL }, /* 705 */ - { 0, 0, NULL, NULL }, /* 706 */ - { 0, 0, NULL, NULL }, /* 707 */ - { 0, 0, NULL, NULL }, /* 708 */ - { 0, 0, NULL, NULL }, /* 709 */ - { 0, 0, NULL, NULL }, /* 710 */ - { 0, 0, NULL, NULL }, /* 711 */ - { 0, 0, NULL, NULL }, /* 712 */ - { 0, 0, NULL, NULL }, /* 713 */ - { 0, 0, NULL, NULL }, /* 714 */ - { 0, 0, NULL, NULL }, /* 715 */ - { 0, 0, NULL, NULL }, /* 716 */ - { 0, 0, NULL, NULL }, /* 717 */ - { 0, 0, NULL, NULL }, /* 718 */ - { 0, 0, NULL, NULL }, /* 719 */ - { 0, 0, NULL, NULL }, /* 720 */ - { 0, 0, NULL, NULL }, /* 721 */ - { 0, 0, NULL, NULL }, /* 722 */ - { 0, 0, NULL, NULL }, /* 723 */ - { 0, 0, NULL, NULL }, /* 724 */ - { 0, 0, NULL, NULL }, /* 725 */ - { 0, 0, NULL, NULL }, /* 726 */ - { 0, 0, NULL, NULL }, /* 727 */ - { 0, 0, NULL, NULL }, /* 728 */ - { 0, 0, NULL, NULL }, /* 729 */ - { 0, 0, NULL, NULL }, /* 730 */ - { 0, 0, NULL, NULL }, /* 731 */ - { 0, 0, NULL, NULL }, /* 732 */ - { 0, 0, NULL, NULL }, /* 733 */ - { 0, 0, NULL, NULL }, /* 734 */ - { 0, 0, NULL, NULL }, /* 735 */ - { 0, 0, NULL, NULL }, /* 736 */ - { 0, 0, NULL, NULL }, /* 737 */ - { 0, 0, NULL, NULL }, /* 738 */ - { 0, 0, NULL, NULL }, /* 739 */ - { 0, 0, NULL, NULL }, /* 740 */ - { 0, 0, NULL, NULL }, /* 741 */ - { 0, 0, NULL, NULL }, /* 742 */ - { 0, 0, NULL, NULL }, /* 743 */ - { 0, 0, NULL, NULL }, /* 744 */ - { 0, 0, NULL, NULL }, /* 745 */ - { 0, 0, NULL, NULL }, /* 746 */ - { 0, 0, NULL, NULL }, /* 747 */ - { 0, 0, NULL, NULL }, /* 748 */ - { 0, 0, NULL, NULL }, /* 749 */ - { 0, 0, NULL, NULL }, /* 750 */ - { 0, 0, NULL, NULL }, /* 751 */ - { 0, 0, NULL, NULL }, /* 752 */ - { 0, 0, NULL, NULL }, /* 753 */ - { 0, 0, NULL, NULL }, /* 754 */ - { 0, 0, NULL, NULL }, /* 755 */ - { 0, 0, NULL, NULL }, /* 756 */ - { 0, 0, NULL, NULL }, /* 757 */ - { 0, 0, NULL, NULL }, /* 758 */ - { 0, 0, NULL, NULL }, /* 759 */ - { 0, 0, NULL, NULL }, /* 760 */ - { 0, 0, NULL, NULL }, /* 761 */ - { 0, 0, NULL, NULL }, /* 762 */ - { 0, 0, NULL, NULL }, /* 763 */ - { 0, 0, NULL, NULL }, /* 764 */ - { 0, 0, NULL, NULL }, /* 765 */ - { 0, 0, NULL, NULL }, /* 766 */ - { 0, 0, NULL, NULL }, /* 767 */ - { 0, 0, NULL, NULL }, /* 768 */ - { 0, 0, NULL, NULL }, /* 769 */ - { 0, 0, NULL, NULL }, /* 770 */ - { 0, 0, NULL, NULL }, /* 771 */ - { 0, 0, NULL, NULL }, /* 772 */ - { 0, 0, NULL, NULL }, /* 773 */ - { 0, 0, NULL, NULL }, /* 774 */ - { 0, 0, NULL, NULL }, /* 775 */ - { 0, 0, NULL, NULL }, /* 776 */ - { 0, 0, NULL, NULL }, /* 777 */ - { 0, 0, NULL, NULL }, /* 778 */ - { 0, 0, NULL, NULL }, /* 779 */ - { 0, 0, NULL, NULL }, /* 780 */ - { 0, 0, NULL, NULL }, /* 781 */ - { 0, 0, NULL, NULL }, /* 782 */ - { 0, 0, NULL, NULL }, /* 783 */ - { 0, 0, NULL, NULL }, /* 784 */ - { 0, 0, NULL, NULL }, /* 785 */ - { 0, 0, NULL, NULL }, /* 786 */ - { 0, 0, NULL, NULL }, /* 787 */ - { 0, 0, NULL, NULL }, /* 788 */ - { 0, 0, NULL, NULL }, /* 789 */ - { 0, 0, NULL, NULL }, /* 790 */ - { 0, 0, NULL, NULL }, /* 791 */ - { 0, 0, NULL, NULL }, /* 792 */ - { 0, 0, NULL, NULL }, /* 793 */ - { 0, 0, NULL, NULL }, /* 794 */ - { 0, 0, NULL, NULL }, /* 795 */ - { 0, 0, NULL, NULL }, /* 796 */ - { 0, 0, NULL, NULL }, /* 797 */ - { 0, 0, NULL, NULL }, /* 798 */ - { 0, 0, NULL, NULL }, /* 799 */ - { 0, 0, NULL, NULL }, /* 800 */ - { 0, 0, NULL, NULL }, /* 801 */ - { 0, 0, NULL, NULL }, /* 802 */ - { 0, 0, NULL, NULL }, /* 803 */ - { 0, 0, NULL, NULL }, /* 804 */ - { 0, 0, NULL, NULL }, /* 805 */ - { 0, 0, NULL, NULL }, /* 806 */ - { 0, 0, NULL, NULL }, /* 807 */ - { 0, 0, NULL, NULL }, /* 808 */ - { 0, 0, NULL, NULL }, /* 809 */ - { 0, 0, NULL, NULL }, /* 810 */ - { 0, 0, NULL, NULL }, /* 811 */ - { 0, 0, NULL, NULL }, /* 812 */ - { 0, 0, NULL, NULL }, /* 813 */ - { 0, 0, NULL, NULL }, /* 814 */ - { 0, 0, NULL, NULL }, /* 815 */ - { 0, 0, NULL, NULL }, /* 816 */ - { 0, 0, NULL, NULL }, /* 817 */ - { 0, 0, NULL, NULL }, /* 818 */ - { 0, 0, NULL, NULL }, /* 819 */ - { 0, 0, NULL, NULL }, /* 820 */ - { 0, 0, NULL, NULL }, /* 821 */ - { 0, 0, NULL, NULL }, /* 822 */ - { 0, 0, NULL, NULL }, /* 823 */ - { 0, 0, NULL, NULL }, /* 824 */ - { 0, 0, NULL, NULL }, /* 825 */ - { 0, 0, NULL, NULL }, /* 826 */ - { 0, 0, NULL, NULL }, /* 827 */ - { 0, 0, NULL, NULL }, /* 828 */ - { 0, 0, NULL, NULL }, /* 829 */ - { 0, 0, NULL, NULL }, /* 830 */ - { 0, 0, NULL, NULL }, /* 831 */ - { 0, 0, NULL, NULL }, /* 832 */ - { 0, 0, NULL, NULL }, /* 833 */ - { 0, 0, NULL, NULL }, /* 834 */ - { 0, 0, NULL, NULL }, /* 835 */ - { 0, 0, NULL, NULL }, /* 836 */ - { 0, 0, NULL, NULL }, /* 837 */ - { 0, 0, NULL, NULL }, /* 838 */ - { 0, 0, NULL, NULL }, /* 839 */ - { 0, 0, NULL, NULL }, /* 840 */ - { 0, 0, NULL, NULL }, /* 841 */ - { 0, 0, NULL, NULL }, /* 842 */ - { 0, 0, NULL, NULL }, /* 843 */ - { 0, 0, NULL, NULL }, /* 844 */ - { 0, 0, NULL, NULL }, /* 845 */ - { 0, 0, NULL, NULL }, /* 846 */ - { 0, 0, NULL, NULL }, /* 847 */ - { 0, 0, NULL, NULL }, /* 848 */ - { 0, 0, NULL, NULL }, /* 849 */ - { 0, 0, NULL, NULL }, /* 850 */ - { 0, 0, NULL, NULL }, /* 851 */ - { 0, 0, NULL, NULL }, /* 852 */ - { 0, 0, NULL, NULL }, /* 853 */ - { 0, 0, NULL, NULL }, /* 854 */ - { 0, 0, NULL, NULL }, /* 855 */ - { 0, 0, NULL, NULL }, /* 856 */ - { 0, 0, NULL, NULL }, /* 857 */ - { 0, 0, NULL, NULL }, /* 858 */ - { 0, 0, NULL, NULL }, /* 859 */ - { 0, 0, NULL, NULL }, /* 860 */ - { 0, 0, NULL, NULL }, /* 861 */ - { 0, 0, NULL, NULL }, /* 862 */ - { 0, 0, NULL, NULL }, /* 863 */ - { 0, 0, NULL, NULL }, /* 864 */ - { 0, 0, NULL, NULL }, /* 865 */ - { 0, 0, NULL, NULL }, /* 866 */ - { 0, 0, NULL, NULL }, /* 867 */ - { 0, 0, NULL, NULL }, /* 868 */ - { 0, 0, NULL, NULL }, /* 869 */ - { 0, 0, NULL, NULL }, /* 870 */ - { 0, 0, NULL, NULL }, /* 871 */ - { 0, 0, NULL, NULL }, /* 872 */ - { 0, 0, NULL, NULL }, /* 873 */ - { 0, 0, NULL, NULL }, /* 874 */ - { 0, 0, NULL, NULL }, /* 875 */ - { 0, 0, NULL, NULL }, /* 876 */ - { 0, 0, NULL, NULL }, /* 877 */ - { 0, 0, NULL, NULL }, /* 878 */ - { 0, 0, NULL, NULL }, /* 879 */ - { 0, 0, NULL, NULL }, /* 880 */ - { 0, 0, NULL, NULL }, /* 881 */ - { 0, 0, NULL, NULL }, /* 882 */ - { 0, 0, NULL, NULL }, /* 883 */ - { 0, 0, NULL, NULL }, /* 884 */ - { 0, 0, NULL, NULL }, /* 885 */ - { 0, 0, NULL, NULL }, /* 886 */ - { 0, 0, NULL, NULL }, /* 887 */ - { 0, 0, NULL, NULL }, /* 888 */ - { 0, 0, NULL, NULL }, /* 889 */ - { 0, 0, NULL, NULL }, /* 890 */ - { 0, 0, NULL, NULL }, /* 891 */ - { 0, 0, NULL, NULL }, /* 892 */ - { 0, 0, NULL, NULL }, /* 893 */ - { 0, 0, NULL, NULL }, /* 894 */ - { 0, 0, NULL, NULL }, /* 895 */ - { 0, 0, NULL, NULL }, /* 896 */ - { 0, 0, NULL, NULL }, /* 897 */ - { 0, 0, NULL, NULL }, /* 898 */ - { 0, 0, NULL, NULL }, /* 899 */ - { 0, 0, NULL, NULL }, /* 900 */ - { 0, 0, NULL, NULL }, /* 901 */ - { 0, 0, NULL, NULL }, /* 902 */ - { 0, 0, NULL, NULL }, /* 903 */ - { 0, 0, NULL, NULL }, /* 904 */ - { 0, 0, NULL, NULL }, /* 905 */ - { 0, 0, NULL, NULL }, /* 906 */ - { 0, 0, NULL, NULL }, /* 907 */ - { 0, 0, NULL, NULL }, /* 908 */ - { 0, 0, NULL, NULL }, /* 909 */ - { 0, 0, NULL, NULL }, /* 910 */ - { 0, 0, NULL, NULL }, /* 911 */ - { 0, 0, NULL, NULL }, /* 912 */ - { 0, 0, NULL, NULL }, /* 913 */ - { 0, 0, NULL, NULL }, /* 914 */ - { 0, 0, NULL, NULL }, /* 915 */ - { 0, 0, NULL, NULL }, /* 916 */ - { 0, 0, NULL, NULL }, /* 917 */ - { 0, 0, NULL, NULL }, /* 918 */ - { 0, 0, NULL, NULL }, /* 919 */ - { 0, 0, NULL, NULL }, /* 920 */ - { 0, 0, NULL, NULL }, /* 921 */ - { 0, 0, NULL, NULL }, /* 922 */ - { 0, 0, NULL, NULL }, /* 923 */ - { 0, 0, NULL, NULL }, /* 924 */ - { 0, 0, NULL, NULL }, /* 925 */ - { 0, 0, NULL, NULL }, /* 926 */ - { 0, 0, NULL, NULL }, /* 927 */ - { 0, 0, NULL, NULL }, /* 928 */ - { 0, 0, NULL, NULL }, /* 929 */ - { 0, 0, NULL, NULL }, /* 930 */ - { 0, 0, NULL, NULL }, /* 931 */ - { 0, 0, NULL, NULL }, /* 932 */ - { 0, 0, NULL, NULL }, /* 933 */ - { 0, 0, NULL, NULL }, /* 934 */ - { 0, 0, NULL, NULL }, /* 935 */ - { 0, 0, NULL, NULL }, /* 936 */ - { 0, 0, NULL, NULL }, /* 937 */ - { 0, 0, NULL, NULL }, /* 938 */ - { 0, 0, NULL, NULL }, /* 939 */ - { 0, 0, NULL, NULL }, /* 940 */ - { 0, 0, NULL, NULL }, /* 941 */ - { 0, 0, NULL, NULL }, /* 942 */ - { 0, 0, NULL, NULL }, /* 943 */ - { 0, 0, NULL, NULL }, /* 944 */ - { 0, 0, NULL, NULL }, /* 945 */ - { 0, 0, NULL, NULL }, /* 946 */ - { 0, 0, NULL, NULL }, /* 947 */ - { 0, 0, NULL, NULL }, /* 948 */ - { 0, 0, NULL, NULL }, /* 949 */ - { 0, 0, NULL, NULL }, /* 950 */ - { 0, 0, NULL, NULL }, /* 951 */ - { 0, 0, NULL, NULL }, /* 952 */ - { 0, 0, NULL, NULL }, /* 953 */ - { 0, 0, NULL, NULL }, /* 954 */ - { 0, 0, NULL, NULL }, /* 955 */ - { 0, 0, NULL, NULL }, /* 956 */ - { 0, 0, NULL, NULL }, /* 957 */ - { 0, 0, NULL, NULL }, /* 958 */ - { 0, 0, NULL, NULL }, /* 959 */ - { 0, 0, NULL, NULL }, /* 960 */ - { 0, 0, NULL, NULL }, /* 961 */ - { 0, 0, NULL, NULL }, /* 962 */ - { 0, 0, NULL, NULL }, /* 963 */ - { 0, 0, NULL, NULL }, /* 964 */ - { 0, 0, NULL, NULL }, /* 965 */ - { 0, 0, NULL, NULL }, /* 966 */ - { 0, 0, NULL, NULL }, /* 967 */ - { 0, 0, NULL, NULL }, /* 968 */ - { 0, 0, NULL, NULL }, /* 969 */ - { 0, 0, NULL, NULL }, /* 970 */ - { 0, 0, NULL, NULL }, /* 971 */ - { 0, 0, NULL, NULL }, /* 972 */ - { 0, 0, NULL, NULL }, /* 973 */ - { 0, 0, NULL, NULL }, /* 974 */ - { 0, 0, NULL, NULL }, /* 975 */ - { 0, 0, NULL, NULL }, /* 976 */ - { 0, 0, NULL, NULL }, /* 977 */ - { 0, 0, NULL, NULL }, /* 978 */ - { 0, 0, NULL, NULL }, /* 979 */ - { 0, 0, NULL, NULL }, /* 980 */ - { 0, 0, NULL, NULL }, /* 981 */ - { 0, 0, NULL, NULL }, /* 982 */ - { 0, 0, NULL, NULL }, /* 983 */ - { 0, 0, NULL, NULL }, /* 984 */ - { 0, 0, NULL, NULL }, /* 985 */ - { 0, 0, NULL, NULL }, /* 986 */ - { 0, 0, NULL, NULL }, /* 987 */ - { 0, 0, NULL, NULL }, /* 988 */ - { 0, 0, NULL, NULL }, /* 989 */ - { 0, 0, NULL, NULL }, /* 990 */ - { 0, 0, NULL, NULL }, /* 991 */ - { 0, 0, NULL, NULL }, /* 992 */ - { 0, 0, NULL, NULL }, /* 993 */ - { 0, 0, NULL, NULL }, /* 994 */ - { 0, 0, NULL, NULL }, /* 995 */ - { 0, 0, NULL, NULL }, /* 996 */ - { 0, 0, NULL, NULL }, /* 997 */ - { 0, 0, NULL, NULL }, /* 998 */ - { 0, 0, NULL, NULL }, /* 999 */ /* end of SVR4 */ - { 0, 0, printargs, "sysv_syscall" }, /* 1000 */ /* start of SYSV */ - { 0, 0, printargs, "sysv_exit" }, /* 1001 */ - { 0, 0, printargs, "sysv_fork" }, /* 1002 */ - { 0, 0, printargs, "sysv_read" }, /* 1003 */ - { 0, 0, printargs, "sysv_write" }, /* 1004 */ - { 0, 0, printargs, "sysv_open" }, /* 1005 */ - { 0, 0, printargs, "sysv_close" }, /* 1006 */ - { 0, 0, printargs, "sysv_wait" }, /* 1007 */ - { 0, 0, printargs, "sysv_creat" }, /* 1008 */ - { 0, 0, printargs, "sysv_link" }, /* 1009 */ - { 0, 0, printargs, "sysv_unlink" }, /* 1010 */ - { 0, 0, printargs, "sysv_execv" }, /* 1011 */ - { 0, 0, printargs, "sysv_chdir" }, /* 1012 */ - { 0, 0, printargs, "sysv_time" }, /* 1013 */ - { 0, 0, printargs, "sysv_mknod" }, /* 1014 */ - { 0, 0, printargs, "sysv_chmod" }, /* 1015 */ - { 0, 0, printargs, "sysv_chown" }, /* 1016 */ - { 0, 0, printargs, "sysv_brk" }, /* 1017 */ - { 0, 0, printargs, "sysv_stat" }, /* 1018 */ - { 0, 0, printargs, "sysv_lseek" }, /* 1019 */ - { 0, 0, printargs, "sysv_getpid" }, /* 1020 */ - { 0, 0, printargs, "sysv_mount" }, /* 1021 */ - { 0, 0, printargs, "sysv_umount" }, /* 1022 */ - { 0, 0, printargs, "sysv_setuid" }, /* 1023 */ - { 0, 0, printargs, "sysv_getuid" }, /* 1024 */ - { 0, 0, printargs, "sysv_stime" }, /* 1025 */ - { 0, 0, printargs, "sysv_ptrace" }, /* 1026 */ - { 0, 0, printargs, "sysv_alarm" }, /* 1027 */ - { 0, 0, printargs, "sysv_fstat" }, /* 1028 */ - { 0, 0, printargs, "sysv_pause" }, /* 1029 */ - { 0, 0, printargs, "sysv_utime" }, /* 1030 */ - { 0, 0, printargs, "sysv_stty" }, /* 1031 */ - { 0, 0, printargs, "sysv_gtty" }, /* 1032 */ - { 0, 0, printargs, "sysv_access" }, /* 1033 */ - { 0, 0, printargs, "sysv_nice" }, /* 1034 */ - { 0, 0, printargs, "sysv_statfs" }, /* 1035 */ - { 0, 0, printargs, "sysv_sync" }, /* 1036 */ - { 0, 0, printargs, "sysv_kill" }, /* 1037 */ - { 0, 0, printargs, "sysv_fstatfs" }, /* 1038 */ - { 0, 0, printargs, "sysv_setpgrp" }, /* 1039 */ - { 0, 0, printargs, "sysv_syssgi" }, /* 1040 */ - { 0, 0, printargs, "sysv_dup" }, /* 1041 */ - { 0, 0, printargs, "sysv_pipe" }, /* 1042 */ - { 0, 0, printargs, "sysv_times" }, /* 1043 */ - { 0, 0, printargs, "sysv_profil" }, /* 1044 */ - { 0, 0, printargs, "sysv_plock" }, /* 1045 */ - { 0, 0, printargs, "sysv_setgid" }, /* 1046 */ - { 0, 0, printargs, "sysv_getgid" }, /* 1047 */ - { 0, 0, printargs, "sysv_sig" }, /* 1048 */ - { 0, 0, printargs, "sysv_msgsys" }, /* 1049 */ - { 0, 0, printargs, "sysv_sysmips" }, /* 1050 */ - { 0, 0, printargs, "sysv_acct" }, /* 1051 */ - { 0, 0, printargs, "sysv_shmsys" }, /* 1052 */ - { 0, 0, printargs, "sysv_semsys" }, /* 1053 */ - { 0, 0, printargs, "sysv_ioctl" }, /* 1054 */ - { 0, 0, printargs, "sysv_uadmin" }, /* 1055 */ - { 0, 0, printargs, "sysv_sysmp" }, /* 1056 */ - { 0, 0, printargs, "sysv_utssys" }, /* 1057 */ - { 0, 0, NULL, NULL , }, /* 1058 */ - { 0, 0, printargs, "sysv_execve" }, /* 1059 */ - { 0, 0, printargs, "sysv_umask" }, /* 1060 */ - { 0, 0, printargs, "sysv_chroot" }, /* 1061 */ - { 0, 0, printargs, "sysv_fcntl" }, /* 1062 */ - { 0, 0, printargs, "sysv_ulimit" }, /* 1063 */ - { 0, 0, NULL, NULL , }, /* 1064 */ - { 0, 0, NULL, NULL , }, /* 1065 */ - { 0, 0, NULL, NULL , }, /* 1066 */ - { 0, 0, NULL, NULL , }, /* 1067 */ - { 0, 0, NULL, NULL , }, /* 1068 */ - { 0, 0, NULL, NULL , }, /* 1069 */ - { 0, 0, printargs, "sysv_advfs" }, /* 1070 */ - { 0, 0, printargs, "sysv_unadvfs" }, /* 1071 */ - { 0, 0, printargs, "sysv_rmount" }, /* 1072 */ - { 0, 0, printargs, "sysv_rumount" }, /* 1073 */ - { 0, 0, printargs, "sysv_rfstart" }, /* 1074 */ - { 0, 0, printargs, "sysv_getrlimit64" }, /* 1075 */ - { 0, 0, printargs, "sysv_setrlimit64" }, /* 1076 */ - { 0, 0, printargs, "sysv_nanosleep" }, /* 1077 */ - { 0, 0, printargs, "sysv_lseek64" }, /* 1078 */ - { 0, 0, printargs, "sysv_rmdir" }, /* 1079 */ - { 0, 0, printargs, "sysv_mkdir" }, /* 1080 */ - { 0, 0, printargs, "sysv_getdents" }, /* 1081 */ - { 0, 0, printargs, "sysv_sginap" }, /* 1082 */ - { 0, 0, printargs, "sysv_sgikopt" }, /* 1083 */ - { 0, 0, printargs, "sysv_sysfs" }, /* 1084 */ - { 0, 0, printargs, "sysv_getmsg" }, /* 1085 */ - { 0, 0, printargs, "sysv_putmsg" }, /* 1086 */ - { 0, 0, printargs, "sysv_poll" }, /* 1087 */ - { 0, 0, printargs, "sysv_sigreturn" }, /* 1088 */ - { 0, 0, printargs, "sysv_accept" }, /* 1089 */ - { 0, 0, printargs, "sysv_bind" }, /* 1090 */ - { 0, 0, printargs, "sysv_connect" }, /* 1091 */ - { 0, 0, printargs, "sysv_gethostid" }, /* 1092 */ - { 0, 0, printargs, "sysv_getpeername" }, /* 1093 */ - { 0, 0, printargs, "sysv_getsockname" }, /* 1094 */ - { 0, 0, printargs, "sysv_getsockopt" }, /* 1095 */ - { 0, 0, printargs, "sysv_listen" }, /* 1096 */ - { 0, 0, printargs, "sysv_recv" }, /* 1097 */ - { 0, 0, printargs, "sysv_recvfrom" }, /* 1098 */ - { 0, 0, printargs, "sysv_recvmsg" }, /* 1099 */ - { 0, 0, printargs, "sysv_select" }, /* 1100 */ - { 0, 0, printargs, "sysv_send" }, /* 1101 */ - { 0, 0, printargs, "sysv_sendmsg" }, /* 1102 */ - { 0, 0, printargs, "sysv_sendto" }, /* 1103 */ - { 0, 0, printargs, "sysv_sethostid" }, /* 1104 */ - { 0, 0, printargs, "sysv_setsockopt" }, /* 1105 */ - { 0, 0, printargs, "sysv_shutdown" }, /* 1106 */ - { 0, 0, printargs, "sysv_socket" }, /* 1107 */ - { 0, 0, printargs, "sysv_gethostname" }, /* 1108 */ - { 0, 0, printargs, "sysv_sethostname" }, /* 1109 */ - { 0, 0, printargs, "sysv_getdomainname" }, /* 1110 */ - { 0, 0, printargs, "sysv_setdomainname" }, /* 1111 */ - { 0, 0, printargs, "sysv_truncate" }, /* 1112 */ - { 0, 0, printargs, "sysv_ftruncate" }, /* 1113 */ - { 0, 0, printargs, "sysv_rename" }, /* 1114 */ - { 0, 0, printargs, "sysv_symlink" }, /* 1115 */ - { 0, 0, printargs, "sysv_readlink" }, /* 1116 */ - { 0, 0, printargs, "sysv_lstat" }, /* 1117 */ - { 0, 0, printargs, "sysv_nfsmount" }, /* 1118 */ - { 0, 0, printargs, "sysv_nfssvc" }, /* 1119 */ - { 0, 0, printargs, "sysv_getfh" }, /* 1120 */ - { 0, 0, printargs, "sysv_async_daemon" }, /* 1121 */ - { 0, 0, printargs, "sysv_exportfs" }, /* 1122 */ - { 0, 0, printargs, "sysv_setregid" }, /* 1123 */ - { 0, 0, printargs, "sysv_setreuid" }, /* 1124 */ - { 0, 0, printargs, "sysv_getitimer" }, /* 1125 */ - { 0, 0, printargs, "sysv_setitimer" }, /* 1126 */ - { 0, 0, printargs, "sysv_adjtime" }, /* 1127 */ - { 0, 0, printargs, "sysv_BSD_getime" }, /* 1128 */ - { 0, 0, printargs, "sysv_sproc" }, /* 1129 */ - { 0, 0, printargs, "sysv_prctl" }, /* 1130 */ - { 0, 0, printargs, "sysv_procblk" }, /* 1131 */ - { 0, 0, printargs, "sysv_sprocsp" }, /* 1132 */ - { 0, 0, printargs, "sysv_sgigsc" }, /* 1133 */ - { 0, 0, printargs, "sysv_mmap" }, /* 1134 */ - { 0, 0, printargs, "sysv_munmap" }, /* 1135 */ - { 0, 0, printargs, "sysv_mprotect" }, /* 1136 */ - { 0, 0, printargs, "sysv_msync" }, /* 1137 */ - { 0, 0, printargs, "sysv_madvise" }, /* 1138 */ - { 0, 0, printargs, "sysv_pagelock" }, /* 1139 */ - { 0, 0, printargs, "sysv_getpagesize" }, /* 1140 */ - { 0, 0, printargs, "sysv_quotactl" }, /* 1141 */ - { 0, 0, printargs, "sysv_libdetach" }, /* 1142 */ - { 0, 0, printargs, "sysv_BSDgetpgrp" }, /* 1143 */ - { 0, 0, printargs, "sysv_BSDsetpgrp" }, /* 1144 */ - { 0, 0, printargs, "sysv_vhangup" }, /* 1145 */ - { 0, 0, printargs, "sysv_fsync" }, /* 1146 */ - { 0, 0, printargs, "sysv_fchdir" }, /* 1147 */ - { 0, 0, printargs, "sysv_getrlimit" }, /* 1148 */ - { 0, 0, printargs, "sysv_setrlimit" }, /* 1149 */ - { 0, 0, printargs, "sysv_cacheflush" }, /* 1150 */ - { 0, 0, printargs, "sysv_cachectl" }, /* 1151 */ - { 0, 0, printargs, "sysv_fchown" }, /* 1152 */ - { 0, 0, printargs, "sysv_fchmod" }, /* 1153 */ - { 0, 0, printargs, "sysv_wait3" }, /* 1154 */ - { 0, 0, printargs, "sysv_socketpair" }, /* 1155 */ - { 0, 0, printargs, "sysv_sysinfo" }, /* 1156 */ - { 0, 0, printargs, "sysv_nuname" }, /* 1157 */ - { 0, 0, printargs, "sysv_xstat" }, /* 1158 */ - { 0, 0, printargs, "sysv_lxstat" }, /* 1159 */ - { 0, 0, printargs, "sysv_fxstat" }, /* 1160 */ - { 0, 0, printargs, "sysv_xmknod" }, /* 1161 */ - { 0, 0, printargs, "sysv_ksigaction" }, /* 1162 */ - { 0, 0, printargs, "sysv_sigpending" }, /* 1163 */ - { 0, 0, printargs, "sysv_sigprocmask" }, /* 1164 */ - { 0, 0, printargs, "sysv_sigsuspend" }, /* 1165 */ - { 0, 0, printargs, "sysv_sigpoll" }, /* 1166 */ - { 0, 0, printargs, "sysv_swapctl" }, /* 1167 */ - { 0, 0, printargs, "sysv_getcontext" }, /* 1168 */ - { 0, 0, printargs, "sysv_setcontext" }, /* 1169 */ - { 0, 0, printargs, "sysv_waitsys" }, /* 1170 */ - { 0, 0, printargs, "sysv_sigstack" }, /* 1171 */ - { 0, 0, printargs, "sysv_sigaltstack" }, /* 1172 */ - { 0, 0, printargs, "sysv_sigsendset" }, /* 1173 */ - { 0, 0, printargs, "sysv_statvfs" }, /* 1174 */ - { 0, 0, printargs, "sysv_fstatvfs" }, /* 1175 */ - { 0, 0, printargs, "sysv_getpmsg" }, /* 1176 */ - { 0, 0, printargs, "sysv_putpmsg" }, /* 1177 */ - { 0, 0, printargs, "sysv_lchown" }, /* 1178 */ - { 0, 0, printargs, "sysv_priocntl" }, /* 1179 */ - { 0, 0, printargs, "sysv_ksigqueue" }, /* 1180 */ - { 0, 0, printargs, "sysv_readv" }, /* 1181 */ - { 0, 0, printargs, "sysv_writev" }, /* 1182 */ - { 0, 0, printargs, "sysv_truncate64" }, /* 1183 */ - { 0, 0, printargs, "sysv_ftruncate64" }, /* 1184 */ - { 0, 0, printargs, "sysv_mmap64" }, /* 1185 */ - { 0, 0, printargs, "sysv_dmi" }, /* 1186 */ - { 0, 0, printargs, "sysv_pread" }, /* 1187 */ - { 0, 0, printargs, "sysv_pwrite" }, /* 1188 */ - { 0, 0, NULL, NULL }, /* 1189 */ - { 0, 0, NULL, NULL }, /* 1190 */ - { 0, 0, NULL, NULL }, /* 1191 */ - { 0, 0, NULL, NULL }, /* 1192 */ - { 0, 0, NULL, NULL }, /* 1193 */ - { 0, 0, NULL, NULL }, /* 1194 */ - { 0, 0, NULL, NULL }, /* 1195 */ - { 0, 0, NULL, NULL }, /* 1196 */ - { 0, 0, NULL, NULL }, /* 1197 */ - { 0, 0, NULL, NULL }, /* 1198 */ - { 0, 0, NULL, NULL }, /* 1199 */ - { 0, 0, NULL, NULL }, /* 1200 */ - { 0, 0, NULL, NULL }, /* 1201 */ - { 0, 0, NULL, NULL }, /* 1202 */ - { 0, 0, NULL, NULL }, /* 1203 */ - { 0, 0, NULL, NULL }, /* 1204 */ - { 0, 0, NULL, NULL }, /* 1205 */ - { 0, 0, NULL, NULL }, /* 1206 */ - { 0, 0, NULL, NULL }, /* 1207 */ - { 0, 0, NULL, NULL }, /* 1208 */ - { 0, 0, NULL, NULL }, /* 1209 */ - { 0, 0, NULL, NULL }, /* 1210 */ - { 0, 0, NULL, NULL }, /* 1211 */ - { 0, 0, NULL, NULL }, /* 1212 */ - { 0, 0, NULL, NULL }, /* 1213 */ - { 0, 0, NULL, NULL }, /* 1214 */ - { 0, 0, NULL, NULL }, /* 1215 */ - { 0, 0, NULL, NULL }, /* 1216 */ - { 0, 0, NULL, NULL }, /* 1217 */ - { 0, 0, NULL, NULL }, /* 1218 */ - { 0, 0, NULL, NULL }, /* 1219 */ - { 0, 0, NULL, NULL }, /* 1220 */ - { 0, 0, NULL, NULL }, /* 1221 */ - { 0, 0, NULL, NULL }, /* 1222 */ - { 0, 0, NULL, NULL }, /* 1223 */ - { 0, 0, NULL, NULL }, /* 1224 */ - { 0, 0, NULL, NULL }, /* 1225 */ - { 0, 0, NULL, NULL }, /* 1226 */ - { 0, 0, NULL, NULL }, /* 1227 */ - { 0, 0, NULL, NULL }, /* 1228 */ - { 0, 0, NULL, NULL }, /* 1229 */ - { 0, 0, NULL, NULL }, /* 1230 */ - { 0, 0, NULL, NULL }, /* 1231 */ - { 0, 0, NULL, NULL }, /* 1232 */ - { 0, 0, NULL, NULL }, /* 1233 */ - { 0, 0, NULL, NULL }, /* 1234 */ - { 0, 0, NULL, NULL }, /* 1235 */ - { 0, 0, NULL, NULL }, /* 1236 */ - { 0, 0, NULL, NULL }, /* 1237 */ - { 0, 0, NULL, NULL }, /* 1238 */ - { 0, 0, NULL, NULL }, /* 1239 */ - { 0, 0, NULL, NULL }, /* 1240 */ - { 0, 0, NULL, NULL }, /* 1241 */ - { 0, 0, NULL, NULL }, /* 1242 */ - { 0, 0, NULL, NULL }, /* 1243 */ - { 0, 0, NULL, NULL }, /* 1244 */ - { 0, 0, NULL, NULL }, /* 1245 */ - { 0, 0, NULL, NULL }, /* 1246 */ - { 0, 0, NULL, NULL }, /* 1247 */ - { 0, 0, NULL, NULL }, /* 1248 */ - { 0, 0, NULL, NULL }, /* 1249 */ - { 0, 0, NULL, NULL }, /* 1250 */ - { 0, 0, NULL, NULL }, /* 1251 */ - { 0, 0, NULL, NULL }, /* 1252 */ - { 0, 0, NULL, NULL }, /* 1253 */ - { 0, 0, NULL, NULL }, /* 1254 */ - { 0, 0, NULL, NULL }, /* 1255 */ - { 0, 0, NULL, NULL }, /* 1256 */ - { 0, 0, NULL, NULL }, /* 1257 */ - { 0, 0, NULL, NULL }, /* 1258 */ - { 0, 0, NULL, NULL }, /* 1259 */ - { 0, 0, NULL, NULL }, /* 1260 */ - { 0, 0, NULL, NULL }, /* 1261 */ - { 0, 0, NULL, NULL }, /* 1262 */ - { 0, 0, NULL, NULL }, /* 1263 */ - { 0, 0, NULL, NULL }, /* 1264 */ - { 0, 0, NULL, NULL }, /* 1265 */ - { 0, 0, NULL, NULL }, /* 1266 */ - { 0, 0, NULL, NULL }, /* 1267 */ - { 0, 0, NULL, NULL }, /* 1268 */ - { 0, 0, NULL, NULL }, /* 1269 */ - { 0, 0, NULL, NULL }, /* 1270 */ - { 0, 0, NULL, NULL }, /* 1271 */ - { 0, 0, NULL, NULL }, /* 1272 */ - { 0, 0, NULL, NULL }, /* 1273 */ - { 0, 0, NULL, NULL }, /* 1274 */ - { 0, 0, NULL, NULL }, /* 1275 */ - { 0, 0, NULL, NULL }, /* 1276 */ - { 0, 0, NULL, NULL }, /* 1277 */ - { 0, 0, NULL, NULL }, /* 1278 */ - { 0, 0, NULL, NULL }, /* 1279 */ - { 0, 0, NULL, NULL }, /* 1280 */ - { 0, 0, NULL, NULL }, /* 1281 */ - { 0, 0, NULL, NULL }, /* 1282 */ - { 0, 0, NULL, NULL }, /* 1283 */ - { 0, 0, NULL, NULL }, /* 1284 */ - { 0, 0, NULL, NULL }, /* 1285 */ - { 0, 0, NULL, NULL }, /* 1286 */ - { 0, 0, NULL, NULL }, /* 1287 */ - { 0, 0, NULL, NULL }, /* 1288 */ - { 0, 0, NULL, NULL }, /* 1289 */ - { 0, 0, NULL, NULL }, /* 1290 */ - { 0, 0, NULL, NULL }, /* 1291 */ - { 0, 0, NULL, NULL }, /* 1292 */ - { 0, 0, NULL, NULL }, /* 1293 */ - { 0, 0, NULL, NULL }, /* 1294 */ - { 0, 0, NULL, NULL }, /* 1295 */ - { 0, 0, NULL, NULL }, /* 1296 */ - { 0, 0, NULL, NULL }, /* 1297 */ - { 0, 0, NULL, NULL }, /* 1298 */ - { 0, 0, NULL, NULL }, /* 1299 */ - { 0, 0, NULL, NULL }, /* 1300 */ - { 0, 0, NULL, NULL }, /* 1301 */ - { 0, 0, NULL, NULL }, /* 1302 */ - { 0, 0, NULL, NULL }, /* 1303 */ - { 0, 0, NULL, NULL }, /* 1304 */ - { 0, 0, NULL, NULL }, /* 1305 */ - { 0, 0, NULL, NULL }, /* 1306 */ - { 0, 0, NULL, NULL }, /* 1307 */ - { 0, 0, NULL, NULL }, /* 1308 */ - { 0, 0, NULL, NULL }, /* 1309 */ - { 0, 0, NULL, NULL }, /* 1310 */ - { 0, 0, NULL, NULL }, /* 1311 */ - { 0, 0, NULL, NULL }, /* 1312 */ - { 0, 0, NULL, NULL }, /* 1313 */ - { 0, 0, NULL, NULL }, /* 1314 */ - { 0, 0, NULL, NULL }, /* 1315 */ - { 0, 0, NULL, NULL }, /* 1316 */ - { 0, 0, NULL, NULL }, /* 1317 */ - { 0, 0, NULL, NULL }, /* 1318 */ - { 0, 0, NULL, NULL }, /* 1319 */ - { 0, 0, NULL, NULL }, /* 1320 */ - { 0, 0, NULL, NULL }, /* 1321 */ - { 0, 0, NULL, NULL }, /* 1322 */ - { 0, 0, NULL, NULL }, /* 1323 */ - { 0, 0, NULL, NULL }, /* 1324 */ - { 0, 0, NULL, NULL }, /* 1325 */ - { 0, 0, NULL, NULL }, /* 1326 */ - { 0, 0, NULL, NULL }, /* 1327 */ - { 0, 0, NULL, NULL }, /* 1328 */ - { 0, 0, NULL, NULL }, /* 1329 */ - { 0, 0, NULL, NULL }, /* 1330 */ - { 0, 0, NULL, NULL }, /* 1331 */ - { 0, 0, NULL, NULL }, /* 1332 */ - { 0, 0, NULL, NULL }, /* 1333 */ - { 0, 0, NULL, NULL }, /* 1334 */ - { 0, 0, NULL, NULL }, /* 1335 */ - { 0, 0, NULL, NULL }, /* 1336 */ - { 0, 0, NULL, NULL }, /* 1337 */ - { 0, 0, NULL, NULL }, /* 1338 */ - { 0, 0, NULL, NULL }, /* 1339 */ - { 0, 0, NULL, NULL }, /* 1340 */ - { 0, 0, NULL, NULL }, /* 1341 */ - { 0, 0, NULL, NULL }, /* 1342 */ - { 0, 0, NULL, NULL }, /* 1343 */ - { 0, 0, NULL, NULL }, /* 1344 */ - { 0, 0, NULL, NULL }, /* 1345 */ - { 0, 0, NULL, NULL }, /* 1346 */ - { 0, 0, NULL, NULL }, /* 1347 */ - { 0, 0, NULL, NULL }, /* 1348 */ - { 0, 0, NULL, NULL }, /* 1349 */ - { 0, 0, NULL, NULL }, /* 1350 */ - { 0, 0, NULL, NULL }, /* 1351 */ - { 0, 0, NULL, NULL }, /* 1352 */ - { 0, 0, NULL, NULL }, /* 1353 */ - { 0, 0, NULL, NULL }, /* 1354 */ - { 0, 0, NULL, NULL }, /* 1355 */ - { 0, 0, NULL, NULL }, /* 1356 */ - { 0, 0, NULL, NULL }, /* 1357 */ - { 0, 0, NULL, NULL }, /* 1358 */ - { 0, 0, NULL, NULL }, /* 1359 */ - { 0, 0, NULL, NULL }, /* 1360 */ - { 0, 0, NULL, NULL }, /* 1361 */ - { 0, 0, NULL, NULL }, /* 1362 */ - { 0, 0, NULL, NULL }, /* 1363 */ - { 0, 0, NULL, NULL }, /* 1364 */ - { 0, 0, NULL, NULL }, /* 1365 */ - { 0, 0, NULL, NULL }, /* 1366 */ - { 0, 0, NULL, NULL }, /* 1367 */ - { 0, 0, NULL, NULL }, /* 1368 */ - { 0, 0, NULL, NULL }, /* 1369 */ - { 0, 0, NULL, NULL }, /* 1370 */ - { 0, 0, NULL, NULL }, /* 1371 */ - { 0, 0, NULL, NULL }, /* 1372 */ - { 0, 0, NULL, NULL }, /* 1373 */ - { 0, 0, NULL, NULL }, /* 1374 */ - { 0, 0, NULL, NULL }, /* 1375 */ - { 0, 0, NULL, NULL }, /* 1376 */ - { 0, 0, NULL, NULL }, /* 1377 */ - { 0, 0, NULL, NULL }, /* 1378 */ - { 0, 0, NULL, NULL }, /* 1379 */ - { 0, 0, NULL, NULL }, /* 1380 */ - { 0, 0, NULL, NULL }, /* 1381 */ - { 0, 0, NULL, NULL }, /* 1382 */ - { 0, 0, NULL, NULL }, /* 1383 */ - { 0, 0, NULL, NULL }, /* 1384 */ - { 0, 0, NULL, NULL }, /* 1385 */ - { 0, 0, NULL, NULL }, /* 1386 */ - { 0, 0, NULL, NULL }, /* 1387 */ - { 0, 0, NULL, NULL }, /* 1388 */ - { 0, 0, NULL, NULL }, /* 1389 */ - { 0, 0, NULL, NULL }, /* 1390 */ - { 0, 0, NULL, NULL }, /* 1391 */ - { 0, 0, NULL, NULL }, /* 1392 */ - { 0, 0, NULL, NULL }, /* 1393 */ - { 0, 0, NULL, NULL }, /* 1394 */ - { 0, 0, NULL, NULL }, /* 1395 */ - { 0, 0, NULL, NULL }, /* 1396 */ - { 0, 0, NULL, NULL }, /* 1397 */ - { 0, 0, NULL, NULL }, /* 1398 */ - { 0, 0, NULL, NULL }, /* 1399 */ - { 0, 0, NULL, NULL }, /* 1400 */ - { 0, 0, NULL, NULL }, /* 1401 */ - { 0, 0, NULL, NULL }, /* 1402 */ - { 0, 0, NULL, NULL }, /* 1403 */ - { 0, 0, NULL, NULL }, /* 1404 */ - { 0, 0, NULL, NULL }, /* 1405 */ - { 0, 0, NULL, NULL }, /* 1406 */ - { 0, 0, NULL, NULL }, /* 1407 */ - { 0, 0, NULL, NULL }, /* 1408 */ - { 0, 0, NULL, NULL }, /* 1409 */ - { 0, 0, NULL, NULL }, /* 1410 */ - { 0, 0, NULL, NULL }, /* 1411 */ - { 0, 0, NULL, NULL }, /* 1412 */ - { 0, 0, NULL, NULL }, /* 1413 */ - { 0, 0, NULL, NULL }, /* 1414 */ - { 0, 0, NULL, NULL }, /* 1415 */ - { 0, 0, NULL, NULL }, /* 1416 */ - { 0, 0, NULL, NULL }, /* 1417 */ - { 0, 0, NULL, NULL }, /* 1418 */ - { 0, 0, NULL, NULL }, /* 1419 */ - { 0, 0, NULL, NULL }, /* 1420 */ - { 0, 0, NULL, NULL }, /* 1421 */ - { 0, 0, NULL, NULL }, /* 1422 */ - { 0, 0, NULL, NULL }, /* 1423 */ - { 0, 0, NULL, NULL }, /* 1424 */ - { 0, 0, NULL, NULL }, /* 1425 */ - { 0, 0, NULL, NULL }, /* 1426 */ - { 0, 0, NULL, NULL }, /* 1427 */ - { 0, 0, NULL, NULL }, /* 1428 */ - { 0, 0, NULL, NULL }, /* 1429 */ - { 0, 0, NULL, NULL }, /* 1430 */ - { 0, 0, NULL, NULL }, /* 1431 */ - { 0, 0, NULL, NULL }, /* 1432 */ - { 0, 0, NULL, NULL }, /* 1433 */ - { 0, 0, NULL, NULL }, /* 1434 */ - { 0, 0, NULL, NULL }, /* 1435 */ - { 0, 0, NULL, NULL }, /* 1436 */ - { 0, 0, NULL, NULL }, /* 1437 */ - { 0, 0, NULL, NULL }, /* 1438 */ - { 0, 0, NULL, NULL }, /* 1439 */ - { 0, 0, NULL, NULL }, /* 1440 */ - { 0, 0, NULL, NULL }, /* 1441 */ - { 0, 0, NULL, NULL }, /* 1442 */ - { 0, 0, NULL, NULL }, /* 1443 */ - { 0, 0, NULL, NULL }, /* 1444 */ - { 0, 0, NULL, NULL }, /* 1445 */ - { 0, 0, NULL, NULL }, /* 1446 */ - { 0, 0, NULL, NULL }, /* 1447 */ - { 0, 0, NULL, NULL }, /* 1448 */ - { 0, 0, NULL, NULL }, /* 1449 */ - { 0, 0, NULL, NULL }, /* 1450 */ - { 0, 0, NULL, NULL }, /* 1451 */ - { 0, 0, NULL, NULL }, /* 1452 */ - { 0, 0, NULL, NULL }, /* 1453 */ - { 0, 0, NULL, NULL }, /* 1454 */ - { 0, 0, NULL, NULL }, /* 1455 */ - { 0, 0, NULL, NULL }, /* 1456 */ - { 0, 0, NULL, NULL }, /* 1457 */ - { 0, 0, NULL, NULL }, /* 1458 */ - { 0, 0, NULL, NULL }, /* 1459 */ - { 0, 0, NULL, NULL }, /* 1460 */ - { 0, 0, NULL, NULL }, /* 1461 */ - { 0, 0, NULL, NULL }, /* 1462 */ - { 0, 0, NULL, NULL }, /* 1463 */ - { 0, 0, NULL, NULL }, /* 1464 */ - { 0, 0, NULL, NULL }, /* 1465 */ - { 0, 0, NULL, NULL }, /* 1466 */ - { 0, 0, NULL, NULL }, /* 1467 */ - { 0, 0, NULL, NULL }, /* 1468 */ - { 0, 0, NULL, NULL }, /* 1469 */ - { 0, 0, NULL, NULL }, /* 1470 */ - { 0, 0, NULL, NULL }, /* 1471 */ - { 0, 0, NULL, NULL }, /* 1472 */ - { 0, 0, NULL, NULL }, /* 1473 */ - { 0, 0, NULL, NULL }, /* 1474 */ - { 0, 0, NULL, NULL }, /* 1475 */ - { 0, 0, NULL, NULL }, /* 1476 */ - { 0, 0, NULL, NULL }, /* 1477 */ - { 0, 0, NULL, NULL }, /* 1478 */ - { 0, 0, NULL, NULL }, /* 1479 */ - { 0, 0, NULL, NULL }, /* 1480 */ - { 0, 0, NULL, NULL }, /* 1481 */ - { 0, 0, NULL, NULL }, /* 1482 */ - { 0, 0, NULL, NULL }, /* 1483 */ - { 0, 0, NULL, NULL }, /* 1484 */ - { 0, 0, NULL, NULL }, /* 1485 */ - { 0, 0, NULL, NULL }, /* 1486 */ - { 0, 0, NULL, NULL }, /* 1487 */ - { 0, 0, NULL, NULL }, /* 1488 */ - { 0, 0, NULL, NULL }, /* 1489 */ - { 0, 0, NULL, NULL }, /* 1490 */ - { 0, 0, NULL, NULL }, /* 1491 */ - { 0, 0, NULL, NULL }, /* 1492 */ - { 0, 0, NULL, NULL }, /* 1493 */ - { 0, 0, NULL, NULL }, /* 1494 */ - { 0, 0, NULL, NULL }, /* 1495 */ - { 0, 0, NULL, NULL }, /* 1496 */ - { 0, 0, NULL, NULL }, /* 1497 */ - { 0, 0, NULL, NULL }, /* 1498 */ - { 0, 0, NULL, NULL }, /* 1499 */ - { 0, 0, NULL, NULL }, /* 1500 */ - { 0, 0, NULL, NULL }, /* 1501 */ - { 0, 0, NULL, NULL }, /* 1502 */ - { 0, 0, NULL, NULL }, /* 1503 */ - { 0, 0, NULL, NULL }, /* 1504 */ - { 0, 0, NULL, NULL }, /* 1505 */ - { 0, 0, NULL, NULL }, /* 1506 */ - { 0, 0, NULL, NULL }, /* 1507 */ - { 0, 0, NULL, NULL }, /* 1508 */ - { 0, 0, NULL, NULL }, /* 1509 */ - { 0, 0, NULL, NULL }, /* 1510 */ - { 0, 0, NULL, NULL }, /* 1511 */ - { 0, 0, NULL, NULL }, /* 1512 */ - { 0, 0, NULL, NULL }, /* 1513 */ - { 0, 0, NULL, NULL }, /* 1514 */ - { 0, 0, NULL, NULL }, /* 1515 */ - { 0, 0, NULL, NULL }, /* 1516 */ - { 0, 0, NULL, NULL }, /* 1517 */ - { 0, 0, NULL, NULL }, /* 1518 */ - { 0, 0, NULL, NULL }, /* 1519 */ - { 0, 0, NULL, NULL }, /* 1520 */ - { 0, 0, NULL, NULL }, /* 1521 */ - { 0, 0, NULL, NULL }, /* 1522 */ - { 0, 0, NULL, NULL }, /* 1523 */ - { 0, 0, NULL, NULL }, /* 1524 */ - { 0, 0, NULL, NULL }, /* 1525 */ - { 0, 0, NULL, NULL }, /* 1526 */ - { 0, 0, NULL, NULL }, /* 1527 */ - { 0, 0, NULL, NULL }, /* 1528 */ - { 0, 0, NULL, NULL }, /* 1529 */ - { 0, 0, NULL, NULL }, /* 1530 */ - { 0, 0, NULL, NULL }, /* 1531 */ - { 0, 0, NULL, NULL }, /* 1532 */ - { 0, 0, NULL, NULL }, /* 1533 */ - { 0, 0, NULL, NULL }, /* 1534 */ - { 0, 0, NULL, NULL }, /* 1535 */ - { 0, 0, NULL, NULL }, /* 1536 */ - { 0, 0, NULL, NULL }, /* 1537 */ - { 0, 0, NULL, NULL }, /* 1538 */ - { 0, 0, NULL, NULL }, /* 1539 */ - { 0, 0, NULL, NULL }, /* 1540 */ - { 0, 0, NULL, NULL }, /* 1541 */ - { 0, 0, NULL, NULL }, /* 1542 */ - { 0, 0, NULL, NULL }, /* 1543 */ - { 0, 0, NULL, NULL }, /* 1544 */ - { 0, 0, NULL, NULL }, /* 1545 */ - { 0, 0, NULL, NULL }, /* 1546 */ - { 0, 0, NULL, NULL }, /* 1547 */ - { 0, 0, NULL, NULL }, /* 1548 */ - { 0, 0, NULL, NULL }, /* 1549 */ - { 0, 0, NULL, NULL }, /* 1550 */ - { 0, 0, NULL, NULL }, /* 1551 */ - { 0, 0, NULL, NULL }, /* 1552 */ - { 0, 0, NULL, NULL }, /* 1553 */ - { 0, 0, NULL, NULL }, /* 1554 */ - { 0, 0, NULL, NULL }, /* 1555 */ - { 0, 0, NULL, NULL }, /* 1556 */ - { 0, 0, NULL, NULL }, /* 1557 */ - { 0, 0, NULL, NULL }, /* 1558 */ - { 0, 0, NULL, NULL }, /* 1559 */ - { 0, 0, NULL, NULL }, /* 1560 */ - { 0, 0, NULL, NULL }, /* 1561 */ - { 0, 0, NULL, NULL }, /* 1562 */ - { 0, 0, NULL, NULL }, /* 1563 */ - { 0, 0, NULL, NULL }, /* 1564 */ - { 0, 0, NULL, NULL }, /* 1565 */ - { 0, 0, NULL, NULL }, /* 1566 */ - { 0, 0, NULL, NULL }, /* 1567 */ - { 0, 0, NULL, NULL }, /* 1568 */ - { 0, 0, NULL, NULL }, /* 1569 */ - { 0, 0, NULL, NULL }, /* 1570 */ - { 0, 0, NULL, NULL }, /* 1571 */ - { 0, 0, NULL, NULL }, /* 1572 */ - { 0, 0, NULL, NULL }, /* 1573 */ - { 0, 0, NULL, NULL }, /* 1574 */ - { 0, 0, NULL, NULL }, /* 1575 */ - { 0, 0, NULL, NULL }, /* 1576 */ - { 0, 0, NULL, NULL }, /* 1577 */ - { 0, 0, NULL, NULL }, /* 1578 */ - { 0, 0, NULL, NULL }, /* 1579 */ - { 0, 0, NULL, NULL }, /* 1580 */ - { 0, 0, NULL, NULL }, /* 1581 */ - { 0, 0, NULL, NULL }, /* 1582 */ - { 0, 0, NULL, NULL }, /* 1583 */ - { 0, 0, NULL, NULL }, /* 1584 */ - { 0, 0, NULL, NULL }, /* 1585 */ - { 0, 0, NULL, NULL }, /* 1586 */ - { 0, 0, NULL, NULL }, /* 1587 */ - { 0, 0, NULL, NULL }, /* 1588 */ - { 0, 0, NULL, NULL }, /* 1589 */ - { 0, 0, NULL, NULL }, /* 1590 */ - { 0, 0, NULL, NULL }, /* 1591 */ - { 0, 0, NULL, NULL }, /* 1592 */ - { 0, 0, NULL, NULL }, /* 1593 */ - { 0, 0, NULL, NULL }, /* 1594 */ - { 0, 0, NULL, NULL }, /* 1595 */ - { 0, 0, NULL, NULL }, /* 1596 */ - { 0, 0, NULL, NULL }, /* 1597 */ - { 0, 0, NULL, NULL }, /* 1598 */ - { 0, 0, NULL, NULL }, /* 1599 */ - { 0, 0, NULL, NULL }, /* 1600 */ - { 0, 0, NULL, NULL }, /* 1601 */ - { 0, 0, NULL, NULL }, /* 1602 */ - { 0, 0, NULL, NULL }, /* 1603 */ - { 0, 0, NULL, NULL }, /* 1604 */ - { 0, 0, NULL, NULL }, /* 1605 */ - { 0, 0, NULL, NULL }, /* 1606 */ - { 0, 0, NULL, NULL }, /* 1607 */ - { 0, 0, NULL, NULL }, /* 1608 */ - { 0, 0, NULL, NULL }, /* 1609 */ - { 0, 0, NULL, NULL }, /* 1610 */ - { 0, 0, NULL, NULL }, /* 1611 */ - { 0, 0, NULL, NULL }, /* 1612 */ - { 0, 0, NULL, NULL }, /* 1613 */ - { 0, 0, NULL, NULL }, /* 1614 */ - { 0, 0, NULL, NULL }, /* 1615 */ - { 0, 0, NULL, NULL }, /* 1616 */ - { 0, 0, NULL, NULL }, /* 1617 */ - { 0, 0, NULL, NULL }, /* 1618 */ - { 0, 0, NULL, NULL }, /* 1619 */ - { 0, 0, NULL, NULL }, /* 1620 */ - { 0, 0, NULL, NULL }, /* 1621 */ - { 0, 0, NULL, NULL }, /* 1622 */ - { 0, 0, NULL, NULL }, /* 1623 */ - { 0, 0, NULL, NULL }, /* 1624 */ - { 0, 0, NULL, NULL }, /* 1625 */ - { 0, 0, NULL, NULL }, /* 1626 */ - { 0, 0, NULL, NULL }, /* 1627 */ - { 0, 0, NULL, NULL }, /* 1628 */ - { 0, 0, NULL, NULL }, /* 1629 */ - { 0, 0, NULL, NULL }, /* 1630 */ - { 0, 0, NULL, NULL }, /* 1631 */ - { 0, 0, NULL, NULL }, /* 1632 */ - { 0, 0, NULL, NULL }, /* 1633 */ - { 0, 0, NULL, NULL }, /* 1634 */ - { 0, 0, NULL, NULL }, /* 1635 */ - { 0, 0, NULL, NULL }, /* 1636 */ - { 0, 0, NULL, NULL }, /* 1637 */ - { 0, 0, NULL, NULL }, /* 1638 */ - { 0, 0, NULL, NULL }, /* 1639 */ - { 0, 0, NULL, NULL }, /* 1640 */ - { 0, 0, NULL, NULL }, /* 1641 */ - { 0, 0, NULL, NULL }, /* 1642 */ - { 0, 0, NULL, NULL }, /* 1643 */ - { 0, 0, NULL, NULL }, /* 1644 */ - { 0, 0, NULL, NULL }, /* 1645 */ - { 0, 0, NULL, NULL }, /* 1646 */ - { 0, 0, NULL, NULL }, /* 1647 */ - { 0, 0, NULL, NULL }, /* 1648 */ - { 0, 0, NULL, NULL }, /* 1649 */ - { 0, 0, NULL, NULL }, /* 1650 */ - { 0, 0, NULL, NULL }, /* 1651 */ - { 0, 0, NULL, NULL }, /* 1652 */ - { 0, 0, NULL, NULL }, /* 1653 */ - { 0, 0, NULL, NULL }, /* 1654 */ - { 0, 0, NULL, NULL }, /* 1655 */ - { 0, 0, NULL, NULL }, /* 1656 */ - { 0, 0, NULL, NULL }, /* 1657 */ - { 0, 0, NULL, NULL }, /* 1658 */ - { 0, 0, NULL, NULL }, /* 1659 */ - { 0, 0, NULL, NULL }, /* 1660 */ - { 0, 0, NULL, NULL }, /* 1661 */ - { 0, 0, NULL, NULL }, /* 1662 */ - { 0, 0, NULL, NULL }, /* 1663 */ - { 0, 0, NULL, NULL }, /* 1664 */ - { 0, 0, NULL, NULL }, /* 1665 */ - { 0, 0, NULL, NULL }, /* 1666 */ - { 0, 0, NULL, NULL }, /* 1667 */ - { 0, 0, NULL, NULL }, /* 1668 */ - { 0, 0, NULL, NULL }, /* 1669 */ - { 0, 0, NULL, NULL }, /* 1670 */ - { 0, 0, NULL, NULL }, /* 1671 */ - { 0, 0, NULL, NULL }, /* 1672 */ - { 0, 0, NULL, NULL }, /* 1673 */ - { 0, 0, NULL, NULL }, /* 1674 */ - { 0, 0, NULL, NULL }, /* 1675 */ - { 0, 0, NULL, NULL }, /* 1676 */ - { 0, 0, NULL, NULL }, /* 1677 */ - { 0, 0, NULL, NULL }, /* 1678 */ - { 0, 0, NULL, NULL }, /* 1679 */ - { 0, 0, NULL, NULL }, /* 1680 */ - { 0, 0, NULL, NULL }, /* 1681 */ - { 0, 0, NULL, NULL }, /* 1682 */ - { 0, 0, NULL, NULL }, /* 1683 */ - { 0, 0, NULL, NULL }, /* 1684 */ - { 0, 0, NULL, NULL }, /* 1685 */ - { 0, 0, NULL, NULL }, /* 1686 */ - { 0, 0, NULL, NULL }, /* 1687 */ - { 0, 0, NULL, NULL }, /* 1688 */ - { 0, 0, NULL, NULL }, /* 1689 */ - { 0, 0, NULL, NULL }, /* 1690 */ - { 0, 0, NULL, NULL }, /* 1691 */ - { 0, 0, NULL, NULL }, /* 1692 */ - { 0, 0, NULL, NULL }, /* 1693 */ - { 0, 0, NULL, NULL }, /* 1694 */ - { 0, 0, NULL, NULL }, /* 1695 */ - { 0, 0, NULL, NULL }, /* 1696 */ - { 0, 0, NULL, NULL }, /* 1697 */ - { 0, 0, NULL, NULL }, /* 1698 */ - { 0, 0, NULL, NULL }, /* 1699 */ - { 0, 0, NULL, NULL }, /* 1700 */ - { 0, 0, NULL, NULL }, /* 1701 */ - { 0, 0, NULL, NULL }, /* 1702 */ - { 0, 0, NULL, NULL }, /* 1703 */ - { 0, 0, NULL, NULL }, /* 1704 */ - { 0, 0, NULL, NULL }, /* 1705 */ - { 0, 0, NULL, NULL }, /* 1706 */ - { 0, 0, NULL, NULL }, /* 1707 */ - { 0, 0, NULL, NULL }, /* 1708 */ - { 0, 0, NULL, NULL }, /* 1709 */ - { 0, 0, NULL, NULL }, /* 1710 */ - { 0, 0, NULL, NULL }, /* 1711 */ - { 0, 0, NULL, NULL }, /* 1712 */ - { 0, 0, NULL, NULL }, /* 1713 */ - { 0, 0, NULL, NULL }, /* 1714 */ - { 0, 0, NULL, NULL }, /* 1715 */ - { 0, 0, NULL, NULL }, /* 1716 */ - { 0, 0, NULL, NULL }, /* 1717 */ - { 0, 0, NULL, NULL }, /* 1718 */ - { 0, 0, NULL, NULL }, /* 1719 */ - { 0, 0, NULL, NULL }, /* 1720 */ - { 0, 0, NULL, NULL }, /* 1721 */ - { 0, 0, NULL, NULL }, /* 1722 */ - { 0, 0, NULL, NULL }, /* 1723 */ - { 0, 0, NULL, NULL }, /* 1724 */ - { 0, 0, NULL, NULL }, /* 1725 */ - { 0, 0, NULL, NULL }, /* 1726 */ - { 0, 0, NULL, NULL }, /* 1727 */ - { 0, 0, NULL, NULL }, /* 1728 */ - { 0, 0, NULL, NULL }, /* 1729 */ - { 0, 0, NULL, NULL }, /* 1730 */ - { 0, 0, NULL, NULL }, /* 1731 */ - { 0, 0, NULL, NULL }, /* 1732 */ - { 0, 0, NULL, NULL }, /* 1733 */ - { 0, 0, NULL, NULL }, /* 1734 */ - { 0, 0, NULL, NULL }, /* 1735 */ - { 0, 0, NULL, NULL }, /* 1736 */ - { 0, 0, NULL, NULL }, /* 1737 */ - { 0, 0, NULL, NULL }, /* 1738 */ - { 0, 0, NULL, NULL }, /* 1739 */ - { 0, 0, NULL, NULL }, /* 1740 */ - { 0, 0, NULL, NULL }, /* 1741 */ - { 0, 0, NULL, NULL }, /* 1742 */ - { 0, 0, NULL, NULL }, /* 1743 */ - { 0, 0, NULL, NULL }, /* 1744 */ - { 0, 0, NULL, NULL }, /* 1745 */ - { 0, 0, NULL, NULL }, /* 1746 */ - { 0, 0, NULL, NULL }, /* 1747 */ - { 0, 0, NULL, NULL }, /* 1748 */ - { 0, 0, NULL, NULL }, /* 1749 */ - { 0, 0, NULL, NULL }, /* 1750 */ - { 0, 0, NULL, NULL }, /* 1751 */ - { 0, 0, NULL, NULL }, /* 1752 */ - { 0, 0, NULL, NULL }, /* 1753 */ - { 0, 0, NULL, NULL }, /* 1754 */ - { 0, 0, NULL, NULL }, /* 1755 */ - { 0, 0, NULL, NULL }, /* 1756 */ - { 0, 0, NULL, NULL }, /* 1757 */ - { 0, 0, NULL, NULL }, /* 1758 */ - { 0, 0, NULL, NULL }, /* 1759 */ - { 0, 0, NULL, NULL }, /* 1760 */ - { 0, 0, NULL, NULL }, /* 1761 */ - { 0, 0, NULL, NULL }, /* 1762 */ - { 0, 0, NULL, NULL }, /* 1763 */ - { 0, 0, NULL, NULL }, /* 1764 */ - { 0, 0, NULL, NULL }, /* 1765 */ - { 0, 0, NULL, NULL }, /* 1766 */ - { 0, 0, NULL, NULL }, /* 1767 */ - { 0, 0, NULL, NULL }, /* 1768 */ - { 0, 0, NULL, NULL }, /* 1769 */ - { 0, 0, NULL, NULL }, /* 1770 */ - { 0, 0, NULL, NULL }, /* 1771 */ - { 0, 0, NULL, NULL }, /* 1772 */ - { 0, 0, NULL, NULL }, /* 1773 */ - { 0, 0, NULL, NULL }, /* 1774 */ - { 0, 0, NULL, NULL }, /* 1775 */ - { 0, 0, NULL, NULL }, /* 1776 */ - { 0, 0, NULL, NULL }, /* 1777 */ - { 0, 0, NULL, NULL }, /* 1778 */ - { 0, 0, NULL, NULL }, /* 1779 */ - { 0, 0, NULL, NULL }, /* 1780 */ - { 0, 0, NULL, NULL }, /* 1781 */ - { 0, 0, NULL, NULL }, /* 1782 */ - { 0, 0, NULL, NULL }, /* 1783 */ - { 0, 0, NULL, NULL }, /* 1784 */ - { 0, 0, NULL, NULL }, /* 1785 */ - { 0, 0, NULL, NULL }, /* 1786 */ - { 0, 0, NULL, NULL }, /* 1787 */ - { 0, 0, NULL, NULL }, /* 1788 */ - { 0, 0, NULL, NULL }, /* 1789 */ - { 0, 0, NULL, NULL }, /* 1790 */ - { 0, 0, NULL, NULL }, /* 1791 */ - { 0, 0, NULL, NULL }, /* 1792 */ - { 0, 0, NULL, NULL }, /* 1793 */ - { 0, 0, NULL, NULL }, /* 1794 */ - { 0, 0, NULL, NULL }, /* 1795 */ - { 0, 0, NULL, NULL }, /* 1796 */ - { 0, 0, NULL, NULL }, /* 1797 */ - { 0, 0, NULL, NULL }, /* 1798 */ - { 0, 0, NULL, NULL }, /* 1799 */ - { 0, 0, NULL, NULL }, /* 1800 */ - { 0, 0, NULL, NULL }, /* 1801 */ - { 0, 0, NULL, NULL }, /* 1802 */ - { 0, 0, NULL, NULL }, /* 1803 */ - { 0, 0, NULL, NULL }, /* 1804 */ - { 0, 0, NULL, NULL }, /* 1805 */ - { 0, 0, NULL, NULL }, /* 1806 */ - { 0, 0, NULL, NULL }, /* 1807 */ - { 0, 0, NULL, NULL }, /* 1808 */ - { 0, 0, NULL, NULL }, /* 1809 */ - { 0, 0, NULL, NULL }, /* 1810 */ - { 0, 0, NULL, NULL }, /* 1811 */ - { 0, 0, NULL, NULL }, /* 1812 */ - { 0, 0, NULL, NULL }, /* 1813 */ - { 0, 0, NULL, NULL }, /* 1814 */ - { 0, 0, NULL, NULL }, /* 1815 */ - { 0, 0, NULL, NULL }, /* 1816 */ - { 0, 0, NULL, NULL }, /* 1817 */ - { 0, 0, NULL, NULL }, /* 1818 */ - { 0, 0, NULL, NULL }, /* 1819 */ - { 0, 0, NULL, NULL }, /* 1820 */ - { 0, 0, NULL, NULL }, /* 1821 */ - { 0, 0, NULL, NULL }, /* 1822 */ - { 0, 0, NULL, NULL }, /* 1823 */ - { 0, 0, NULL, NULL }, /* 1824 */ - { 0, 0, NULL, NULL }, /* 1825 */ - { 0, 0, NULL, NULL }, /* 1826 */ - { 0, 0, NULL, NULL }, /* 1827 */ - { 0, 0, NULL, NULL }, /* 1828 */ - { 0, 0, NULL, NULL }, /* 1829 */ - { 0, 0, NULL, NULL }, /* 1830 */ - { 0, 0, NULL, NULL }, /* 1831 */ - { 0, 0, NULL, NULL }, /* 1832 */ - { 0, 0, NULL, NULL }, /* 1833 */ - { 0, 0, NULL, NULL }, /* 1834 */ - { 0, 0, NULL, NULL }, /* 1835 */ - { 0, 0, NULL, NULL }, /* 1836 */ - { 0, 0, NULL, NULL }, /* 1837 */ - { 0, 0, NULL, NULL }, /* 1838 */ - { 0, 0, NULL, NULL }, /* 1839 */ - { 0, 0, NULL, NULL }, /* 1840 */ - { 0, 0, NULL, NULL }, /* 1841 */ - { 0, 0, NULL, NULL }, /* 1842 */ - { 0, 0, NULL, NULL }, /* 1843 */ - { 0, 0, NULL, NULL }, /* 1844 */ - { 0, 0, NULL, NULL }, /* 1845 */ - { 0, 0, NULL, NULL }, /* 1846 */ - { 0, 0, NULL, NULL }, /* 1847 */ - { 0, 0, NULL, NULL }, /* 1848 */ - { 0, 0, NULL, NULL }, /* 1849 */ - { 0, 0, NULL, NULL }, /* 1850 */ - { 0, 0, NULL, NULL }, /* 1851 */ - { 0, 0, NULL, NULL }, /* 1852 */ - { 0, 0, NULL, NULL }, /* 1853 */ - { 0, 0, NULL, NULL }, /* 1854 */ - { 0, 0, NULL, NULL }, /* 1855 */ - { 0, 0, NULL, NULL }, /* 1856 */ - { 0, 0, NULL, NULL }, /* 1857 */ - { 0, 0, NULL, NULL }, /* 1858 */ - { 0, 0, NULL, NULL }, /* 1859 */ - { 0, 0, NULL, NULL }, /* 1860 */ - { 0, 0, NULL, NULL }, /* 1861 */ - { 0, 0, NULL, NULL }, /* 1862 */ - { 0, 0, NULL, NULL }, /* 1863 */ - { 0, 0, NULL, NULL }, /* 1864 */ - { 0, 0, NULL, NULL }, /* 1865 */ - { 0, 0, NULL, NULL }, /* 1866 */ - { 0, 0, NULL, NULL }, /* 1867 */ - { 0, 0, NULL, NULL }, /* 1868 */ - { 0, 0, NULL, NULL }, /* 1869 */ - { 0, 0, NULL, NULL }, /* 1870 */ - { 0, 0, NULL, NULL }, /* 1871 */ - { 0, 0, NULL, NULL }, /* 1872 */ - { 0, 0, NULL, NULL }, /* 1873 */ - { 0, 0, NULL, NULL }, /* 1874 */ - { 0, 0, NULL, NULL }, /* 1875 */ - { 0, 0, NULL, NULL }, /* 1876 */ - { 0, 0, NULL, NULL }, /* 1877 */ - { 0, 0, NULL, NULL }, /* 1878 */ - { 0, 0, NULL, NULL }, /* 1879 */ - { 0, 0, NULL, NULL }, /* 1880 */ - { 0, 0, NULL, NULL }, /* 1881 */ - { 0, 0, NULL, NULL }, /* 1882 */ - { 0, 0, NULL, NULL }, /* 1883 */ - { 0, 0, NULL, NULL }, /* 1884 */ - { 0, 0, NULL, NULL }, /* 1885 */ - { 0, 0, NULL, NULL }, /* 1886 */ - { 0, 0, NULL, NULL }, /* 1887 */ - { 0, 0, NULL, NULL }, /* 1888 */ - { 0, 0, NULL, NULL }, /* 1889 */ - { 0, 0, NULL, NULL }, /* 1890 */ - { 0, 0, NULL, NULL }, /* 1891 */ - { 0, 0, NULL, NULL }, /* 1892 */ - { 0, 0, NULL, NULL }, /* 1893 */ - { 0, 0, NULL, NULL }, /* 1894 */ - { 0, 0, NULL, NULL }, /* 1895 */ - { 0, 0, NULL, NULL }, /* 1896 */ - { 0, 0, NULL, NULL }, /* 1897 */ - { 0, 0, NULL, NULL }, /* 1898 */ - { 0, 0, NULL, NULL }, /* 1899 */ - { 0, 0, NULL, NULL }, /* 1900 */ - { 0, 0, NULL, NULL }, /* 1901 */ - { 0, 0, NULL, NULL }, /* 1902 */ - { 0, 0, NULL, NULL }, /* 1903 */ - { 0, 0, NULL, NULL }, /* 1904 */ - { 0, 0, NULL, NULL }, /* 1905 */ - { 0, 0, NULL, NULL }, /* 1906 */ - { 0, 0, NULL, NULL }, /* 1907 */ - { 0, 0, NULL, NULL }, /* 1908 */ - { 0, 0, NULL, NULL }, /* 1909 */ - { 0, 0, NULL, NULL }, /* 1910 */ - { 0, 0, NULL, NULL }, /* 1911 */ - { 0, 0, NULL, NULL }, /* 1912 */ - { 0, 0, NULL, NULL }, /* 1913 */ - { 0, 0, NULL, NULL }, /* 1914 */ - { 0, 0, NULL, NULL }, /* 1915 */ - { 0, 0, NULL, NULL }, /* 1916 */ - { 0, 0, NULL, NULL }, /* 1917 */ - { 0, 0, NULL, NULL }, /* 1918 */ - { 0, 0, NULL, NULL }, /* 1919 */ - { 0, 0, NULL, NULL }, /* 1920 */ - { 0, 0, NULL, NULL }, /* 1921 */ - { 0, 0, NULL, NULL }, /* 1922 */ - { 0, 0, NULL, NULL }, /* 1923 */ - { 0, 0, NULL, NULL }, /* 1924 */ - { 0, 0, NULL, NULL }, /* 1925 */ - { 0, 0, NULL, NULL }, /* 1926 */ - { 0, 0, NULL, NULL }, /* 1927 */ - { 0, 0, NULL, NULL }, /* 1928 */ - { 0, 0, NULL, NULL }, /* 1929 */ - { 0, 0, NULL, NULL }, /* 1930 */ - { 0, 0, NULL, NULL }, /* 1931 */ - { 0, 0, NULL, NULL }, /* 1932 */ - { 0, 0, NULL, NULL }, /* 1933 */ - { 0, 0, NULL, NULL }, /* 1934 */ - { 0, 0, NULL, NULL }, /* 1935 */ - { 0, 0, NULL, NULL }, /* 1936 */ - { 0, 0, NULL, NULL }, /* 1937 */ - { 0, 0, NULL, NULL }, /* 1938 */ - { 0, 0, NULL, NULL }, /* 1939 */ - { 0, 0, NULL, NULL }, /* 1940 */ - { 0, 0, NULL, NULL }, /* 1941 */ - { 0, 0, NULL, NULL }, /* 1942 */ - { 0, 0, NULL, NULL }, /* 1943 */ - { 0, 0, NULL, NULL }, /* 1944 */ - { 0, 0, NULL, NULL }, /* 1945 */ - { 0, 0, NULL, NULL }, /* 1946 */ - { 0, 0, NULL, NULL }, /* 1947 */ - { 0, 0, NULL, NULL }, /* 1948 */ - { 0, 0, NULL, NULL }, /* 1949 */ - { 0, 0, NULL, NULL }, /* 1950 */ - { 0, 0, NULL, NULL }, /* 1951 */ - { 0, 0, NULL, NULL }, /* 1952 */ - { 0, 0, NULL, NULL }, /* 1953 */ - { 0, 0, NULL, NULL }, /* 1954 */ - { 0, 0, NULL, NULL }, /* 1955 */ - { 0, 0, NULL, NULL }, /* 1956 */ - { 0, 0, NULL, NULL }, /* 1957 */ - { 0, 0, NULL, NULL }, /* 1958 */ - { 0, 0, NULL, NULL }, /* 1959 */ - { 0, 0, NULL, NULL }, /* 1960 */ - { 0, 0, NULL, NULL }, /* 1961 */ - { 0, 0, NULL, NULL }, /* 1962 */ - { 0, 0, NULL, NULL }, /* 1963 */ - { 0, 0, NULL, NULL }, /* 1964 */ - { 0, 0, NULL, NULL }, /* 1965 */ - { 0, 0, NULL, NULL }, /* 1966 */ - { 0, 0, NULL, NULL }, /* 1967 */ - { 0, 0, NULL, NULL }, /* 1968 */ - { 0, 0, NULL, NULL }, /* 1969 */ - { 0, 0, NULL, NULL }, /* 1970 */ - { 0, 0, NULL, NULL }, /* 1971 */ - { 0, 0, NULL, NULL }, /* 1972 */ - { 0, 0, NULL, NULL }, /* 1973 */ - { 0, 0, NULL, NULL }, /* 1974 */ - { 0, 0, NULL, NULL }, /* 1975 */ - { 0, 0, NULL, NULL }, /* 1976 */ - { 0, 0, NULL, NULL }, /* 1977 */ - { 0, 0, NULL, NULL }, /* 1978 */ - { 0, 0, NULL, NULL }, /* 1979 */ - { 0, 0, NULL, NULL }, /* 1980 */ - { 0, 0, NULL, NULL }, /* 1981 */ - { 0, 0, NULL, NULL }, /* 1982 */ - { 0, 0, NULL, NULL }, /* 1983 */ - { 0, 0, NULL, NULL }, /* 1984 */ - { 0, 0, NULL, NULL }, /* 1985 */ - { 0, 0, NULL, NULL }, /* 1986 */ - { 0, 0, NULL, NULL }, /* 1987 */ - { 0, 0, NULL, NULL }, /* 1988 */ - { 0, 0, NULL, NULL }, /* 1989 */ - { 0, 0, NULL, NULL }, /* 1990 */ - { 0, 0, NULL, NULL }, /* 1991 */ - { 0, 0, NULL, NULL }, /* 1992 */ - { 0, 0, NULL, NULL }, /* 1993 */ - { 0, 0, NULL, NULL }, /* 1994 */ - { 0, 0, NULL, NULL }, /* 1995 */ - { 0, 0, NULL, NULL }, /* 1996 */ - { 0, 0, NULL, NULL }, /* 1997 */ - { 0, 0, NULL, NULL }, /* 1998 */ - { 0, 0, NULL, NULL }, /* 1999 */ /* end of SYSV */ - { 0, 0, printargs, "bsd43_syscall" }, /* 2000 */ /* start of BSD 4.3 */ - { 0, 0, printargs, "bsd43_exit" }, /* 2001 */ - { 0, 0, printargs, "bsd43_fork" }, /* 2002 */ - { 0, 0, printargs, "bsd43_read" }, /* 2003 */ - { 0, 0, printargs, "bsd43_write" }, /* 2004 */ - { 0, 0, printargs, "bsd43_open" }, /* 2005 */ - { 0, 0, printargs, "bsd43_close" }, /* 2006 */ - { 0, 0, printargs, "bsd43_wait" }, /* 2007 */ - { 0, 0, printargs, "bsd43_creat" }, /* 2008 */ - { 0, 0, printargs, "bsd43_link" }, /* 2009 */ - { 0, 0, printargs, "bsd43_unlink" }, /* 2010 */ - { 0, 0, printargs, "bsd43_exec" }, /* 2011 */ - { 0, 0, printargs, "bsd43_chdir" }, /* 2012 */ - { 0, 0, printargs, "bsd43_time" }, /* 2013 */ - { 0, 0, printargs, "bsd43_mknod" }, /* 2014 */ - { 0, 0, printargs, "bsd43_chmod" }, /* 2015 */ - { 0, 0, printargs, "bsd43_chown" }, /* 2016 */ - { 0, 0, printargs, "bsd43_sbreak" }, /* 2017 */ - { 0, 0, printargs, "bsd43_oldstat" }, /* 2018 */ - { 0, 0, printargs, "bsd43_lseek" }, /* 2019 */ - { 0, 0, printargs, "bsd43_getpid" }, /* 2020 */ - { 0, 0, printargs, "bsd43_oldmount" }, /* 2021 */ - { 0, 0, printargs, "bsd43_umount" }, /* 2022 */ - { 0, 0, printargs, "bsd43_setuid" }, /* 2023 */ - { 0, 0, printargs, "bsd43_getuid" }, /* 2024 */ - { 0, 0, printargs, "bsd43_stime" }, /* 2025 */ - { 0, 0, printargs, "bsd43_ptrace" }, /* 2026 */ - { 0, 0, printargs, "bsd43_alarm" }, /* 2027 */ - { 0, 0, printargs, "bsd43_oldfstat" }, /* 2028 */ - { 0, 0, printargs, "bsd43_pause" }, /* 2029 */ - { 0, 0, printargs, "bsd43_utime" }, /* 2030 */ - { 0, 0, printargs, "bsd43_stty" }, /* 2031 */ - { 0, 0, printargs, "bsd43_gtty" }, /* 2032 */ - { 0, 0, printargs, "bsd43_access" }, /* 2033 */ - { 0, 0, printargs, "bsd43_nice" }, /* 2034 */ - { 0, 0, printargs, "bsd43_ftime" }, /* 2035 */ - { 0, 0, printargs, "bsd43_sync" }, /* 2036 */ - { 0, 0, printargs, "bsd43_kill" }, /* 2037 */ - { 0, 0, printargs, "bsd43_stat" }, /* 2038 */ - { 0, 0, printargs, "bsd43_oldsetpgrp" }, /* 2039 */ - { 0, 0, printargs, "bsd43_lstat" }, /* 2040 */ - { 0, 0, printargs, "bsd43_dup" }, /* 2041 */ - { 0, 0, printargs, "bsd43_pipe" }, /* 2042 */ - { 0, 0, printargs, "bsd43_times" }, /* 2043 */ - { 0, 0, printargs, "bsd43_profil" }, /* 2044 */ - { 0, 0, printargs, "bsd43_msgsys" }, /* 2045 */ - { 0, 0, printargs, "bsd43_setgid" }, /* 2046 */ - { 0, 0, printargs, "bsd43_getgid" }, /* 2047 */ - { 0, 0, printargs, "bsd43_ssig" }, /* 2048 */ - { 0, 0, NULL, NULL }, /* 2049 */ - { 0, 0, NULL, NULL }, /* 2050 */ - { 0, 0, printargs, "bsd43_sysacct" }, /* 2051 */ - { 0, 0, printargs, "bsd43_phys" }, /* 2052 */ - { 0, 0, printargs, "bsd43_lock" }, /* 2053 */ - { 0, 0, printargs, "bsd43_ioctl" }, /* 2054 */ - { 0, 0, printargs, "bsd43_reboot" }, /* 2055 */ - { 0, 0, printargs, "bsd43_mpxchan" }, /* 2056 */ - { 0, 0, printargs, "bsd43_symlink" }, /* 2057 */ - { 0, 0, printargs, "bsd43_readlink" }, /* 2058 */ - { 0, 0, printargs, "bsd43_execve" }, /* 2059 */ - { 0, 0, printargs, "bsd43_umask" }, /* 2060 */ - { 0, 0, printargs, "bsd43_chroot" }, /* 2061 */ - { 0, 0, printargs, "bsd43_fstat" }, /* 2062 */ - { 0, 0, NULL, NULL }, /* 2063 */ - { 0, 0, printargs, "bsd43_getpagesize" }, /* 2064 */ - { 0, 0, printargs, "bsd43_mremap" }, /* 2065 */ - { 0, 0, printargs, "bsd43_vfork" }, /* 2066 */ - { 0, 0, printargs, "bsd43_vread" }, /* 2067 */ - { 0, 0, printargs, "bsd43_vwrite" }, /* 2068 */ - { 0, 0, printargs, "bsd43_sbrk" }, /* 2069 */ - { 0, 0, printargs, "bsd43_sstk" }, /* 2070 */ - { 0, 0, printargs, "bsd43_mmap" }, /* 2071 */ - { 0, 0, printargs, "bsd43_vadvise" }, /* 2072 */ - { 0, 0, printargs, "bsd43_munmap" }, /* 2073 */ - { 0, 0, printargs, "bsd43_mprotect" }, /* 2074 */ - { 0, 0, printargs, "bsd43_madvise" }, /* 2075 */ - { 0, 0, printargs, "bsd43_vhangup" }, /* 2076 */ - { 0, 0, printargs, "bsd43_vlimit" }, /* 2077 */ - { 0, 0, printargs, "bsd43_mincore" }, /* 2078 */ - { 0, 0, printargs, "bsd43_getgroups" }, /* 2079 */ - { 0, 0, printargs, "bsd43_setgroups" }, /* 2080 */ - { 0, 0, printargs, "bsd43_getpgrp" }, /* 2081 */ - { 0, 0, printargs, "bsd43_setpgrp" }, /* 2082 */ - { 0, 0, printargs, "bsd43_setitimer" }, /* 2083 */ - { 0, 0, printargs, "bsd43_wait3" }, /* 2084 */ - { 0, 0, printargs, "bsd43_swapon" }, /* 2085 */ - { 0, 0, printargs, "bsd43_getitimer" }, /* 2086 */ - { 0, 0, printargs, "bsd43_gethostname" }, /* 2087 */ - { 0, 0, printargs, "bsd43_sethostname" }, /* 2088 */ - { 0, 0, printargs, "bsd43_getdtablesize" }, /* 2089 */ - { 0, 0, printargs, "bsd43_dup2" }, /* 2090 */ - { 0, 0, printargs, "bsd43_getdopt" }, /* 2091 */ - { 0, 0, printargs, "bsd43_fcntl" }, /* 2092 */ - { 0, 0, printargs, "bsd43_select" }, /* 2093 */ - { 0, 0, printargs, "bsd43_setdopt" }, /* 2094 */ - { 0, 0, printargs, "bsd43_fsync" }, /* 2095 */ - { 0, 0, printargs, "bsd43_setpriority" }, /* 2096 */ - { 0, 0, printargs, "bsd43_socket" }, /* 2097 */ - { 0, 0, printargs, "bsd43_connect" }, /* 2098 */ - { 0, 0, printargs, "bsd43_oldaccept" }, /* 2099 */ - { 0, 0, printargs, "bsd43_getpriority" }, /* 2100 */ - { 0, 0, printargs, "bsd43_send" }, /* 2101 */ - { 0, 0, printargs, "bsd43_recv" }, /* 2102 */ - { 0, 0, printargs, "bsd43_sigreturn" }, /* 2103 */ - { 0, 0, printargs, "bsd43_bind" }, /* 2104 */ - { 0, 0, printargs, "bsd43_setsockopt" }, /* 2105 */ - { 0, 0, printargs, "bsd43_listen" }, /* 2106 */ - { 0, 0, printargs, "bsd43_vtimes" }, /* 2107 */ - { 0, 0, printargs, "bsd43_sigvec" }, /* 2108 */ - { 0, 0, printargs, "bsd43_sigblock" }, /* 2109 */ - { 0, 0, printargs, "bsd43_sigsetmask" }, /* 2110 */ - { 0, 0, printargs, "bsd43_sigpause" }, /* 2111 */ - { 0, 0, printargs, "bsd43_sigstack" }, /* 2112 */ - { 0, 0, printargs, "bsd43_oldrecvmsg" }, /* 2113 */ - { 0, 0, printargs, "bsd43_oldsendmsg" }, /* 2114 */ - { 0, 0, printargs, "bsd43_vtrace" }, /* 2115 */ - { 0, 0, printargs, "bsd43_gettimeofday" }, /* 2116 */ - { 0, 0, printargs, "bsd43_getrusage" }, /* 2117 */ - { 0, 0, printargs, "bsd43_getsockopt" }, /* 2118 */ - { 0, 0, NULL, NULL }, /* 2119 */ - { 0, 0, printargs, "bsd43_readv" }, /* 2120 */ - { 0, 0, printargs, "bsd43_writev" }, /* 2121 */ - { 0, 0, printargs, "bsd43_settimeofday" }, /* 2122 */ - { 0, 0, printargs, "bsd43_fchown" }, /* 2123 */ - { 0, 0, printargs, "bsd43_fchmod" }, /* 2124 */ - { 0, 0, printargs, "bsd43_oldrecvfrom" }, /* 2125 */ - { 0, 0, printargs, "bsd43_setreuid" }, /* 2126 */ - { 0, 0, printargs, "bsd43_setregid" }, /* 2127 */ - { 0, 0, printargs, "bsd43_rename" }, /* 2128 */ - { 0, 0, printargs, "bsd43_truncate" }, /* 2129 */ - { 0, 0, printargs, "bsd43_ftruncate" }, /* 2130 */ - { 0, 0, printargs, "bsd43_flock" }, /* 2131 */ - { 0, 0, printargs, "bsd43_semsys" }, /* 2132 */ - { 0, 0, printargs, "bsd43_sendto" }, /* 2133 */ - { 0, 0, printargs, "bsd43_shutdown" }, /* 2134 */ - { 0, 0, printargs, "bsd43_socketpair" }, /* 2135 */ - { 0, 0, printargs, "bsd43_mkdir" }, /* 2136 */ - { 0, 0, printargs, "bsd43_rmdir" }, /* 2137 */ - { 0, 0, printargs, "bsd43_utimes" }, /* 2138 */ - { 0, 0, printargs, "bsd43_sigcleanup" }, /* 2139 */ - { 0, 0, printargs, "bsd43_adjtime" }, /* 2140 */ - { 0, 0, printargs, "bsd43_oldgetpeername" }, /* 2141 */ - { 0, 0, printargs, "bsd43_gethostid" }, /* 2142 */ - { 0, 0, printargs, "bsd43_sethostid" }, /* 2143 */ - { 0, 0, printargs, "bsd43_getrlimit" }, /* 2144 */ - { 0, 0, printargs, "bsd43_setrlimit" }, /* 2145 */ - { 0, 0, printargs, "bsd43_killpg" }, /* 2146 */ - { 0, 0, printargs, "bsd43_shmsys" }, /* 2147 */ - { 0, 0, printargs, "bsd43_quota" }, /* 2148 */ - { 0, 0, printargs, "bsd43_qquota" }, /* 2149 */ - { 0, 0, printargs, "bsd43_oldgetsockname" }, /* 2150 */ - { 0, 0, printargs, "bsd43_sysmips" }, /* 2151 */ - { 0, 0, printargs, "bsd43_cacheflush" }, /* 2152 */ - { 0, 0, printargs, "bsd43_cachectl" }, /* 2153 */ - { 0, 0, printargs, "bsd43_debug" }, /* 2154 */ - { 0, 0, NULL, NULL }, /* 2155 */ - { 0, 0, NULL, NULL }, /* 2156 */ - { 0, 0, printargs, "bsd43_nfs_mount" }, /* 2157 */ - { 0, 0, printargs, "bsd43_nfs_svc" }, /* 2158 */ - { 0, 0, printargs, "bsd43_getdirentries" }, /* 2159 */ - { 0, 0, printargs, "bsd43_statfs" }, /* 2160 */ - { 0, 0, printargs, "bsd43_fstatfs" }, /* 2161 */ - { 0, 0, printargs, "bsd43_unmount" }, /* 2162 */ - { 0, 0, printargs, "bsd43_async_daemon" }, /* 2163 */ - { 0, 0, printargs, "bsd43_nfs_getfh" }, /* 2164 */ - { 0, 0, printargs, "bsd43_getdomainname" }, /* 2165 */ - { 0, 0, printargs, "bsd43_setdomainname" }, /* 2166 */ - { 0, 0, printargs, "bsd43_pcfs_mount" }, /* 2167 */ - { 0, 0, printargs, "bsd43_quotactl" }, /* 2168 */ - { 0, 0, printargs, "bsd43_oldexportfs" }, /* 2169 */ - { 0, 0, printargs, "bsd43_smount" }, /* 2170 */ - { 0, 0, printargs, "bsd43_mipshwconf" }, /* 2171 */ - { 0, 0, printargs, "bsd43_exportfs" }, /* 2172 */ - { 0, 0, printargs, "bsd43_nfsfh_open" }, /* 2173 */ - { 0, 0, printargs, "bsd43_libattach" }, /* 2174 */ - { 0, 0, printargs, "bsd43_libdetach" }, /* 2175 */ - { 0, 0, printargs, "bsd43_accept" }, /* 2176 */ - { 0, 0, NULL, NULL }, /* 2177 */ - { 0, 0, NULL, NULL }, /* 2178 */ - { 0, 0, printargs, "bsd43_recvmsg" }, /* 2179 */ - { 0, 0, printargs, "bsd43_recvfrom" }, /* 2180 */ - { 0, 0, printargs, "bsd43_sendmsg" }, /* 2181 */ - { 0, 0, printargs, "bsd43_getpeername" }, /* 2182 */ - { 0, 0, printargs, "bsd43_getsockname" }, /* 2183 */ - { 0, 0, printargs, "bsd43_aread" }, /* 2184 */ - { 0, 0, printargs, "bsd43_awrite" }, /* 2185 */ - { 0, 0, printargs, "bsd43_listio" }, /* 2186 */ - { 0, 0, printargs, "bsd43_acancel" }, /* 2187 */ - { 0, 0, printargs, "bsd43_astatus" }, /* 2188 */ - { 0, 0, printargs, "bsd43_await" }, /* 2189 */ - { 0, 0, printargs, "bsd43_areadv" }, /* 2190 */ - { 0, 0, printargs, "bsd43_awritev" }, /* 2191 */ - { 0, 0, NULL, NULL }, /* 2192 */ - { 0, 0, NULL, NULL }, /* 2193 */ - { 0, 0, NULL, NULL }, /* 2194 */ - { 0, 0, NULL, NULL }, /* 2195 */ - { 0, 0, NULL, NULL }, /* 2196 */ - { 0, 0, NULL, NULL }, /* 2197 */ - { 0, 0, NULL, NULL }, /* 2198 */ - { 0, 0, NULL, NULL }, /* 2199 */ - { 0, 0, NULL, NULL }, /* 2200 */ - { 0, 0, NULL, NULL }, /* 2201 */ - { 0, 0, NULL, NULL }, /* 2202 */ - { 0, 0, NULL, NULL }, /* 2203 */ - { 0, 0, NULL, NULL }, /* 2204 */ - { 0, 0, NULL, NULL }, /* 2205 */ - { 0, 0, NULL, NULL }, /* 2206 */ - { 0, 0, NULL, NULL }, /* 2207 */ - { 0, 0, NULL, NULL }, /* 2208 */ - { 0, 0, NULL, NULL }, /* 2209 */ - { 0, 0, NULL, NULL }, /* 2210 */ - { 0, 0, NULL, NULL }, /* 2211 */ - { 0, 0, NULL, NULL }, /* 2212 */ - { 0, 0, NULL, NULL }, /* 2213 */ - { 0, 0, NULL, NULL }, /* 2214 */ - { 0, 0, NULL, NULL }, /* 2215 */ - { 0, 0, NULL, NULL }, /* 2216 */ - { 0, 0, NULL, NULL }, /* 2217 */ - { 0, 0, NULL, NULL }, /* 2218 */ - { 0, 0, NULL, NULL }, /* 2219 */ - { 0, 0, NULL, NULL }, /* 2220 */ - { 0, 0, NULL, NULL }, /* 2221 */ - { 0, 0, NULL, NULL }, /* 2222 */ - { 0, 0, NULL, NULL }, /* 2223 */ - { 0, 0, NULL, NULL }, /* 2224 */ - { 0, 0, NULL, NULL }, /* 2225 */ - { 0, 0, NULL, NULL }, /* 2226 */ - { 0, 0, NULL, NULL }, /* 2227 */ - { 0, 0, NULL, NULL }, /* 2228 */ - { 0, 0, NULL, NULL }, /* 2229 */ - { 0, 0, NULL, NULL }, /* 2230 */ - { 0, 0, NULL, NULL }, /* 2231 */ - { 0, 0, NULL, NULL }, /* 2232 */ - { 0, 0, NULL, NULL }, /* 2233 */ - { 0, 0, NULL, NULL }, /* 2234 */ - { 0, 0, NULL, NULL }, /* 2235 */ - { 0, 0, NULL, NULL }, /* 2236 */ - { 0, 0, NULL, NULL }, /* 2237 */ - { 0, 0, NULL, NULL }, /* 2238 */ - { 0, 0, NULL, NULL }, /* 2239 */ - { 0, 0, NULL, NULL }, /* 2240 */ - { 0, 0, NULL, NULL }, /* 2241 */ - { 0, 0, NULL, NULL }, /* 2242 */ - { 0, 0, NULL, NULL }, /* 2243 */ - { 0, 0, NULL, NULL }, /* 2244 */ - { 0, 0, NULL, NULL }, /* 2245 */ - { 0, 0, NULL, NULL }, /* 2246 */ - { 0, 0, NULL, NULL }, /* 2247 */ - { 0, 0, NULL, NULL }, /* 2248 */ - { 0, 0, NULL, NULL }, /* 2249 */ - { 0, 0, NULL, NULL }, /* 2250 */ - { 0, 0, NULL, NULL }, /* 2251 */ - { 0, 0, NULL, NULL }, /* 2252 */ - { 0, 0, NULL, NULL }, /* 2253 */ - { 0, 0, NULL, NULL }, /* 2254 */ - { 0, 0, NULL, NULL }, /* 2255 */ - { 0, 0, NULL, NULL }, /* 2256 */ - { 0, 0, NULL, NULL }, /* 2257 */ - { 0, 0, NULL, NULL }, /* 2258 */ - { 0, 0, NULL, NULL }, /* 2259 */ - { 0, 0, NULL, NULL }, /* 2260 */ - { 0, 0, NULL, NULL }, /* 2261 */ - { 0, 0, NULL, NULL }, /* 2262 */ - { 0, 0, NULL, NULL }, /* 2263 */ - { 0, 0, NULL, NULL }, /* 2264 */ - { 0, 0, NULL, NULL }, /* 2265 */ - { 0, 0, NULL, NULL }, /* 2266 */ - { 0, 0, NULL, NULL }, /* 2267 */ - { 0, 0, NULL, NULL }, /* 2268 */ - { 0, 0, NULL, NULL }, /* 2269 */ - { 0, 0, NULL, NULL }, /* 2270 */ - { 0, 0, NULL, NULL }, /* 2271 */ - { 0, 0, NULL, NULL }, /* 2272 */ - { 0, 0, NULL, NULL }, /* 2273 */ - { 0, 0, NULL, NULL }, /* 2274 */ - { 0, 0, NULL, NULL }, /* 2275 */ - { 0, 0, NULL, NULL }, /* 2276 */ - { 0, 0, NULL, NULL }, /* 2277 */ - { 0, 0, NULL, NULL }, /* 2278 */ - { 0, 0, NULL, NULL }, /* 2279 */ - { 0, 0, NULL, NULL }, /* 2280 */ - { 0, 0, NULL, NULL }, /* 2281 */ - { 0, 0, NULL, NULL }, /* 2282 */ - { 0, 0, NULL, NULL }, /* 2283 */ - { 0, 0, NULL, NULL }, /* 2284 */ - { 0, 0, NULL, NULL }, /* 2285 */ - { 0, 0, NULL, NULL }, /* 2286 */ - { 0, 0, NULL, NULL }, /* 2287 */ - { 0, 0, NULL, NULL }, /* 2288 */ - { 0, 0, NULL, NULL }, /* 2289 */ - { 0, 0, NULL, NULL }, /* 2290 */ - { 0, 0, NULL, NULL }, /* 2291 */ - { 0, 0, NULL, NULL }, /* 2292 */ - { 0, 0, NULL, NULL }, /* 2293 */ - { 0, 0, NULL, NULL }, /* 2294 */ - { 0, 0, NULL, NULL }, /* 2295 */ - { 0, 0, NULL, NULL }, /* 2296 */ - { 0, 0, NULL, NULL }, /* 2297 */ - { 0, 0, NULL, NULL }, /* 2298 */ - { 0, 0, NULL, NULL }, /* 2299 */ - { 0, 0, NULL, NULL }, /* 2300 */ - { 0, 0, NULL, NULL }, /* 2301 */ - { 0, 0, NULL, NULL }, /* 2302 */ - { 0, 0, NULL, NULL }, /* 2303 */ - { 0, 0, NULL, NULL }, /* 2304 */ - { 0, 0, NULL, NULL }, /* 2305 */ - { 0, 0, NULL, NULL }, /* 2306 */ - { 0, 0, NULL, NULL }, /* 2307 */ - { 0, 0, NULL, NULL }, /* 2308 */ - { 0, 0, NULL, NULL }, /* 2309 */ - { 0, 0, NULL, NULL }, /* 2310 */ - { 0, 0, NULL, NULL }, /* 2311 */ - { 0, 0, NULL, NULL }, /* 2312 */ - { 0, 0, NULL, NULL }, /* 2313 */ - { 0, 0, NULL, NULL }, /* 2314 */ - { 0, 0, NULL, NULL }, /* 2315 */ - { 0, 0, NULL, NULL }, /* 2316 */ - { 0, 0, NULL, NULL }, /* 2317 */ - { 0, 0, NULL, NULL }, /* 2318 */ - { 0, 0, NULL, NULL }, /* 2319 */ - { 0, 0, NULL, NULL }, /* 2320 */ - { 0, 0, NULL, NULL }, /* 2321 */ - { 0, 0, NULL, NULL }, /* 2322 */ - { 0, 0, NULL, NULL }, /* 2323 */ - { 0, 0, NULL, NULL }, /* 2324 */ - { 0, 0, NULL, NULL }, /* 2325 */ - { 0, 0, NULL, NULL }, /* 2326 */ - { 0, 0, NULL, NULL }, /* 2327 */ - { 0, 0, NULL, NULL }, /* 2328 */ - { 0, 0, NULL, NULL }, /* 2329 */ - { 0, 0, NULL, NULL }, /* 2330 */ - { 0, 0, NULL, NULL }, /* 2331 */ - { 0, 0, NULL, NULL }, /* 2332 */ - { 0, 0, NULL, NULL }, /* 2333 */ - { 0, 0, NULL, NULL }, /* 2334 */ - { 0, 0, NULL, NULL }, /* 2335 */ - { 0, 0, NULL, NULL }, /* 2336 */ - { 0, 0, NULL, NULL }, /* 2337 */ - { 0, 0, NULL, NULL }, /* 2338 */ - { 0, 0, NULL, NULL }, /* 2339 */ - { 0, 0, NULL, NULL }, /* 2340 */ - { 0, 0, NULL, NULL }, /* 2341 */ - { 0, 0, NULL, NULL }, /* 2342 */ - { 0, 0, NULL, NULL }, /* 2343 */ - { 0, 0, NULL, NULL }, /* 2344 */ - { 0, 0, NULL, NULL }, /* 2345 */ - { 0, 0, NULL, NULL }, /* 2346 */ - { 0, 0, NULL, NULL }, /* 2347 */ - { 0, 0, NULL, NULL }, /* 2348 */ - { 0, 0, NULL, NULL }, /* 2349 */ - { 0, 0, NULL, NULL }, /* 2350 */ - { 0, 0, NULL, NULL }, /* 2351 */ - { 0, 0, NULL, NULL }, /* 2352 */ - { 0, 0, NULL, NULL }, /* 2353 */ - { 0, 0, NULL, NULL }, /* 2354 */ - { 0, 0, NULL, NULL }, /* 2355 */ - { 0, 0, NULL, NULL }, /* 2356 */ - { 0, 0, NULL, NULL }, /* 2357 */ - { 0, 0, NULL, NULL }, /* 2358 */ - { 0, 0, NULL, NULL }, /* 2359 */ - { 0, 0, NULL, NULL }, /* 2360 */ - { 0, 0, NULL, NULL }, /* 2361 */ - { 0, 0, NULL, NULL }, /* 2362 */ - { 0, 0, NULL, NULL }, /* 2363 */ - { 0, 0, NULL, NULL }, /* 2364 */ - { 0, 0, NULL, NULL }, /* 2365 */ - { 0, 0, NULL, NULL }, /* 2366 */ - { 0, 0, NULL, NULL }, /* 2367 */ - { 0, 0, NULL, NULL }, /* 2368 */ - { 0, 0, NULL, NULL }, /* 2369 */ - { 0, 0, NULL, NULL }, /* 2370 */ - { 0, 0, NULL, NULL }, /* 2371 */ - { 0, 0, NULL, NULL }, /* 2372 */ - { 0, 0, NULL, NULL }, /* 2373 */ - { 0, 0, NULL, NULL }, /* 2374 */ - { 0, 0, NULL, NULL }, /* 2375 */ - { 0, 0, NULL, NULL }, /* 2376 */ - { 0, 0, NULL, NULL }, /* 2377 */ - { 0, 0, NULL, NULL }, /* 2378 */ - { 0, 0, NULL, NULL }, /* 2379 */ - { 0, 0, NULL, NULL }, /* 2380 */ - { 0, 0, NULL, NULL }, /* 2381 */ - { 0, 0, NULL, NULL }, /* 2382 */ - { 0, 0, NULL, NULL }, /* 2383 */ - { 0, 0, NULL, NULL }, /* 2384 */ - { 0, 0, NULL, NULL }, /* 2385 */ - { 0, 0, NULL, NULL }, /* 2386 */ - { 0, 0, NULL, NULL }, /* 2387 */ - { 0, 0, NULL, NULL }, /* 2388 */ - { 0, 0, NULL, NULL }, /* 2389 */ - { 0, 0, NULL, NULL }, /* 2390 */ - { 0, 0, NULL, NULL }, /* 2391 */ - { 0, 0, NULL, NULL }, /* 2392 */ - { 0, 0, NULL, NULL }, /* 2393 */ - { 0, 0, NULL, NULL }, /* 2394 */ - { 0, 0, NULL, NULL }, /* 2395 */ - { 0, 0, NULL, NULL }, /* 2396 */ - { 0, 0, NULL, NULL }, /* 2397 */ - { 0, 0, NULL, NULL }, /* 2398 */ - { 0, 0, NULL, NULL }, /* 2399 */ - { 0, 0, NULL, NULL }, /* 2400 */ - { 0, 0, NULL, NULL }, /* 2401 */ - { 0, 0, NULL, NULL }, /* 2402 */ - { 0, 0, NULL, NULL }, /* 2403 */ - { 0, 0, NULL, NULL }, /* 2404 */ - { 0, 0, NULL, NULL }, /* 2405 */ - { 0, 0, NULL, NULL }, /* 2406 */ - { 0, 0, NULL, NULL }, /* 2407 */ - { 0, 0, NULL, NULL }, /* 2408 */ - { 0, 0, NULL, NULL }, /* 2409 */ - { 0, 0, NULL, NULL }, /* 2410 */ - { 0, 0, NULL, NULL }, /* 2411 */ - { 0, 0, NULL, NULL }, /* 2412 */ - { 0, 0, NULL, NULL }, /* 2413 */ - { 0, 0, NULL, NULL }, /* 2414 */ - { 0, 0, NULL, NULL }, /* 2415 */ - { 0, 0, NULL, NULL }, /* 2416 */ - { 0, 0, NULL, NULL }, /* 2417 */ - { 0, 0, NULL, NULL }, /* 2418 */ - { 0, 0, NULL, NULL }, /* 2419 */ - { 0, 0, NULL, NULL }, /* 2420 */ - { 0, 0, NULL, NULL }, /* 2421 */ - { 0, 0, NULL, NULL }, /* 2422 */ - { 0, 0, NULL, NULL }, /* 2423 */ - { 0, 0, NULL, NULL }, /* 2424 */ - { 0, 0, NULL, NULL }, /* 2425 */ - { 0, 0, NULL, NULL }, /* 2426 */ - { 0, 0, NULL, NULL }, /* 2427 */ - { 0, 0, NULL, NULL }, /* 2428 */ - { 0, 0, NULL, NULL }, /* 2429 */ - { 0, 0, NULL, NULL }, /* 2430 */ - { 0, 0, NULL, NULL }, /* 2431 */ - { 0, 0, NULL, NULL }, /* 2432 */ - { 0, 0, NULL, NULL }, /* 2433 */ - { 0, 0, NULL, NULL }, /* 2434 */ - { 0, 0, NULL, NULL }, /* 2435 */ - { 0, 0, NULL, NULL }, /* 2436 */ - { 0, 0, NULL, NULL }, /* 2437 */ - { 0, 0, NULL, NULL }, /* 2438 */ - { 0, 0, NULL, NULL }, /* 2439 */ - { 0, 0, NULL, NULL }, /* 2440 */ - { 0, 0, NULL, NULL }, /* 2441 */ - { 0, 0, NULL, NULL }, /* 2442 */ - { 0, 0, NULL, NULL }, /* 2443 */ - { 0, 0, NULL, NULL }, /* 2444 */ - { 0, 0, NULL, NULL }, /* 2445 */ - { 0, 0, NULL, NULL }, /* 2446 */ - { 0, 0, NULL, NULL }, /* 2447 */ - { 0, 0, NULL, NULL }, /* 2448 */ - { 0, 0, NULL, NULL }, /* 2449 */ - { 0, 0, NULL, NULL }, /* 2450 */ - { 0, 0, NULL, NULL }, /* 2451 */ - { 0, 0, NULL, NULL }, /* 2452 */ - { 0, 0, NULL, NULL }, /* 2453 */ - { 0, 0, NULL, NULL }, /* 2454 */ - { 0, 0, NULL, NULL }, /* 2455 */ - { 0, 0, NULL, NULL }, /* 2456 */ - { 0, 0, NULL, NULL }, /* 2457 */ - { 0, 0, NULL, NULL }, /* 2458 */ - { 0, 0, NULL, NULL }, /* 2459 */ - { 0, 0, NULL, NULL }, /* 2460 */ - { 0, 0, NULL, NULL }, /* 2461 */ - { 0, 0, NULL, NULL }, /* 2462 */ - { 0, 0, NULL, NULL }, /* 2463 */ - { 0, 0, NULL, NULL }, /* 2464 */ - { 0, 0, NULL, NULL }, /* 2465 */ - { 0, 0, NULL, NULL }, /* 2466 */ - { 0, 0, NULL, NULL }, /* 2467 */ - { 0, 0, NULL, NULL }, /* 2468 */ - { 0, 0, NULL, NULL }, /* 2469 */ - { 0, 0, NULL, NULL }, /* 2470 */ - { 0, 0, NULL, NULL }, /* 2471 */ - { 0, 0, NULL, NULL }, /* 2472 */ - { 0, 0, NULL, NULL }, /* 2473 */ - { 0, 0, NULL, NULL }, /* 2474 */ - { 0, 0, NULL, NULL }, /* 2475 */ - { 0, 0, NULL, NULL }, /* 2476 */ - { 0, 0, NULL, NULL }, /* 2477 */ - { 0, 0, NULL, NULL }, /* 2478 */ - { 0, 0, NULL, NULL }, /* 2479 */ - { 0, 0, NULL, NULL }, /* 2480 */ - { 0, 0, NULL, NULL }, /* 2481 */ - { 0, 0, NULL, NULL }, /* 2482 */ - { 0, 0, NULL, NULL }, /* 2483 */ - { 0, 0, NULL, NULL }, /* 2484 */ - { 0, 0, NULL, NULL }, /* 2485 */ - { 0, 0, NULL, NULL }, /* 2486 */ - { 0, 0, NULL, NULL }, /* 2487 */ - { 0, 0, NULL, NULL }, /* 2488 */ - { 0, 0, NULL, NULL }, /* 2489 */ - { 0, 0, NULL, NULL }, /* 2490 */ - { 0, 0, NULL, NULL }, /* 2491 */ - { 0, 0, NULL, NULL }, /* 2492 */ - { 0, 0, NULL, NULL }, /* 2493 */ - { 0, 0, NULL, NULL }, /* 2494 */ - { 0, 0, NULL, NULL }, /* 2495 */ - { 0, 0, NULL, NULL }, /* 2496 */ - { 0, 0, NULL, NULL }, /* 2497 */ - { 0, 0, NULL, NULL }, /* 2498 */ - { 0, 0, NULL, NULL }, /* 2499 */ - { 0, 0, NULL, NULL }, /* 2500 */ - { 0, 0, NULL, NULL }, /* 2501 */ - { 0, 0, NULL, NULL }, /* 2502 */ - { 0, 0, NULL, NULL }, /* 2503 */ - { 0, 0, NULL, NULL }, /* 2504 */ - { 0, 0, NULL, NULL }, /* 2505 */ - { 0, 0, NULL, NULL }, /* 2506 */ - { 0, 0, NULL, NULL }, /* 2507 */ - { 0, 0, NULL, NULL }, /* 2508 */ - { 0, 0, NULL, NULL }, /* 2509 */ - { 0, 0, NULL, NULL }, /* 2510 */ - { 0, 0, NULL, NULL }, /* 2511 */ - { 0, 0, NULL, NULL }, /* 2512 */ - { 0, 0, NULL, NULL }, /* 2513 */ - { 0, 0, NULL, NULL }, /* 2514 */ - { 0, 0, NULL, NULL }, /* 2515 */ - { 0, 0, NULL, NULL }, /* 2516 */ - { 0, 0, NULL, NULL }, /* 2517 */ - { 0, 0, NULL, NULL }, /* 2518 */ - { 0, 0, NULL, NULL }, /* 2519 */ - { 0, 0, NULL, NULL }, /* 2520 */ - { 0, 0, NULL, NULL }, /* 2521 */ - { 0, 0, NULL, NULL }, /* 2522 */ - { 0, 0, NULL, NULL }, /* 2523 */ - { 0, 0, NULL, NULL }, /* 2524 */ - { 0, 0, NULL, NULL }, /* 2525 */ - { 0, 0, NULL, NULL }, /* 2526 */ - { 0, 0, NULL, NULL }, /* 2527 */ - { 0, 0, NULL, NULL }, /* 2528 */ - { 0, 0, NULL, NULL }, /* 2529 */ - { 0, 0, NULL, NULL }, /* 2530 */ - { 0, 0, NULL, NULL }, /* 2531 */ - { 0, 0, NULL, NULL }, /* 2532 */ - { 0, 0, NULL, NULL }, /* 2533 */ - { 0, 0, NULL, NULL }, /* 2534 */ - { 0, 0, NULL, NULL }, /* 2535 */ - { 0, 0, NULL, NULL }, /* 2536 */ - { 0, 0, NULL, NULL }, /* 2537 */ - { 0, 0, NULL, NULL }, /* 2538 */ - { 0, 0, NULL, NULL }, /* 2539 */ - { 0, 0, NULL, NULL }, /* 2540 */ - { 0, 0, NULL, NULL }, /* 2541 */ - { 0, 0, NULL, NULL }, /* 2542 */ - { 0, 0, NULL, NULL }, /* 2543 */ - { 0, 0, NULL, NULL }, /* 2544 */ - { 0, 0, NULL, NULL }, /* 2545 */ - { 0, 0, NULL, NULL }, /* 2546 */ - { 0, 0, NULL, NULL }, /* 2547 */ - { 0, 0, NULL, NULL }, /* 2548 */ - { 0, 0, NULL, NULL }, /* 2549 */ - { 0, 0, NULL, NULL }, /* 2550 */ - { 0, 0, NULL, NULL }, /* 2551 */ - { 0, 0, NULL, NULL }, /* 2552 */ - { 0, 0, NULL, NULL }, /* 2553 */ - { 0, 0, NULL, NULL }, /* 2554 */ - { 0, 0, NULL, NULL }, /* 2555 */ - { 0, 0, NULL, NULL }, /* 2556 */ - { 0, 0, NULL, NULL }, /* 2557 */ - { 0, 0, NULL, NULL }, /* 2558 */ - { 0, 0, NULL, NULL }, /* 2559 */ - { 0, 0, NULL, NULL }, /* 2560 */ - { 0, 0, NULL, NULL }, /* 2561 */ - { 0, 0, NULL, NULL }, /* 2562 */ - { 0, 0, NULL, NULL }, /* 2563 */ - { 0, 0, NULL, NULL }, /* 2564 */ - { 0, 0, NULL, NULL }, /* 2565 */ - { 0, 0, NULL, NULL }, /* 2566 */ - { 0, 0, NULL, NULL }, /* 2567 */ - { 0, 0, NULL, NULL }, /* 2568 */ - { 0, 0, NULL, NULL }, /* 2569 */ - { 0, 0, NULL, NULL }, /* 2570 */ - { 0, 0, NULL, NULL }, /* 2571 */ - { 0, 0, NULL, NULL }, /* 2572 */ - { 0, 0, NULL, NULL }, /* 2573 */ - { 0, 0, NULL, NULL }, /* 2574 */ - { 0, 0, NULL, NULL }, /* 2575 */ - { 0, 0, NULL, NULL }, /* 2576 */ - { 0, 0, NULL, NULL }, /* 2577 */ - { 0, 0, NULL, NULL }, /* 2578 */ - { 0, 0, NULL, NULL }, /* 2579 */ - { 0, 0, NULL, NULL }, /* 2580 */ - { 0, 0, NULL, NULL }, /* 2581 */ - { 0, 0, NULL, NULL }, /* 2582 */ - { 0, 0, NULL, NULL }, /* 2583 */ - { 0, 0, NULL, NULL }, /* 2584 */ - { 0, 0, NULL, NULL }, /* 2585 */ - { 0, 0, NULL, NULL }, /* 2586 */ - { 0, 0, NULL, NULL }, /* 2587 */ - { 0, 0, NULL, NULL }, /* 2588 */ - { 0, 0, NULL, NULL }, /* 2589 */ - { 0, 0, NULL, NULL }, /* 2590 */ - { 0, 0, NULL, NULL }, /* 2591 */ - { 0, 0, NULL, NULL }, /* 2592 */ - { 0, 0, NULL, NULL }, /* 2593 */ - { 0, 0, NULL, NULL }, /* 2594 */ - { 0, 0, NULL, NULL }, /* 2595 */ - { 0, 0, NULL, NULL }, /* 2596 */ - { 0, 0, NULL, NULL }, /* 2597 */ - { 0, 0, NULL, NULL }, /* 2598 */ - { 0, 0, NULL, NULL }, /* 2599 */ - { 0, 0, NULL, NULL }, /* 2600 */ - { 0, 0, NULL, NULL }, /* 2601 */ - { 0, 0, NULL, NULL }, /* 2602 */ - { 0, 0, NULL, NULL }, /* 2603 */ - { 0, 0, NULL, NULL }, /* 2604 */ - { 0, 0, NULL, NULL }, /* 2605 */ - { 0, 0, NULL, NULL }, /* 2606 */ - { 0, 0, NULL, NULL }, /* 2607 */ - { 0, 0, NULL, NULL }, /* 2608 */ - { 0, 0, NULL, NULL }, /* 2609 */ - { 0, 0, NULL, NULL }, /* 2610 */ - { 0, 0, NULL, NULL }, /* 2611 */ - { 0, 0, NULL, NULL }, /* 2612 */ - { 0, 0, NULL, NULL }, /* 2613 */ - { 0, 0, NULL, NULL }, /* 2614 */ - { 0, 0, NULL, NULL }, /* 2615 */ - { 0, 0, NULL, NULL }, /* 2616 */ - { 0, 0, NULL, NULL }, /* 2617 */ - { 0, 0, NULL, NULL }, /* 2618 */ - { 0, 0, NULL, NULL }, /* 2619 */ - { 0, 0, NULL, NULL }, /* 2620 */ - { 0, 0, NULL, NULL }, /* 2621 */ - { 0, 0, NULL, NULL }, /* 2622 */ - { 0, 0, NULL, NULL }, /* 2623 */ - { 0, 0, NULL, NULL }, /* 2624 */ - { 0, 0, NULL, NULL }, /* 2625 */ - { 0, 0, NULL, NULL }, /* 2626 */ - { 0, 0, NULL, NULL }, /* 2627 */ - { 0, 0, NULL, NULL }, /* 2628 */ - { 0, 0, NULL, NULL }, /* 2629 */ - { 0, 0, NULL, NULL }, /* 2630 */ - { 0, 0, NULL, NULL }, /* 2631 */ - { 0, 0, NULL, NULL }, /* 2632 */ - { 0, 0, NULL, NULL }, /* 2633 */ - { 0, 0, NULL, NULL }, /* 2634 */ - { 0, 0, NULL, NULL }, /* 2635 */ - { 0, 0, NULL, NULL }, /* 2636 */ - { 0, 0, NULL, NULL }, /* 2637 */ - { 0, 0, NULL, NULL }, /* 2638 */ - { 0, 0, NULL, NULL }, /* 2639 */ - { 0, 0, NULL, NULL }, /* 2640 */ - { 0, 0, NULL, NULL }, /* 2641 */ - { 0, 0, NULL, NULL }, /* 2642 */ - { 0, 0, NULL, NULL }, /* 2643 */ - { 0, 0, NULL, NULL }, /* 2644 */ - { 0, 0, NULL, NULL }, /* 2645 */ - { 0, 0, NULL, NULL }, /* 2646 */ - { 0, 0, NULL, NULL }, /* 2647 */ - { 0, 0, NULL, NULL }, /* 2648 */ - { 0, 0, NULL, NULL }, /* 2649 */ - { 0, 0, NULL, NULL }, /* 2650 */ - { 0, 0, NULL, NULL }, /* 2651 */ - { 0, 0, NULL, NULL }, /* 2652 */ - { 0, 0, NULL, NULL }, /* 2653 */ - { 0, 0, NULL, NULL }, /* 2654 */ - { 0, 0, NULL, NULL }, /* 2655 */ - { 0, 0, NULL, NULL }, /* 2656 */ - { 0, 0, NULL, NULL }, /* 2657 */ - { 0, 0, NULL, NULL }, /* 2658 */ - { 0, 0, NULL, NULL }, /* 2659 */ - { 0, 0, NULL, NULL }, /* 2660 */ - { 0, 0, NULL, NULL }, /* 2661 */ - { 0, 0, NULL, NULL }, /* 2662 */ - { 0, 0, NULL, NULL }, /* 2663 */ - { 0, 0, NULL, NULL }, /* 2664 */ - { 0, 0, NULL, NULL }, /* 2665 */ - { 0, 0, NULL, NULL }, /* 2666 */ - { 0, 0, NULL, NULL }, /* 2667 */ - { 0, 0, NULL, NULL }, /* 2668 */ - { 0, 0, NULL, NULL }, /* 2669 */ - { 0, 0, NULL, NULL }, /* 2670 */ - { 0, 0, NULL, NULL }, /* 2671 */ - { 0, 0, NULL, NULL }, /* 2672 */ - { 0, 0, NULL, NULL }, /* 2673 */ - { 0, 0, NULL, NULL }, /* 2674 */ - { 0, 0, NULL, NULL }, /* 2675 */ - { 0, 0, NULL, NULL }, /* 2676 */ - { 0, 0, NULL, NULL }, /* 2677 */ - { 0, 0, NULL, NULL }, /* 2678 */ - { 0, 0, NULL, NULL }, /* 2679 */ - { 0, 0, NULL, NULL }, /* 2680 */ - { 0, 0, NULL, NULL }, /* 2681 */ - { 0, 0, NULL, NULL }, /* 2682 */ - { 0, 0, NULL, NULL }, /* 2683 */ - { 0, 0, NULL, NULL }, /* 2684 */ - { 0, 0, NULL, NULL }, /* 2685 */ - { 0, 0, NULL, NULL }, /* 2686 */ - { 0, 0, NULL, NULL }, /* 2687 */ - { 0, 0, NULL, NULL }, /* 2688 */ - { 0, 0, NULL, NULL }, /* 2689 */ - { 0, 0, NULL, NULL }, /* 2690 */ - { 0, 0, NULL, NULL }, /* 2691 */ - { 0, 0, NULL, NULL }, /* 2692 */ - { 0, 0, NULL, NULL }, /* 2693 */ - { 0, 0, NULL, NULL }, /* 2694 */ - { 0, 0, NULL, NULL }, /* 2695 */ - { 0, 0, NULL, NULL }, /* 2696 */ - { 0, 0, NULL, NULL }, /* 2697 */ - { 0, 0, NULL, NULL }, /* 2698 */ - { 0, 0, NULL, NULL }, /* 2699 */ - { 0, 0, NULL, NULL }, /* 2700 */ - { 0, 0, NULL, NULL }, /* 2701 */ - { 0, 0, NULL, NULL }, /* 2702 */ - { 0, 0, NULL, NULL }, /* 2703 */ - { 0, 0, NULL, NULL }, /* 2704 */ - { 0, 0, NULL, NULL }, /* 2705 */ - { 0, 0, NULL, NULL }, /* 2706 */ - { 0, 0, NULL, NULL }, /* 2707 */ - { 0, 0, NULL, NULL }, /* 2708 */ - { 0, 0, NULL, NULL }, /* 2709 */ - { 0, 0, NULL, NULL }, /* 2710 */ - { 0, 0, NULL, NULL }, /* 2711 */ - { 0, 0, NULL, NULL }, /* 2712 */ - { 0, 0, NULL, NULL }, /* 2713 */ - { 0, 0, NULL, NULL }, /* 2714 */ - { 0, 0, NULL, NULL }, /* 2715 */ - { 0, 0, NULL, NULL }, /* 2716 */ - { 0, 0, NULL, NULL }, /* 2717 */ - { 0, 0, NULL, NULL }, /* 2718 */ - { 0, 0, NULL, NULL }, /* 2719 */ - { 0, 0, NULL, NULL }, /* 2720 */ - { 0, 0, NULL, NULL }, /* 2721 */ - { 0, 0, NULL, NULL }, /* 2722 */ - { 0, 0, NULL, NULL }, /* 2723 */ - { 0, 0, NULL, NULL }, /* 2724 */ - { 0, 0, NULL, NULL }, /* 2725 */ - { 0, 0, NULL, NULL }, /* 2726 */ - { 0, 0, NULL, NULL }, /* 2727 */ - { 0, 0, NULL, NULL }, /* 2728 */ - { 0, 0, NULL, NULL }, /* 2729 */ - { 0, 0, NULL, NULL }, /* 2730 */ - { 0, 0, NULL, NULL }, /* 2731 */ - { 0, 0, NULL, NULL }, /* 2732 */ - { 0, 0, NULL, NULL }, /* 2733 */ - { 0, 0, NULL, NULL }, /* 2734 */ - { 0, 0, NULL, NULL }, /* 2735 */ - { 0, 0, NULL, NULL }, /* 2736 */ - { 0, 0, NULL, NULL }, /* 2737 */ - { 0, 0, NULL, NULL }, /* 2738 */ - { 0, 0, NULL, NULL }, /* 2739 */ - { 0, 0, NULL, NULL }, /* 2740 */ - { 0, 0, NULL, NULL }, /* 2741 */ - { 0, 0, NULL, NULL }, /* 2742 */ - { 0, 0, NULL, NULL }, /* 2743 */ - { 0, 0, NULL, NULL }, /* 2744 */ - { 0, 0, NULL, NULL }, /* 2745 */ - { 0, 0, NULL, NULL }, /* 2746 */ - { 0, 0, NULL, NULL }, /* 2747 */ - { 0, 0, NULL, NULL }, /* 2748 */ - { 0, 0, NULL, NULL }, /* 2749 */ - { 0, 0, NULL, NULL }, /* 2750 */ - { 0, 0, NULL, NULL }, /* 2751 */ - { 0, 0, NULL, NULL }, /* 2752 */ - { 0, 0, NULL, NULL }, /* 2753 */ - { 0, 0, NULL, NULL }, /* 2754 */ - { 0, 0, NULL, NULL }, /* 2755 */ - { 0, 0, NULL, NULL }, /* 2756 */ - { 0, 0, NULL, NULL }, /* 2757 */ - { 0, 0, NULL, NULL }, /* 2758 */ - { 0, 0, NULL, NULL }, /* 2759 */ - { 0, 0, NULL, NULL }, /* 2760 */ - { 0, 0, NULL, NULL }, /* 2761 */ - { 0, 0, NULL, NULL }, /* 2762 */ - { 0, 0, NULL, NULL }, /* 2763 */ - { 0, 0, NULL, NULL }, /* 2764 */ - { 0, 0, NULL, NULL }, /* 2765 */ - { 0, 0, NULL, NULL }, /* 2766 */ - { 0, 0, NULL, NULL }, /* 2767 */ - { 0, 0, NULL, NULL }, /* 2768 */ - { 0, 0, NULL, NULL }, /* 2769 */ - { 0, 0, NULL, NULL }, /* 2770 */ - { 0, 0, NULL, NULL }, /* 2771 */ - { 0, 0, NULL, NULL }, /* 2772 */ - { 0, 0, NULL, NULL }, /* 2773 */ - { 0, 0, NULL, NULL }, /* 2774 */ - { 0, 0, NULL, NULL }, /* 2775 */ - { 0, 0, NULL, NULL }, /* 2776 */ - { 0, 0, NULL, NULL }, /* 2777 */ - { 0, 0, NULL, NULL }, /* 2778 */ - { 0, 0, NULL, NULL }, /* 2779 */ - { 0, 0, NULL, NULL }, /* 2780 */ - { 0, 0, NULL, NULL }, /* 2781 */ - { 0, 0, NULL, NULL }, /* 2782 */ - { 0, 0, NULL, NULL }, /* 2783 */ - { 0, 0, NULL, NULL }, /* 2784 */ - { 0, 0, NULL, NULL }, /* 2785 */ - { 0, 0, NULL, NULL }, /* 2786 */ - { 0, 0, NULL, NULL }, /* 2787 */ - { 0, 0, NULL, NULL }, /* 2788 */ - { 0, 0, NULL, NULL }, /* 2789 */ - { 0, 0, NULL, NULL }, /* 2790 */ - { 0, 0, NULL, NULL }, /* 2791 */ - { 0, 0, NULL, NULL }, /* 2792 */ - { 0, 0, NULL, NULL }, /* 2793 */ - { 0, 0, NULL, NULL }, /* 2794 */ - { 0, 0, NULL, NULL }, /* 2795 */ - { 0, 0, NULL, NULL }, /* 2796 */ - { 0, 0, NULL, NULL }, /* 2797 */ - { 0, 0, NULL, NULL }, /* 2798 */ - { 0, 0, NULL, NULL }, /* 2799 */ - { 0, 0, NULL, NULL }, /* 2800 */ - { 0, 0, NULL, NULL }, /* 2801 */ - { 0, 0, NULL, NULL }, /* 2802 */ - { 0, 0, NULL, NULL }, /* 2803 */ - { 0, 0, NULL, NULL }, /* 2804 */ - { 0, 0, NULL, NULL }, /* 2805 */ - { 0, 0, NULL, NULL }, /* 2806 */ - { 0, 0, NULL, NULL }, /* 2807 */ - { 0, 0, NULL, NULL }, /* 2808 */ - { 0, 0, NULL, NULL }, /* 2809 */ - { 0, 0, NULL, NULL }, /* 2810 */ - { 0, 0, NULL, NULL }, /* 2811 */ - { 0, 0, NULL, NULL }, /* 2812 */ - { 0, 0, NULL, NULL }, /* 2813 */ - { 0, 0, NULL, NULL }, /* 2814 */ - { 0, 0, NULL, NULL }, /* 2815 */ - { 0, 0, NULL, NULL }, /* 2816 */ - { 0, 0, NULL, NULL }, /* 2817 */ - { 0, 0, NULL, NULL }, /* 2818 */ - { 0, 0, NULL, NULL }, /* 2819 */ - { 0, 0, NULL, NULL }, /* 2820 */ - { 0, 0, NULL, NULL }, /* 2821 */ - { 0, 0, NULL, NULL }, /* 2822 */ - { 0, 0, NULL, NULL }, /* 2823 */ - { 0, 0, NULL, NULL }, /* 2824 */ - { 0, 0, NULL, NULL }, /* 2825 */ - { 0, 0, NULL, NULL }, /* 2826 */ - { 0, 0, NULL, NULL }, /* 2827 */ - { 0, 0, NULL, NULL }, /* 2828 */ - { 0, 0, NULL, NULL }, /* 2829 */ - { 0, 0, NULL, NULL }, /* 2830 */ - { 0, 0, NULL, NULL }, /* 2831 */ - { 0, 0, NULL, NULL }, /* 2832 */ - { 0, 0, NULL, NULL }, /* 2833 */ - { 0, 0, NULL, NULL }, /* 2834 */ - { 0, 0, NULL, NULL }, /* 2835 */ - { 0, 0, NULL, NULL }, /* 2836 */ - { 0, 0, NULL, NULL }, /* 2837 */ - { 0, 0, NULL, NULL }, /* 2838 */ - { 0, 0, NULL, NULL }, /* 2839 */ - { 0, 0, NULL, NULL }, /* 2840 */ - { 0, 0, NULL, NULL }, /* 2841 */ - { 0, 0, NULL, NULL }, /* 2842 */ - { 0, 0, NULL, NULL }, /* 2843 */ - { 0, 0, NULL, NULL }, /* 2844 */ - { 0, 0, NULL, NULL }, /* 2845 */ - { 0, 0, NULL, NULL }, /* 2846 */ - { 0, 0, NULL, NULL }, /* 2847 */ - { 0, 0, NULL, NULL }, /* 2848 */ - { 0, 0, NULL, NULL }, /* 2849 */ - { 0, 0, NULL, NULL }, /* 2850 */ - { 0, 0, NULL, NULL }, /* 2851 */ - { 0, 0, NULL, NULL }, /* 2852 */ - { 0, 0, NULL, NULL }, /* 2853 */ - { 0, 0, NULL, NULL }, /* 2854 */ - { 0, 0, NULL, NULL }, /* 2855 */ - { 0, 0, NULL, NULL }, /* 2856 */ - { 0, 0, NULL, NULL }, /* 2857 */ - { 0, 0, NULL, NULL }, /* 2858 */ - { 0, 0, NULL, NULL }, /* 2859 */ - { 0, 0, NULL, NULL }, /* 2860 */ - { 0, 0, NULL, NULL }, /* 2861 */ - { 0, 0, NULL, NULL }, /* 2862 */ - { 0, 0, NULL, NULL }, /* 2863 */ - { 0, 0, NULL, NULL }, /* 2864 */ - { 0, 0, NULL, NULL }, /* 2865 */ - { 0, 0, NULL, NULL }, /* 2866 */ - { 0, 0, NULL, NULL }, /* 2867 */ - { 0, 0, NULL, NULL }, /* 2868 */ - { 0, 0, NULL, NULL }, /* 2869 */ - { 0, 0, NULL, NULL }, /* 2870 */ - { 0, 0, NULL, NULL }, /* 2871 */ - { 0, 0, NULL, NULL }, /* 2872 */ - { 0, 0, NULL, NULL }, /* 2873 */ - { 0, 0, NULL, NULL }, /* 2874 */ - { 0, 0, NULL, NULL }, /* 2875 */ - { 0, 0, NULL, NULL }, /* 2876 */ - { 0, 0, NULL, NULL }, /* 2877 */ - { 0, 0, NULL, NULL }, /* 2878 */ - { 0, 0, NULL, NULL }, /* 2879 */ - { 0, 0, NULL, NULL }, /* 2880 */ - { 0, 0, NULL, NULL }, /* 2881 */ - { 0, 0, NULL, NULL }, /* 2882 */ - { 0, 0, NULL, NULL }, /* 2883 */ - { 0, 0, NULL, NULL }, /* 2884 */ - { 0, 0, NULL, NULL }, /* 2885 */ - { 0, 0, NULL, NULL }, /* 2886 */ - { 0, 0, NULL, NULL }, /* 2887 */ - { 0, 0, NULL, NULL }, /* 2888 */ - { 0, 0, NULL, NULL }, /* 2889 */ - { 0, 0, NULL, NULL }, /* 2890 */ - { 0, 0, NULL, NULL }, /* 2891 */ - { 0, 0, NULL, NULL }, /* 2892 */ - { 0, 0, NULL, NULL }, /* 2893 */ - { 0, 0, NULL, NULL }, /* 2894 */ - { 0, 0, NULL, NULL }, /* 2895 */ - { 0, 0, NULL, NULL }, /* 2896 */ - { 0, 0, NULL, NULL }, /* 2897 */ - { 0, 0, NULL, NULL }, /* 2898 */ - { 0, 0, NULL, NULL }, /* 2899 */ - { 0, 0, NULL, NULL }, /* 2900 */ - { 0, 0, NULL, NULL }, /* 2901 */ - { 0, 0, NULL, NULL }, /* 2902 */ - { 0, 0, NULL, NULL }, /* 2903 */ - { 0, 0, NULL, NULL }, /* 2904 */ - { 0, 0, NULL, NULL }, /* 2905 */ - { 0, 0, NULL, NULL }, /* 2906 */ - { 0, 0, NULL, NULL }, /* 2907 */ - { 0, 0, NULL, NULL }, /* 2908 */ - { 0, 0, NULL, NULL }, /* 2909 */ - { 0, 0, NULL, NULL }, /* 2910 */ - { 0, 0, NULL, NULL }, /* 2911 */ - { 0, 0, NULL, NULL }, /* 2912 */ - { 0, 0, NULL, NULL }, /* 2913 */ - { 0, 0, NULL, NULL }, /* 2914 */ - { 0, 0, NULL, NULL }, /* 2915 */ - { 0, 0, NULL, NULL }, /* 2916 */ - { 0, 0, NULL, NULL }, /* 2917 */ - { 0, 0, NULL, NULL }, /* 2918 */ - { 0, 0, NULL, NULL }, /* 2919 */ - { 0, 0, NULL, NULL }, /* 2920 */ - { 0, 0, NULL, NULL }, /* 2921 */ - { 0, 0, NULL, NULL }, /* 2922 */ - { 0, 0, NULL, NULL }, /* 2923 */ - { 0, 0, NULL, NULL }, /* 2924 */ - { 0, 0, NULL, NULL }, /* 2925 */ - { 0, 0, NULL, NULL }, /* 2926 */ - { 0, 0, NULL, NULL }, /* 2927 */ - { 0, 0, NULL, NULL }, /* 2928 */ - { 0, 0, NULL, NULL }, /* 2929 */ - { 0, 0, NULL, NULL }, /* 2930 */ - { 0, 0, NULL, NULL }, /* 2931 */ - { 0, 0, NULL, NULL }, /* 2932 */ - { 0, 0, NULL, NULL }, /* 2933 */ - { 0, 0, NULL, NULL }, /* 2934 */ - { 0, 0, NULL, NULL }, /* 2935 */ - { 0, 0, NULL, NULL }, /* 2936 */ - { 0, 0, NULL, NULL }, /* 2937 */ - { 0, 0, NULL, NULL }, /* 2938 */ - { 0, 0, NULL, NULL }, /* 2939 */ - { 0, 0, NULL, NULL }, /* 2940 */ - { 0, 0, NULL, NULL }, /* 2941 */ - { 0, 0, NULL, NULL }, /* 2942 */ - { 0, 0, NULL, NULL }, /* 2943 */ - { 0, 0, NULL, NULL }, /* 2944 */ - { 0, 0, NULL, NULL }, /* 2945 */ - { 0, 0, NULL, NULL }, /* 2946 */ - { 0, 0, NULL, NULL }, /* 2947 */ - { 0, 0, NULL, NULL }, /* 2948 */ - { 0, 0, NULL, NULL }, /* 2949 */ - { 0, 0, NULL, NULL }, /* 2950 */ - { 0, 0, NULL, NULL }, /* 2951 */ - { 0, 0, NULL, NULL }, /* 2952 */ - { 0, 0, NULL, NULL }, /* 2953 */ - { 0, 0, NULL, NULL }, /* 2954 */ - { 0, 0, NULL, NULL }, /* 2955 */ - { 0, 0, NULL, NULL }, /* 2956 */ - { 0, 0, NULL, NULL }, /* 2957 */ - { 0, 0, NULL, NULL }, /* 2958 */ - { 0, 0, NULL, NULL }, /* 2959 */ - { 0, 0, NULL, NULL }, /* 2960 */ - { 0, 0, NULL, NULL }, /* 2961 */ - { 0, 0, NULL, NULL }, /* 2962 */ - { 0, 0, NULL, NULL }, /* 2963 */ - { 0, 0, NULL, NULL }, /* 2964 */ - { 0, 0, NULL, NULL }, /* 2965 */ - { 0, 0, NULL, NULL }, /* 2966 */ - { 0, 0, NULL, NULL }, /* 2967 */ - { 0, 0, NULL, NULL }, /* 2968 */ - { 0, 0, NULL, NULL }, /* 2969 */ - { 0, 0, NULL, NULL }, /* 2970 */ - { 0, 0, NULL, NULL }, /* 2971 */ - { 0, 0, NULL, NULL }, /* 2972 */ - { 0, 0, NULL, NULL }, /* 2973 */ - { 0, 0, NULL, NULL }, /* 2974 */ - { 0, 0, NULL, NULL }, /* 2975 */ - { 0, 0, NULL, NULL }, /* 2976 */ - { 0, 0, NULL, NULL }, /* 2977 */ - { 0, 0, NULL, NULL }, /* 2978 */ - { 0, 0, NULL, NULL }, /* 2979 */ - { 0, 0, NULL, NULL }, /* 2980 */ - { 0, 0, NULL, NULL }, /* 2981 */ - { 0, 0, NULL, NULL }, /* 2982 */ - { 0, 0, NULL, NULL }, /* 2983 */ - { 0, 0, NULL, NULL }, /* 2984 */ - { 0, 0, NULL, NULL }, /* 2985 */ - { 0, 0, NULL, NULL }, /* 2986 */ - { 0, 0, NULL, NULL }, /* 2987 */ - { 0, 0, NULL, NULL }, /* 2988 */ - { 0, 0, NULL, NULL }, /* 2989 */ - { 0, 0, NULL, NULL }, /* 2990 */ - { 0, 0, NULL, NULL }, /* 2991 */ - { 0, 0, NULL, NULL }, /* 2992 */ - { 0, 0, NULL, NULL }, /* 2993 */ - { 0, 0, NULL, NULL }, /* 2994 */ - { 0, 0, NULL, NULL }, /* 2995 */ - { 0, 0, NULL, NULL }, /* 2996 */ - { 0, 0, NULL, NULL }, /* 2997 */ - { 0, 0, NULL, NULL }, /* 2998 */ - { 0, 0, NULL, NULL }, /* 2999 */ /* end of BSD 4.3 */ - { 0, 0, printargs, "posix_syscall" }, /* 3000 */ /* start of POSIX */ - { 0, 0, printargs, "posix_exit" }, /* 3001 */ - { 0, 0, printargs, "posix_fork" }, /* 3002 */ - { 0, 0, printargs, "posix_read" }, /* 3003 */ - { 0, 0, printargs, "posix_write" }, /* 3004 */ - { 0, 0, printargs, "posix_open" }, /* 3005 */ - { 0, 0, printargs, "posix_close" }, /* 3006 */ - { 0, 0, printargs, "posix_wait" }, /* 3007 */ - { 0, 0, printargs, "posix_creat" }, /* 3008 */ - { 0, 0, printargs, "posix_link" }, /* 3009 */ - { 0, 0, printargs, "posix_unlink" }, /* 3010 */ - { 0, 0, printargs, "posix_exec" }, /* 3011 */ - { 0, 0, printargs, "posix_chdir" }, /* 3012 */ - { 0, 0, printargs, "posix_gtime" }, /* 3013 */ - { 0, 0, printargs, "posix_mknod" }, /* 3014 */ - { 0, 0, printargs, "posix_chmod" }, /* 3015 */ - { 0, 0, printargs, "posix_chown" }, /* 3016 */ - { 0, 0, printargs, "posix_sbreak" }, /* 3017 */ - { 0, 0, printargs, "posix_stat" }, /* 3018 */ - { 0, 0, printargs, "posix_lseek" }, /* 3019 */ - { 0, 0, printargs, "posix_getpid" }, /* 3020 */ - { 0, 0, printargs, "posix_mount" }, /* 3021 */ - { 0, 0, printargs, "posix_umount" }, /* 3022 */ - { 0, 0, printargs, "posix_setuid" }, /* 3023 */ - { 0, 0, printargs, "posix_getuid" }, /* 3024 */ - { 0, 0, printargs, "posix_stime" }, /* 3025 */ - { 0, 0, printargs, "posix_ptrace" }, /* 3026 */ - { 0, 0, printargs, "posix_alarm" }, /* 3027 */ - { 0, 0, printargs, "posix_fstat" }, /* 3028 */ - { 0, 0, printargs, "posix_pause" }, /* 3029 */ - { 0, 0, printargs, "posix_utime" }, /* 3030 */ - { 0, 0, printargs, "posix_stty" }, /* 3031 */ - { 0, 0, printargs, "posix_gtty" }, /* 3032 */ - { 0, 0, printargs, "posix_access" }, /* 3033 */ - { 0, 0, printargs, "posix_nice" }, /* 3034 */ - { 0, 0, printargs, "posix_statfs" }, /* 3035 */ - { 0, 0, printargs, "posix_sync" }, /* 3036 */ - { 0, 0, printargs, "posix_kill" }, /* 3037 */ - { 0, 0, printargs, "posix_fstatfs" }, /* 3038 */ - { 0, 0, printargs, "posix_getpgrp" }, /* 3039 */ - { 0, 0, printargs, "posix_syssgi" }, /* 3040 */ - { 0, 0, printargs, "posix_dup" }, /* 3041 */ - { 0, 0, printargs, "posix_pipe" }, /* 3042 */ - { 0, 0, printargs, "posix_times" }, /* 3043 */ - { 0, 0, printargs, "posix_profil" }, /* 3044 */ - { 0, 0, printargs, "posix_lock" }, /* 3045 */ - { 0, 0, printargs, "posix_setgid" }, /* 3046 */ - { 0, 0, printargs, "posix_getgid" }, /* 3047 */ - { 0, 0, printargs, "posix_sig" }, /* 3048 */ - { 0, 0, printargs, "posix_msgsys" }, /* 3049 */ - { 0, 0, printargs, "posix_sysmips" }, /* 3050 */ - { 0, 0, printargs, "posix_sysacct" }, /* 3051 */ - { 0, 0, printargs, "posix_shmsys" }, /* 3052 */ - { 0, 0, printargs, "posix_semsys" }, /* 3053 */ - { 0, 0, printargs, "posix_ioctl" }, /* 3054 */ - { 0, 0, printargs, "posix_uadmin" }, /* 3055 */ - { 0, 0, printargs, "posix_exch" }, /* 3056 */ - { 0, 0, printargs, "posix_utssys" }, /* 3057 */ - { 0, 0, NULL, NULL , }, /* 3058 */ - { 0, 0, printargs, "posix_exece" }, /* 3059 */ - { 0, 0, printargs, "posix_umask" }, /* 3060 */ - { 0, 0, printargs, "posix_chroot" }, /* 3061 */ - { 0, 0, printargs, "posix_fcntl" }, /* 3062 */ - { 0, 0, printargs, "posix_ulimit" }, /* 3063 */ - { 0, 0, NULL, NULL , }, /* 3064 */ - { 0, 0, NULL, NULL , }, /* 3065 */ - { 0, 0, NULL, NULL , }, /* 3066 */ - { 0, 0, NULL, NULL , }, /* 3067 */ - { 0, 0, NULL, NULL , }, /* 3068 */ - { 0, 0, NULL, NULL , }, /* 3069 */ - { 0, 0, printargs, "posix_advfs" }, /* 3070 */ - { 0, 0, printargs, "posix_unadvfs" }, /* 3071 */ - { 0, 0, printargs, "posix_rmount" }, /* 3072 */ - { 0, 0, printargs, "posix_rumount" }, /* 3073 */ - { 0, 0, printargs, "posix_rfstart" }, /* 3074 */ - { 0, 0, NULL, NULL , }, /* 3075 */ - { 0, 0, printargs, "posix_rdebug" }, /* 3076 */ - { 0, 0, printargs, "posix_rfstop" }, /* 3077 */ - { 0, 0, printargs, "posix_rfsys" }, /* 3078 */ - { 0, 0, printargs, "posix_rmdir" }, /* 3079 */ - { 0, 0, printargs, "posix_mkdir" }, /* 3080 */ - { 0, 0, printargs, "posix_getdents" }, /* 3081 */ - { 0, 0, printargs, "posix_sginap" }, /* 3082 */ - { 0, 0, printargs, "posix_sgikopt" }, /* 3083 */ - { 0, 0, printargs, "posix_sysfs" }, /* 3084 */ - { 0, 0, printargs, "posix_getmsg" }, /* 3085 */ - { 0, 0, printargs, "posix_putmsg" }, /* 3086 */ - { 0, 0, printargs, "posix_poll" }, /* 3087 */ - { 0, 0, printargs, "posix_sigreturn" }, /* 3088 */ - { 0, 0, printargs, "posix_accept" }, /* 3089 */ - { 0, 0, printargs, "posix_bind" }, /* 3090 */ - { 0, 0, printargs, "posix_connect" }, /* 3091 */ - { 0, 0, printargs, "posix_gethostid" }, /* 3092 */ - { 0, 0, printargs, "posix_getpeername" }, /* 3093 */ - { 0, 0, printargs, "posix_getsockname" }, /* 3094 */ - { 0, 0, printargs, "posix_getsockopt" }, /* 3095 */ - { 0, 0, printargs, "posix_listen" }, /* 3096 */ - { 0, 0, printargs, "posix_recv" }, /* 3097 */ - { 0, 0, printargs, "posix_recvfrom" }, /* 3098 */ - { 0, 0, printargs, "posix_recvmsg" }, /* 3099 */ - { 0, 0, printargs, "posix_select" }, /* 3100 */ - { 0, 0, printargs, "posix_send" }, /* 3101 */ - { 0, 0, printargs, "posix_sendmsg" }, /* 3102 */ - { 0, 0, printargs, "posix_sendto" }, /* 3103 */ - { 0, 0, printargs, "posix_sethostid" }, /* 3104 */ - { 0, 0, printargs, "posix_setsockopt" }, /* 3105 */ - { 0, 0, printargs, "posix_shutdown" }, /* 3106 */ - { 0, 0, printargs, "posix_socket" }, /* 3107 */ - { 0, 0, printargs, "posix_gethostname" }, /* 3108 */ - { 0, 0, printargs, "posix_sethostname" }, /* 3109 */ - { 0, 0, printargs, "posix_getdomainname" }, /* 3110 */ - { 0, 0, printargs, "posix_setdomainname" }, /* 3111 */ - { 0, 0, printargs, "posix_truncate" }, /* 3112 */ - { 0, 0, printargs, "posix_ftruncate" }, /* 3113 */ - { 0, 0, printargs, "posix_rename" }, /* 3114 */ - { 0, 0, printargs, "posix_symlink" }, /* 3115 */ - { 0, 0, printargs, "posix_readlink" }, /* 3116 */ - { 0, 0, printargs, "posix_lstat" }, /* 3117 */ - { 0, 0, printargs, "posix_nfs_mount" }, /* 3118 */ - { 0, 0, printargs, "posix_nfs_svc" }, /* 3119 */ - { 0, 0, printargs, "posix_nfs_getfh" }, /* 3120 */ - { 0, 0, printargs, "posix_async_daemon" }, /* 3121 */ - { 0, 0, printargs, "posix_exportfs" }, /* 3122 */ - { 0, 0, printargs, "posix_SGI_setregid" }, /* 3123 */ - { 0, 0, printargs, "posix_SGI_setreuid" }, /* 3124 */ - { 0, 0, printargs, "posix_getitimer" }, /* 3125 */ - { 0, 0, printargs, "posix_setitimer" }, /* 3126 */ - { 0, 0, printargs, "posix_adjtime" }, /* 3127 */ - { 0, 0, printargs, "posix_SGI_bsdgettime" }, /* 3128 */ - { 0, 0, printargs, "posix_SGI_sproc" }, /* 3129 */ - { 0, 0, printargs, "posix_SGI_prctl" }, /* 3130 */ - { 0, 0, printargs, "posix_SGI_blkproc" }, /* 3131 */ - { 0, 0, NULL, NULL , }, /* 3132 */ - { 0, 0, printargs, "posix_SGI_sgigsc" }, /* 3133 */ - { 0, 0, printargs, "posix_SGI_mmap" }, /* 3134 */ - { 0, 0, printargs, "posix_SGI_munmap" }, /* 3135 */ - { 0, 0, printargs, "posix_SGI_mprotect" }, /* 3136 */ - { 0, 0, printargs, "posix_SGI_msync" }, /* 3137 */ - { 0, 0, printargs, "posix_SGI_madvise" }, /* 3138 */ - { 0, 0, printargs, "posix_SGI_mpin" }, /* 3139 */ - { 0, 0, printargs, "posix_SGI_getpagesize" }, /* 3140 */ - { 0, 0, printargs, "posix_SGI_libattach" }, /* 3141 */ - { 0, 0, printargs, "posix_SGI_libdetach" }, /* 3142 */ - { 0, 0, printargs, "posix_SGI_getpgrp" }, /* 3143 */ - { 0, 0, printargs, "posix_SGI_setpgrp" }, /* 3144 */ - { 0, 0, NULL, NULL , }, /* 3145 */ - { 0, 0, NULL, NULL , }, /* 3146 */ - { 0, 0, NULL, NULL , }, /* 3147 */ - { 0, 0, NULL, NULL , }, /* 3148 */ - { 0, 0, NULL, NULL , }, /* 3149 */ - { 0, 0, printargs, "posix_cacheflush" }, /* 3150 */ - { 0, 0, printargs, "posix_cachectl" }, /* 3151 */ - { 0, 0, printargs, "posix_fchown" }, /* 3152 */ - { 0, 0, printargs, "posix_fchmod" }, /* 3153 */ - { 0, 0, printargs, "posix_wait3" }, /* 3154 */ - { 0, 0, printargs, "posix_mmap" }, /* 3155 */ - { 0, 0, printargs, "posix_munmap" }, /* 3156 */ - { 0, 0, printargs, "posix_madvise" }, /* 3157 */ - { 0, 0, printargs, "posix_BSD_getpagesize" }, /* 3158 */ - { 0, 0, printargs, "posix_setreuid" }, /* 3159 */ - { 0, 0, printargs, "posix_setregid" }, /* 3160 */ - { 0, 0, printargs, "posix_setpgid" }, /* 3161 */ - { 0, 0, printargs, "posix_getgroups" }, /* 3162 */ - { 0, 0, printargs, "posix_setgroups" }, /* 3163 */ - { 0, 0, printargs, "posix_gettimeofday" }, /* 3164 */ - { 0, 0, printargs, "posix_getrusage" }, /* 3165 */ - { 0, 0, printargs, "posix_getrlimit" }, /* 3166 */ - { 0, 0, printargs, "posix_setrlimit" }, /* 3167 */ - { 0, 0, printargs, "posix_waitpid" }, /* 3168 */ - { 0, 0, printargs, "posix_dup2" }, /* 3169 */ - { 0, 0, NULL, NULL , }, /* 3170 */ - { 0, 0, NULL, NULL , }, /* 3171 */ - { 0, 0, NULL, NULL , }, /* 3172 */ - { 0, 0, NULL, NULL , }, /* 3173 */ - { 0, 0, NULL, NULL , }, /* 3174 */ - { 0, 0, NULL, NULL , }, /* 3175 */ - { 0, 0, NULL, NULL , }, /* 3176 */ - { 0, 0, NULL, NULL , }, /* 3177 */ - { 0, 0, NULL, NULL , }, /* 3178 */ - { 0, 0, NULL, NULL , }, /* 3179 */ - { 0, 0, NULL, NULL , }, /* 3180 */ - { 0, 0, NULL, NULL , }, /* 3181 */ - { 0, 0, NULL, NULL , }, /* 3182 */ - { 0, 0, NULL, NULL , }, /* 3183 */ - { 0, 0, NULL, NULL , }, /* 3184 */ - { 0, 0, NULL, NULL , }, /* 3185 */ - { 0, 0, NULL, NULL , }, /* 3186 */ - { 0, 0, NULL, NULL , }, /* 3187 */ - { 0, 0, NULL, NULL , }, /* 3188 */ - { 0, 0, NULL, NULL , }, /* 3189 */ - { 0, 0, NULL, NULL , }, /* 3190 */ - { 0, 0, NULL, NULL , }, /* 3191 */ - { 0, 0, NULL, NULL , }, /* 3192 */ - { 0, 0, NULL, NULL , }, /* 3193 */ - { 0, 0, NULL, NULL , }, /* 3194 */ - { 0, 0, NULL, NULL , }, /* 3195 */ - { 0, 0, NULL, NULL , }, /* 3196 */ - { 0, 0, NULL, NULL , }, /* 3197 */ - { 0, 0, NULL, NULL , }, /* 3198 */ - { 0, 0, NULL, NULL , }, /* 3199 */ - { 0, 0, NULL, NULL , }, /* 3200 */ - { 0, 0, NULL, NULL , }, /* 3201 */ - { 0, 0, NULL, NULL , }, /* 3202 */ - { 0, 0, NULL, NULL , }, /* 3203 */ - { 0, 0, NULL, NULL , }, /* 3204 */ - { 0, 0, NULL, NULL , }, /* 3205 */ - { 0, 0, NULL, NULL , }, /* 3206 */ - { 0, 0, NULL, NULL , }, /* 3207 */ - { 0, 0, NULL, NULL , }, /* 3208 */ - { 0, 0, NULL, NULL , }, /* 3209 */ - { 0, 0, NULL, NULL , }, /* 3210 */ - { 0, 0, NULL, NULL , }, /* 3211 */ - { 0, 0, NULL, NULL , }, /* 3212 */ - { 0, 0, NULL, NULL , }, /* 3213 */ - { 0, 0, NULL, NULL , }, /* 3214 */ - { 0, 0, NULL, NULL , }, /* 3215 */ - { 0, 0, NULL, NULL , }, /* 3216 */ - { 0, 0, NULL, NULL , }, /* 3217 */ - { 0, 0, NULL, NULL , }, /* 3218 */ - { 0, 0, NULL, NULL , }, /* 3219 */ - { 0, 0, NULL, NULL , }, /* 3220 */ - { 0, 0, NULL, NULL , }, /* 3221 */ - { 0, 0, NULL, NULL , }, /* 3222 */ - { 0, 0, NULL, NULL , }, /* 3223 */ - { 0, 0, NULL, NULL , }, /* 3224 */ - { 0, 0, NULL, NULL , }, /* 3225 */ - { 0, 0, NULL, NULL , }, /* 3226 */ - { 0, 0, NULL, NULL , }, /* 3227 */ - { 0, 0, NULL, NULL , }, /* 3228 */ - { 0, 0, NULL, NULL , }, /* 3229 */ - { 0, 0, NULL, NULL , }, /* 3230 */ - { 0, 0, NULL, NULL , }, /* 3231 */ - { 0, 0, NULL, NULL , }, /* 3232 */ - { 0, 0, NULL, NULL , }, /* 3233 */ - { 0, 0, NULL, NULL , }, /* 3234 */ - { 0, 0, NULL, NULL , }, /* 3235 */ - { 0, 0, NULL, NULL , }, /* 3236 */ - { 0, 0, NULL, NULL , }, /* 3237 */ - { 0, 0, NULL, NULL , }, /* 3238 */ - { 0, 0, NULL, NULL , }, /* 3239 */ - { 0, 0, NULL, NULL , }, /* 3240 */ - { 0, 0, NULL, NULL , }, /* 3241 */ - { 0, 0, NULL, NULL , }, /* 3242 */ - { 0, 0, NULL, NULL , }, /* 3243 */ - { 0, 0, NULL, NULL , }, /* 3244 */ - { 0, 0, NULL, NULL , }, /* 3245 */ - { 0, 0, NULL, NULL , }, /* 3246 */ - { 0, 0, NULL, NULL , }, /* 3247 */ - { 0, 0, NULL, NULL , }, /* 3248 */ - { 0, 0, NULL, NULL , }, /* 3249 */ - { 0, 0, NULL, NULL , }, /* 3250 */ - { 0, 0, NULL, NULL , }, /* 3251 */ - { 0, 0, NULL, NULL , }, /* 3252 */ - { 0, 0, NULL, NULL , }, /* 3253 */ - { 0, 0, NULL, NULL , }, /* 3254 */ - { 0, 0, NULL, NULL , }, /* 3255 */ - { 0, 0, NULL, NULL , }, /* 3256 */ - { 0, 0, NULL, NULL , }, /* 3257 */ - { 0, 0, NULL, NULL , }, /* 3258 */ - { 0, 0, NULL, NULL , }, /* 3259 */ - { 0, 0, printargs, "posix_netboot" }, /* 3260 */ - { 0, 0, printargs, "posix_netunboot" }, /* 3261 */ - { 0, 0, printargs, "posix_rdump" }, /* 3262 */ - { 0, 0, printargs, "posix_setsid" }, /* 3263 */ - { 0, 0, printargs, "posix_getmaxsig" }, /* 3264 */ - { 0, 0, printargs, "posix_sigpending" }, /* 3265 */ - { 0, 0, printargs, "posix_sigprocmask" }, /* 3266 */ - { 0, 0, printargs, "posix_sigsuspend" }, /* 3267 */ - { 0, 0, printargs, "posix_sigaction" }, /* 3268 */ - { 0, 0, NULL, NULL , }, /* 3269 */ - { 0, 0, NULL, NULL , }, /* 3270 */ - { 0, 0, NULL, NULL , }, /* 3271 */ - { 0, 0, NULL, NULL , }, /* 3272 */ - { 0, 0, NULL, NULL , }, /* 3273 */ - { 0, 0, NULL, NULL , }, /* 3274 */ - { 0, 0, NULL, NULL , }, /* 3275 */ - { 0, 0, NULL, NULL , }, /* 3276 */ - { 0, 0, NULL, NULL , }, /* 3277 */ - { 0, 0, NULL, NULL , }, /* 3278 */ - { 0, 0, NULL, NULL , }, /* 3279 */ - { 0, 0, NULL, NULL , }, /* 3280 */ - { 0, 0, NULL, NULL , }, /* 3281 */ - { 0, 0, NULL, NULL , }, /* 3282 */ - { 0, 0, NULL, NULL , }, /* 3283 */ - { 0, 0, NULL, NULL , }, /* 3284 */ - { 0, 0, NULL, NULL , }, /* 3285 */ - { 0, 0, NULL, NULL , }, /* 3286 */ - { 0, 0, NULL, NULL , }, /* 3287 */ - { 0, 0, NULL, NULL , }, /* 3288 */ - { 0, 0, NULL, NULL , }, /* 3289 */ - { 0, 0, NULL, NULL , }, /* 3290 */ - { 0, 0, NULL, NULL , }, /* 3291 */ - { 0, 0, NULL, NULL , }, /* 3292 */ - { 0, 0, NULL, NULL , }, /* 3293 */ - { 0, 0, NULL, NULL , }, /* 3294 */ - { 0, 0, NULL, NULL , }, /* 3295 */ - { 0, 0, NULL, NULL , }, /* 3296 */ - { 0, 0, NULL, NULL , }, /* 3297 */ - { 0, 0, NULL, NULL , }, /* 3298 */ - { 0, 0, NULL, NULL , }, /* 3299 */ - { 0, 0, NULL, NULL , }, /* 3300 */ - { 0, 0, NULL, NULL , }, /* 3301 */ - { 0, 0, NULL, NULL , }, /* 3302 */ - { 0, 0, NULL, NULL , }, /* 3303 */ - { 0, 0, NULL, NULL , }, /* 3304 */ - { 0, 0, NULL, NULL , }, /* 3305 */ - { 0, 0, NULL, NULL , }, /* 3306 */ - { 0, 0, NULL, NULL , }, /* 3307 */ - { 0, 0, NULL, NULL , }, /* 3308 */ - { 0, 0, NULL, NULL , }, /* 3309 */ - { 0, 0, NULL, NULL , }, /* 3310 */ - { 0, 0, NULL, NULL , }, /* 3311 */ - { 0, 0, NULL, NULL , }, /* 3312 */ - { 0, 0, NULL, NULL , }, /* 3313 */ - { 0, 0, NULL, NULL , }, /* 3314 */ - { 0, 0, NULL, NULL , }, /* 3315 */ - { 0, 0, NULL, NULL , }, /* 3316 */ - { 0, 0, NULL, NULL , }, /* 3317 */ - { 0, 0, NULL, NULL , }, /* 3318 */ - { 0, 0, NULL, NULL , }, /* 3319 */ - { 0, 0, NULL, NULL }, /* 3320 */ - { 0, 0, NULL, NULL }, /* 3321 */ - { 0, 0, NULL, NULL }, /* 3322 */ - { 0, 0, NULL, NULL }, /* 3323 */ - { 0, 0, NULL, NULL }, /* 3324 */ - { 0, 0, NULL, NULL }, /* 3325 */ - { 0, 0, NULL, NULL }, /* 3326 */ - { 0, 0, NULL, NULL }, /* 3327 */ - { 0, 0, NULL, NULL }, /* 3328 */ - { 0, 0, NULL, NULL }, /* 3329 */ - { 0, 0, NULL, NULL }, /* 3330 */ - { 0, 0, NULL, NULL }, /* 3331 */ - { 0, 0, NULL, NULL }, /* 3332 */ - { 0, 0, NULL, NULL }, /* 3333 */ - { 0, 0, NULL, NULL }, /* 3334 */ - { 0, 0, NULL, NULL }, /* 3335 */ - { 0, 0, NULL, NULL }, /* 3336 */ - { 0, 0, NULL, NULL }, /* 3337 */ - { 0, 0, NULL, NULL }, /* 3338 */ - { 0, 0, NULL, NULL }, /* 3339 */ - { 0, 0, NULL, NULL }, /* 3340 */ - { 0, 0, NULL, NULL }, /* 3341 */ - { 0, 0, NULL, NULL }, /* 3342 */ - { 0, 0, NULL, NULL }, /* 3343 */ - { 0, 0, NULL, NULL }, /* 3344 */ - { 0, 0, NULL, NULL }, /* 3345 */ - { 0, 0, NULL, NULL }, /* 3346 */ - { 0, 0, NULL, NULL }, /* 3347 */ - { 0, 0, NULL, NULL }, /* 3348 */ - { 0, 0, NULL, NULL }, /* 3349 */ - { 0, 0, NULL, NULL }, /* 3350 */ - { 0, 0, NULL, NULL }, /* 3351 */ - { 0, 0, NULL, NULL }, /* 3352 */ - { 0, 0, NULL, NULL }, /* 3353 */ - { 0, 0, NULL, NULL }, /* 3354 */ - { 0, 0, NULL, NULL }, /* 3355 */ - { 0, 0, NULL, NULL }, /* 3356 */ - { 0, 0, NULL, NULL }, /* 3357 */ - { 0, 0, NULL, NULL }, /* 3358 */ - { 0, 0, NULL, NULL }, /* 3359 */ - { 0, 0, NULL, NULL }, /* 3360 */ - { 0, 0, NULL, NULL }, /* 3361 */ - { 0, 0, NULL, NULL }, /* 3362 */ - { 0, 0, NULL, NULL }, /* 3363 */ - { 0, 0, NULL, NULL }, /* 3364 */ - { 0, 0, NULL, NULL }, /* 3365 */ - { 0, 0, NULL, NULL }, /* 3366 */ - { 0, 0, NULL, NULL }, /* 3367 */ - { 0, 0, NULL, NULL }, /* 3368 */ - { 0, 0, NULL, NULL }, /* 3369 */ - { 0, 0, NULL, NULL }, /* 3370 */ - { 0, 0, NULL, NULL }, /* 3371 */ - { 0, 0, NULL, NULL }, /* 3372 */ - { 0, 0, NULL, NULL }, /* 3373 */ - { 0, 0, NULL, NULL }, /* 3374 */ - { 0, 0, NULL, NULL }, /* 3375 */ - { 0, 0, NULL, NULL }, /* 3376 */ - { 0, 0, NULL, NULL }, /* 3377 */ - { 0, 0, NULL, NULL }, /* 3378 */ - { 0, 0, NULL, NULL }, /* 3379 */ - { 0, 0, NULL, NULL }, /* 3380 */ - { 0, 0, NULL, NULL }, /* 3381 */ - { 0, 0, NULL, NULL }, /* 3382 */ - { 0, 0, NULL, NULL }, /* 3383 */ - { 0, 0, NULL, NULL }, /* 3384 */ - { 0, 0, NULL, NULL }, /* 3385 */ - { 0, 0, NULL, NULL }, /* 3386 */ - { 0, 0, NULL, NULL }, /* 3387 */ - { 0, 0, NULL, NULL }, /* 3388 */ - { 0, 0, NULL, NULL }, /* 3389 */ - { 0, 0, NULL, NULL }, /* 3390 */ - { 0, 0, NULL, NULL }, /* 3391 */ - { 0, 0, NULL, NULL }, /* 3392 */ - { 0, 0, NULL, NULL }, /* 3393 */ - { 0, 0, NULL, NULL }, /* 3394 */ - { 0, 0, NULL, NULL }, /* 3395 */ - { 0, 0, NULL, NULL }, /* 3396 */ - { 0, 0, NULL, NULL }, /* 3397 */ - { 0, 0, NULL, NULL }, /* 3398 */ - { 0, 0, NULL, NULL }, /* 3399 */ - { 0, 0, NULL, NULL }, /* 3400 */ - { 0, 0, NULL, NULL }, /* 3401 */ - { 0, 0, NULL, NULL }, /* 3402 */ - { 0, 0, NULL, NULL }, /* 3403 */ - { 0, 0, NULL, NULL }, /* 3404 */ - { 0, 0, NULL, NULL }, /* 3405 */ - { 0, 0, NULL, NULL }, /* 3406 */ - { 0, 0, NULL, NULL }, /* 3407 */ - { 0, 0, NULL, NULL }, /* 3408 */ - { 0, 0, NULL, NULL }, /* 3409 */ - { 0, 0, NULL, NULL }, /* 3410 */ - { 0, 0, NULL, NULL }, /* 3411 */ - { 0, 0, NULL, NULL }, /* 3412 */ - { 0, 0, NULL, NULL }, /* 3413 */ - { 0, 0, NULL, NULL }, /* 3414 */ - { 0, 0, NULL, NULL }, /* 3415 */ - { 0, 0, NULL, NULL }, /* 3416 */ - { 0, 0, NULL, NULL }, /* 3417 */ - { 0, 0, NULL, NULL }, /* 3418 */ - { 0, 0, NULL, NULL }, /* 3419 */ - { 0, 0, NULL, NULL }, /* 3420 */ - { 0, 0, NULL, NULL }, /* 3421 */ - { 0, 0, NULL, NULL }, /* 3422 */ - { 0, 0, NULL, NULL }, /* 3423 */ - { 0, 0, NULL, NULL }, /* 3424 */ - { 0, 0, NULL, NULL }, /* 3425 */ - { 0, 0, NULL, NULL }, /* 3426 */ - { 0, 0, NULL, NULL }, /* 3427 */ - { 0, 0, NULL, NULL }, /* 3428 */ - { 0, 0, NULL, NULL }, /* 3429 */ - { 0, 0, NULL, NULL }, /* 3430 */ - { 0, 0, NULL, NULL }, /* 3431 */ - { 0, 0, NULL, NULL }, /* 3432 */ - { 0, 0, NULL, NULL }, /* 3433 */ - { 0, 0, NULL, NULL }, /* 3434 */ - { 0, 0, NULL, NULL }, /* 3435 */ - { 0, 0, NULL, NULL }, /* 3436 */ - { 0, 0, NULL, NULL }, /* 3437 */ - { 0, 0, NULL, NULL }, /* 3438 */ - { 0, 0, NULL, NULL }, /* 3439 */ - { 0, 0, NULL, NULL }, /* 3440 */ - { 0, 0, NULL, NULL }, /* 3441 */ - { 0, 0, NULL, NULL }, /* 3442 */ - { 0, 0, NULL, NULL }, /* 3443 */ - { 0, 0, NULL, NULL }, /* 3444 */ - { 0, 0, NULL, NULL }, /* 3445 */ - { 0, 0, NULL, NULL }, /* 3446 */ - { 0, 0, NULL, NULL }, /* 3447 */ - { 0, 0, NULL, NULL }, /* 3448 */ - { 0, 0, NULL, NULL }, /* 3449 */ - { 0, 0, NULL, NULL }, /* 3450 */ - { 0, 0, NULL, NULL }, /* 3451 */ - { 0, 0, NULL, NULL }, /* 3452 */ - { 0, 0, NULL, NULL }, /* 3453 */ - { 0, 0, NULL, NULL }, /* 3454 */ - { 0, 0, NULL, NULL }, /* 3455 */ - { 0, 0, NULL, NULL }, /* 3456 */ - { 0, 0, NULL, NULL }, /* 3457 */ - { 0, 0, NULL, NULL }, /* 3458 */ - { 0, 0, NULL, NULL }, /* 3459 */ - { 0, 0, NULL, NULL }, /* 3460 */ - { 0, 0, NULL, NULL }, /* 3461 */ - { 0, 0, NULL, NULL }, /* 3462 */ - { 0, 0, NULL, NULL }, /* 3463 */ - { 0, 0, NULL, NULL }, /* 3464 */ - { 0, 0, NULL, NULL }, /* 3465 */ - { 0, 0, NULL, NULL }, /* 3466 */ - { 0, 0, NULL, NULL }, /* 3467 */ - { 0, 0, NULL, NULL }, /* 3468 */ - { 0, 0, NULL, NULL }, /* 3469 */ - { 0, 0, NULL, NULL }, /* 3470 */ - { 0, 0, NULL, NULL }, /* 3471 */ - { 0, 0, NULL, NULL }, /* 3472 */ - { 0, 0, NULL, NULL }, /* 3473 */ - { 0, 0, NULL, NULL }, /* 3474 */ - { 0, 0, NULL, NULL }, /* 3475 */ - { 0, 0, NULL, NULL }, /* 3476 */ - { 0, 0, NULL, NULL }, /* 3477 */ - { 0, 0, NULL, NULL }, /* 3478 */ - { 0, 0, NULL, NULL }, /* 3479 */ - { 0, 0, NULL, NULL }, /* 3480 */ - { 0, 0, NULL, NULL }, /* 3481 */ - { 0, 0, NULL, NULL }, /* 3482 */ - { 0, 0, NULL, NULL }, /* 3483 */ - { 0, 0, NULL, NULL }, /* 3484 */ - { 0, 0, NULL, NULL }, /* 3485 */ - { 0, 0, NULL, NULL }, /* 3486 */ - { 0, 0, NULL, NULL }, /* 3487 */ - { 0, 0, NULL, NULL }, /* 3488 */ - { 0, 0, NULL, NULL }, /* 3489 */ - { 0, 0, NULL, NULL }, /* 3490 */ - { 0, 0, NULL, NULL }, /* 3491 */ - { 0, 0, NULL, NULL }, /* 3492 */ - { 0, 0, NULL, NULL }, /* 3493 */ - { 0, 0, NULL, NULL }, /* 3494 */ - { 0, 0, NULL, NULL }, /* 3495 */ - { 0, 0, NULL, NULL }, /* 3496 */ - { 0, 0, NULL, NULL }, /* 3497 */ - { 0, 0, NULL, NULL }, /* 3498 */ - { 0, 0, NULL, NULL }, /* 3499 */ - { 0, 0, NULL, NULL }, /* 3500 */ - { 0, 0, NULL, NULL }, /* 3501 */ - { 0, 0, NULL, NULL }, /* 3502 */ - { 0, 0, NULL, NULL }, /* 3503 */ - { 0, 0, NULL, NULL }, /* 3504 */ - { 0, 0, NULL, NULL }, /* 3505 */ - { 0, 0, NULL, NULL }, /* 3506 */ - { 0, 0, NULL, NULL }, /* 3507 */ - { 0, 0, NULL, NULL }, /* 3508 */ - { 0, 0, NULL, NULL }, /* 3509 */ - { 0, 0, NULL, NULL }, /* 3510 */ - { 0, 0, NULL, NULL }, /* 3511 */ - { 0, 0, NULL, NULL }, /* 3512 */ - { 0, 0, NULL, NULL }, /* 3513 */ - { 0, 0, NULL, NULL }, /* 3514 */ - { 0, 0, NULL, NULL }, /* 3515 */ - { 0, 0, NULL, NULL }, /* 3516 */ - { 0, 0, NULL, NULL }, /* 3517 */ - { 0, 0, NULL, NULL }, /* 3518 */ - { 0, 0, NULL, NULL }, /* 3519 */ - { 0, 0, NULL, NULL }, /* 3520 */ - { 0, 0, NULL, NULL }, /* 3521 */ - { 0, 0, NULL, NULL }, /* 3522 */ - { 0, 0, NULL, NULL }, /* 3523 */ - { 0, 0, NULL, NULL }, /* 3524 */ - { 0, 0, NULL, NULL }, /* 3525 */ - { 0, 0, NULL, NULL }, /* 3526 */ - { 0, 0, NULL, NULL }, /* 3527 */ - { 0, 0, NULL, NULL }, /* 3528 */ - { 0, 0, NULL, NULL }, /* 3529 */ - { 0, 0, NULL, NULL }, /* 3530 */ - { 0, 0, NULL, NULL }, /* 3531 */ - { 0, 0, NULL, NULL }, /* 3532 */ - { 0, 0, NULL, NULL }, /* 3533 */ - { 0, 0, NULL, NULL }, /* 3534 */ - { 0, 0, NULL, NULL }, /* 3535 */ - { 0, 0, NULL, NULL }, /* 3536 */ - { 0, 0, NULL, NULL }, /* 3537 */ - { 0, 0, NULL, NULL }, /* 3538 */ - { 0, 0, NULL, NULL }, /* 3539 */ - { 0, 0, NULL, NULL }, /* 3540 */ - { 0, 0, NULL, NULL }, /* 3541 */ - { 0, 0, NULL, NULL }, /* 3542 */ - { 0, 0, NULL, NULL }, /* 3543 */ - { 0, 0, NULL, NULL }, /* 3544 */ - { 0, 0, NULL, NULL }, /* 3545 */ - { 0, 0, NULL, NULL }, /* 3546 */ - { 0, 0, NULL, NULL }, /* 3547 */ - { 0, 0, NULL, NULL }, /* 3548 */ - { 0, 0, NULL, NULL }, /* 3549 */ - { 0, 0, NULL, NULL }, /* 3550 */ - { 0, 0, NULL, NULL }, /* 3551 */ - { 0, 0, NULL, NULL }, /* 3552 */ - { 0, 0, NULL, NULL }, /* 3553 */ - { 0, 0, NULL, NULL }, /* 3554 */ - { 0, 0, NULL, NULL }, /* 3555 */ - { 0, 0, NULL, NULL }, /* 3556 */ - { 0, 0, NULL, NULL }, /* 3557 */ - { 0, 0, NULL, NULL }, /* 3558 */ - { 0, 0, NULL, NULL }, /* 3559 */ - { 0, 0, NULL, NULL }, /* 3560 */ - { 0, 0, NULL, NULL }, /* 3561 */ - { 0, 0, NULL, NULL }, /* 3562 */ - { 0, 0, NULL, NULL }, /* 3563 */ - { 0, 0, NULL, NULL }, /* 3564 */ - { 0, 0, NULL, NULL }, /* 3565 */ - { 0, 0, NULL, NULL }, /* 3566 */ - { 0, 0, NULL, NULL }, /* 3567 */ - { 0, 0, NULL, NULL }, /* 3568 */ - { 0, 0, NULL, NULL }, /* 3569 */ - { 0, 0, NULL, NULL }, /* 3570 */ - { 0, 0, NULL, NULL }, /* 3571 */ - { 0, 0, NULL, NULL }, /* 3572 */ - { 0, 0, NULL, NULL }, /* 3573 */ - { 0, 0, NULL, NULL }, /* 3574 */ - { 0, 0, NULL, NULL }, /* 3575 */ - { 0, 0, NULL, NULL }, /* 3576 */ - { 0, 0, NULL, NULL }, /* 3577 */ - { 0, 0, NULL, NULL }, /* 3578 */ - { 0, 0, NULL, NULL }, /* 3579 */ - { 0, 0, NULL, NULL }, /* 3580 */ - { 0, 0, NULL, NULL }, /* 3581 */ - { 0, 0, NULL, NULL }, /* 3582 */ - { 0, 0, NULL, NULL }, /* 3583 */ - { 0, 0, NULL, NULL }, /* 3584 */ - { 0, 0, NULL, NULL }, /* 3585 */ - { 0, 0, NULL, NULL }, /* 3586 */ - { 0, 0, NULL, NULL }, /* 3587 */ - { 0, 0, NULL, NULL }, /* 3588 */ - { 0, 0, NULL, NULL }, /* 3589 */ - { 0, 0, NULL, NULL }, /* 3590 */ - { 0, 0, NULL, NULL }, /* 3591 */ - { 0, 0, NULL, NULL }, /* 3592 */ - { 0, 0, NULL, NULL }, /* 3593 */ - { 0, 0, NULL, NULL }, /* 3594 */ - { 0, 0, NULL, NULL }, /* 3595 */ - { 0, 0, NULL, NULL }, /* 3596 */ - { 0, 0, NULL, NULL }, /* 3597 */ - { 0, 0, NULL, NULL }, /* 3598 */ - { 0, 0, NULL, NULL }, /* 3599 */ - { 0, 0, NULL, NULL }, /* 3600 */ - { 0, 0, NULL, NULL }, /* 3601 */ - { 0, 0, NULL, NULL }, /* 3602 */ - { 0, 0, NULL, NULL }, /* 3603 */ - { 0, 0, NULL, NULL }, /* 3604 */ - { 0, 0, NULL, NULL }, /* 3605 */ - { 0, 0, NULL, NULL }, /* 3606 */ - { 0, 0, NULL, NULL }, /* 3607 */ - { 0, 0, NULL, NULL }, /* 3608 */ - { 0, 0, NULL, NULL }, /* 3609 */ - { 0, 0, NULL, NULL }, /* 3610 */ - { 0, 0, NULL, NULL }, /* 3611 */ - { 0, 0, NULL, NULL }, /* 3612 */ - { 0, 0, NULL, NULL }, /* 3613 */ - { 0, 0, NULL, NULL }, /* 3614 */ - { 0, 0, NULL, NULL }, /* 3615 */ - { 0, 0, NULL, NULL }, /* 3616 */ - { 0, 0, NULL, NULL }, /* 3617 */ - { 0, 0, NULL, NULL }, /* 3618 */ - { 0, 0, NULL, NULL }, /* 3619 */ - { 0, 0, NULL, NULL }, /* 3620 */ - { 0, 0, NULL, NULL }, /* 3621 */ - { 0, 0, NULL, NULL }, /* 3622 */ - { 0, 0, NULL, NULL }, /* 3623 */ - { 0, 0, NULL, NULL }, /* 3624 */ - { 0, 0, NULL, NULL }, /* 3625 */ - { 0, 0, NULL, NULL }, /* 3626 */ - { 0, 0, NULL, NULL }, /* 3627 */ - { 0, 0, NULL, NULL }, /* 3628 */ - { 0, 0, NULL, NULL }, /* 3629 */ - { 0, 0, NULL, NULL }, /* 3630 */ - { 0, 0, NULL, NULL }, /* 3631 */ - { 0, 0, NULL, NULL }, /* 3632 */ - { 0, 0, NULL, NULL }, /* 3633 */ - { 0, 0, NULL, NULL }, /* 3634 */ - { 0, 0, NULL, NULL }, /* 3635 */ - { 0, 0, NULL, NULL }, /* 3636 */ - { 0, 0, NULL, NULL }, /* 3637 */ - { 0, 0, NULL, NULL }, /* 3638 */ - { 0, 0, NULL, NULL }, /* 3639 */ - { 0, 0, NULL, NULL }, /* 3640 */ - { 0, 0, NULL, NULL }, /* 3641 */ - { 0, 0, NULL, NULL }, /* 3642 */ - { 0, 0, NULL, NULL }, /* 3643 */ - { 0, 0, NULL, NULL }, /* 3644 */ - { 0, 0, NULL, NULL }, /* 3645 */ - { 0, 0, NULL, NULL }, /* 3646 */ - { 0, 0, NULL, NULL }, /* 3647 */ - { 0, 0, NULL, NULL }, /* 3648 */ - { 0, 0, NULL, NULL }, /* 3649 */ - { 0, 0, NULL, NULL }, /* 3650 */ - { 0, 0, NULL, NULL }, /* 3651 */ - { 0, 0, NULL, NULL }, /* 3652 */ - { 0, 0, NULL, NULL }, /* 3653 */ - { 0, 0, NULL, NULL }, /* 3654 */ - { 0, 0, NULL, NULL }, /* 3655 */ - { 0, 0, NULL, NULL }, /* 3656 */ - { 0, 0, NULL, NULL }, /* 3657 */ - { 0, 0, NULL, NULL }, /* 3658 */ - { 0, 0, NULL, NULL }, /* 3659 */ - { 0, 0, NULL, NULL }, /* 3660 */ - { 0, 0, NULL, NULL }, /* 3661 */ - { 0, 0, NULL, NULL }, /* 3662 */ - { 0, 0, NULL, NULL }, /* 3663 */ - { 0, 0, NULL, NULL }, /* 3664 */ - { 0, 0, NULL, NULL }, /* 3665 */ - { 0, 0, NULL, NULL }, /* 3666 */ - { 0, 0, NULL, NULL }, /* 3667 */ - { 0, 0, NULL, NULL }, /* 3668 */ - { 0, 0, NULL, NULL }, /* 3669 */ - { 0, 0, NULL, NULL }, /* 3670 */ - { 0, 0, NULL, NULL }, /* 3671 */ - { 0, 0, NULL, NULL }, /* 3672 */ - { 0, 0, NULL, NULL }, /* 3673 */ - { 0, 0, NULL, NULL }, /* 3674 */ - { 0, 0, NULL, NULL }, /* 3675 */ - { 0, 0, NULL, NULL }, /* 3676 */ - { 0, 0, NULL, NULL }, /* 3677 */ - { 0, 0, NULL, NULL }, /* 3678 */ - { 0, 0, NULL, NULL }, /* 3679 */ - { 0, 0, NULL, NULL }, /* 3680 */ - { 0, 0, NULL, NULL }, /* 3681 */ - { 0, 0, NULL, NULL }, /* 3682 */ - { 0, 0, NULL, NULL }, /* 3683 */ - { 0, 0, NULL, NULL }, /* 3684 */ - { 0, 0, NULL, NULL }, /* 3685 */ - { 0, 0, NULL, NULL }, /* 3686 */ - { 0, 0, NULL, NULL }, /* 3687 */ - { 0, 0, NULL, NULL }, /* 3688 */ - { 0, 0, NULL, NULL }, /* 3689 */ - { 0, 0, NULL, NULL }, /* 3690 */ - { 0, 0, NULL, NULL }, /* 3691 */ - { 0, 0, NULL, NULL }, /* 3692 */ - { 0, 0, NULL, NULL }, /* 3693 */ - { 0, 0, NULL, NULL }, /* 3694 */ - { 0, 0, NULL, NULL }, /* 3695 */ - { 0, 0, NULL, NULL }, /* 3696 */ - { 0, 0, NULL, NULL }, /* 3697 */ - { 0, 0, NULL, NULL }, /* 3698 */ - { 0, 0, NULL, NULL }, /* 3699 */ - { 0, 0, NULL, NULL }, /* 3700 */ - { 0, 0, NULL, NULL }, /* 3701 */ - { 0, 0, NULL, NULL }, /* 3702 */ - { 0, 0, NULL, NULL }, /* 3703 */ - { 0, 0, NULL, NULL }, /* 3704 */ - { 0, 0, NULL, NULL }, /* 3705 */ - { 0, 0, NULL, NULL }, /* 3706 */ - { 0, 0, NULL, NULL }, /* 3707 */ - { 0, 0, NULL, NULL }, /* 3708 */ - { 0, 0, NULL, NULL }, /* 3709 */ - { 0, 0, NULL, NULL }, /* 3710 */ - { 0, 0, NULL, NULL }, /* 3711 */ - { 0, 0, NULL, NULL }, /* 3712 */ - { 0, 0, NULL, NULL }, /* 3713 */ - { 0, 0, NULL, NULL }, /* 3714 */ - { 0, 0, NULL, NULL }, /* 3715 */ - { 0, 0, NULL, NULL }, /* 3716 */ - { 0, 0, NULL, NULL }, /* 3717 */ - { 0, 0, NULL, NULL }, /* 3718 */ - { 0, 0, NULL, NULL }, /* 3719 */ - { 0, 0, NULL, NULL }, /* 3720 */ - { 0, 0, NULL, NULL }, /* 3721 */ - { 0, 0, NULL, NULL }, /* 3722 */ - { 0, 0, NULL, NULL }, /* 3723 */ - { 0, 0, NULL, NULL }, /* 3724 */ - { 0, 0, NULL, NULL }, /* 3725 */ - { 0, 0, NULL, NULL }, /* 3726 */ - { 0, 0, NULL, NULL }, /* 3727 */ - { 0, 0, NULL, NULL }, /* 3728 */ - { 0, 0, NULL, NULL }, /* 3729 */ - { 0, 0, NULL, NULL }, /* 3730 */ - { 0, 0, NULL, NULL }, /* 3731 */ - { 0, 0, NULL, NULL }, /* 3732 */ - { 0, 0, NULL, NULL }, /* 3733 */ - { 0, 0, NULL, NULL }, /* 3734 */ - { 0, 0, NULL, NULL }, /* 3735 */ - { 0, 0, NULL, NULL }, /* 3736 */ - { 0, 0, NULL, NULL }, /* 3737 */ - { 0, 0, NULL, NULL }, /* 3738 */ - { 0, 0, NULL, NULL }, /* 3739 */ - { 0, 0, NULL, NULL }, /* 3740 */ - { 0, 0, NULL, NULL }, /* 3741 */ - { 0, 0, NULL, NULL }, /* 3742 */ - { 0, 0, NULL, NULL }, /* 3743 */ - { 0, 0, NULL, NULL }, /* 3744 */ - { 0, 0, NULL, NULL }, /* 3745 */ - { 0, 0, NULL, NULL }, /* 3746 */ - { 0, 0, NULL, NULL }, /* 3747 */ - { 0, 0, NULL, NULL }, /* 3748 */ - { 0, 0, NULL, NULL }, /* 3749 */ - { 0, 0, NULL, NULL }, /* 3750 */ - { 0, 0, NULL, NULL }, /* 3751 */ - { 0, 0, NULL, NULL }, /* 3752 */ - { 0, 0, NULL, NULL }, /* 3753 */ - { 0, 0, NULL, NULL }, /* 3754 */ - { 0, 0, NULL, NULL }, /* 3755 */ - { 0, 0, NULL, NULL }, /* 3756 */ - { 0, 0, NULL, NULL }, /* 3757 */ - { 0, 0, NULL, NULL }, /* 3758 */ - { 0, 0, NULL, NULL }, /* 3759 */ - { 0, 0, NULL, NULL }, /* 3760 */ - { 0, 0, NULL, NULL }, /* 3761 */ - { 0, 0, NULL, NULL }, /* 3762 */ - { 0, 0, NULL, NULL }, /* 3763 */ - { 0, 0, NULL, NULL }, /* 3764 */ - { 0, 0, NULL, NULL }, /* 3765 */ - { 0, 0, NULL, NULL }, /* 3766 */ - { 0, 0, NULL, NULL }, /* 3767 */ - { 0, 0, NULL, NULL }, /* 3768 */ - { 0, 0, NULL, NULL }, /* 3769 */ - { 0, 0, NULL, NULL }, /* 3770 */ - { 0, 0, NULL, NULL }, /* 3771 */ - { 0, 0, NULL, NULL }, /* 3772 */ - { 0, 0, NULL, NULL }, /* 3773 */ - { 0, 0, NULL, NULL }, /* 3774 */ - { 0, 0, NULL, NULL }, /* 3775 */ - { 0, 0, NULL, NULL }, /* 3776 */ - { 0, 0, NULL, NULL }, /* 3777 */ - { 0, 0, NULL, NULL }, /* 3778 */ - { 0, 0, NULL, NULL }, /* 3779 */ - { 0, 0, NULL, NULL }, /* 3780 */ - { 0, 0, NULL, NULL }, /* 3781 */ - { 0, 0, NULL, NULL }, /* 3782 */ - { 0, 0, NULL, NULL }, /* 3783 */ - { 0, 0, NULL, NULL }, /* 3784 */ - { 0, 0, NULL, NULL }, /* 3785 */ - { 0, 0, NULL, NULL }, /* 3786 */ - { 0, 0, NULL, NULL }, /* 3787 */ - { 0, 0, NULL, NULL }, /* 3788 */ - { 0, 0, NULL, NULL }, /* 3789 */ - { 0, 0, NULL, NULL }, /* 3790 */ - { 0, 0, NULL, NULL }, /* 3791 */ - { 0, 0, NULL, NULL }, /* 3792 */ - { 0, 0, NULL, NULL }, /* 3793 */ - { 0, 0, NULL, NULL }, /* 3794 */ - { 0, 0, NULL, NULL }, /* 3795 */ - { 0, 0, NULL, NULL }, /* 3796 */ - { 0, 0, NULL, NULL }, /* 3797 */ - { 0, 0, NULL, NULL }, /* 3798 */ - { 0, 0, NULL, NULL }, /* 3799 */ - { 0, 0, NULL, NULL }, /* 3800 */ - { 0, 0, NULL, NULL }, /* 3801 */ - { 0, 0, NULL, NULL }, /* 3802 */ - { 0, 0, NULL, NULL }, /* 3803 */ - { 0, 0, NULL, NULL }, /* 3804 */ - { 0, 0, NULL, NULL }, /* 3805 */ - { 0, 0, NULL, NULL }, /* 3806 */ - { 0, 0, NULL, NULL }, /* 3807 */ - { 0, 0, NULL, NULL }, /* 3808 */ - { 0, 0, NULL, NULL }, /* 3809 */ - { 0, 0, NULL, NULL }, /* 3810 */ - { 0, 0, NULL, NULL }, /* 3811 */ - { 0, 0, NULL, NULL }, /* 3812 */ - { 0, 0, NULL, NULL }, /* 3813 */ - { 0, 0, NULL, NULL }, /* 3814 */ - { 0, 0, NULL, NULL }, /* 3815 */ - { 0, 0, NULL, NULL }, /* 3816 */ - { 0, 0, NULL, NULL }, /* 3817 */ - { 0, 0, NULL, NULL }, /* 3818 */ - { 0, 0, NULL, NULL }, /* 3819 */ - { 0, 0, NULL, NULL }, /* 3820 */ - { 0, 0, NULL, NULL }, /* 3821 */ - { 0, 0, NULL, NULL }, /* 3822 */ - { 0, 0, NULL, NULL }, /* 3823 */ - { 0, 0, NULL, NULL }, /* 3824 */ - { 0, 0, NULL, NULL }, /* 3825 */ - { 0, 0, NULL, NULL }, /* 3826 */ - { 0, 0, NULL, NULL }, /* 3827 */ - { 0, 0, NULL, NULL }, /* 3828 */ - { 0, 0, NULL, NULL }, /* 3829 */ - { 0, 0, NULL, NULL }, /* 3830 */ - { 0, 0, NULL, NULL }, /* 3831 */ - { 0, 0, NULL, NULL }, /* 3832 */ - { 0, 0, NULL, NULL }, /* 3833 */ - { 0, 0, NULL, NULL }, /* 3834 */ - { 0, 0, NULL, NULL }, /* 3835 */ - { 0, 0, NULL, NULL }, /* 3836 */ - { 0, 0, NULL, NULL }, /* 3837 */ - { 0, 0, NULL, NULL }, /* 3838 */ - { 0, 0, NULL, NULL }, /* 3839 */ - { 0, 0, NULL, NULL }, /* 3840 */ - { 0, 0, NULL, NULL }, /* 3841 */ - { 0, 0, NULL, NULL }, /* 3842 */ - { 0, 0, NULL, NULL }, /* 3843 */ - { 0, 0, NULL, NULL }, /* 3844 */ - { 0, 0, NULL, NULL }, /* 3845 */ - { 0, 0, NULL, NULL }, /* 3846 */ - { 0, 0, NULL, NULL }, /* 3847 */ - { 0, 0, NULL, NULL }, /* 3848 */ - { 0, 0, NULL, NULL }, /* 3849 */ - { 0, 0, NULL, NULL }, /* 3850 */ - { 0, 0, NULL, NULL }, /* 3851 */ - { 0, 0, NULL, NULL }, /* 3852 */ - { 0, 0, NULL, NULL }, /* 3853 */ - { 0, 0, NULL, NULL }, /* 3854 */ - { 0, 0, NULL, NULL }, /* 3855 */ - { 0, 0, NULL, NULL }, /* 3856 */ - { 0, 0, NULL, NULL }, /* 3857 */ - { 0, 0, NULL, NULL }, /* 3858 */ - { 0, 0, NULL, NULL }, /* 3859 */ - { 0, 0, NULL, NULL }, /* 3860 */ - { 0, 0, NULL, NULL }, /* 3861 */ - { 0, 0, NULL, NULL }, /* 3862 */ - { 0, 0, NULL, NULL }, /* 3863 */ - { 0, 0, NULL, NULL }, /* 3864 */ - { 0, 0, NULL, NULL }, /* 3865 */ - { 0, 0, NULL, NULL }, /* 3866 */ - { 0, 0, NULL, NULL }, /* 3867 */ - { 0, 0, NULL, NULL }, /* 3868 */ - { 0, 0, NULL, NULL }, /* 3869 */ - { 0, 0, NULL, NULL }, /* 3870 */ - { 0, 0, NULL, NULL }, /* 3871 */ - { 0, 0, NULL, NULL }, /* 3872 */ - { 0, 0, NULL, NULL }, /* 3873 */ - { 0, 0, NULL, NULL }, /* 3874 */ - { 0, 0, NULL, NULL }, /* 3875 */ - { 0, 0, NULL, NULL }, /* 3876 */ - { 0, 0, NULL, NULL }, /* 3877 */ - { 0, 0, NULL, NULL }, /* 3878 */ - { 0, 0, NULL, NULL }, /* 3879 */ - { 0, 0, NULL, NULL }, /* 3880 */ - { 0, 0, NULL, NULL }, /* 3881 */ - { 0, 0, NULL, NULL }, /* 3882 */ - { 0, 0, NULL, NULL }, /* 3883 */ - { 0, 0, NULL, NULL }, /* 3884 */ - { 0, 0, NULL, NULL }, /* 3885 */ - { 0, 0, NULL, NULL }, /* 3886 */ - { 0, 0, NULL, NULL }, /* 3887 */ - { 0, 0, NULL, NULL }, /* 3888 */ - { 0, 0, NULL, NULL }, /* 3889 */ - { 0, 0, NULL, NULL }, /* 3890 */ - { 0, 0, NULL, NULL }, /* 3891 */ - { 0, 0, NULL, NULL }, /* 3892 */ - { 0, 0, NULL, NULL }, /* 3893 */ - { 0, 0, NULL, NULL }, /* 3894 */ - { 0, 0, NULL, NULL }, /* 3895 */ - { 0, 0, NULL, NULL }, /* 3896 */ - { 0, 0, NULL, NULL }, /* 3897 */ - { 0, 0, NULL, NULL }, /* 3898 */ - { 0, 0, NULL, NULL }, /* 3899 */ - { 0, 0, NULL, NULL }, /* 3900 */ - { 0, 0, NULL, NULL }, /* 3901 */ - { 0, 0, NULL, NULL }, /* 3902 */ - { 0, 0, NULL, NULL }, /* 3903 */ - { 0, 0, NULL, NULL }, /* 3904 */ - { 0, 0, NULL, NULL }, /* 3905 */ - { 0, 0, NULL, NULL }, /* 3906 */ - { 0, 0, NULL, NULL }, /* 3907 */ - { 0, 0, NULL, NULL }, /* 3908 */ - { 0, 0, NULL, NULL }, /* 3909 */ - { 0, 0, NULL, NULL }, /* 3910 */ - { 0, 0, NULL, NULL }, /* 3911 */ - { 0, 0, NULL, NULL }, /* 3912 */ - { 0, 0, NULL, NULL }, /* 3913 */ - { 0, 0, NULL, NULL }, /* 3914 */ - { 0, 0, NULL, NULL }, /* 3915 */ - { 0, 0, NULL, NULL }, /* 3916 */ - { 0, 0, NULL, NULL }, /* 3917 */ - { 0, 0, NULL, NULL }, /* 3918 */ - { 0, 0, NULL, NULL }, /* 3919 */ - { 0, 0, NULL, NULL }, /* 3920 */ - { 0, 0, NULL, NULL }, /* 3921 */ - { 0, 0, NULL, NULL }, /* 3922 */ - { 0, 0, NULL, NULL }, /* 3923 */ - { 0, 0, NULL, NULL }, /* 3924 */ - { 0, 0, NULL, NULL }, /* 3925 */ - { 0, 0, NULL, NULL }, /* 3926 */ - { 0, 0, NULL, NULL }, /* 3927 */ - { 0, 0, NULL, NULL }, /* 3928 */ - { 0, 0, NULL, NULL }, /* 3929 */ - { 0, 0, NULL, NULL }, /* 3930 */ - { 0, 0, NULL, NULL }, /* 3931 */ - { 0, 0, NULL, NULL }, /* 3932 */ - { 0, 0, NULL, NULL }, /* 3933 */ - { 0, 0, NULL, NULL }, /* 3934 */ - { 0, 0, NULL, NULL }, /* 3935 */ - { 0, 0, NULL, NULL }, /* 3936 */ - { 0, 0, NULL, NULL }, /* 3937 */ - { 0, 0, NULL, NULL }, /* 3938 */ - { 0, 0, NULL, NULL }, /* 3939 */ - { 0, 0, NULL, NULL }, /* 3940 */ - { 0, 0, NULL, NULL }, /* 3941 */ - { 0, 0, NULL, NULL }, /* 3942 */ - { 0, 0, NULL, NULL }, /* 3943 */ - { 0, 0, NULL, NULL }, /* 3944 */ - { 0, 0, NULL, NULL }, /* 3945 */ - { 0, 0, NULL, NULL }, /* 3946 */ - { 0, 0, NULL, NULL }, /* 3947 */ - { 0, 0, NULL, NULL }, /* 3948 */ - { 0, 0, NULL, NULL }, /* 3949 */ - { 0, 0, NULL, NULL }, /* 3950 */ - { 0, 0, NULL, NULL }, /* 3951 */ - { 0, 0, NULL, NULL }, /* 3952 */ - { 0, 0, NULL, NULL }, /* 3953 */ - { 0, 0, NULL, NULL }, /* 3954 */ - { 0, 0, NULL, NULL }, /* 3955 */ - { 0, 0, NULL, NULL }, /* 3956 */ - { 0, 0, NULL, NULL }, /* 3957 */ - { 0, 0, NULL, NULL }, /* 3958 */ - { 0, 0, NULL, NULL }, /* 3959 */ - { 0, 0, NULL, NULL }, /* 3960 */ - { 0, 0, NULL, NULL }, /* 3961 */ - { 0, 0, NULL, NULL }, /* 3962 */ - { 0, 0, NULL, NULL }, /* 3963 */ - { 0, 0, NULL, NULL }, /* 3964 */ - { 0, 0, NULL, NULL }, /* 3965 */ - { 0, 0, NULL, NULL }, /* 3966 */ - { 0, 0, NULL, NULL }, /* 3967 */ - { 0, 0, NULL, NULL }, /* 3968 */ - { 0, 0, NULL, NULL }, /* 3969 */ - { 0, 0, NULL, NULL }, /* 3970 */ - { 0, 0, NULL, NULL }, /* 3971 */ - { 0, 0, NULL, NULL }, /* 3972 */ - { 0, 0, NULL, NULL }, /* 3973 */ - { 0, 0, NULL, NULL }, /* 3974 */ - { 0, 0, NULL, NULL }, /* 3975 */ - { 0, 0, NULL, NULL }, /* 3976 */ - { 0, 0, NULL, NULL }, /* 3977 */ - { 0, 0, NULL, NULL }, /* 3978 */ - { 0, 0, NULL, NULL }, /* 3979 */ - { 0, 0, NULL, NULL }, /* 3980 */ - { 0, 0, NULL, NULL }, /* 3981 */ - { 0, 0, NULL, NULL }, /* 3982 */ - { 0, 0, NULL, NULL }, /* 3983 */ - { 0, 0, NULL, NULL }, /* 3984 */ - { 0, 0, NULL, NULL }, /* 3985 */ - { 0, 0, NULL, NULL }, /* 3986 */ - { 0, 0, NULL, NULL }, /* 3987 */ - { 0, 0, NULL, NULL }, /* 3988 */ - { 0, 0, NULL, NULL }, /* 3989 */ - { 0, 0, NULL, NULL }, /* 3990 */ - { 0, 0, NULL, NULL }, /* 3991 */ - { 0, 0, NULL, NULL }, /* 3992 */ - { 0, 0, NULL, NULL }, /* 3993 */ - { 0, 0, NULL, NULL }, /* 3994 */ - { 0, 0, NULL, NULL }, /* 3995 */ - { 0, 0, NULL, NULL }, /* 3996 */ - { 0, 0, NULL, NULL }, /* 3997 */ - { 0, 0, NULL, NULL }, /* 3998 */ - { 0, 0, NULL, NULL }, /* 3999 */ /* end of POSIX */ -#if !defined(LINUX_MIPSN32) && !defined(LINUX_MIPSN64) - /* For an O32 strace, decode the o32 syscalls. */ - { MA, 0, printargs, "syscall" }, /* 4000 */ /* start of Linux o32 */ - { 1, TP, sys_exit, "exit" }, /* 4001 */ - { 0, TP, sys_fork, "fork" }, /* 4002 */ - { 3, TD, sys_read, "read" }, /* 4003 */ - { 3, TD, sys_write, "write" }, /* 4004 */ - { 3, TD|TF, sys_open, "open" }, /* 4005 */ - { 1, TD, sys_close, "close" }, /* 4006 */ - { 3, TP, sys_waitpid, "waitpid" }, /* 4007 */ - { 2, TD|TF, sys_creat, "creat" }, /* 4008 */ - { 2, TF, sys_link, "link" }, /* 4009 */ - { 1, TF, sys_unlink, "unlink" }, /* 4010 */ - { 3, TF|TP, sys_execve, "execve" }, /* 4011 */ - { 1, TF, sys_chdir, "chdir" }, /* 4012 */ - { 1, 0, sys_time, "time" }, /* 4013 */ - { 3, TF, sys_mknod, "mknod" }, /* 4014 */ - { 2, TF, sys_chmod, "chmod" }, /* 4015 */ - { 3, TF, sys_chown, "lchown" }, /* 4016 */ - { 0, 0, sys_break, "break" }, /* 4017 */ - { 2, TF, sys_oldstat, "oldstat" }, /* 4018 */ - { 3, TD, sys_lseek, "lseek" }, /* 4019 */ - { 0, 0, sys_getpid, "getpid" }, /* 4020 */ - { 5, TF, sys_mount, "mount" }, /* 4021 */ - { 1, TF, sys_umount, "oldumount" }, /* 4022 */ - { 1, 0, sys_setuid, "setuid" }, /* 4023 */ - { 0, NF, sys_getuid, "getuid" }, /* 4024 */ - { 1, 0, sys_stime, "stime" }, /* 4025 */ - { 4, 0, sys_ptrace, "ptrace" }, /* 4026 */ - { 1, 0, sys_alarm, "alarm" }, /* 4027 */ - { 2, TF, sys_oldfstat, "oldfstat" }, /* 4028 */ - { 0, TS, sys_pause, "pause" }, /* 4029 */ - { 2, TF, sys_utime, "utime" }, /* 4030 */ - { 0, 0, sys_stty, "stty" }, /* 4031 */ - { 0, 0, sys_gtty, "gtty" }, /* 4032 */ - { 2, TF, sys_access, "access" }, /* 4033 */ - { 1, 0, sys_nice, "nice" }, /* 4034 */ - { 1, 0, sys_ftime, "ftime" }, /* 4035 */ - { 0, 0, sys_sync, "sync" }, /* 4036 */ - { 2, TS, sys_kill, "kill" }, /* 4037 */ - { 2, TF, sys_rename, "rename" }, /* 4038 */ - { 2, TF, sys_mkdir, "mkdir" }, /* 4039 */ - { 1, TF, sys_rmdir, "rmdir" }, /* 4040 */ - { 1, TD, sys_dup, "dup" }, /* 4041 */ - { 1, TD, sys_pipe, "pipe" }, /* 4042 */ - { 1, 0, sys_times, "times" }, /* 4043 */ - { 0, 0, sys_prof, "prof" }, /* 4044 */ - { 1, 0, sys_brk, "brk" }, /* 4045 */ - { 1, 0, sys_setgid, "setgid" }, /* 4046 */ - { 0, NF, sys_getgid, "getgid" }, /* 4047 */ - { 1, TS, sys_signal, "signal" }, /* 4048 */ - { 0, NF, sys_geteuid, "geteuid" }, /* 4049 */ - { 0, NF, sys_getegid, "getegid" }, /* 4050 */ - { 1, TF, sys_acct, "acct" }, /* 4051 */ - { 2, TF, sys_umount2, "umount" }, /* 4052 */ - { 0, 0, sys_lock, "lock" }, /* 4053 */ - { 3, TD, sys_ioctl, "ioctl" }, /* 4054 */ - { 3, TD, sys_fcntl, "fcntl" }, /* 4055 */ - { 0, 0, sys_mpx, "mpx" }, /* 4056 */ - { 2, 0, sys_setpgid, "setpgid" }, /* 4057 */ - { 0, 0, sys_ulimit, "ulimit" }, /* 4058 */ - { 1, 0, sys_oldolduname, "oldolduname" }, /* 4059 */ - { 1, 0, sys_umask, "umask" }, /* 4060 */ - { 1, TF, sys_chroot, "chroot" }, /* 4061 */ - { 2, 0, sys_ustat, "ustat" }, /* 4062 */ - { 2, TD, sys_dup2, "dup2" }, /* 4063 */ - { 0, 0, sys_getppid, "getppid" }, /* 4064 */ - { 0, 0, sys_getpgrp, "getpgrp" }, /* 4065 */ - { 0, 0, sys_setsid, "setsid" }, /* 4066 */ - { 3, TS, sys_sigaction, "sigaction" }, /* 4067 */ - { 0, TS, sys_siggetmask, "sgetmask" }, /* 4068 */ - { 1, TS, sys_sigsetmask, "ssetmask" }, /* 4069 */ - { 2, 0, sys_setreuid, "setreuid" }, /* 4070 */ - { 2, 0, sys_setregid, "setregid" }, /* 4071 */ - { 3, TS, sys_sigsuspend, "sigsuspend" }, /* 4072 */ - { 1, TS, sys_sigpending, "sigpending" }, /* 4073 */ - { 2, 0, sys_sethostname, "sethostname" }, /* 4074 */ - { 2, 0, sys_setrlimit, "setrlimit" }, /* 4075 */ - { 2, 0, sys_getrlimit, "getrlimit" }, /* 4076 */ - { 2, 0, sys_getrusage, "getrusage" }, /* 4077 */ - { 2, 0, sys_gettimeofday, "gettimeofday" }, /* 4078 */ - { 2, 0, sys_settimeofday, "settimeofday" }, /* 4079 */ - { 2, 0, sys_getgroups, "getgroups" }, /* 4080 */ - { 2, 0, sys_setgroups, "setgroups" }, /* 4081 */ - { 0, 0, printargs, "reserved82" }, /* 4082 */ - { 2, TF, sys_symlink, "symlink" }, /* 4083 */ - { 2, TF, sys_oldlstat, "oldlstat" }, /* 4084 */ - { 3, TF, sys_readlink, "readlink" }, /* 4085 */ - { 1, TF, sys_uselib, "uselib" }, /* 4086 */ - { 2, TF, sys_swapon, "swapon" }, /* 4087 */ - { 4, 0, sys_reboot, "reboot" }, /* 4088 */ - { 3, TD, sys_readdir, "readdir" }, /* 4089 */ - { 6, TD, sys_mmap, "old_mmap" }, /* 4090 */ - { 2, 0, sys_munmap, "munmap" }, /* 4091 */ - { 2, TF, sys_truncate, "truncate" }, /* 4092 */ - { 2, TD, sys_ftruncate, "ftruncate" }, /* 4093 */ - { 2, TD, sys_fchmod, "fchmod" }, /* 4094 */ - { 3, TD, sys_fchown, "fchown" }, /* 4095 */ - { 2, 0, sys_getpriority, "getpriority" }, /* 4096 */ - { 3, 0, sys_setpriority, "setpriority" }, /* 4097 */ - { 0, 0, sys_profil, "profil" }, /* 4098 */ - { 3, TF, sys_statfs, "statfs" }, /* 4099 */ - { 3, TD, sys_fstatfs, "fstatfs" }, /* 4100 */ - { 0, 0, sys_ioperm, "ioperm" }, /* 4101 */ - { 2, TD, sys_socketcall, "socketcall" }, /* 4102 */ - { 3, 0, sys_syslog, "syslog" }, /* 4103 */ - { 3, 0, sys_setitimer, "setitimer" }, /* 4104 */ - { 2, 0, sys_getitimer, "getitimer" }, /* 4105 */ - { 2, TF, sys_stat, "stat" }, /* 4106 */ - { 2, TF, sys_lstat, "lstat" }, /* 4107 */ - { 2, TD, sys_fstat, "fstat" }, /* 4108 */ - { 1, 0, sys_olduname, "olduname" }, /* 4109 */ - { 0, 0, sys_iopl, "iopl" }, /* 4110 */ - { 0, 0, sys_vhangup, "vhangup" }, /* 4111 */ - { 0, 0, sys_idle, "idle" }, /* 4112 */ - { 5, 0, sys_vm86old, "vm86" }, /* 4113 */ - { 4, TP, sys_wait4, "wait4" }, /* 4114 */ - { 1, TF, sys_swapoff, "swapoff" }, /* 4115 */ - { 1, 0, sys_sysinfo, "sysinfo" }, /* 4116 */ - { 6, TI, sys_ipc, "ipc" }, /* 4117 */ - { 1, TD, sys_fsync, "fsync" }, /* 4118 */ - { 0, TS, sys_sigreturn, "sigreturn" }, /* 4119 */ - { 5, TP, sys_clone, "clone" }, /* 4120 */ - { 2, 0, sys_setdomainname, "setdomainname" }, /* 4121 */ - { 1, 0, sys_uname, "uname" }, /* 4122 */ - { 0, 0, sys_modify_ldt, "modify_ldt" }, /* 4123 */ - { 1, 0, sys_adjtimex, "adjtimex" }, /* 4124 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 4125 */ - { 3, TS, sys_sigprocmask, "sigprocmask" }, /* 4126 */ - { 2, 0, sys_create_module, "create_module" }, /* 4127 */ - { 3, 0, sys_init_module, "init_module" }, /* 4128 */ - { 2, 0, sys_delete_module, "delete_module" }, /* 4129 */ - { 1, 0, sys_get_kernel_syms, "get_kernel_syms"}, /* 4130 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 4131 */ - { 1, 0, sys_getpgid, "getpgid" }, /* 4132 */ - { 1, TF, sys_fchdir, "fchdir" }, /* 4133 */ - { 2, 0, sys_bdflush, "bdflush" }, /* 4134 */ - { 3, 0, sys_sysfs, "sysfs" }, /* 4135 */ - { 1, 0, sys_personality, "personality" }, /* 4136 */ - { 0, 0, sys_afs_syscall, "afs_syscall" }, /* 4137 */ - { 1, NF, sys_setfsuid, "setfsuid" }, /* 4138 */ - { 1, NF, sys_setfsgid, "setfsgid" }, /* 4139 */ - { 5, TF, sys_llseek, "_llseek" }, /* 4140 */ - { 3, TD, sys_getdents, "getdents" }, /* 4141 */ - { 5, TD, sys_select, "_newselect" }, /* 4142 */ - { 2, TD, sys_flock, "flock" }, /* 4143 */ - { 3, 0, sys_msync, "msync" }, /* 4144 */ - { 3, TD, sys_readv, "readv" }, /* 4145 */ - { 3, TD, sys_writev, "writev" }, /* 4146 */ - { 3, 0, printargs, "cacheflush" }, /* 4147 */ - { 3, 0, printargs, "cachectl" }, /* 4148 */ - { 4, 0, sys_sysmips, "sysmips" }, /* 4149 */ - { 0, 0, sys_setup, "setup" }, /* 4150 */ - { 1, 0, sys_getsid, "getsid" }, /* 4151 */ - { 1, TD, sys_fdatasync, "fdatasync" }, /* 4152 */ - { 1, 0, sys_sysctl, "_sysctl" }, /* 4153 */ - { 2, 0, sys_mlock, "mlock" }, /* 4154 */ - { 2, 0, sys_munlock, "munlock" }, /* 4155 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 4156 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 4157 */ - { 2, 0, sys_sched_setparam, "sched_setparam"}, /* 4158 */ - { 2, 0, sys_sched_getparam, "sched_getparam"}, /* 4159 */ - { 3, 0, sys_sched_setscheduler, "sched_setscheduler"}, /* 4160 */ - { 1, 0, sys_sched_getscheduler, "sched_getscheduler"}, /* 4161 */ - { 0, 0, sys_sched_yield, "sched_yield" }, /* 4162 */ - { 1, 0, sys_sched_get_priority_max,"sched_get_priority_max"}, /* 4163 */ - { 1, 0, sys_sched_get_priority_min,"sched_get_priority_min"}, /* 4164 */ - { 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 4165 */ - { 2, 0, sys_nanosleep, "nanosleep" }, /* 4166 */ - { 5, 0, sys_mremap, "mremap" }, /* 4167 */ - { 3, TN, sys_accept, "accept" }, /* 4168 */ - { 3, TN, sys_bind, "bind" }, /* 4169 */ - { 3, TN, sys_connect, "connect" }, /* 4170 */ - { 3, TN, sys_getpeername, "getpeername" }, /* 4171 */ - { 3, TN, sys_getsockname, "getsockname" }, /* 4172 */ - { 5, TN, sys_getsockopt, "getsockopt" }, /* 4173 */ - { 2, TN, sys_listen, "listen" }, /* 4174 */ - { 4, TN, sys_recv, "recv" }, /* 4175 */ - { 6, TN, sys_recvfrom, "recvfrom" }, /* 4176 */ - { 3, TN, sys_recvmsg, "recvmsg" }, /* 4177 */ - { 4, TN, sys_send, "send" }, /* 4178 */ - { 3, TN, sys_sendmsg, "sendmsg" }, /* 4179 */ - { 6, TN, sys_sendto, "sendto" }, /* 4180 */ - { 5, TN, sys_setsockopt, "setsockopt" }, /* 4181 */ - { 2, TN, sys_shutdown, "shutdown" }, /* 4182 */ - { 3, TN, sys_socket, "socket" }, /* 4183 */ - { 4, TN, sys_socketpair, "socketpair" }, /* 4184 */ - { 3, 0, sys_setresuid, "setresuid" }, /* 4185 */ - { 3, 0, sys_getresuid, "getresuid" }, /* 4186 */ - { 5, 0, sys_query_module, "query_module" }, /* 4187 */ - { 3, TD, sys_poll, "poll" }, /* 4188 */ - { 3, 0, sys_nfsservctl, "nfsservctl" }, /* 4189 */ - { 3, 0, sys_setresgid, "setresgid" }, /* 4190 */ - { 3, 0, sys_getresgid, "getresgid" }, /* 4191 */ - { 5, 0, sys_prctl, "prctl" }, /* 4192 */ - { 0, TS, sys_rt_sigreturn, "rt_sigreturn" }, /* 4193 */ - { 4, TS, sys_rt_sigaction, "rt_sigaction" }, /* 4194 */ - { 4, TS, sys_rt_sigprocmask, "rt_sigprocmask"}, /* 4195 */ - { 2, TS, sys_rt_sigpending, "rt_sigpending" }, /* 4196 */ - { 4, TS, sys_rt_sigtimedwait, "rt_sigtimedwait"},/* 4197 */ - { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo"},/* 4198 */ - { 2, TS, sys_rt_sigsuspend, "rt_sigsuspend" }, /* 4199 */ - { 6, TD, sys_pread, "pread" }, /* 4200 */ - { 6, TD, sys_pwrite, "pwrite" }, /* 4201 */ - { 3, TF, sys_chown, "chown" }, /* 4202 */ - { 2, TF, sys_getcwd, "getcwd" }, /* 4203 */ - { 2, 0, sys_capget, "capget" }, /* 4204 */ - { 2, 0, sys_capset, "capset" }, /* 4205 */ - { 2, TS, sys_sigaltstack, "sigaltstatck" }, /* 4206 */ - { 4, TD|TN, sys_sendfile, "sendfile" }, /* 4207 */ - { 0, 0, NULL, NULL }, /* 4208 */ - { 0, 0, NULL, NULL }, /* 4209 */ - { 6, TD, sys_mmap, "mmap" }, /* 4210 */ - { 4, TF, sys_truncate64, "truncate64" }, /* 4211 */ - { 4, TD, sys_ftruncate64, "ftruncate64" }, /* 4212 */ - { 2, TF, sys_stat64, "stat64" }, /* 4213 */ - { 2, TF, sys_lstat64, "lstat64" }, /* 4214 */ - { 2, TD, sys_fstat64, "fstat64" }, /* 4215 */ - { 2, TF, sys_pivotroot, "pivot_root" }, /* 4216 */ - { 3, 0, sys_mincore, "mincore" }, /* 4217 */ - { 3, 0, sys_madvise, "madvise" }, /* 4218 */ - { 3, TF, sys_getdents64, "getdents64" }, /* 4219 */ - { 3, TD, sys_fcntl, "fcntl64" }, /* 4220 */ - { 0, 0, NULL, NULL }, /* 4221 */ - { 0, 0, sys_gettid, "gettid" }, /* 4222 */ - { 5, TD, sys_readahead, "readahead" }, /* 4223 */ - { 5, TF, sys_setxattr, "setxattr" }, /* 4224 */ - { 5, TF, sys_setxattr, "lsetxattr" }, /* 4225 */ - { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 4226 */ - { 4, TF, sys_getxattr, "getxattr" }, /* 4227 */ - { 4, TF, sys_getxattr, "lgetxattr" }, /* 4228 */ - { 4, TD, sys_fgetxattr, "fgetxattr" }, /* 4229 */ - { 3, TF, sys_listxattr, "listxattr" }, /* 4230 */ - { 3, TF, sys_listxattr, "llistxattr" }, /* 4231 */ - { 3, TD, sys_flistxattr, "flistxattr" }, /* 4232 */ - { 2, TF, sys_removexattr, "removexattr" }, /* 4233 */ - { 2, TF, sys_removexattr, "lremovexattr" }, /* 4234 */ - { 2, TD, sys_fremovexattr, "fremovexattr" }, /* 4235 */ - { 2, TS, sys_kill, "tkill" }, /* 4236 */ - { 4, TD|TN, sys_sendfile64, "sendfile64" }, /* 4237 */ - { 6, 0, sys_futex, "futex" }, /* 4238 */ - { 3, 0, sys_sched_setaffinity, "sched_setaffinity"}, /* 4239 */ - { 3, 0, sys_sched_getaffinity, "sched_getaffinity"}, /* 4240 */ - { 2, 0, sys_io_setup, "io_setup" }, /* 4241 */ - { 1, 0, sys_io_destroy, "io_destroy" }, /* 4242 */ - { 5, 0, sys_io_getevents, "io_getevents" }, /* 4243 */ - { 3, 0, sys_io_submit, "io_submit" }, /* 4244 */ - { 3, 0, sys_io_cancel, "io_cancel" }, /* 4245 */ - { 1, TP, sys_exit, "exit_group" }, /* 4246 */ - { 4, 0, sys_lookup_dcookie, "lookup_dcookie"}, /* 4247 */ - { 1, TD, sys_epoll_create, "epoll_create" }, /* 4248 */ - { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 4249 */ - { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 4250 */ - { 5, 0, sys_remap_file_pages, "remap_file_pages"}, /* 4251 */ - { 1, 0, sys_set_tid_address, "set_tid_address"}, /* 4252 */ - { 0, 0, sys_restart_syscall, "restart_syscall"}, /* 4253 */ - { 6, TD, sys_fadvise64_64, "fadvise64_64" }, /* 4254 */ - { 3, TF, sys_statfs64, "statfs64" }, /* 4255 */ - { 2, TD, sys_fstatfs64, "fstatfs64" }, /* 4256 */ - { 3, 0, sys_timer_create, "timer_create" }, /* 4257 */ - { 4, 0, sys_timer_settime, "timer_settime" }, /* 4258 */ - { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 4259 */ - { 1, 0, sys_timer_getoverrun, "timer_getoverrun"}, /* 4260 */ - { 1, 0, sys_timer_delete, "timer_delete" }, /* 4261 */ - { 2, 0, sys_clock_settime, "clock_settime" }, /* 4262 */ - { 2, 0, sys_clock_gettime, "clock_gettime" }, /* 4263 */ - { 2, 0, sys_clock_getres, "clock_getres" }, /* 4264 */ - { 4, 0, sys_clock_nanosleep, "clock_nanosleep"}, /* 4265 */ - { 3, TS, sys_tgkill, "tgkill" }, /* 4266 */ - { 2, TF, sys_utimes, "utimes" }, /* 4267 */ - { 4, 0, sys_mbind, "mbind" }, /* 4268 */ - { 0, 0, NULL, NULL }, /* 4269 */ - { 0, 0, NULL, NULL }, /* 4270 */ - { 4, 0, sys_mq_open, "mq_open" }, /* 4271 */ - { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 4272 */ - { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 4273 */ - { 5, 0, sys_mq_timedreceive, "mq_timedreceive"}, /* 4274 */ - { 2, 0, sys_mq_notify, "mq_notify" }, /* 4275 */ - { 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 4276 */ - { 0, 0, NULL, NULL }, /* 4277 */ - { 5, TP, sys_waitid, "waitid" }, /* 4278 */ - { 0, 0, NULL, NULL }, /* 4279 */ - { 5, 0, sys_add_key, "add_key" }, /* 4280 */ - { 4, 0, sys_request_key, "request_key" }, /* 4281 */ - { 5, 0, sys_keyctl, "keyctl" }, /* 4282 */ - { 1, 0, sys_set_thread_area, "set_thread_area" }, /* 4283 */ - { 0, TD, sys_inotify_init, "inotify_init" }, /* 4284 */ - { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 4285 */ - { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 4286 */ - { 4, 0, sys_migrate_pages, "migrate_pages" }, /* 4287 */ - { 4, TD|TF, sys_openat, "openat" }, /* 4288 */ - { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 4289 */ - { 4, TD|TF, sys_mknodat, "mknodat" }, /* 4290 */ - { 5, TD|TF, sys_fchownat, "fchownat" }, /* 4291 */ - { 3, TD|TF, sys_futimesat, "futimesat" }, /* 4292 */ - { 4, TD|TF, sys_newfstatat, "newfstatat" }, /* 4293 */ - { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 4294 */ - { 4, TD|TF, sys_renameat, "renameat" }, /* 4295 */ - { 5, TD|TF, sys_linkat, "linkat" }, /* 4296 */ - { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 4297 */ - { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 4298 */ - { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 4299 */ - { 3, TD|TF, sys_faccessat, "faccessat" }, /* 4300 */ - { 6, TD, sys_pselect6, "pselect6" }, /* 4301 */ - { 5, TD, sys_ppoll, "ppoll" }, /* 4302 */ - { 1, TP, sys_unshare, "unshare" }, /* 4303 */ - { 6, TD, sys_splice, "splice" }, /* 4304 */ - { 4, TD, sys_sync_file_range, "sync_file_range" }, /* 4305 */ - { 4, TD, sys_tee, "tee" }, /* 4306 */ - { 4, TD, sys_vmsplice, "vmsplice" }, /* 4307 */ - { 6, 0, sys_move_pages, "move_pages" }, /* 4308 */ - { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 4309 */ - { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 4310 */ - { 4, 0, sys_kexec_load, "kexec_load" }, /* 4311 */ - { 3, 0, sys_getcpu, "getcpu" }, /* 4312 */ - { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 4313 */ - { 3, 0, sys_ioprio_set, "ioprio_set" }, /* 4314 */ - { 2, 0, sys_ioprio_get, "ioprio_get" }, /* 4315 */ - { 4, 0, printargs, "utimensat" }, /* 4316 */ - { 3, TD|TS, sys_signalfd, "signalfd" }, /* 4317 */ - { 4, TD, sys_timerfd, "timerfd" }, /* 4318 */ - { 1, TD, sys_eventfd, "eventfd" }, /* 4319 */ - { 6, TD, sys_fallocate, "fallocate" }, /* 4320 */ - { 2, TD, sys_timerfd_create, "timerfd_create" }, /* 4321 */ - { 2, TD, sys_timerfd_gettime, "timerfd_gettime" }, /* 4322 */ - { 4, TD, sys_timerfd_settime, "timerfd_settime" }, /* 4323 */ - { 4, TD|TS, sys_signalfd4, "signalfd4" }, /* 4324 */ - { 2, TD, sys_eventfd2, "eventfd2" }, /* 4325 */ - { 1, TD, sys_epoll_create1, "epoll_create1" }, /* 4326 */ - { 3, TD, sys_dup3, "dup3" }, /* 4327 */ - { 2, TD, sys_pipe2, "pipe2" }, /* 4328 */ - { 1, TD, sys_inotify_init1, "inotify_init1" }, /* 4329 */ - { 6, TD, sys_preadv, "preadv" }, /* 4330 */ - { 6, TD, sys_pwritev, "pwritev" }, /* 4331 */ - { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo" }, /* 4332 */ - { 5, TD, sys_perf_event_open, "perf_event_open" }, /* 4333 */ - { 4, TN, sys_accept4, "accept4" }, /* 4334 */ - { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 4335 */ - { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 4336 */ - { 5, TD|TF, sys_fanotify_mark, "fanotify_mark" }, /* 4337 */ - { 4, 0, sys_prlimit64, "prlimit64" }, /* 4338 */ - { 5, TD|TF, sys_name_to_handle_at, "name_to_handle_at"}, /* 4339 */ - { 3, TD, sys_open_by_handle_at, "open_by_handle_at"}, /* 4340 */ - { 2, 0, sys_clock_adjtime, "clock_adjtime" }, /* 4341 */ - { 1, TD, sys_syncfs, "syncfs" }, /* 4342 */ - { 4, TN, sys_sendmmsg, "sendmmsg" }, /* 4343 */ - { 2, TD, sys_setns, "setns" }, /* 4344 */ - { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 4345 */ - { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 4346 */ -#else - { 0, 0, printargs, "o32_syscall" }, /* 4000 */ - { 0, 0, printargs, "o32_exit" }, /* 4001 */ - { 0, 0, printargs, "o32_fork" }, /* 4002 */ - { 0, 0, printargs, "o32_read" }, /* 4003 */ - { 0, 0, printargs, "o32_write" }, /* 4004 */ - { 0, 0, printargs, "o32_open" }, /* 4005 */ - { 0, 0, printargs, "o32_close" }, /* 4006 */ - { 0, 0, printargs, "o32_waitpid" }, /* 4007 */ - { 0, 0, printargs, "o32_creat" }, /* 4008 */ - { 0, 0, printargs, "o32_link" }, /* 4009 */ - { 0, 0, printargs, "o32_unlink" }, /* 4010 */ - { 0, 0, printargs, "o32_execve" }, /* 4011 */ - { 0, 0, printargs, "o32_chdir" }, /* 4012 */ - { 0, 0, printargs, "o32_time" }, /* 4013 */ - { 0, 0, printargs, "o32_mknod" }, /* 4014 */ - { 0, 0, printargs, "o32_chmod" }, /* 4015 */ - { 0, 0, printargs, "o32_lchown" }, /* 4016 */ - { 0, 0, printargs, "o32_break" }, /* 4017 */ - { 0, 0, printargs, "o32_oldstat" }, /* 4018 */ - { 0, 0, printargs, "o32_lseek" }, /* 4019 */ - { 0, 0, printargs, "o32_getpid" }, /* 4020 */ - { 0, 0, printargs, "o32_mount" }, /* 4021 */ - { 0, 0, printargs, "o32_oldumount" }, /* 4022 */ - { 0, 0, printargs, "o32_setuid" }, /* 4023 */ - { 0, 0, printargs, "o32_getuid" }, /* 4024 */ - { 0, 0, printargs, "o32_stime" }, /* 4025 */ - { 0, 0, printargs, "o32_ptrace" }, /* 4026 */ - { 0, 0, printargs, "o32_alarm" }, /* 4027 */ - { 0, 0, printargs, "o32_oldfstat" }, /* 4028 */ - { 0, 0, printargs, "o32_pause" }, /* 4029 */ - { 0, 0, printargs, "o32_utime" }, /* 4030 */ - { 0, 0, printargs, "o32_stty" }, /* 4031 */ - { 0, 0, printargs, "o32_gtty" }, /* 4032 */ - { 0, 0, printargs, "o32_access" }, /* 4033 */ - { 0, 0, printargs, "o32_nice" }, /* 4034 */ - { 0, 0, printargs, "o32_ftime" }, /* 4035 */ - { 0, 0, printargs, "o32_sync" }, /* 4036 */ - { 0, 0, printargs, "o32_kill" }, /* 4037 */ - { 0, 0, printargs, "o32_rename" }, /* 4038 */ - { 0, 0, printargs, "o32_mkdir" }, /* 4039 */ - { 0, 0, printargs, "o32_rmdir" }, /* 4040 */ - { 0, 0, printargs, "o32_dup" }, /* 4041 */ - { 0, 0, printargs, "o32_pipe" }, /* 4042 */ - { 0, 0, printargs, "o32_times" }, /* 4043 */ - { 0, 0, printargs, "o32_prof" }, /* 4044 */ - { 0, 0, printargs, "o32_brk" }, /* 4045 */ - { 0, 0, printargs, "o32_setgid" }, /* 4046 */ - { 0, 0, printargs, "o32_getgid" }, /* 4047 */ - { 0, 0, printargs, "o32_signal" }, /* 4048 */ - { 0, 0, printargs, "o32_geteuid" }, /* 4049 */ - { 0, 0, printargs, "o32_getegid" }, /* 4050 */ - { 0, 0, printargs, "o32_acct" }, /* 4051 */ - { 0, 0, printargs, "o32_umount" }, /* 4052 */ - { 0, 0, printargs, "o32_lock" }, /* 4053 */ - { 0, 0, printargs, "o32_ioctl" }, /* 4054 */ - { 0, 0, printargs, "o32_fcntl" }, /* 4055 */ - { 0, 0, printargs, "o32_mpx" }, /* 4056 */ - { 0, 0, printargs, "o32_setpgid" }, /* 4057 */ - { 0, 0, printargs, "o32_ulimit" }, /* 4058 */ - { 0, 0, printargs, "o32_oldolduname" }, /* 4059 */ - { 0, 0, printargs, "o32_umask" }, /* 4060 */ - { 0, 0, printargs, "o32_chroot" }, /* 4061 */ - { 0, 0, printargs, "o32_ustat" }, /* 4062 */ - { 0, 0, printargs, "o32_dup2" }, /* 4063 */ - { 0, 0, printargs, "o32_getppid" }, /* 4064 */ - { 0, 0, printargs, "o32_getpgrp" }, /* 4065 */ - { 0, 0, printargs, "o32_setsid" }, /* 4066 */ - { 0, 0, printargs, "o32_sigaction" }, /* 4067 */ - { 0, 0, printargs, "o32_siggetmask" }, /* 4068 */ - { 0, 0, printargs, "o32_sigsetmask" }, /* 4069 */ - { 0, 0, printargs, "o32_setreuid" }, /* 4070 */ - { 0, 0, printargs, "o32_setregid" }, /* 4071 */ - { 0, 0, printargs, "o32_sigsuspend" }, /* 4072 */ - { 0, 0, printargs, "o32_sigpending" }, /* 4073 */ - { 0, 0, printargs, "o32_sethostname" }, /* 4074 */ - { 0, 0, printargs, "o32_setrlimit" }, /* 4075 */ - { 0, 0, printargs, "o32_getrlimit" }, /* 4076 */ - { 0, 0, printargs, "o32_getrusage" }, /* 4077 */ - { 0, 0, printargs, "o32_gettimeofday" }, /* 4078 */ - { 0, 0, printargs, "o32_settimeofday" }, /* 4079 */ - { 0, 0, printargs, "o32_getgroups" }, /* 4080 */ - { 0, 0, printargs, "o32_setgroups" }, /* 4081 */ - { 0, 0, printargs, "o32_reserved82" }, /* 4082 */ - { 0, 0, printargs, "o32_symlink" }, /* 4083 */ - { 0, 0, printargs, "o32_oldlstat" }, /* 4084 */ - { 0, 0, printargs, "o32_readlink" }, /* 4085 */ - { 0, 0, printargs, "o32_uselib" }, /* 4086 */ - { 0, 0, printargs, "o32_swapon" }, /* 4087 */ - { 0, 0, printargs, "o32_reboot" }, /* 4088 */ - { 0, 0, printargs, "o32_readdir" }, /* 4089 */ - { 0, 0, printargs, "o32_old_mmap" }, /* 4090 */ - { 0, 0, printargs, "o32_munmap" }, /* 4091 */ - { 0, 0, printargs, "o32_truncate" }, /* 4092 */ - { 0, 0, printargs, "o32_ftruncate" }, /* 4093 */ - { 0, 0, printargs, "o32_fchmod" }, /* 4094 */ - { 0, 0, printargs, "o32_fchown" }, /* 4095 */ - { 0, 0, printargs, "o32_getpriority" }, /* 4096 */ - { 0, 0, printargs, "o32_setpriority" }, /* 4097 */ - { 0, 0, printargs, "o32_profil" }, /* 4098 */ - { 0, 0, printargs, "o32_statfs" }, /* 4099 */ - { 0, 0, printargs, "o32_fstatfs" }, /* 4100 */ - { 0, 0, printargs, "o32_ioperm" }, /* 4101 */ - { 0, 0, printargs, "o32_socketcall" }, /* 4102 */ - { 0, 0, printargs, "o32_syslog" }, /* 4103 */ - { 0, 0, printargs, "o32_setitimer" }, /* 4104 */ - { 0, 0, printargs, "o32_getitimer" }, /* 4105 */ - { 0, 0, printargs, "o32_stat" }, /* 4106 */ - { 0, 0, printargs, "o32_lstat" }, /* 4107 */ - { 0, 0, printargs, "o32_fstat" }, /* 4108 */ - { 0, 0, printargs, "o32_olduname" }, /* 4109 */ - { 0, 0, printargs, "o32_iopl" }, /* 4110 */ - { 0, 0, printargs, "o32_vhangup" }, /* 4111 */ - { 0, 0, printargs, "o32_idle" }, /* 4112 */ - { 0, 0, printargs, "o32_vm86" }, /* 4113 */ - { 0, 0, printargs, "o32_wait4" }, /* 4114 */ - { 0, 0, printargs, "o32_swapoff" }, /* 4115 */ - { 0, 0, printargs, "o32_sysinfo" }, /* 4116 */ - { 0, 0, printargs, "o32_ipc" }, /* 4117 */ - { 0, 0, printargs, "o32_fsync" }, /* 4118 */ - { 0, 0, printargs, "o32_sigreturn" }, /* 4119 */ - { 0, 0, printargs, "o32_clone" }, /* 4120 */ - { 0, 0, printargs, "o32_setdomainname" }, /* 4121 */ - { 0, 0, printargs, "o32_uname" }, /* 4122 */ - { 0, 0, printargs, "o32_modify_ldt" }, /* 4123 */ - { 0, 0, printargs, "o32_adjtimex" }, /* 4124 */ - { 0, 0, printargs, "o32_mprotect" }, /* 4125 */ - { 0, 0, printargs, "o32_sigprocmask" }, /* 4126 */ - { 0, 0, printargs, "o32_create_module" }, /* 4127 */ - { 0, 0, printargs, "o32_init_module" }, /* 4128 */ - { 0, 0, printargs, "o32_delete_module" }, /* 4129 */ - { 0, 0, printargs, "o32_get_kernel_syms"}, /* 4130 */ - { 0, 0, printargs, "o32_quotactl" }, /* 4131 */ - { 0, 0, printargs, "o32_getpgid" }, /* 4132 */ - { 0, 0, printargs, "o32_fchdir" }, /* 4133 */ - { 0, 0, printargs, "o32_bdflush" }, /* 4134 */ - { 0, 0, printargs, "o32_sysfs" }, /* 4135 */ - { 0, 0, printargs, "o32_personality" }, /* 4136 */ - { 0, 0, printargs, "o32_afs_syscall" }, /* 4137 */ - { 0, 0, printargs, "o32_setfsuid" }, /* 4138 */ - { 0, 0, printargs, "o32_setfsgid" }, /* 4139 */ - { 0, 0, printargs, "o32__llseek" }, /* 4140 */ - { 0, 0, printargs, "o32_getdents" }, /* 4141 */ - { 0, 0, printargs, "o32__newselect" }, /* 4142 */ - { 0, 0, printargs, "o32_flock" }, /* 4143 */ - { 0, 0, printargs, "o32_msync" }, /* 4144 */ - { 0, 0, printargs, "o32_readv" }, /* 4145 */ - { 0, 0, printargs, "o32_writev" }, /* 4146 */ - { 0, 0, printargs, "o32_cacheflush" }, /* 4147 */ - { 0, 0, printargs, "o32_cachectl" }, /* 4148 */ - { 0, 0, printargs, "o32_sysmips" }, /* 4149 */ - { 0, 0, printargs, "o32_setup" }, /* 4150 */ - { 0, 0, printargs, "o32_getsid" }, /* 4151 */ - { 0, 0, printargs, "o32_fdatasync" }, /* 4152 */ - { 0, 0, printargs, "o32__sysctl" }, /* 4153 */ - { 0, 0, printargs, "o32_mlock" }, /* 4154 */ - { 0, 0, printargs, "o32_munlock" }, /* 4155 */ - { 0, 0, printargs, "o32_mlockall" }, /* 4156 */ - { 0, 0, printargs, "o32_munlockall" }, /* 4157 */ - { 0, 0, printargs, "o32_sched_setparam"}, /* 4158 */ - { 0, 0, printargs, "o32_sched_getparam"}, /* 4159 */ - { 0, 0, printargs, "o32_sched_setscheduler"}, /* 4160 */ - { 0, 0, printargs, "o32_sched_getscheduler"}, /* 4161 */ - { 0, 0, printargs, "o32_sched_yield" }, /* 4162 */ - { 0, 0, printargs, "o32_sched_get_priority_max"}, /* 4163 */ - { 0, 0, printargs, "o32_sched_get_priority_min"},/* 4164 */ - { 0, 0, printargs, "o32_sched_rr_get_interval"}, /* 4165 */ - { 0, 0, printargs, "o32_nanosleep" }, /* 4166 */ - { 0, 0, printargs, "o32_mremap" }, /* 4167 */ - { 0, 0, printargs, "o32_accept" }, /* 4168 */ - { 0, 0, printargs, "o32_bind" }, /* 4169 */ - { 0, 0, printargs, "o32_connect" }, /* 4170 */ - { 0, 0, printargs, "o32_getpeername" }, /* 4171 */ - { 0, 0, printargs, "o32_getsockname" }, /* 4172 */ - { 0, 0, printargs, "o32_getsockopt" }, /* 4173 */ - { 0, 0, printargs, "o32_listen" }, /* 4174 */ - { 0, 0, printargs, "o32_recv" }, /* 4175 */ - { 0, 0, printargs, "o32_recvfrom" }, /* 4176 */ - { 0, 0, printargs, "o32_recvmsg" }, /* 4177 */ - { 0, 0, printargs, "o32_send" }, /* 4178 */ - { 0, 0, printargs, "o32_sendmsg" }, /* 4179 */ - { 0, 0, printargs, "o32_sendto" }, /* 4180 */ - { 0, 0, printargs, "o32_setsockopt" }, /* 4181 */ - { 0, 0, printargs, "o32_shutdown" }, /* 4182 */ - { 0, 0, printargs, "o32_socket" }, /* 4183 */ - { 0, 0, printargs, "o32_socketpair" }, /* 4184 */ - { 0, 0, printargs, "o32_setresuid" }, /* 4185 */ - { 0, 0, printargs, "o32_getresuid" }, /* 4186 */ - { 0, 0, printargs, "o32_query_module" }, /* 4187 */ - { 0, 0, printargs, "o32_poll" }, /* 4188 */ - { 0, 0, printargs, "o32_nfsservctl" }, /* 4189 */ - { 0, 0, printargs, "o32_setresgid" }, /* 4190 */ - { 0, 0, printargs, "o32_getresgid" }, /* 4191 */ - { 0, 0, printargs, "o32_prctl" }, /* 4192 */ - { 0, 0, printargs, "o32_rt_sigreturn" }, /* 4193 */ - { 0, 0, printargs, "o32_rt_sigaction" }, /* 4194 */ - { 0, 0, printargs, "o32_rt_sigprocmask"}, /* 4195 */ - { 0, 0, printargs, "o32_rt_sigpending" }, /* 4196 */ - { 0, 0, printargs, "o32_rt_sigtimedwait"},/* 4197 */ - { 0, 0, printargs, "o32_rt_sigqueueinfo"},/* 4198 */ - { 0, 0, printargs, "o32_rt_siguspend" }, /* 4199 */ - { 0, 0, printargs, "o32_pread" }, /* 4200 */ - { 0, 0, printargs, "o32_pwrite" }, /* 4201 */ - { 0, 0, printargs, "o32_chown" }, /* 4202 */ - { 0, 0, printargs, "o32_getcwd" }, /* 4203 */ - { 0, 0, printargs, "o32_capget" }, /* 4204 */ - { 0, 0, printargs, "o32_capset" }, /* 4205 */ - { 0, 0, printargs, "o32_sigaltstatck" }, /* 4206 */ - { 0, 0, printargs, "o32_sendfile" }, /* 4207 */ - { 0, 0, NULL, NULL }, /* 4208 */ - { 0, 0, NULL, NULL }, /* 4209 */ - { 0, 0, printargs, "o32_mmap" }, /* 4210 */ - { 0, 0, printargs, "o32_truncate64" }, /* 4211 */ - { 0, 0, printargs, "o32_ftruncate64" }, /* 4212 */ - { 0, 0, printargs, "o32_stat64" }, /* 4213 */ - { 0, 0, printargs, "o32_lstat64" }, /* 4214 */ - { 0, 0, printargs, "o32_fstat64" }, /* 4215 */ - { 0, 0, printargs, "o32_pivot_root" }, /* 4216 */ - { 0, 0, printargs, "o32_mincore" }, /* 4217 */ - { 0, 0, printargs, "o32_madvise" }, /* 4218 */ - { 0, 0, printargs, "o32_getdents64" }, /* 4219 */ - { 0, 0, printargs, "o32_fcntl64" }, /* 4220 */ - { 0, 0, NULL, NULL }, /* 4221 */ - { 0, 0, printargs, "o32_gettid" }, /* 4222 */ - { 5, TD, printargs, "o32_readahead" }, /* 4223 */ - { 5, TF, printargs, "o32_setxattr" }, /* 4224 */ - { 5, TF, printargs, "o32_lsetxattr" }, /* 4225 */ - { 5, TD, printargs, "o32_fsetxattr" }, /* 4226 */ - { 4, TF, printargs, "o32_getxattr" }, /* 4227 */ - { 4, TF, printargs, "o32_lgetxattr" }, /* 4228 */ - { 4, TD, printargs, "o32_fgetxattr" }, /* 4229 */ - { 3, TF, printargs, "o32_listxattr" }, /* 4230 */ - { 3, TF, printargs, "o32_llistxattr" }, /* 4231 */ - { 3, TD, printargs, "o32_flistxattr" }, /* 4232 */ - { 2, TF, printargs, "o32_removexattr" }, /* 4233 */ - { 2, TF, printargs, "o32_lremovexattr" }, /* 4234 */ - { 2, TD, printargs, "o32_fremovexattr" }, /* 4235 */ - { 2, TS, printargs, "o32_tkill" }, /* 4236 */ - { 5, TD|TN, printargs, "o32_sendfile64" }, /* 4237 */ - { 6, 0, printargs, "o32_futex" }, /* 4238 */ - { 3, 0, printargs, "o32_sched_setaffinity"}, /* 4239 */ - { 3, 0, printargs, "o32_sched_getaffinity"}, /* 4240 */ - { 2, 0, printargs, "o32_io_setup" }, /* 4241 */ - { 1, 0, printargs, "o32_io_destroy" }, /* 4242 */ - { 5, 0, printargs, "o32_io_getevents" }, /* 4243 */ - { 3, 0, printargs, "o32_io_submit" }, /* 4244 */ - { 3, 0, printargs, "o32_io_cancel" }, /* 4245 */ - { 1, TP, printargs, "o32_exit_group" }, /* 4246 */ - { 3, 0, printargs, "o32_lookup_dcookie"}, /* 4247 */ - { 1, TD, printargs, "o32_epoll_create" }, /* 4248 */ - { 4, TD, printargs, "o32_epoll_ctl" }, /* 4249 */ - { 4, TD, printargs, "o32_epoll_wait" }, /* 4250 */ - { 5, 0, printargs, "o32_remap_file_pages"}, /* 4251 */ - { 1, 0, printargs, "o32_set_tid_address"}, /* 4252 */ - { 0, 0, printargs, "o32_restart_syscall"}, /* 4253 */ - { MA, 0, printargs, "o32_fadvise64_64" }, /* 4254 */ - { 3, TF, printargs, "o32_statfs64" }, /* 4255 */ - { 2, TD, printargs, "o32_fstatfs64" }, /* 4256 */ - { 3, 0, printargs, "o32_timer_create" }, /* 4257 */ - { 4, 0, printargs, "o32_timer_settime" }, /* 4258 */ - { 2, 0, printargs, "o32_timer_gettime" }, /* 4259 */ - { 1, 0, printargs, "o32_timer_getoverrun"}, /* 4260 */ - { 1, 0, printargs, "o32_timer_delete" }, /* 4261 */ - { 2, 0, printargs, "o32_clock_settime" }, /* 4262 */ - { 2, 0, printargs, "o32_clock_gettime" }, /* 4263 */ - { 2, 0, printargs, "o32_clock_getres" }, /* 4264 */ - { 4, 0, printargs, "o32_clock_nanosleep"}, /* 4265 */ - { 3, TS, printargs, "o32_tgkill" }, /* 4266 */ - { 2, TF, printargs, "o32_utimes" }, /* 4267 */ - { 4, 0, printargs, "o32_mbind" }, /* 4268 */ - { 0, 0, printargs, "o32_SYS_4269" }, /* 4269 */ - { 0, 0, printargs, "o32_SYS_4270" }, /* 4270 */ - { 4, 0, printargs, "o32_mq_open" }, /* 4271 */ - { 1, 0, printargs, "o32_mq_unlink" }, /* 4272 */ - { 5, 0, printargs, "o32_mq_timedsend" }, /* 4273 */ - { 5, 0, printargs, "o32_mq_timedreceive"}, /* 4274 */ - { 2, 0, printargs, "o32_mq_notify" }, /* 4275 */ - { 3, 0, printargs, "o32_mq_getsetattr" }, /* 4276 */ - { 0, 0, printargs, "o32_SYS_4277" }, /* 4277 */ - { 5, TP, printargs, "o32_waitid" }, /* 4278 */ - { 0, 0, printargs, "o32_SYS_4279" }, /* 4279 */ - { 5, 0, printargs, "o32_add_key" }, /* 4280 */ - { 4, 0, printargs, "o32_request_key" }, /* 4281 */ - { 5, 0, printargs, "o32_keyctl" }, /* 4282 */ - { 1, 0, printargs, "o32_set_thread_area" }, /* 4283 */ - { 0, TD, printargs, "o32_inotify_init" }, /* 4284 */ - { 3, TD, printargs, "o32_inotify_add_watch" }, /* 4285 */ - { 2, TD, printargs, "o32_inotify_rm_watch" }, /* 4286 */ - { 4, 0, printargs, "o32_migrate_pages" }, /* 4287 */ - { 4, TD|TF, printargs, "o32_openat" }, /* 4288 */ - { 3, TD|TF, printargs, "o32_mkdirat" }, /* 4289 */ - { 4, TD|TF, printargs, "o32_mknodat" }, /* 4290 */ - { 5, TD|TF, printargs, "o32_fchownat" }, /* 4291 */ - { 3, TD|TF, printargs, "o32_futimesat" }, /* 4292 */ - { 4, TD|TF, printargs, "o32_newfstatat" }, /* 4293 */ - { 3, TD|TF, printargs, "o32_unlinkat" }, /* 4294 */ - { 4, TD|TF, printargs, "o32_renameat" }, /* 4295 */ - { 5, TD|TF, printargs, "o32_linkat" }, /* 4296 */ - { 3, TD|TF, printargs, "o32_symlinkat" }, /* 4297 */ - { 4, TD|TF, printargs, "o32_readlinkat" }, /* 4298 */ - { 3, TD|TF, printargs, "o32_fchmodat" }, /* 4299 */ - { 3, TD|TF, printargs, "o32_faccessat" }, /* 4300 */ - { 6, TD, printargs, "o32_pselect6" }, /* 4301 */ - { 5, TD, printargs, "o32_ppoll" }, /* 4302 */ - { 1, TP, printargs, "o32_unshare" }, /* 4303 */ - { 6, TD, printargs, "o32_splice" }, /* 4304 */ - { 4, TD, printargs, "o32_sync_file_range" }, /* 4305 */ - { 4, TD, printargs, "o32_tee" }, /* 4306 */ - { 4, TD, printargs, "o32_vmsplice" }, /* 4307 */ - { 6, 0, printargs, "o32_move_pages" }, /* 4308 */ - { 2, 0, printargs, "o32_set_robust_list" }, /* 4309 */ - { 3, 0, printargs, "o32_get_robust_list" }, /* 4310 */ - { 4, 0, printargs, "o32_kexec_load" }, /* 4311 */ - { 3, 0, printargs, "o32_getcpu" }, /* 4312 */ - { 5, TD, printargs, "o32_epoll_pwait" }, /* 4313 */ - { 3, 0, printargs, "o32_ioprio_set" }, /* 4314 */ - { 2, 0, printargs, "o32_ioprio_get" }, /* 4315 */ - { 4, 0, printargs, "o32_utimensat" }, /* 4316 */ - { 3, TD|TS, printargs, "o32_signalfd" }, /* 4317 */ - { 4, TD, printargs, "o32_timerfd" }, /* 4318 */ - { 1, TD, printargs, "o32_eventfd" }, /* 4319 */ - { 6, TD, printargs, "o32_fallocate" }, /* 4320 */ - { 2, TD, printargs, "o32_timerfd_create" }, /* 4321 */ - { 2, TD, printargs, "o32_timerfd_gettime" }, /* 4322 */ - { 4, TD, printargs, "o32_timerfd_settime" }, /* 4323 */ - { 4, TD|TS, printargs, "o32_signalfd4" }, /* 4324 */ - { 2, TD, printargs, "o32_eventfd2" }, /* 4325 */ - { 1, TD, printargs, "o32_epoll_create1" }, /* 4326 */ - { 3, TD, printargs, "o32_dup3" }, /* 4327 */ - { 2, TD, printargs, "o32_pipe2" }, /* 4328 */ - { 1, TD, printargs, "o32_inotify_init1" }, /* 4329 */ - { 6, TD, printargs, "o32_preadv" }, /* 4330 */ - { 6, TD, printargs, "o32_pwritev" }, /* 4331 */ - { 4, TP|TS, printargs, "o32_rt_tgsigqueueinfo" }, /* 4332 */ - { 5, TD, printargs, "o32_perf_event_open" }, /* 4333 */ - { 4, TN, printargs, "o32_accept4" }, /* 4334 */ - { 5, TN, printargs, "o32_recvmmsg" }, /* 4335 */ - { 2, TD, printargs, "o32_fanotify_init" }, /* 4336 */ - { 5, TD|TF, printargs, "o32_fanotify_mark" }, /* 4337 */ - { 4, 0, printargs, "o32_prlimit64" }, /* 4338 */ - { 5, TD|TF, printargs, "o32_name_to_handle_at"}, /* 4339 */ - { 3, TD, printargs, "o32_open_by_handle_at"}, /* 4340 */ - { 2, 0, printargs, "o32_clock_adjtime" }, /* 4341 */ - { 1, TD, printargs, "o32_syncfs" }, /* 4342 */ - { 4, TN, printargs, "o32_sendmmsg" }, /* 4343 */ - { 2, TD, printargs, "o32_setns" }, /* 4344 */ - { 6, 0, printargs, "o32_process_vm_readv" }, /* 4345 */ - { 6, 0, printargs, "o32_process_vm_writev" }, /* 4346 */ -#endif - { 0, 0, NULL, NULL }, /* 4347 */ - { 0, 0, NULL, NULL }, /* 4348 */ - { 0, 0, NULL, NULL }, /* 4349 */ - { 0, 0, NULL, NULL }, /* 4350 */ - { 0, 0, NULL, NULL }, /* 4351 */ - { 0, 0, NULL, NULL }, /* 4352 */ - { 0, 0, NULL, NULL }, /* 4353 */ - { 0, 0, NULL, NULL }, /* 4354 */ - { 0, 0, NULL, NULL }, /* 4355 */ - { 0, 0, NULL, NULL }, /* 4356 */ - { 0, 0, NULL, NULL }, /* 4357 */ - { 0, 0, NULL, NULL }, /* 4358 */ - { 0, 0, NULL, NULL }, /* 4359 */ - { 0, 0, NULL, NULL }, /* 4360 */ - { 0, 0, NULL, NULL }, /* 4361 */ - { 0, 0, NULL, NULL }, /* 4362 */ - { 0, 0, NULL, NULL }, /* 4363 */ - { 0, 0, NULL, NULL }, /* 4364 */ - { 0, 0, NULL, NULL }, /* 4365 */ - { 0, 0, NULL, NULL }, /* 4366 */ - { 0, 0, NULL, NULL }, /* 4367 */ - { 0, 0, NULL, NULL }, /* 4368 */ - { 0, 0, NULL, NULL }, /* 4369 */ - { 0, 0, NULL, NULL }, /* 4370 */ - { 0, 0, NULL, NULL }, /* 4371 */ - { 0, 0, NULL, NULL }, /* 4372 */ - { 0, 0, NULL, NULL }, /* 4373 */ - { 0, 0, NULL, NULL }, /* 4374 */ - { 0, 0, NULL, NULL }, /* 4375 */ - { 0, 0, NULL, NULL }, /* 4376 */ - { 0, 0, NULL, NULL }, /* 4377 */ - { 0, 0, NULL, NULL }, /* 4378 */ - { 0, 0, NULL, NULL }, /* 4379 */ - { 0, 0, NULL, NULL }, /* 4380 */ - { 0, 0, NULL, NULL }, /* 4381 */ - { 0, 0, NULL, NULL }, /* 4382 */ - { 0, 0, NULL, NULL }, /* 4383 */ - { 0, 0, NULL, NULL }, /* 4384 */ - { 0, 0, NULL, NULL }, /* 4385 */ - { 0, 0, NULL, NULL }, /* 4386 */ - { 0, 0, NULL, NULL }, /* 4387 */ - { 0, 0, NULL, NULL }, /* 4388 */ - { 0, 0, NULL, NULL }, /* 4389 */ - { 0, 0, NULL, NULL }, /* 4390 */ - { 0, 0, NULL, NULL }, /* 4391 */ - { 0, 0, NULL, NULL }, /* 4392 */ - { 0, 0, NULL, NULL }, /* 4393 */ - { 0, 0, NULL, NULL }, /* 4394 */ - { 0, 0, NULL, NULL }, /* 4395 */ - { 0, 0, NULL, NULL }, /* 4396 */ - { 0, 0, NULL, NULL }, /* 4397 */ - { 0, 0, NULL, NULL }, /* 4398 */ - { 0, 0, NULL, NULL }, /* 4399 */ - { 0, 0, NULL, NULL }, /* 4400 */ - { 0, 0, NULL, NULL }, /* 4401 */ - { 0, 0, NULL, NULL }, /* 4402 */ - { 0, 0, NULL, NULL }, /* 4403 */ - { 0, 0, NULL, NULL }, /* 4404 */ - { 0, 0, NULL, NULL }, /* 4405 */ - { 0, 0, NULL, NULL }, /* 4406 */ - { 0, 0, NULL, NULL }, /* 4407 */ - { 0, 0, NULL, NULL }, /* 4408 */ - { 0, 0, NULL, NULL }, /* 4409 */ - { 0, 0, NULL, NULL }, /* 4410 */ - { 0, 0, NULL, NULL }, /* 4411 */ - { 0, 0, NULL, NULL }, /* 4412 */ - { 0, 0, NULL, NULL }, /* 4413 */ - { 0, 0, NULL, NULL }, /* 4414 */ - { 0, 0, NULL, NULL }, /* 4415 */ - { 0, 0, NULL, NULL }, /* 4416 */ - { 0, 0, NULL, NULL }, /* 4417 */ - { 0, 0, NULL, NULL }, /* 4418 */ - { 0, 0, NULL, NULL }, /* 4419 */ - { 0, 0, NULL, NULL }, /* 4420 */ - { 0, 0, NULL, NULL }, /* 4421 */ - { 0, 0, NULL, NULL }, /* 4422 */ - { 0, 0, NULL, NULL }, /* 4423 */ - { 0, 0, NULL, NULL }, /* 4424 */ - { 0, 0, NULL, NULL }, /* 4425 */ - { 0, 0, NULL, NULL }, /* 4426 */ - { 0, 0, NULL, NULL }, /* 4427 */ - { 0, 0, NULL, NULL }, /* 4428 */ - { 0, 0, NULL, NULL }, /* 4429 */ - { 0, 0, NULL, NULL }, /* 4430 */ - { 0, 0, NULL, NULL }, /* 4431 */ - { 0, 0, NULL, NULL }, /* 4432 */ - { 0, 0, NULL, NULL }, /* 4433 */ - { 0, 0, NULL, NULL }, /* 4434 */ - { 0, 0, NULL, NULL }, /* 4435 */ - { 0, 0, NULL, NULL }, /* 4436 */ - { 0, 0, NULL, NULL }, /* 4437 */ - { 0, 0, NULL, NULL }, /* 4438 */ - { 0, 0, NULL, NULL }, /* 4439 */ - { 0, 0, NULL, NULL }, /* 4440 */ - { 0, 0, NULL, NULL }, /* 4441 */ - { 0, 0, NULL, NULL }, /* 4442 */ - { 0, 0, NULL, NULL }, /* 4443 */ - { 0, 0, NULL, NULL }, /* 4444 */ - { 0, 0, NULL, NULL }, /* 4445 */ - { 0, 0, NULL, NULL }, /* 4446 */ - { 0, 0, NULL, NULL }, /* 4447 */ - { 0, 0, NULL, NULL }, /* 4448 */ - { 0, 0, NULL, NULL }, /* 4449 */ - { 0, 0, NULL, NULL }, /* 4450 */ - { 0, 0, NULL, NULL }, /* 4451 */ - { 0, 0, NULL, NULL }, /* 4452 */ - { 0, 0, NULL, NULL }, /* 4453 */ - { 0, 0, NULL, NULL }, /* 4454 */ - { 0, 0, NULL, NULL }, /* 4455 */ - { 0, 0, NULL, NULL }, /* 4456 */ - { 0, 0, NULL, NULL }, /* 4457 */ - { 0, 0, NULL, NULL }, /* 4458 */ - { 0, 0, NULL, NULL }, /* 4459 */ - { 0, 0, NULL, NULL }, /* 4460 */ - { 0, 0, NULL, NULL }, /* 4461 */ - { 0, 0, NULL, NULL }, /* 4462 */ - { 0, 0, NULL, NULL }, /* 4463 */ - { 0, 0, NULL, NULL }, /* 4464 */ - { 0, 0, NULL, NULL }, /* 4465 */ - { 0, 0, NULL, NULL }, /* 4466 */ - { 0, 0, NULL, NULL }, /* 4467 */ - { 0, 0, NULL, NULL }, /* 4468 */ - { 0, 0, NULL, NULL }, /* 4469 */ - { 0, 0, NULL, NULL }, /* 4470 */ - { 0, 0, NULL, NULL }, /* 4471 */ - { 0, 0, NULL, NULL }, /* 4472 */ - { 0, 0, NULL, NULL }, /* 4473 */ - { 0, 0, NULL, NULL }, /* 4474 */ - { 0, 0, NULL, NULL }, /* 4475 */ - { 0, 0, NULL, NULL }, /* 4476 */ - { 0, 0, NULL, NULL }, /* 4477 */ - { 0, 0, NULL, NULL }, /* 4478 */ - { 0, 0, NULL, NULL }, /* 4479 */ - { 0, 0, NULL, NULL }, /* 4480 */ - { 0, 0, NULL, NULL }, /* 4481 */ - { 0, 0, NULL, NULL }, /* 4482 */ - { 0, 0, NULL, NULL }, /* 4483 */ - { 0, 0, NULL, NULL }, /* 4484 */ - { 0, 0, NULL, NULL }, /* 4485 */ - { 0, 0, NULL, NULL }, /* 4486 */ - { 0, 0, NULL, NULL }, /* 4487 */ - { 0, 0, NULL, NULL }, /* 4488 */ - { 0, 0, NULL, NULL }, /* 4489 */ - { 0, 0, NULL, NULL }, /* 4490 */ - { 0, 0, NULL, NULL }, /* 4491 */ - { 0, 0, NULL, NULL }, /* 4492 */ - { 0, 0, NULL, NULL }, /* 4493 */ - { 0, 0, NULL, NULL }, /* 4494 */ - { 0, 0, NULL, NULL }, /* 4495 */ - { 0, 0, NULL, NULL }, /* 4496 */ - { 0, 0, NULL, NULL }, /* 4497 */ - { 0, 0, NULL, NULL }, /* 4498 */ - { 0, 0, NULL, NULL }, /* 4499 */ - { 0, 0, NULL, NULL }, /* 4500 */ - { 0, 0, NULL, NULL }, /* 4501 */ - { 0, 0, NULL, NULL }, /* 4502 */ - { 0, 0, NULL, NULL }, /* 4503 */ - { 0, 0, NULL, NULL }, /* 4504 */ - { 0, 0, NULL, NULL }, /* 4505 */ - { 0, 0, NULL, NULL }, /* 4506 */ - { 0, 0, NULL, NULL }, /* 4507 */ - { 0, 0, NULL, NULL }, /* 4508 */ - { 0, 0, NULL, NULL }, /* 4509 */ - { 0, 0, NULL, NULL }, /* 4510 */ - { 0, 0, NULL, NULL }, /* 4511 */ - { 0, 0, NULL, NULL }, /* 4512 */ - { 0, 0, NULL, NULL }, /* 4513 */ - { 0, 0, NULL, NULL }, /* 4514 */ - { 0, 0, NULL, NULL }, /* 4515 */ - { 0, 0, NULL, NULL }, /* 4516 */ - { 0, 0, NULL, NULL }, /* 4517 */ - { 0, 0, NULL, NULL }, /* 4518 */ - { 0, 0, NULL, NULL }, /* 4519 */ - { 0, 0, NULL, NULL }, /* 4520 */ - { 0, 0, NULL, NULL }, /* 4521 */ - { 0, 0, NULL, NULL }, /* 4522 */ - { 0, 0, NULL, NULL }, /* 4523 */ - { 0, 0, NULL, NULL }, /* 4524 */ - { 0, 0, NULL, NULL }, /* 4525 */ - { 0, 0, NULL, NULL }, /* 4526 */ - { 0, 0, NULL, NULL }, /* 4527 */ - { 0, 0, NULL, NULL }, /* 4528 */ - { 0, 0, NULL, NULL }, /* 4529 */ - { 0, 0, NULL, NULL }, /* 4530 */ - { 0, 0, NULL, NULL }, /* 4531 */ - { 0, 0, NULL, NULL }, /* 4532 */ - { 0, 0, NULL, NULL }, /* 4533 */ - { 0, 0, NULL, NULL }, /* 4534 */ - { 0, 0, NULL, NULL }, /* 4535 */ - { 0, 0, NULL, NULL }, /* 4536 */ - { 0, 0, NULL, NULL }, /* 4537 */ - { 0, 0, NULL, NULL }, /* 4538 */ - { 0, 0, NULL, NULL }, /* 4539 */ - { 0, 0, NULL, NULL }, /* 4540 */ - { 0, 0, NULL, NULL }, /* 4541 */ - { 0, 0, NULL, NULL }, /* 4542 */ - { 0, 0, NULL, NULL }, /* 4543 */ - { 0, 0, NULL, NULL }, /* 4544 */ - { 0, 0, NULL, NULL }, /* 4545 */ - { 0, 0, NULL, NULL }, /* 4546 */ - { 0, 0, NULL, NULL }, /* 4547 */ - { 0, 0, NULL, NULL }, /* 4548 */ - { 0, 0, NULL, NULL }, /* 4549 */ - { 0, 0, NULL, NULL }, /* 4550 */ - { 0, 0, NULL, NULL }, /* 4551 */ - { 0, 0, NULL, NULL }, /* 4552 */ - { 0, 0, NULL, NULL }, /* 4553 */ - { 0, 0, NULL, NULL }, /* 4554 */ - { 0, 0, NULL, NULL }, /* 4555 */ - { 0, 0, NULL, NULL }, /* 4556 */ - { 0, 0, NULL, NULL }, /* 4557 */ - { 0, 0, NULL, NULL }, /* 4558 */ - { 0, 0, NULL, NULL }, /* 4559 */ - { 0, 0, NULL, NULL }, /* 4560 */ - { 0, 0, NULL, NULL }, /* 4561 */ - { 0, 0, NULL, NULL }, /* 4562 */ - { 0, 0, NULL, NULL }, /* 4563 */ - { 0, 0, NULL, NULL }, /* 4564 */ - { 0, 0, NULL, NULL }, /* 4565 */ - { 0, 0, NULL, NULL }, /* 4566 */ - { 0, 0, NULL, NULL }, /* 4567 */ - { 0, 0, NULL, NULL }, /* 4568 */ - { 0, 0, NULL, NULL }, /* 4569 */ - { 0, 0, NULL, NULL }, /* 4570 */ - { 0, 0, NULL, NULL }, /* 4571 */ - { 0, 0, NULL, NULL }, /* 4572 */ - { 0, 0, NULL, NULL }, /* 4573 */ - { 0, 0, NULL, NULL }, /* 4574 */ - { 0, 0, NULL, NULL }, /* 4575 */ - { 0, 0, NULL, NULL }, /* 4576 */ - { 0, 0, NULL, NULL }, /* 4577 */ - { 0, 0, NULL, NULL }, /* 4578 */ - { 0, 0, NULL, NULL }, /* 4579 */ - { 0, 0, NULL, NULL }, /* 4580 */ - { 0, 0, NULL, NULL }, /* 4581 */ - { 0, 0, NULL, NULL }, /* 4582 */ - { 0, 0, NULL, NULL }, /* 4583 */ - { 0, 0, NULL, NULL }, /* 4584 */ - { 0, 0, NULL, NULL }, /* 4585 */ - { 0, 0, NULL, NULL }, /* 4586 */ - { 0, 0, NULL, NULL }, /* 4587 */ - { 0, 0, NULL, NULL }, /* 4588 */ - { 0, 0, NULL, NULL }, /* 4589 */ - { 0, 0, NULL, NULL }, /* 4590 */ - { 0, 0, NULL, NULL }, /* 4591 */ - { 0, 0, NULL, NULL }, /* 4592 */ - { 0, 0, NULL, NULL }, /* 4593 */ - { 0, 0, NULL, NULL }, /* 4594 */ - { 0, 0, NULL, NULL }, /* 4595 */ - { 0, 0, NULL, NULL }, /* 4596 */ - { 0, 0, NULL, NULL }, /* 4597 */ - { 0, 0, NULL, NULL }, /* 4598 */ - { 0, 0, NULL, NULL }, /* 4599 */ - { 0, 0, NULL, NULL }, /* 4600 */ - { 0, 0, NULL, NULL }, /* 4601 */ - { 0, 0, NULL, NULL }, /* 4602 */ - { 0, 0, NULL, NULL }, /* 4603 */ - { 0, 0, NULL, NULL }, /* 4604 */ - { 0, 0, NULL, NULL }, /* 4605 */ - { 0, 0, NULL, NULL }, /* 4606 */ - { 0, 0, NULL, NULL }, /* 4607 */ - { 0, 0, NULL, NULL }, /* 4608 */ - { 0, 0, NULL, NULL }, /* 4609 */ - { 0, 0, NULL, NULL }, /* 4610 */ - { 0, 0, NULL, NULL }, /* 4611 */ - { 0, 0, NULL, NULL }, /* 4612 */ - { 0, 0, NULL, NULL }, /* 4613 */ - { 0, 0, NULL, NULL }, /* 4614 */ - { 0, 0, NULL, NULL }, /* 4615 */ - { 0, 0, NULL, NULL }, /* 4616 */ - { 0, 0, NULL, NULL }, /* 4617 */ - { 0, 0, NULL, NULL }, /* 4618 */ - { 0, 0, NULL, NULL }, /* 4619 */ - { 0, 0, NULL, NULL }, /* 4620 */ - { 0, 0, NULL, NULL }, /* 4621 */ - { 0, 0, NULL, NULL }, /* 4622 */ - { 0, 0, NULL, NULL }, /* 4623 */ - { 0, 0, NULL, NULL }, /* 4624 */ - { 0, 0, NULL, NULL }, /* 4625 */ - { 0, 0, NULL, NULL }, /* 4626 */ - { 0, 0, NULL, NULL }, /* 4627 */ - { 0, 0, NULL, NULL }, /* 4628 */ - { 0, 0, NULL, NULL }, /* 4629 */ - { 0, 0, NULL, NULL }, /* 4630 */ - { 0, 0, NULL, NULL }, /* 4631 */ - { 0, 0, NULL, NULL }, /* 4632 */ - { 0, 0, NULL, NULL }, /* 4633 */ - { 0, 0, NULL, NULL }, /* 4634 */ - { 0, 0, NULL, NULL }, /* 4635 */ - { 0, 0, NULL, NULL }, /* 4636 */ - { 0, 0, NULL, NULL }, /* 4637 */ - { 0, 0, NULL, NULL }, /* 4638 */ - { 0, 0, NULL, NULL }, /* 4639 */ - { 0, 0, NULL, NULL }, /* 4640 */ - { 0, 0, NULL, NULL }, /* 4641 */ - { 0, 0, NULL, NULL }, /* 4642 */ - { 0, 0, NULL, NULL }, /* 4643 */ - { 0, 0, NULL, NULL }, /* 4644 */ - { 0, 0, NULL, NULL }, /* 4645 */ - { 0, 0, NULL, NULL }, /* 4646 */ - { 0, 0, NULL, NULL }, /* 4647 */ - { 0, 0, NULL, NULL }, /* 4648 */ - { 0, 0, NULL, NULL }, /* 4649 */ - { 0, 0, NULL, NULL }, /* 4650 */ - { 0, 0, NULL, NULL }, /* 4651 */ - { 0, 0, NULL, NULL }, /* 4652 */ - { 0, 0, NULL, NULL }, /* 4653 */ - { 0, 0, NULL, NULL }, /* 4654 */ - { 0, 0, NULL, NULL }, /* 4655 */ - { 0, 0, NULL, NULL }, /* 4656 */ - { 0, 0, NULL, NULL }, /* 4657 */ - { 0, 0, NULL, NULL }, /* 4658 */ - { 0, 0, NULL, NULL }, /* 4659 */ - { 0, 0, NULL, NULL }, /* 4660 */ - { 0, 0, NULL, NULL }, /* 4661 */ - { 0, 0, NULL, NULL }, /* 4662 */ - { 0, 0, NULL, NULL }, /* 4663 */ - { 0, 0, NULL, NULL }, /* 4664 */ - { 0, 0, NULL, NULL }, /* 4665 */ - { 0, 0, NULL, NULL }, /* 4666 */ - { 0, 0, NULL, NULL }, /* 4667 */ - { 0, 0, NULL, NULL }, /* 4668 */ - { 0, 0, NULL, NULL }, /* 4669 */ - { 0, 0, NULL, NULL }, /* 4670 */ - { 0, 0, NULL, NULL }, /* 4671 */ - { 0, 0, NULL, NULL }, /* 4672 */ - { 0, 0, NULL, NULL }, /* 4673 */ - { 0, 0, NULL, NULL }, /* 4674 */ - { 0, 0, NULL, NULL }, /* 4675 */ - { 0, 0, NULL, NULL }, /* 4676 */ - { 0, 0, NULL, NULL }, /* 4677 */ - { 0, 0, NULL, NULL }, /* 4678 */ - { 0, 0, NULL, NULL }, /* 4679 */ - { 0, 0, NULL, NULL }, /* 4680 */ - { 0, 0, NULL, NULL }, /* 4681 */ - { 0, 0, NULL, NULL }, /* 4682 */ - { 0, 0, NULL, NULL }, /* 4683 */ - { 0, 0, NULL, NULL }, /* 4684 */ - { 0, 0, NULL, NULL }, /* 4685 */ - { 0, 0, NULL, NULL }, /* 4686 */ - { 0, 0, NULL, NULL }, /* 4687 */ - { 0, 0, NULL, NULL }, /* 4688 */ - { 0, 0, NULL, NULL }, /* 4689 */ - { 0, 0, NULL, NULL }, /* 4690 */ - { 0, 0, NULL, NULL }, /* 4691 */ - { 0, 0, NULL, NULL }, /* 4692 */ - { 0, 0, NULL, NULL }, /* 4693 */ - { 0, 0, NULL, NULL }, /* 4694 */ - { 0, 0, NULL, NULL }, /* 4695 */ - { 0, 0, NULL, NULL }, /* 4696 */ - { 0, 0, NULL, NULL }, /* 4697 */ - { 0, 0, NULL, NULL }, /* 4698 */ - { 0, 0, NULL, NULL }, /* 4699 */ - { 0, 0, NULL, NULL }, /* 4700 */ - { 0, 0, NULL, NULL }, /* 4701 */ - { 0, 0, NULL, NULL }, /* 4702 */ - { 0, 0, NULL, NULL }, /* 4703 */ - { 0, 0, NULL, NULL }, /* 4704 */ - { 0, 0, NULL, NULL }, /* 4705 */ - { 0, 0, NULL, NULL }, /* 4706 */ - { 0, 0, NULL, NULL }, /* 4707 */ - { 0, 0, NULL, NULL }, /* 4708 */ - { 0, 0, NULL, NULL }, /* 4709 */ - { 0, 0, NULL, NULL }, /* 4710 */ - { 0, 0, NULL, NULL }, /* 4711 */ - { 0, 0, NULL, NULL }, /* 4712 */ - { 0, 0, NULL, NULL }, /* 4713 */ - { 0, 0, NULL, NULL }, /* 4714 */ - { 0, 0, NULL, NULL }, /* 4715 */ - { 0, 0, NULL, NULL }, /* 4716 */ - { 0, 0, NULL, NULL }, /* 4717 */ - { 0, 0, NULL, NULL }, /* 4718 */ - { 0, 0, NULL, NULL }, /* 4719 */ - { 0, 0, NULL, NULL }, /* 4720 */ - { 0, 0, NULL, NULL }, /* 4721 */ - { 0, 0, NULL, NULL }, /* 4722 */ - { 0, 0, NULL, NULL }, /* 4723 */ - { 0, 0, NULL, NULL }, /* 4724 */ - { 0, 0, NULL, NULL }, /* 4725 */ - { 0, 0, NULL, NULL }, /* 4726 */ - { 0, 0, NULL, NULL }, /* 4727 */ - { 0, 0, NULL, NULL }, /* 4728 */ - { 0, 0, NULL, NULL }, /* 4729 */ - { 0, 0, NULL, NULL }, /* 4730 */ - { 0, 0, NULL, NULL }, /* 4731 */ - { 0, 0, NULL, NULL }, /* 4732 */ - { 0, 0, NULL, NULL }, /* 4733 */ - { 0, 0, NULL, NULL }, /* 4734 */ - { 0, 0, NULL, NULL }, /* 4735 */ - { 0, 0, NULL, NULL }, /* 4736 */ - { 0, 0, NULL, NULL }, /* 4737 */ - { 0, 0, NULL, NULL }, /* 4738 */ - { 0, 0, NULL, NULL }, /* 4739 */ - { 0, 0, NULL, NULL }, /* 4740 */ - { 0, 0, NULL, NULL }, /* 4741 */ - { 0, 0, NULL, NULL }, /* 4742 */ - { 0, 0, NULL, NULL }, /* 4743 */ - { 0, 0, NULL, NULL }, /* 4744 */ - { 0, 0, NULL, NULL }, /* 4745 */ - { 0, 0, NULL, NULL }, /* 4746 */ - { 0, 0, NULL, NULL }, /* 4747 */ - { 0, 0, NULL, NULL }, /* 4748 */ - { 0, 0, NULL, NULL }, /* 4749 */ - { 0, 0, NULL, NULL }, /* 4750 */ - { 0, 0, NULL, NULL }, /* 4751 */ - { 0, 0, NULL, NULL }, /* 4752 */ - { 0, 0, NULL, NULL }, /* 4753 */ - { 0, 0, NULL, NULL }, /* 4754 */ - { 0, 0, NULL, NULL }, /* 4755 */ - { 0, 0, NULL, NULL }, /* 4756 */ - { 0, 0, NULL, NULL }, /* 4757 */ - { 0, 0, NULL, NULL }, /* 4758 */ - { 0, 0, NULL, NULL }, /* 4759 */ - { 0, 0, NULL, NULL }, /* 4760 */ - { 0, 0, NULL, NULL }, /* 4761 */ - { 0, 0, NULL, NULL }, /* 4762 */ - { 0, 0, NULL, NULL }, /* 4763 */ - { 0, 0, NULL, NULL }, /* 4764 */ - { 0, 0, NULL, NULL }, /* 4765 */ - { 0, 0, NULL, NULL }, /* 4766 */ - { 0, 0, NULL, NULL }, /* 4767 */ - { 0, 0, NULL, NULL }, /* 4768 */ - { 0, 0, NULL, NULL }, /* 4769 */ - { 0, 0, NULL, NULL }, /* 4770 */ - { 0, 0, NULL, NULL }, /* 4771 */ - { 0, 0, NULL, NULL }, /* 4772 */ - { 0, 0, NULL, NULL }, /* 4773 */ - { 0, 0, NULL, NULL }, /* 4774 */ - { 0, 0, NULL, NULL }, /* 4775 */ - { 0, 0, NULL, NULL }, /* 4776 */ - { 0, 0, NULL, NULL }, /* 4777 */ - { 0, 0, NULL, NULL }, /* 4778 */ - { 0, 0, NULL, NULL }, /* 4779 */ - { 0, 0, NULL, NULL }, /* 4780 */ - { 0, 0, NULL, NULL }, /* 4781 */ - { 0, 0, NULL, NULL }, /* 4782 */ - { 0, 0, NULL, NULL }, /* 4783 */ - { 0, 0, NULL, NULL }, /* 4784 */ - { 0, 0, NULL, NULL }, /* 4785 */ - { 0, 0, NULL, NULL }, /* 4786 */ - { 0, 0, NULL, NULL }, /* 4787 */ - { 0, 0, NULL, NULL }, /* 4788 */ - { 0, 0, NULL, NULL }, /* 4789 */ - { 0, 0, NULL, NULL }, /* 4790 */ - { 0, 0, NULL, NULL }, /* 4791 */ - { 0, 0, NULL, NULL }, /* 4792 */ - { 0, 0, NULL, NULL }, /* 4793 */ - { 0, 0, NULL, NULL }, /* 4794 */ - { 0, 0, NULL, NULL }, /* 4795 */ - { 0, 0, NULL, NULL }, /* 4796 */ - { 0, 0, NULL, NULL }, /* 4797 */ - { 0, 0, NULL, NULL }, /* 4798 */ - { 0, 0, NULL, NULL }, /* 4799 */ - { 0, 0, NULL, NULL }, /* 4800 */ - { 0, 0, NULL, NULL }, /* 4801 */ - { 0, 0, NULL, NULL }, /* 4802 */ - { 0, 0, NULL, NULL }, /* 4803 */ - { 0, 0, NULL, NULL }, /* 4804 */ - { 0, 0, NULL, NULL }, /* 4805 */ - { 0, 0, NULL, NULL }, /* 4806 */ - { 0, 0, NULL, NULL }, /* 4807 */ - { 0, 0, NULL, NULL }, /* 4808 */ - { 0, 0, NULL, NULL }, /* 4809 */ - { 0, 0, NULL, NULL }, /* 4810 */ - { 0, 0, NULL, NULL }, /* 4811 */ - { 0, 0, NULL, NULL }, /* 4812 */ - { 0, 0, NULL, NULL }, /* 4813 */ - { 0, 0, NULL, NULL }, /* 4814 */ - { 0, 0, NULL, NULL }, /* 4815 */ - { 0, 0, NULL, NULL }, /* 4816 */ - { 0, 0, NULL, NULL }, /* 4817 */ - { 0, 0, NULL, NULL }, /* 4818 */ - { 0, 0, NULL, NULL }, /* 4819 */ - { 0, 0, NULL, NULL }, /* 4820 */ - { 0, 0, NULL, NULL }, /* 4821 */ - { 0, 0, NULL, NULL }, /* 4822 */ - { 0, 0, NULL, NULL }, /* 4823 */ - { 0, 0, NULL, NULL }, /* 4824 */ - { 0, 0, NULL, NULL }, /* 4825 */ - { 0, 0, NULL, NULL }, /* 4826 */ - { 0, 0, NULL, NULL }, /* 4827 */ - { 0, 0, NULL, NULL }, /* 4828 */ - { 0, 0, NULL, NULL }, /* 4829 */ - { 0, 0, NULL, NULL }, /* 4830 */ - { 0, 0, NULL, NULL }, /* 4831 */ - { 0, 0, NULL, NULL }, /* 4832 */ - { 0, 0, NULL, NULL }, /* 4833 */ - { 0, 0, NULL, NULL }, /* 4834 */ - { 0, 0, NULL, NULL }, /* 4835 */ - { 0, 0, NULL, NULL }, /* 4836 */ - { 0, 0, NULL, NULL }, /* 4837 */ - { 0, 0, NULL, NULL }, /* 4838 */ - { 0, 0, NULL, NULL }, /* 4839 */ - { 0, 0, NULL, NULL }, /* 4840 */ - { 0, 0, NULL, NULL }, /* 4841 */ - { 0, 0, NULL, NULL }, /* 4842 */ - { 0, 0, NULL, NULL }, /* 4843 */ - { 0, 0, NULL, NULL }, /* 4844 */ - { 0, 0, NULL, NULL }, /* 4845 */ - { 0, 0, NULL, NULL }, /* 4846 */ - { 0, 0, NULL, NULL }, /* 4847 */ - { 0, 0, NULL, NULL }, /* 4848 */ - { 0, 0, NULL, NULL }, /* 4849 */ - { 0, 0, NULL, NULL }, /* 4850 */ - { 0, 0, NULL, NULL }, /* 4851 */ - { 0, 0, NULL, NULL }, /* 4852 */ - { 0, 0, NULL, NULL }, /* 4853 */ - { 0, 0, NULL, NULL }, /* 4854 */ - { 0, 0, NULL, NULL }, /* 4855 */ - { 0, 0, NULL, NULL }, /* 4856 */ - { 0, 0, NULL, NULL }, /* 4857 */ - { 0, 0, NULL, NULL }, /* 4858 */ - { 0, 0, NULL, NULL }, /* 4859 */ - { 0, 0, NULL, NULL }, /* 4860 */ - { 0, 0, NULL, NULL }, /* 4861 */ - { 0, 0, NULL, NULL }, /* 4862 */ - { 0, 0, NULL, NULL }, /* 4863 */ - { 0, 0, NULL, NULL }, /* 4864 */ - { 0, 0, NULL, NULL }, /* 4865 */ - { 0, 0, NULL, NULL }, /* 4866 */ - { 0, 0, NULL, NULL }, /* 4867 */ - { 0, 0, NULL, NULL }, /* 4868 */ - { 0, 0, NULL, NULL }, /* 4869 */ - { 0, 0, NULL, NULL }, /* 4870 */ - { 0, 0, NULL, NULL }, /* 4871 */ - { 0, 0, NULL, NULL }, /* 4872 */ - { 0, 0, NULL, NULL }, /* 4873 */ - { 0, 0, NULL, NULL }, /* 4874 */ - { 0, 0, NULL, NULL }, /* 4875 */ - { 0, 0, NULL, NULL }, /* 4876 */ - { 0, 0, NULL, NULL }, /* 4877 */ - { 0, 0, NULL, NULL }, /* 4878 */ - { 0, 0, NULL, NULL }, /* 4879 */ - { 0, 0, NULL, NULL }, /* 4880 */ - { 0, 0, NULL, NULL }, /* 4881 */ - { 0, 0, NULL, NULL }, /* 4882 */ - { 0, 0, NULL, NULL }, /* 4883 */ - { 0, 0, NULL, NULL }, /* 4884 */ - { 0, 0, NULL, NULL }, /* 4885 */ - { 0, 0, NULL, NULL }, /* 4886 */ - { 0, 0, NULL, NULL }, /* 4887 */ - { 0, 0, NULL, NULL }, /* 4888 */ - { 0, 0, NULL, NULL }, /* 4889 */ - { 0, 0, NULL, NULL }, /* 4890 */ - { 0, 0, NULL, NULL }, /* 4891 */ - { 0, 0, NULL, NULL }, /* 4892 */ - { 0, 0, NULL, NULL }, /* 4893 */ - { 0, 0, NULL, NULL }, /* 4894 */ - { 0, 0, NULL, NULL }, /* 4895 */ - { 0, 0, NULL, NULL }, /* 4896 */ - { 0, 0, NULL, NULL }, /* 4897 */ - { 0, 0, NULL, NULL }, /* 4898 */ - { 0, 0, NULL, NULL }, /* 4899 */ - { 0, 0, NULL, NULL }, /* 4900 */ - { 0, 0, NULL, NULL }, /* 4901 */ - { 0, 0, NULL, NULL }, /* 4902 */ - { 0, 0, NULL, NULL }, /* 4903 */ - { 0, 0, NULL, NULL }, /* 4904 */ - { 0, 0, NULL, NULL }, /* 4905 */ - { 0, 0, NULL, NULL }, /* 4906 */ - { 0, 0, NULL, NULL }, /* 4907 */ - { 0, 0, NULL, NULL }, /* 4908 */ - { 0, 0, NULL, NULL }, /* 4909 */ - { 0, 0, NULL, NULL }, /* 4910 */ - { 0, 0, NULL, NULL }, /* 4911 */ - { 0, 0, NULL, NULL }, /* 4912 */ - { 0, 0, NULL, NULL }, /* 4913 */ - { 0, 0, NULL, NULL }, /* 4914 */ - { 0, 0, NULL, NULL }, /* 4915 */ - { 0, 0, NULL, NULL }, /* 4916 */ - { 0, 0, NULL, NULL }, /* 4917 */ - { 0, 0, NULL, NULL }, /* 4918 */ - { 0, 0, NULL, NULL }, /* 4919 */ - { 0, 0, NULL, NULL }, /* 4920 */ - { 0, 0, NULL, NULL }, /* 4921 */ - { 0, 0, NULL, NULL }, /* 4922 */ - { 0, 0, NULL, NULL }, /* 4923 */ - { 0, 0, NULL, NULL }, /* 4924 */ - { 0, 0, NULL, NULL }, /* 4925 */ - { 0, 0, NULL, NULL }, /* 4926 */ - { 0, 0, NULL, NULL }, /* 4927 */ - { 0, 0, NULL, NULL }, /* 4928 */ - { 0, 0, NULL, NULL }, /* 4929 */ - { 0, 0, NULL, NULL }, /* 4930 */ - { 0, 0, NULL, NULL }, /* 4931 */ - { 0, 0, NULL, NULL }, /* 4932 */ - { 0, 0, NULL, NULL }, /* 4933 */ - { 0, 0, NULL, NULL }, /* 4934 */ - { 0, 0, NULL, NULL }, /* 4935 */ - { 0, 0, NULL, NULL }, /* 4936 */ - { 0, 0, NULL, NULL }, /* 4937 */ - { 0, 0, NULL, NULL }, /* 4938 */ - { 0, 0, NULL, NULL }, /* 4939 */ - { 0, 0, NULL, NULL }, /* 4940 */ - { 0, 0, NULL, NULL }, /* 4941 */ - { 0, 0, NULL, NULL }, /* 4942 */ - { 0, 0, NULL, NULL }, /* 4943 */ - { 0, 0, NULL, NULL }, /* 4944 */ - { 0, 0, NULL, NULL }, /* 4945 */ - { 0, 0, NULL, NULL }, /* 4946 */ - { 0, 0, NULL, NULL }, /* 4947 */ - { 0, 0, NULL, NULL }, /* 4948 */ - { 0, 0, NULL, NULL }, /* 4949 */ - { 0, 0, NULL, NULL }, /* 4950 */ - { 0, 0, NULL, NULL }, /* 4951 */ - { 0, 0, NULL, NULL }, /* 4952 */ - { 0, 0, NULL, NULL }, /* 4953 */ - { 0, 0, NULL, NULL }, /* 4954 */ - { 0, 0, NULL, NULL }, /* 4955 */ - { 0, 0, NULL, NULL }, /* 4956 */ - { 0, 0, NULL, NULL }, /* 4957 */ - { 0, 0, NULL, NULL }, /* 4958 */ - { 0, 0, NULL, NULL }, /* 4959 */ - { 0, 0, NULL, NULL }, /* 4960 */ - { 0, 0, NULL, NULL }, /* 4961 */ - { 0, 0, NULL, NULL }, /* 4962 */ - { 0, 0, NULL, NULL }, /* 4963 */ - { 0, 0, NULL, NULL }, /* 4964 */ - { 0, 0, NULL, NULL }, /* 4965 */ - { 0, 0, NULL, NULL }, /* 4966 */ - { 0, 0, NULL, NULL }, /* 4967 */ - { 0, 0, NULL, NULL }, /* 4968 */ - { 0, 0, NULL, NULL }, /* 4969 */ - { 0, 0, NULL, NULL }, /* 4970 */ - { 0, 0, NULL, NULL }, /* 4971 */ - { 0, 0, NULL, NULL }, /* 4972 */ - { 0, 0, NULL, NULL }, /* 4973 */ - { 0, 0, NULL, NULL }, /* 4974 */ - { 0, 0, NULL, NULL }, /* 4975 */ - { 0, 0, NULL, NULL }, /* 4976 */ - { 0, 0, NULL, NULL }, /* 4977 */ - { 0, 0, NULL, NULL }, /* 4978 */ - { 0, 0, NULL, NULL }, /* 4979 */ - { 0, 0, NULL, NULL }, /* 4980 */ - { 0, 0, NULL, NULL }, /* 4981 */ - { 0, 0, NULL, NULL }, /* 4982 */ - { 0, 0, NULL, NULL }, /* 4983 */ - { 0, 0, NULL, NULL }, /* 4984 */ - { 0, 0, NULL, NULL }, /* 4985 */ - { 0, 0, NULL, NULL }, /* 4986 */ - { 0, 0, NULL, NULL }, /* 4987 */ - { 0, 0, NULL, NULL }, /* 4988 */ - { 0, 0, NULL, NULL }, /* 4989 */ - { 0, 0, NULL, NULL }, /* 4990 */ - { 0, 0, NULL, NULL }, /* 4991 */ - { 0, 0, NULL, NULL }, /* 4992 */ - { 0, 0, NULL, NULL }, /* 4993 */ - { 0, 0, NULL, NULL }, /* 4994 */ - { 0, 0, NULL, NULL }, /* 4995 */ - { 0, 0, NULL, NULL }, /* 4996 */ - { 0, 0, NULL, NULL }, /* 4997 */ - { 0, 0, NULL, NULL }, /* 4998 */ - { 0, 0, NULL, NULL }, /* 4999 */ /* end of Linux o32 */ -#if defined(LINUX_MIPSN64) - /* For an N64 strace decode the N64 64-bit syscalls. */ - { 3, TF, sys_read, "read" }, /* 5000 */ /* start of Linux N64 */ - { 3, TF, sys_write, "write" }, /* 5001 */ - { 3, TF, sys_open, "open" }, /* 5002 */ - { 1, 0, sys_close, "close" }, /* 5003 */ - { 2, TF, sys_stat, "stat" }, /* 5004 */ - { 2, 0, sys_fstat, "fstat" }, /* 5005 */ - { 2, TF, sys_lstat, "lstat" }, /* 5006 */ - { 3, 0, sys_poll, "poll" }, /* 5007 */ - { 3, 0, sys_lseek, "lseek" }, /* 5008 */ - { 6, TD, sys_mmap, "mmap" }, /* 5009 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 5010 */ - { 2, 0, sys_munmap, "munmap" }, /* 5011 */ - { 1, 0, sys_brk, "brk" }, /* 5012 */ - { 4, TS, sys_rt_sigaction, "rt_sigaction" }, /* 5013 */ - { 4, TS, sys_rt_sigprocmask, "rt_sigprocmask"}, /* 5014 */ - { 3, 0, sys_ioctl, "ioctl" }, /* 5015 */ - { 6, TF, sys_pread, "pread" }, /* 5016 */ - { 6, TF, sys_pwrite, "pwrite" }, /* 5017 */ - { 3, 0, sys_readv, "readv" }, /* 5018 */ - { 3, 0, sys_writev, "writev" }, /* 5019 */ - { 2, TF, sys_access, "access" }, /* 5020 */ - { 1, 0, sys_pipe, "pipe" }, /* 5021 */ - { 5, 0, sys_select, "_newselect" }, /* 5022 */ - { 0, 0, sys_sched_yield, "sched_yield" }, /* 5023 */ - { 5, 0, sys_mremap, "mremap" }, /* 5024 */ - { 3, 0, sys_msync, "msync" }, /* 5025 */ - { 3, 0, sys_mincore, "mincore" }, /* 5026 */ - { 3, 0, sys_madvise, "madvise" }, /* 5027 */ - { 3, TI, sys_shmget, "shmget" }, /* 5028 */ - { 3, TI, sys_shmat, "shmgat" }, /* 5029 */ - { 3, TI, sys_shmctl, "shmctl" }, /* 5030 */ - { 1, 0, sys_dup, "dup" }, /* 5031 */ - { 2, 0, sys_dup2, "dup2" }, /* 5032 */ - { 0, TS, sys_pause, "pause" }, /* 5033 */ - { 2, 0, sys_nanosleep, "nanosleep" }, /* 5034 */ - { 2, 0, sys_getitimer, "getitimer" }, /* 5035 */ - { 3, 0, sys_setitimer, "setitimer" }, /* 5036 */ - { 1, 0, sys_alarm, "alarm" }, /* 5037 */ - { 0, 0, sys_getpid, "getpid" }, /* 5038 */ - { 4, TD|TN, sys_sendfile, "sendfile" }, /* 5039 */ - { 2, 0, sys_socketcall, "socketcall" }, /* 5040 */ - { 3, TN, sys_connect, "connect" }, /* 5041 */ - { 3, TN, sys_accept, "accept" }, /* 5042 */ - { 6, TN, sys_sendto, "sendto" }, /* 5043 */ - { 6, TN, sys_recvfrom, "recvfrom" }, /* 5044 */ - { 3, TN, sys_sendmsg, "sendmsg" }, /* 5045 */ - { 3, TN, sys_recvmsg, "recvmsg" }, /* 5046 */ - { 2, TN, sys_shutdown, "shutdown" }, /* 5047 */ - { 3, TN, sys_bind, "bind" }, /* 5048 */ - { 2, TN, sys_listen, "listen" }, /* 5049 */ - { 3, TN, sys_getsockname, "getsockname" }, /* 5050 */ - { 3, TN, sys_getpeername, "getpeername" }, /* 5051 */ - { 4, TN, sys_socketpair, "socketpair" }, /* 5052 */ - { 5, TN, sys_setsockopt, "setsockopt" }, /* 5053 */ - { 5, TN, sys_getsockopt, "getsockopt" }, /* 5054 */ - { 2, TP, sys_clone, "clone" }, /* 5055 */ - { 0, TP, sys_fork, "fork" }, /* 5056 */ - { 3, TF|TP, sys_execve, "execve" }, /* 5057 */ - { 1, TP, sys_exit, "exit" }, /* 5058 */ - { 4, TP, sys_wait4, "wait4" }, /* 5059 */ - { 2, TS, sys_kill, "kill" }, /* 5060 */ - { 1, 0, sys_uname, "uname" }, /* 5061 */ - { 3, TI, sys_semget, "semget" }, /* 5062 */ - { 3, TI, printargs, "semop" }, /* 5063 */ - { 4, TI, sys_semctl, "semctl" }, /* 5064 */ - { 1, TI, sys_shmdt, "shmdt" }, /* 5065 */ - { 2, TI, sys_msgget, "msgget" }, /* 5066 */ - { 4, TI, sys_msgsnd, "msgsnd" }, /* 5067 */ - { 5, TI, sys_msgrcv, "msgrcv" }, /* 5068 */ - { 3, TI, sys_msgctl, "msgctl" }, /* 5069 */ - { 3, 0, sys_fcntl, "fcntl" }, /* 5070 */ - { 2, 0, sys_flock, "flock" }, /* 5071 */ - { 1, TD, sys_fsync, "fsync" }, /* 5072 */ - { 1, 0, sys_fdatasync, "fdatasync" }, /* 5073 */ - { 2, TF, sys_truncate, "truncate" }, /* 5074 */ - { 2, 0, sys_ftruncate, "ftruncate" }, /* 5075 */ - { 3, 0, sys_getdents, "getdents" }, /* 5076 */ - { 2, TF, sys_getcwd, "getcwd" }, /* 5077 */ - { 1, TF, sys_chdir, "chdir" }, /* 5078 */ - { 1, TF, sys_fchdir, "fchdir" }, /* 5079 */ - { 2, TF, sys_rename, "rename" }, /* 5080 */ - { 2, TF, sys_mkdir, "mkdir" }, /* 5081 */ - { 1, TF, sys_rmdir, "rmdir" }, /* 5082 */ - { 2, TF, sys_creat, "creat" }, /* 5083 */ - { 2, TF, sys_link, "link" }, /* 5084 */ - { 1, TF, sys_unlink, "unlink" }, /* 5085 */ - { 2, TF, sys_symlink, "symlink" }, /* 5086 */ - { 3, TF, sys_readlink, "readlink" }, /* 5087 */ - { 2, TF, sys_chmod, "chmod" }, /* 5088 */ - { 2, 0, sys_fchmod, "fchmod" }, /* 5089 */ - { 3, TF, sys_chown, "chown" }, /* 5090 */ - { 3, 0, sys_fchown, "fchown" }, /* 5091 */ - { 3, TF, sys_chown, "lchown" }, /* 5092 */ - { 1, 0, sys_umask, "umask" }, /* 5093 */ - { 2, 0, sys_gettimeofday, "gettimeofday" }, /* 5094 */ - { 2, 0, sys_getrlimit, "getrlimit" }, /* 5095 */ - { 2, 0, sys_getrusage, "getrusage" }, /* 5096 */ - { 1, 0, sys_sysinfo, "sysinfo" }, /* 5097 */ - { 1, 0, sys_times, "times" }, /* 5098 */ - { 4, 0, sys_ptrace, "ptrace" }, /* 5099 */ - { 0, NF, sys_getuid, "getuid" }, /* 5100 */ - { 3, 0, sys_syslog, "syslog" }, /* 5101 */ - { 0, NF, sys_getgid, "getgid" }, /* 5102 */ - { 1, 0, sys_setuid, "setuid" }, /* 5103 */ - { 1, 0, sys_setgid, "setgid" }, /* 5104 */ - { 0, NF, sys_geteuid, "geteuid" }, /* 5105 */ - { 0, NF, sys_getegid, "getegid" }, /* 5106 */ - { 2, 0, sys_setpgid, "setpgid" }, /* 5107 */ - { 0, 0, sys_getppid, "getppid" }, /* 5108 */ - { 0, 0, sys_getpgrp, "getpgrp" }, /* 5109 */ - { 0, 0, sys_setsid, "setsid" }, /* 5110 */ - { 2, 0, sys_setreuid, "setreuid" }, /* 5111 */ - { 2, 0, sys_setregid, "setregid" }, /* 5112 */ - { 2, 0, sys_getgroups, "getgroups" }, /* 5113 */ - { 2, 0, sys_setgroups, "setgroups" }, /* 5114 */ - { 3, 0, sys_setresuid, "setresuid" }, /* 5115 */ - { 3, 0, sys_getresuid, "getresuid" }, /* 5116 */ - { 3, 0, sys_setresgid, "setresgid" }, /* 5117 */ - { 3, 0, sys_getresgid, "getresgid" }, /* 5118 */ - { 0, 0, sys_getpgid, "getpgid" }, /* 5119 */ - { 1, NF, sys_setfsuid, "setfsuid" }, /* 5120 */ - { 1, NF, sys_setfsgid, "setfsgid" }, /* 5121 */ - { 1, 0, sys_getsid, "getsid" }, /* 5122 */ - { 2, 0, sys_capget, "capget" }, /* 5123 */ - { 2, 0, sys_capset, "capset" }, /* 5124 */ - { 2, TS, sys_rt_sigpending, "rt_sigpending" }, /* 5125 */ - { 4, TS, sys_rt_sigtimedwait, "rt_sigtimedwait"},/* 5126 */ - { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo"},/* 5127 */ - { 2, TS, sys_rt_sigsuspend, "rt_siguspend" }, /* 5128 */ - { 2, TS, sys_sigaltstack, "sigaltstatck" }, /* 5129 */ - { 2, TF, sys_utime, "utime" }, /* 5130 */ - { 3, TF, sys_mknod, "mknod" }, /* 5131 */ - { 1, 0, sys_personality, "personality" }, /* 5132 */ - { 2, 0, sys_ustat, "ustat" }, /* 5133 */ - { 3, 0, sys_statfs, "statfs" }, /* 5134 */ - { 3, 0, sys_fstatfs, "fstatfs" }, /* 5135 */ - { 5, 0, sys_sysfs, "sysfs" }, /* 5136 */ - { 2, 0, sys_getpriority, "getpriority" }, /* 5137 */ - { 3, 0, sys_setpriority, "setpriority" }, /* 5138 */ - { 2, 0, sys_sched_setparam, "sched_setparam"}, /* 5139 */ - { 2, 0, sys_sched_getparam, "sched_getparam"}, /* 5140 */ - { 3, 0, sys_sched_setscheduler, "sched_setscheduler"}, /* 5141 */ - { 1, 0, sys_sched_getscheduler, "sched_getscheduler"}, /* 5142 */ - { 1, 0, sys_sched_get_priority_max,"sched_get_priority_max"}, /* 5143 */ - { 1, 0, sys_sched_get_priority_min,"sched_get_priority_min"}, /* 5144 */ - { 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 5145 */ - { 2, 0, sys_mlock, "mlock" }, /* 5146 */ - { 2, 0, sys_munlock, "munlock" }, /* 5147 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 5148 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 5149 */ - { 0, 0, sys_vhangup, "vhangup" }, /* 5150 */ - { 2, 0, sys_pivotroot, "pivot_root" }, /* 5151 */ - { 1, 0, sys_sysctl, "_sysctl" }, /* 5152 */ - { 5, 0, sys_prctl, "prctl" }, /* 5153 */ - { 1, 0, sys_adjtimex, "adjtimex" }, /* 5154 */ - { 2, 0, sys_setrlimit, "setrlimit" }, /* 5155 */ - { 1, TF, sys_chroot, "chroot" }, /* 5156 */ - { 0, 0, sys_sync, "sync" }, /* 5157 */ - { 1, TF, sys_acct, "acct" }, /* 5158 */ - { 2, 0, sys_settimeofday, "settimeofday" }, /* 5159 */ - { 5, TF, sys_mount, "mount" }, /* 5160 */ - { 2, TF, sys_umount2, "umount" }, /* 5161 */ - { 2, TF, sys_swapon, "swapon" }, /* 5162 */ - { 1, TF, sys_swapoff, "swapoff" }, /* 5163 */ - { 4, 0, sys_reboot, "reboot" }, /* 5164 */ - { 2, 0, sys_sethostname, "sethostname" }, /* 5165 */ - { 2, 0, sys_setdomainname, "setdomainname" }, /* 5166 */ - { 2, 0, sys_create_module, "create_module" }, /* 5167 */ - { 4, 0, sys_init_module, "init_module" }, /* 5168 */ - { 1, 0, sys_delete_module, "delete_module" }, /* 5169 */ - { 1, 0, sys_get_kernel_syms, "get_kernel_syms"}, /* 5170 */ - { 5, 0, sys_query_module, "query_module" }, /* 5171 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 5172 */ - { 3, 0, sys_nfsservctl, "nfsservctl" }, /* 5173 */ - { 5, TN, printargs, "getpmsg" }, /* 5174 */ - { 5, TN, printargs, "putpmsg" }, /* 5175 */ - { 0, 0, sys_afs_syscall, "afs_syscall" }, /* 5176 */ - { 0, 0, printargs, "reserved177" }, /* 5177 */ - { 0, 0, sys_gettid, "gettid" }, /* 5178 */ - { 3, 0, sys_readahead, "readahead" }, /* 5179 */ - { 5, 0, sys_setxattr, "setxattr" }, /* 5180 */ - { 5, 0, sys_setxattr, "lsetxattr" }, /* 5181 */ - { 5, 0, sys_fsetxattr, "fsetxattr" }, /* 5182 */ - { 4, 0, sys_getxattr, "getxattr" }, /* 5183 */ - { 4, 0, sys_getxattr, "lgetxattr" }, /* 5184 */ - { 4, TD, sys_fgetxattr, "fgetxattr" }, /* 5185 */ - { 3, 0, sys_listxattr, "listxattr" }, /* 5186 */ - { 3, 0, sys_listxattr, "llistxattr" }, /* 5187 */ - { 3, TD, sys_flistxattr, "flistxattr" }, /* 5188 */ - { 2, 0, sys_removexattr, "removexattr" }, /* 5189 */ - { 2, 0, sys_removexattr, "lremovexattr" }, /* 5190 */ - { 2, TD, sys_fremovexattr, "fremovexattr" }, /* 5191 */ - { 2, TS, sys_kill, "tkill" }, /* 5192 */ - { 1, 0, sys_time, "time" }, /* 5193 */ - { 6, 0, sys_futex, "futex" }, /* 5194 */ - { 3, 0, sys_sched_setaffinity, "sched_setaffinity"}, /* 5195 */ - { 3, 0, sys_sched_getaffinity, "sched_getaffinity"}, /* 5196 */ - { 3, 0, printargs, "cacheflush" }, /* 5197 */ - { 3, 0, printargs, "cachectl" }, /* 5198 */ - { 4, 0, sys_sysmips, "sysmips" }, /* 5199 */ - { 2, 0, sys_io_setup, "io_setup" }, /* 5200 */ - { 1, 0, sys_io_destroy, "io_destroy" }, /* 5201 */ - { 5, 0, sys_io_getevents, "io_getevents" }, /* 5202 */ - { 3, 0, sys_io_submit, "io_submit" }, /* 5203 */ - { 3, 0, sys_io_cancel, "io_cancel" }, /* 5204 */ - { 1, TP, sys_exit, "exit_group" }, /* 5205 */ - { 3, 0, sys_lookup_dcookie, "lookup_dcookie" }, /* 5206 */ - { 1, TD, sys_epoll_create, "epoll_create" }, /* 5207 */ - { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 5208 */ - { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 5209 */ - { 5, 0, sys_remap_file_pages, "remap_file_pages" }, /* 5210 */ - { 0, TS, sys_rt_sigreturn, "rt_sigreturn" }, /* 5211 */ - { 1, 0, sys_set_tid_address, "set_tid_address" }, /* 5212 */ - { 0, 0, sys_restart_syscall, "restart_syscall" }, /* 5213 */ - { 5, TI, sys_semtimedop, "semtimedop" }, /* 5214 */ - { 4, TD, sys_fadvise64_64, "fadvise64_64" }, /* 5215 */ - { 3, 0, sys_timer_create, "timer_create" }, /* 5216 */ - { 4, 0, sys_timer_settime, "timer_settime" }, /* 5217 */ - { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 5218 */ - { 1, 0, sys_timer_getoverrun, "timer_getoverrun"}, /* 5219 */ - { 1, 0, sys_timer_delete, "timer_delete" }, /* 5220 */ - { 2, 0, sys_clock_settime, "clock_settime" }, /* 5221 */ - { 2, 0, sys_clock_gettime, "clock_gettime" }, /* 5222 */ - { 2, 0, sys_clock_getres, "clock_getres" }, /* 5223 */ - { 4, 0, sys_clock_nanosleep, "clock_nanosleep"}, /* 5224 */ - { 3, TS, sys_tgkill, "tgkill" }, /* 5225 */ - { 2, TF, sys_utimes, "utimes" }, /* 5226 */ - { 6, 0, sys_mbind, "mbind" }, /* 5227 */ - { 0, 0, NULL, NULL }, /* 5228 */ - { 0, 0, NULL, NULL }, /* 5229 */ - { 4, 0, sys_mq_open, "mq_open" }, /* 5230 */ - { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 5231 */ - { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 5232 */ - { 5, 0, sys_mq_timedreceive, "mq_timedreceive" }, /* 5233 */ - { 2, 0, sys_mq_notify, "mq_notify" }, /* 5234 */ - { 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 5235 */ - { 0, 0, NULL, NULL }, /* 5236 */ - { 5, TP, sys_waitid, "waitid" }, /* 5237 */ - { 0, 0, NULL, NULL }, /* 5238 */ - { 5, 0, sys_add_key, "add_key" }, /* 5239 */ - { 4, 0, sys_request_key, "request_key" }, /* 5230 */ - { 5, 0, sys_keyctl, "keyctl" }, /* 5241 */ - { 1, 0, sys_set_thread_area, "set_thread_area" }, /* 5242 */ - { 0, TD, sys_inotify_init, "inotify_init" }, /* 5243 */ - { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 5244 */ - { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 5245 */ - { 4, 0, sys_migrate_pages, "migrate_pages" }, /* 5246 */ - { 4, TD|TF, sys_openat, "openat" }, /* 5247 */ - { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 5248 */ - { 4, TD|TF, sys_mknodat, "mknodat" }, /* 5249 */ - { 5, TD|TF, sys_fchownat, "fchownat" }, /* 5250 */ - { 3, TD|TF, sys_futimesat, "futimesat" }, /* 5251 */ - { 4, TD|TF, sys_newfstatat, "newfstatat" }, /* 5252 */ - { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 5253 */ - { 4, TD|TF, sys_renameat, "renameat" }, /* 5254 */ - { 5, TD|TF, sys_linkat, "linkat" }, /* 5255 */ - { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 5256 */ - { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 5257 */ - { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 5258 */ - { 3, TD|TF, sys_faccessat, "faccessat" }, /* 5259 */ - { 6, TD, sys_pselect6, "pselect6" }, /* 5260 */ - { 5, TD, sys_ppoll, "ppoll" }, /* 5261 */ - { 1, TP, sys_unshare, "unshare" }, /* 5262 */ - { 6, TD, sys_splice, "splice" }, /* 5263 */ - { 4, TD, sys_sync_file_range, "sync_file_range" }, /* 5264 */ - { 4, TD, sys_tee, "tee" }, /* 5265 */ - { 4, TD, sys_vmsplice, "vmsplice" }, /* 5266 */ - { 6, 0, printargs, "move_pages" }, /* 5267 */ - { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 5268 */ - { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 5269 */ - { 4, 0, sys_kexec_load, "kexec_load" }, /* 5270 */ - { 3, 0, sys_getcpu, "getcpu" }, /* 5271 */ - { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 5272 */ - { 3, 0, sys_ioprio_set, "ioprio_set" }, /* 5273 */ - { 2, 0, sys_ioprio_get, "ioprio_get" }, /* 5274 */ - { 4, TD|TF, sys_utimensat, "utimensat" }, /* 5275 */ - { 3, TD|TS, sys_signalfd, "signalfd" }, /* 5276 */ - { 0, 0, NULL, NULL }, /* 5277 */ - { 1, TD, sys_eventfd, "eventfd" }, /* 5278 */ - { 6, TD, sys_fallocate, "fallocate" }, /* 5279 */ - { 2, TD, sys_timerfd_create, "timerfd_create" }, /* 5280 */ - { 2, TD, sys_timerfd_gettime, "timerfd_gettime" }, /* 5281 */ - { 4, TD, sys_timerfd_settime, "timerfd_settime" }, /* 5282 */ - { 4, TD|TS, sys_signalfd4, "signalfd4" }, /* 5283 */ - { 2, TD, sys_eventfd2, "eventfd2" }, /* 5284 */ - { 1, TD, sys_epoll_create1, "epoll_create1" }, /* 5285 */ - { 3, TD, sys_dup3, "dup3" }, /* 5286 */ - { 2, TD, sys_pipe2, "pipe2" }, /* 5287 */ - { 1, TD, sys_inotify_init1, "inotify_init1" }, /* 5288 */ - { 5, TD, sys_preadv, "preadv" }, /* 5289 */ - { 5, TD, sys_pwritev, "pwritev" }, /* 5290 */ - { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo" }, /* 5291 */ - { 5, TD, sys_perf_event_open, "perf_event_open" }, /* 5292 */ - { 4, TN, sys_accept4, "accept4" }, /* 5293 */ - { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 5294 */ - { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 5295 */ - { 5, TD|TF, sys_fanotify_mark, "fanotify_mark" }, /* 5296 */ - { 4, 0, sys_prlimit64, "prlimit64" }, /* 5297 */ - { 5, TD|TF, sys_name_to_handle_at, "name_to_handle_at"}, /* 5298 */ - { 3, TD, sys_open_by_handle_at, "open_by_handle_at"}, /* 5299 */ - { 2, 0, sys_clock_adjtime, "clock_adjtime" }, /* 5300 */ - { 1, TD, sys_syncfs, "syncfs" }, /* 5301 */ - { 4, TN, sys_sendmmsg, "sendmmsg" }, /* 5302 */ - { 2, TD, sys_setns, "setns" }, /* 5303 */ - { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 5304 */ - { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 5305 */ -#else - { 0, 0, printargs, "n64_read" }, /* 5000 */ - { 0, 0, printargs, "n64_write" }, /* 5001 */ - { 0, 0, printargs, "n64_open" }, /* 5002 */ - { 0, 0, printargs, "n64_close" }, /* 5003 */ - { 0, 0, printargs, "n64_stat" }, /* 5004 */ - { 0, 0, printargs, "n64_fstat" }, /* 5005 */ - { 0, 0, printargs, "n64_lstat" }, /* 5006 */ - { 0, 0, printargs, "n64_poll" }, /* 5007 */ - { 0, 0, printargs, "n64_lseek" }, /* 5008 */ - { 0, 0, printargs, "n64_mmap" }, /* 5009 */ - { 0, 0, printargs, "n64_mprotect" }, /* 5010 */ - { 0, 0, printargs, "n64_munmap" }, /* 5011 */ - { 0, 0, printargs, "n64_brk" }, /* 5012 */ - { 0, 0, printargs, "n64_rt_sigaction" }, /* 5013 */ - { 0, 0, printargs, "n64_rt_sigprocmask" }, /* 5014 */ - { 0, 0, printargs, "n64_ioctl" }, /* 5015 */ - { 0, 0, printargs, "n64_pread" }, /* 5016 */ - { 0, 0, printargs, "n64_pwrite" }, /* 5017 */ - { 0, 0, printargs, "n64_readv" }, /* 5018 */ - { 0, 0, printargs, "n64_writev" }, /* 5019 */ - { 0, 0, printargs, "n64_access" }, /* 5020 */ - { 0, 0, printargs, "n64_pipe" }, /* 5021 */ - { 0, 0, printargs, "n64__newselect" }, /* 5022 */ - { 0, 0, printargs, "n64_sched_yield" }, /* 5023 */ - { 0, 0, printargs, "n64_mremap" }, /* 5024 */ - { 0, 0, printargs, "n64_msync" }, /* 5025 */ - { 0, 0, printargs, "n64_mincore" }, /* 5026 */ - { 0, 0, printargs, "n64_madvise" }, /* 5027 */ - { 0, 0, printargs, "n64_shmget" }, /* 5028 */ - { 0, 0, printargs, "n64_shmgat" }, /* 5029 */ - { 0, 0, printargs, "n64_shmctl" }, /* 5030 */ - { 0, 0, printargs, "n64_dup" }, /* 5031 */ - { 0, 0, printargs, "n64_dup2" }, /* 5032 */ - { 0, 0, printargs, "n64_pause" }, /* 5033 */ - { 0, 0, printargs, "n64_nanosleep" }, /* 5034 */ - { 0, 0, printargs, "n64_getitimer" }, /* 5035 */ - { 0, 0, printargs, "n64_setitimer" }, /* 5036 */ - { 0, 0, printargs, "n64_alarm" }, /* 5037 */ - { 0, 0, printargs, "n64_getpid" }, /* 5038 */ - { 0, 0, printargs, "n64_sendfile" }, /* 5039 */ - { 0, 0, printargs, "n64_socketcall" }, /* 5040 */ - { 0, 0, printargs, "n64_connect" }, /* 5041 */ - { 0, 0, printargs, "n64_accept" }, /* 5042 */ - { 0, 0, printargs, "n64_sendto" }, /* 5043 */ - { 0, 0, printargs, "n64_recvfrom" }, /* 5044 */ - { 0, 0, printargs, "n64_sendmsg" }, /* 5045 */ - { 0, 0, printargs, "n64_recvmsg" }, /* 5046 */ - { 0, 0, printargs, "n64_shutdown" }, /* 5047 */ - { 0, 0, printargs, "n64_bind" }, /* 5048 */ - { 0, 0, printargs, "n64_listen" }, /* 5049 */ - { 0, 0, printargs, "n64_getsockname" }, /* 5050 */ - { 0, 0, printargs, "n64_getpeername" }, /* 5051 */ - { 0, 0, printargs, "n64_socketpair" }, /* 5052 */ - { 0, 0, printargs, "n64_setsockopt" }, /* 5053 */ - { 0, 0, printargs, "n64_getsockopt" }, /* 5054 */ - { 0, 0, printargs, "n64_clone" }, /* 5055 */ - { 0, 0, printargs, "n64_fork" }, /* 5056 */ - { 0, 0, printargs, "n64_execve" }, /* 5057 */ - { 0, 0, printargs, "n64_exit" }, /* 5058 */ - { 0, 0, printargs, "n64_wait4" }, /* 5059 */ - { 0, 0, printargs, "n64_kill" }, /* 5060 */ - { 0, 0, printargs, "n64_uname" }, /* 5061 */ - { 0, 0, printargs, "n64_semget" }, /* 5062 */ - { 0, 0, printargs, "n64_semop" }, /* 5063 */ - { 0, 0, printargs, "n64_semctl" }, /* 5064 */ - { 0, 0, printargs, "n64_shmdt" }, /* 5065 */ - { 0, 0, printargs, "n64_msgget" }, /* 5066 */ - { 0, 0, printargs, "n64_msgsnd" }, /* 5067 */ - { 0, 0, printargs, "n64_msgrcv" }, /* 5068 */ - { 0, 0, printargs, "n64_msgctl" }, /* 5069 */ - { 0, 0, printargs, "n64_fcntl" }, /* 5070 */ - { 0, 0, printargs, "n64_flock" }, /* 5071 */ - { 0, 0, printargs, "n64_fsync" }, /* 5072 */ - { 0, 0, printargs, "n64_fdatasync" }, /* 5073 */ - { 0, 0, printargs, "n64_truncate" }, /* 5074 */ - { 0, 0, printargs, "n64_ftruncate" }, /* 5075 */ - { 0, 0, printargs, "n64_getdents" }, /* 5076 */ - { 0, 0, printargs, "n64_getcwd" }, /* 5077 */ - { 0, 0, printargs, "n64_chdir" }, /* 5078 */ - { 0, 0, printargs, "n64_fchdir" }, /* 5079 */ - { 0, 0, printargs, "n64_rename" }, /* 5080 */ - { 0, 0, printargs, "n64_mkdir" }, /* 5081 */ - { 0, 0, printargs, "n64_rmdir" }, /* 5082 */ - { 0, 0, printargs, "n64_creat" }, /* 5083 */ - { 0, 0, printargs, "n64_link" }, /* 5084 */ - { 0, 0, printargs, "n64_unlink" }, /* 5085 */ - { 0, 0, printargs, "n64_symlink" }, /* 5086 */ - { 0, 0, printargs, "n64_readlink" }, /* 5087 */ - { 0, 0, printargs, "n64_chmod" }, /* 5088 */ - { 0, 0, printargs, "n64_fchmod" }, /* 5089 */ - { 0, 0, printargs, "n64_chown" }, /* 5090 */ - { 0, 0, printargs, "n64_fchown" }, /* 5091 */ - { 0, 0, printargs, "n64_lchown" }, /* 5092 */ - { 0, 0, printargs, "n64_umask" }, /* 5093 */ - { 0, 0, printargs, "n64_gettimeofday" }, /* 5094 */ - { 0, 0, printargs, "n64_getrlimit" }, /* 5095 */ - { 0, 0, printargs, "n64_getrusage" }, /* 5096 */ - { 0, 0, printargs, "n64_sysinfo" }, /* 5097 */ - { 0, 0, printargs, "n64_times" }, /* 5098 */ - { 0, 0, printargs, "n64_ptrace" }, /* 5099 */ - { 0, 0, printargs, "n64_getuid" }, /* 5100 */ - { 0, 0, printargs, "n64_syslog" }, /* 5101 */ - { 0, 0, printargs, "n64_getgid" }, /* 5102 */ - { 0, 0, printargs, "n64_setuid" }, /* 5103 */ - { 0, 0, printargs, "n64_setgid" }, /* 5104 */ - { 0, 0, printargs, "n64_geteuid" }, /* 5105 */ - { 0, 0, printargs, "n64_getegid" }, /* 5106 */ - { 0, 0, printargs, "n64_setpgid" }, /* 5107 */ - { 0, 0, printargs, "n64_getppid" }, /* 5108 */ - { 0, 0, printargs, "n64_getpgrp" }, /* 5109 */ - { 0, 0, printargs, "n64_setsid" }, /* 5110 */ - { 0, 0, printargs, "n64_setreuid" }, /* 5111 */ - { 0, 0, printargs, "n64_setregid" }, /* 5112 */ - { 0, 0, printargs, "n64_getgroups" }, /* 5113 */ - { 0, 0, printargs, "n64_setgroups" }, /* 5114 */ - { 0, 0, printargs, "n64_setresuid" }, /* 5115 */ - { 0, 0, printargs, "n64_getresuid" }, /* 5116 */ - { 0, 0, printargs, "n64_setresgid" }, /* 5117 */ - { 0, 0, printargs, "n64_getresgid" }, /* 5118 */ - { 0, 0, printargs, "n64_getpgid" }, /* 5119 */ - { 0, 0, printargs, "n64_setfsuid" }, /* 5120 */ - { 0, 0, printargs, "n64_setfsgid" }, /* 5121 */ - { 0, 0, printargs, "n64_getsid" }, /* 5122 */ - { 0, 0, printargs, "n64_capget" }, /* 5123 */ - { 0, 0, printargs, "n64_capset" }, /* 5124 */ - { 0, 0, printargs, "n64_rt_sigpending" }, /* 5125 */ - { 0, 0, printargs, "n64_rt_sigtimedwait" }, /* 5126 */ - { 0, 0, printargs, "n64_rt_sigqueueinfo" }, /* 5127 */ - { 0, 0, printargs, "n64_rt_siguspend" }, /* 5128 */ - { 0, 0, printargs, "n64_sigaltstatck" }, /* 5129 */ - { 0, 0, printargs, "n64_utime" }, /* 5130 */ - { 0, 0, printargs, "n64_mknod" }, /* 5131 */ - { 0, 0, printargs, "n64_personality" }, /* 5132 */ - { 0, 0, printargs, "n64_ustat" }, /* 5133 */ - { 0, 0, printargs, "n64_statfs" }, /* 5134 */ - { 0, 0, printargs, "n64_fstatfs" }, /* 5135 */ - { 0, 0, printargs, "n64_sysfs" }, /* 5136 */ - { 0, 0, printargs, "n64_getpriority" }, /* 5137 */ - { 0, 0, printargs, "n64_setpriority" }, /* 5138 */ - { 0, 0, printargs, "n64_sched_setparam" }, /* 5139 */ - { 0, 0, printargs, "n64_sched_getparam" }, /* 5140 */ - { 0, 0, printargs, "n64_sched_setscheduler"}, /* 5141 */ - { 0, 0, printargs, "n64_sched_getscheduler"}, /* 5142 */ - { 0, 0, printargs, "n64_sched_get_priority_max"}, /* 5143 */ - { 0, 0, printargs, "n64_sched_get_priority_min"}, /* 5144 */ - { 0, 0, printargs, "n64_sched_rr_get_interval"}, /* 5145 */ - { 0, 0, printargs, "n64_mlock" }, /* 5146 */ - { 0, 0, printargs, "n64_munlock" }, /* 5147 */ - { 0, 0, printargs, "n64_mlockall" }, /* 5148 */ - { 0, 0, printargs, "n64_munlockall" }, /* 5149 */ - { 0, 0, printargs, "n64_vhangup" }, /* 5150 */ - { 0, 0, printargs, "n64_pivot_root" }, /* 5151 */ - { 0, 0, printargs, "n64__sysctl" }, /* 5152 */ - { 0, 0, printargs, "n64_prctl" }, /* 5153 */ - { 0, 0, printargs, "n64_adjtimex" }, /* 5154 */ - { 0, 0, printargs, "n64_setrlimit" }, /* 5155 */ - { 0, 0, printargs, "n64_chroot" }, /* 5156 */ - { 0, 0, printargs, "n64_sync" }, /* 5157 */ - { 0, 0, printargs, "n64_acct" }, /* 5158 */ - { 0, 0, printargs, "n64_settimeofday" }, /* 5159 */ - { 0, 0, printargs, "n64_mount" }, /* 5160 */ - { 0, 0, printargs, "n64_umount" }, /* 5161 */ - { 0, 0, printargs, "n64_swapon" }, /* 5162 */ - { 0, 0, printargs, "n64_swapoff" }, /* 5163 */ - { 0, 0, printargs, "n64_reboot" }, /* 5164 */ - { 0, 0, printargs, "n64_sethostname" }, /* 5165 */ - { 0, 0, printargs, "n64_setdomainname" }, /* 5166 */ - { 0, 0, printargs, "n64_create_module" }, /* 5167 */ - { 0, 0, printargs, "n64_init_module" }, /* 5168 */ - { 0, 0, printargs, "n64_delete_module" }, /* 5169 */ - { 0, 0, printargs, "n64_get_kernel_syms" }, /* 5170 */ - { 0, 0, printargs, "n64_query_module" }, /* 5171 */ - { 0, 0, printargs, "n64_quotactl" }, /* 5172 */ - { 0, 0, printargs, "n64_nfsservctl" }, /* 5173 */ - { 0, 0, printargs, "n64_getpmsg" }, /* 5174 */ - { 0, 0, printargs, "n64_putpmsg" }, /* 5175 */ - { 0, 0, printargs, "n64_afs_syscall" }, /* 5176 */ - { 0, 0, printargs, "n64_reserved177" }, /* 5177 */ - { 0, 0, printargs, "n64_gettid" }, /* 5178 */ - { 0, 0, printargs, "n64_readahead" }, /* 5179 */ - { 0, 0, printargs, "n64_setxattr" }, /* 5180 */ - { 0, 0, printargs, "n64_lsetxattr" }, /* 5181 */ - { 0, 0, printargs, "n64_fsetxattr" }, /* 5182 */ - { 0, 0, printargs, "n64_getxattr" }, /* 5183 */ - { 0, 0, printargs, "n64_lgetxattr" }, /* 5184 */ - { 0, 0, printargs, "n64_fgetxattr" }, /* 5185 */ - { 0, 0, printargs, "n64_listxattr" }, /* 5186 */ - { 0, 0, printargs, "n64_llistxattr" }, /* 5187 */ - { 0, 0, printargs, "n64_flistxattr" }, /* 5188 */ - { 0, 0, printargs, "n64_removexattr" }, /* 5189 */ - { 0, 0, printargs, "n64_lremovexattr" }, /* 5190 */ - { 0, 0, printargs, "n64_fremovexattr" }, /* 5191 */ - { 0, 0, printargs, "n64_tkill" }, /* 5192 */ - { 0, 0, printargs, "n64_time" }, /* 5193 */ - { 0, 0, printargs, "n64_futex" }, /* 5194 */ - { 0, 0, printargs, "n64_sched_setaffinity" }, /* 5195 */ - { 0, 0, printargs, "n64_sched_getaffinity" }, /* 5196 */ - { 0, 0, printargs, "n64_cacheflush" }, /* 5197 */ - { 0, 0, printargs, "n64_cachectl" }, /* 5198 */ - { 0, 0, printargs, "n64_sysmips" }, /* 5199 */ - { 0, 0, printargs, "n64_io_setup" }, /* 5200 */ - { 0, 0, printargs, "n64_io_destroy" }, /* 5201 */ - { 0, 0, printargs, "n64_io_getevents" }, /* 5202 */ - { 0, 0, printargs, "n64_io_submit" }, /* 5203 */ - { 0, 0, printargs, "n64_io_cancel" }, /* 5204 */ - { 1, TP, printargs, "n64_exit_group" }, /* 5205 */ - { 0, 0, printargs, "n64_lookup_dcookie" }, /* 5206 */ - { 0, 0, printargs, "n64_epoll_create" }, /* 5207 */ - { 0, 0, printargs, "n64_epoll_ctl" }, /* 5208 */ - { 0, 0, printargs, "n64_epoll_wait" }, /* 5209 */ - { 0, 0, printargs, "n64_remap_file_pages" }, /* 5210 */ - { 0, 0, printargs, "n64_rt_sigreturn" }, /* 5211 */ - { 1, 0, printargs, "n64_set_tid_address" }, /* 5212 */ - { 0, 0, printargs, "n64_restart_syscall" }, /* 5213 */ - { 5, TI, printargs, "n64_semtimedop" }, /* 5214 */ - { 0, 0, printargs, "n64_fadvise64_64" }, /* 5215 */ - { 0, 0, printargs, "n64_timer_create" }, /* 5216 */ - { 0, 0, printargs, "n64_timer_settime" }, /* 5217 */ - { 0, 0, printargs, "n64_timer_gettime" }, /* 5218 */ - { 0, 0, printargs, "n64_timer_getoverrun" }, /* 5219 */ - { 0, 0, printargs, "n64_timer_delete" }, /* 5220 */ - { 0, 0, printargs, "n64_clock_settime" }, /* 5221 */ - { 0, 0, printargs, "n64_clock_gettime" }, /* 5222 */ - { 0, 0, printargs, "n64_clock_getres" }, /* 5223 */ - { 0, 0, printargs, "n64_clock_nanosleep" }, /* 5224 */ - { 0, 0, printargs, "n64_tgkill" }, /* 5225 */ - { 0, 0, printargs, "n64_utimes" }, /* 5226 */ - { 0, 0, printargs, "n64_mbind" }, /* 5227 */ - { 0, 0, printargs, "n64_SYS_5228" }, /* 5228 */ - { 0, 0, printargs, "n64_SYS_5228" }, /* 5229 */ - { 0, 0, printargs, "n64_mq_open" }, /* 5230 */ - { 0, 0, printargs, "n64_mq_unlink" }, /* 5231 */ - { 0, 0, printargs, "n64_mq_timedsend" }, /* 5232 */ - { 0, 0, printargs, "n64_mq_timedreceive" }, /* 5233 */ - { 0, 0, printargs, "n64_mq_notify" }, /* 5234 */ - { 0, 0, printargs, "n64_mq_getsetattr" }, /* 5235 */ - { 0, 0, printargs, "n64_SYS_5236" }, /* 5236 */ - { 0, 0, printargs, "n64_waitid" }, /* 5237 */ - { 0, 0, printargs, "n64_SYS_5238" }, /* 5238 */ - { 0, 0, printargs, "n64_add_key" }, /* 5239 */ - { 0, 0, printargs, "n64_request_key" }, /* 5230 */ - { 0, 0, printargs, "n64_keyctl" }, /* 5241 */ - { 0, 0, printargs, "n64_set_thread_area" }, /* 5242 */ - { 0, 0, printargs, "n64_inotify_init" }, /* 5243 */ - { 0, 0, printargs, "n64_inotify_add_watch" }, /* 5244 */ - { 0, 0, printargs, "n64_inotify_rm_watch" }, /* 5245 */ - { 0, 0, printargs, "n64_migrate_pages" }, /* 5246 */ - { 0, 0, printargs, "n64_openat" }, /* 5247 */ - { 0, 0, printargs, "n64_mkdirat" }, /* 5248 */ - { 0, 0, printargs, "n64_mknodat" }, /* 5249 */ - { 0, 0, printargs, "n64_fchownat" }, /* 5250 */ - { 0, 0, printargs, "n64_futimesat" }, /* 5251 */ - { 0, 0, printargs, "n64_newfstatat" }, /* 5252 */ - { 0, 0, printargs, "n64_unlinkat" }, /* 5253 */ - { 0, 0, printargs, "n64_renameat" }, /* 5254 */ - { 0, 0, printargs, "n64_linkat" }, /* 5255 */ - { 0, 0, printargs, "n64_symlinkat" }, /* 5256 */ - { 0, 0, printargs, "n64_readlinkat" }, /* 5257 */ - { 0, 0, printargs, "n64_fchmodat" }, /* 5258 */ - { 0, 0, printargs, "n64_faccessat" }, /* 5259 */ - { 0, 0, printargs, "n64_pselect6" }, /* 5260 */ - { 0, 0, printargs, "n64_ppoll" }, /* 5261 */ - { 0, 0, printargs, "n64_unshare" }, /* 5262 */ - { 0, 0, printargs, "n64_splice" }, /* 5263 */ - { 0, 0, printargs, "n64_sync_file_range" }, /* 5264 */ - { 0, 0, printargs, "n64_tee" }, /* 5265 */ - { 0, 0, printargs, "n64_vmsplice" }, /* 5266 */ - { 0, 0, printargs, "n64_move_pages" }, /* 5267 */ - { 0, 0, printargs, "n64_set_robust_list" }, /* 5268 */ - { 0, 0, printargs, "n64_get_robust_list" }, /* 5269 */ - { 0, 0, printargs, "n64_kexec_load" }, /* 5270 */ - { 0, 0, printargs, "n64_getcpu" }, /* 5271 */ - { 0, 0, printargs, "n64_epoll_pwait" }, /* 5272 */ - { 0, 0, printargs, "n64_ioprio_set" }, /* 5273 */ - { 0, 0, printargs, "n64_ioprio_get" }, /* 5274 */ - { 0, 0, printargs, "n64_utimensat" }, /* 5275 */ - { 0, 0, printargs, "n64_signalfd" }, /* 5276 */ - { 0, 0, printargs, "n64_SYS_5277" }, /* 5277 */ - { 0, 0, printargs, "n64_eventfd" }, /* 5278 */ - { 0, 0, printargs, "n64_fallocate" }, /* 5279 */ - { 0, 0, printargs, "n64_timerfd_create" }, /* 5280 */ - { 0, 0, printargs, "n64_timerfd_gettime" }, /* 5281 */ - { 0, 0, printargs, "n64_timerfd_settime" }, /* 5282 */ - { 0, 0, printargs, "n64_signalfd4" }, /* 5283 */ - { 0, 0, printargs, "n64_eventfd2" }, /* 5284 */ - { 0, 0, printargs, "n64_epoll_create1" }, /* 5285 */ - { 0, 0, printargs, "n64_dup3" }, /* 5286 */ - { 0, 0, printargs, "n64_pipe2" }, /* 5287 */ - { 0, 0, printargs, "n64_inotify_init1" }, /* 5288 */ - { 0, 0, printargs, "n64_preadv" }, /* 5289 */ - { 0, 0, printargs, "n64_pwritev" }, /* 5290 */ - { 0, 0, printargs, "n64_rt_tgsigqueueinfo" }, /* 5291 */ - { 0, 0, printargs, "n64_perf_event_open" }, /* 5292 */ - { 0, 0, printargs, "n64_accept4" }, /* 5293 */ - { 0, 0, printargs, "n64_recvmmsg" }, /* 5294 */ - { 2, 0, printargs, "n64_fanotify_init" }, /* 5295 */ - { 5, 0, printargs, "n64_fanotify_mark" }, /* 5296 */ - { 4, 0, printargs, "n64_prlimit64" }, /* 5297 */ - { 5, TD|TF, printargs, "n64_name_to_handle_at" }, /* 5298 */ - { 3, TD, printargs, "n64_open_by_handle_at" }, /* 5299 */ - { 2, 0, printargs, "n64_clock_adjtime" }, /* 5300 */ - { 1, TD, printargs, "n64_syncfs" }, /* 5301 */ - { 4, TN, printargs, "n64_sendmmsg" }, /* 5302 */ - { 2, TD, printargs, "n64_setns" }, /* 5303 */ - { 6, 0, printargs, "n64_process_vm_readv" }, /* 5304 */ - { 6, 0, printargs, "n64_process_vm_writev" }, /* 5305 */ -#endif - { 0, 0, NULL, NULL }, /* 5306 */ - { 0, 0, NULL, NULL }, /* 5307 */ - { 0, 0, NULL, NULL }, /* 5308 */ - { 0, 0, NULL, NULL }, /* 5309 */ - { 0, 0, NULL, NULL }, /* 5310 */ - { 0, 0, NULL, NULL }, /* 5311 */ - { 0, 0, NULL, NULL }, /* 5312 */ - { 0, 0, NULL, NULL }, /* 5313 */ - { 0, 0, NULL, NULL }, /* 5314 */ - { 0, 0, NULL, NULL }, /* 5315 */ - { 0, 0, NULL, NULL }, /* 5316 */ - { 0, 0, NULL, NULL }, /* 5317 */ - { 0, 0, NULL, NULL }, /* 5318 */ - { 0, 0, NULL, NULL }, /* 5319 */ - { 0, 0, NULL, NULL }, /* 5320 */ - { 0, 0, NULL, NULL }, /* 5321 */ - { 0, 0, NULL, NULL }, /* 5322 */ - { 0, 0, NULL, NULL }, /* 5323 */ - { 0, 0, NULL, NULL }, /* 5324 */ - { 0, 0, NULL, NULL }, /* 5325 */ - { 0, 0, NULL, NULL }, /* 5326 */ - { 0, 0, NULL, NULL }, /* 5327 */ - { 0, 0, NULL, NULL }, /* 5328 */ - { 0, 0, NULL, NULL }, /* 5329 */ - { 0, 0, NULL, NULL }, /* 5330 */ - { 0, 0, NULL, NULL }, /* 5331 */ - { 0, 0, NULL, NULL }, /* 5332 */ - { 0, 0, NULL, NULL }, /* 5333 */ - { 0, 0, NULL, NULL }, /* 5334 */ - { 0, 0, NULL, NULL }, /* 5335 */ - { 0, 0, NULL, NULL }, /* 5336 */ - { 0, 0, NULL, NULL }, /* 5337 */ - { 0, 0, NULL, NULL }, /* 5338 */ - { 0, 0, NULL, NULL }, /* 5339 */ - { 0, 0, NULL, NULL }, /* 5340 */ - { 0, 0, NULL, NULL }, /* 5341 */ - { 0, 0, NULL, NULL }, /* 5342 */ - { 0, 0, NULL, NULL }, /* 5343 */ - { 0, 0, NULL, NULL }, /* 5344 */ - { 0, 0, NULL, NULL }, /* 5345 */ - { 0, 0, NULL, NULL }, /* 5346 */ - { 0, 0, NULL, NULL }, /* 5347 */ - { 0, 0, NULL, NULL }, /* 5348 */ - { 0, 0, NULL, NULL }, /* 5349 */ - { 0, 0, NULL, NULL }, /* 5350 */ - { 0, 0, NULL, NULL }, /* 5351 */ - { 0, 0, NULL, NULL }, /* 5352 */ - { 0, 0, NULL, NULL }, /* 5353 */ - { 0, 0, NULL, NULL }, /* 5354 */ - { 0, 0, NULL, NULL }, /* 5355 */ - { 0, 0, NULL, NULL }, /* 5356 */ - { 0, 0, NULL, NULL }, /* 5357 */ - { 0, 0, NULL, NULL }, /* 5358 */ - { 0, 0, NULL, NULL }, /* 5359 */ - { 0, 0, NULL, NULL }, /* 5360 */ - { 0, 0, NULL, NULL }, /* 5361 */ - { 0, 0, NULL, NULL }, /* 5362 */ - { 0, 0, NULL, NULL }, /* 5363 */ - { 0, 0, NULL, NULL }, /* 5364 */ - { 0, 0, NULL, NULL }, /* 5365 */ - { 0, 0, NULL, NULL }, /* 5366 */ - { 0, 0, NULL, NULL }, /* 5367 */ - { 0, 0, NULL, NULL }, /* 5368 */ - { 0, 0, NULL, NULL }, /* 5369 */ - { 0, 0, NULL, NULL }, /* 5370 */ - { 0, 0, NULL, NULL }, /* 5371 */ - { 0, 0, NULL, NULL }, /* 5372 */ - { 0, 0, NULL, NULL }, /* 5373 */ - { 0, 0, NULL, NULL }, /* 5374 */ - { 0, 0, NULL, NULL }, /* 5375 */ - { 0, 0, NULL, NULL }, /* 5376 */ - { 0, 0, NULL, NULL }, /* 5377 */ - { 0, 0, NULL, NULL }, /* 5378 */ - { 0, 0, NULL, NULL }, /* 5379 */ - { 0, 0, NULL, NULL }, /* 5380 */ - { 0, 0, NULL, NULL }, /* 5381 */ - { 0, 0, NULL, NULL }, /* 5382 */ - { 0, 0, NULL, NULL }, /* 5383 */ - { 0, 0, NULL, NULL }, /* 5384 */ - { 0, 0, NULL, NULL }, /* 5385 */ - { 0, 0, NULL, NULL }, /* 5386 */ - { 0, 0, NULL, NULL }, /* 5387 */ - { 0, 0, NULL, NULL }, /* 5388 */ - { 0, 0, NULL, NULL }, /* 5389 */ - { 0, 0, NULL, NULL }, /* 5390 */ - { 0, 0, NULL, NULL }, /* 5391 */ - { 0, 0, NULL, NULL }, /* 5392 */ - { 0, 0, NULL, NULL }, /* 5393 */ - { 0, 0, NULL, NULL }, /* 5394 */ - { 0, 0, NULL, NULL }, /* 5395 */ - { 0, 0, NULL, NULL }, /* 5396 */ - { 0, 0, NULL, NULL }, /* 5397 */ - { 0, 0, NULL, NULL }, /* 5398 */ - { 0, 0, NULL, NULL }, /* 5399 */ - { 0, 0, NULL, NULL }, /* 5400 */ - { 0, 0, NULL, NULL }, /* 5401 */ - { 0, 0, NULL, NULL }, /* 5402 */ - { 0, 0, NULL, NULL }, /* 5403 */ - { 0, 0, NULL, NULL }, /* 5404 */ - { 0, 0, NULL, NULL }, /* 5405 */ - { 0, 0, NULL, NULL }, /* 5406 */ - { 0, 0, NULL, NULL }, /* 5407 */ - { 0, 0, NULL, NULL }, /* 5408 */ - { 0, 0, NULL, NULL }, /* 5409 */ - { 0, 0, NULL, NULL }, /* 5410 */ - { 0, 0, NULL, NULL }, /* 5411 */ - { 0, 0, NULL, NULL }, /* 5412 */ - { 0, 0, NULL, NULL }, /* 5413 */ - { 0, 0, NULL, NULL }, /* 5414 */ - { 0, 0, NULL, NULL }, /* 5415 */ - { 0, 0, NULL, NULL }, /* 5416 */ - { 0, 0, NULL, NULL }, /* 5417 */ - { 0, 0, NULL, NULL }, /* 5418 */ - { 0, 0, NULL, NULL }, /* 5419 */ - { 0, 0, NULL, NULL }, /* 5420 */ - { 0, 0, NULL, NULL }, /* 5421 */ - { 0, 0, NULL, NULL }, /* 5422 */ - { 0, 0, NULL, NULL }, /* 5423 */ - { 0, 0, NULL, NULL }, /* 5424 */ - { 0, 0, NULL, NULL }, /* 5425 */ - { 0, 0, NULL, NULL }, /* 5426 */ - { 0, 0, NULL, NULL }, /* 5427 */ - { 0, 0, NULL, NULL }, /* 5428 */ - { 0, 0, NULL, NULL }, /* 5429 */ - { 0, 0, NULL, NULL }, /* 5430 */ - { 0, 0, NULL, NULL }, /* 5431 */ - { 0, 0, NULL, NULL }, /* 5432 */ - { 0, 0, NULL, NULL }, /* 5433 */ - { 0, 0, NULL, NULL }, /* 5434 */ - { 0, 0, NULL, NULL }, /* 5435 */ - { 0, 0, NULL, NULL }, /* 5436 */ - { 0, 0, NULL, NULL }, /* 5437 */ - { 0, 0, NULL, NULL }, /* 5438 */ - { 0, 0, NULL, NULL }, /* 5439 */ - { 0, 0, NULL, NULL }, /* 5440 */ - { 0, 0, NULL, NULL }, /* 5441 */ - { 0, 0, NULL, NULL }, /* 5442 */ - { 0, 0, NULL, NULL }, /* 5443 */ - { 0, 0, NULL, NULL }, /* 5444 */ - { 0, 0, NULL, NULL }, /* 5445 */ - { 0, 0, NULL, NULL }, /* 5446 */ - { 0, 0, NULL, NULL }, /* 5447 */ - { 0, 0, NULL, NULL }, /* 5448 */ - { 0, 0, NULL, NULL }, /* 5449 */ - { 0, 0, NULL, NULL }, /* 5450 */ - { 0, 0, NULL, NULL }, /* 5451 */ - { 0, 0, NULL, NULL }, /* 5452 */ - { 0, 0, NULL, NULL }, /* 5453 */ - { 0, 0, NULL, NULL }, /* 5454 */ - { 0, 0, NULL, NULL }, /* 5455 */ - { 0, 0, NULL, NULL }, /* 5456 */ - { 0, 0, NULL, NULL }, /* 5457 */ - { 0, 0, NULL, NULL }, /* 5458 */ - { 0, 0, NULL, NULL }, /* 5459 */ - { 0, 0, NULL, NULL }, /* 5460 */ - { 0, 0, NULL, NULL }, /* 5461 */ - { 0, 0, NULL, NULL }, /* 5462 */ - { 0, 0, NULL, NULL }, /* 5463 */ - { 0, 0, NULL, NULL }, /* 5464 */ - { 0, 0, NULL, NULL }, /* 5465 */ - { 0, 0, NULL, NULL }, /* 5466 */ - { 0, 0, NULL, NULL }, /* 5467 */ - { 0, 0, NULL, NULL }, /* 5468 */ - { 0, 0, NULL, NULL }, /* 5469 */ - { 0, 0, NULL, NULL }, /* 5470 */ - { 0, 0, NULL, NULL }, /* 5471 */ - { 0, 0, NULL, NULL }, /* 5472 */ - { 0, 0, NULL, NULL }, /* 5473 */ - { 0, 0, NULL, NULL }, /* 5474 */ - { 0, 0, NULL, NULL }, /* 5475 */ - { 0, 0, NULL, NULL }, /* 5476 */ - { 0, 0, NULL, NULL }, /* 5477 */ - { 0, 0, NULL, NULL }, /* 5478 */ - { 0, 0, NULL, NULL }, /* 5479 */ - { 0, 0, NULL, NULL }, /* 5480 */ - { 0, 0, NULL, NULL }, /* 5481 */ - { 0, 0, NULL, NULL }, /* 5482 */ - { 0, 0, NULL, NULL }, /* 5483 */ - { 0, 0, NULL, NULL }, /* 5484 */ - { 0, 0, NULL, NULL }, /* 5485 */ - { 0, 0, NULL, NULL }, /* 5486 */ - { 0, 0, NULL, NULL }, /* 5487 */ - { 0, 0, NULL, NULL }, /* 5488 */ - { 0, 0, NULL, NULL }, /* 5489 */ - { 0, 0, NULL, NULL }, /* 5490 */ - { 0, 0, NULL, NULL }, /* 5491 */ - { 0, 0, NULL, NULL }, /* 5492 */ - { 0, 0, NULL, NULL }, /* 5493 */ - { 0, 0, NULL, NULL }, /* 5494 */ - { 0, 0, NULL, NULL }, /* 5495 */ - { 0, 0, NULL, NULL }, /* 5496 */ - { 0, 0, NULL, NULL }, /* 5497 */ - { 0, 0, NULL, NULL }, /* 5498 */ - { 0, 0, NULL, NULL }, /* 5499 */ - { 0, 0, NULL, NULL }, /* 5500 */ - { 0, 0, NULL, NULL }, /* 5501 */ - { 0, 0, NULL, NULL }, /* 5502 */ - { 0, 0, NULL, NULL }, /* 5503 */ - { 0, 0, NULL, NULL }, /* 5504 */ - { 0, 0, NULL, NULL }, /* 5505 */ - { 0, 0, NULL, NULL }, /* 5506 */ - { 0, 0, NULL, NULL }, /* 5507 */ - { 0, 0, NULL, NULL }, /* 5508 */ - { 0, 0, NULL, NULL }, /* 5509 */ - { 0, 0, NULL, NULL }, /* 5510 */ - { 0, 0, NULL, NULL }, /* 5511 */ - { 0, 0, NULL, NULL }, /* 5512 */ - { 0, 0, NULL, NULL }, /* 5513 */ - { 0, 0, NULL, NULL }, /* 5514 */ - { 0, 0, NULL, NULL }, /* 5515 */ - { 0, 0, NULL, NULL }, /* 5516 */ - { 0, 0, NULL, NULL }, /* 5517 */ - { 0, 0, NULL, NULL }, /* 5518 */ - { 0, 0, NULL, NULL }, /* 5519 */ - { 0, 0, NULL, NULL }, /* 5520 */ - { 0, 0, NULL, NULL }, /* 5521 */ - { 0, 0, NULL, NULL }, /* 5522 */ - { 0, 0, NULL, NULL }, /* 5523 */ - { 0, 0, NULL, NULL }, /* 5524 */ - { 0, 0, NULL, NULL }, /* 5525 */ - { 0, 0, NULL, NULL }, /* 5526 */ - { 0, 0, NULL, NULL }, /* 5527 */ - { 0, 0, NULL, NULL }, /* 5528 */ - { 0, 0, NULL, NULL }, /* 5529 */ - { 0, 0, NULL, NULL }, /* 5530 */ - { 0, 0, NULL, NULL }, /* 5531 */ - { 0, 0, NULL, NULL }, /* 5532 */ - { 0, 0, NULL, NULL }, /* 5533 */ - { 0, 0, NULL, NULL }, /* 5534 */ - { 0, 0, NULL, NULL }, /* 5535 */ - { 0, 0, NULL, NULL }, /* 5536 */ - { 0, 0, NULL, NULL }, /* 5537 */ - { 0, 0, NULL, NULL }, /* 5538 */ - { 0, 0, NULL, NULL }, /* 5539 */ - { 0, 0, NULL, NULL }, /* 5540 */ - { 0, 0, NULL, NULL }, /* 5541 */ - { 0, 0, NULL, NULL }, /* 5542 */ - { 0, 0, NULL, NULL }, /* 5543 */ - { 0, 0, NULL, NULL }, /* 5544 */ - { 0, 0, NULL, NULL }, /* 5545 */ - { 0, 0, NULL, NULL }, /* 5546 */ - { 0, 0, NULL, NULL }, /* 5547 */ - { 0, 0, NULL, NULL }, /* 5548 */ - { 0, 0, NULL, NULL }, /* 5549 */ - { 0, 0, NULL, NULL }, /* 5550 */ - { 0, 0, NULL, NULL }, /* 5551 */ - { 0, 0, NULL, NULL }, /* 5552 */ - { 0, 0, NULL, NULL }, /* 5553 */ - { 0, 0, NULL, NULL }, /* 5554 */ - { 0, 0, NULL, NULL }, /* 5555 */ - { 0, 0, NULL, NULL }, /* 5556 */ - { 0, 0, NULL, NULL }, /* 5557 */ - { 0, 0, NULL, NULL }, /* 5558 */ - { 0, 0, NULL, NULL }, /* 5559 */ - { 0, 0, NULL, NULL }, /* 5560 */ - { 0, 0, NULL, NULL }, /* 5561 */ - { 0, 0, NULL, NULL }, /* 5562 */ - { 0, 0, NULL, NULL }, /* 5563 */ - { 0, 0, NULL, NULL }, /* 5564 */ - { 0, 0, NULL, NULL }, /* 5565 */ - { 0, 0, NULL, NULL }, /* 5566 */ - { 0, 0, NULL, NULL }, /* 5567 */ - { 0, 0, NULL, NULL }, /* 5568 */ - { 0, 0, NULL, NULL }, /* 5569 */ - { 0, 0, NULL, NULL }, /* 5570 */ - { 0, 0, NULL, NULL }, /* 5571 */ - { 0, 0, NULL, NULL }, /* 5572 */ - { 0, 0, NULL, NULL }, /* 5573 */ - { 0, 0, NULL, NULL }, /* 5574 */ - { 0, 0, NULL, NULL }, /* 5575 */ - { 0, 0, NULL, NULL }, /* 5576 */ - { 0, 0, NULL, NULL }, /* 5577 */ - { 0, 0, NULL, NULL }, /* 5578 */ - { 0, 0, NULL, NULL }, /* 5579 */ - { 0, 0, NULL, NULL }, /* 5580 */ - { 0, 0, NULL, NULL }, /* 5581 */ - { 0, 0, NULL, NULL }, /* 5582 */ - { 0, 0, NULL, NULL }, /* 5583 */ - { 0, 0, NULL, NULL }, /* 5584 */ - { 0, 0, NULL, NULL }, /* 5585 */ - { 0, 0, NULL, NULL }, /* 5586 */ - { 0, 0, NULL, NULL }, /* 5587 */ - { 0, 0, NULL, NULL }, /* 5588 */ - { 0, 0, NULL, NULL }, /* 5589 */ - { 0, 0, NULL, NULL }, /* 5590 */ - { 0, 0, NULL, NULL }, /* 5591 */ - { 0, 0, NULL, NULL }, /* 5592 */ - { 0, 0, NULL, NULL }, /* 5593 */ - { 0, 0, NULL, NULL }, /* 5594 */ - { 0, 0, NULL, NULL }, /* 5595 */ - { 0, 0, NULL, NULL }, /* 5596 */ - { 0, 0, NULL, NULL }, /* 5597 */ - { 0, 0, NULL, NULL }, /* 5598 */ - { 0, 0, NULL, NULL }, /* 5599 */ - { 0, 0, NULL, NULL }, /* 5600 */ - { 0, 0, NULL, NULL }, /* 5601 */ - { 0, 0, NULL, NULL }, /* 5602 */ - { 0, 0, NULL, NULL }, /* 5603 */ - { 0, 0, NULL, NULL }, /* 5604 */ - { 0, 0, NULL, NULL }, /* 5605 */ - { 0, 0, NULL, NULL }, /* 5606 */ - { 0, 0, NULL, NULL }, /* 5607 */ - { 0, 0, NULL, NULL }, /* 5608 */ - { 0, 0, NULL, NULL }, /* 5609 */ - { 0, 0, NULL, NULL }, /* 5610 */ - { 0, 0, NULL, NULL }, /* 5611 */ - { 0, 0, NULL, NULL }, /* 5612 */ - { 0, 0, NULL, NULL }, /* 5613 */ - { 0, 0, NULL, NULL }, /* 5614 */ - { 0, 0, NULL, NULL }, /* 5615 */ - { 0, 0, NULL, NULL }, /* 5616 */ - { 0, 0, NULL, NULL }, /* 5617 */ - { 0, 0, NULL, NULL }, /* 5618 */ - { 0, 0, NULL, NULL }, /* 5619 */ - { 0, 0, NULL, NULL }, /* 5620 */ - { 0, 0, NULL, NULL }, /* 5621 */ - { 0, 0, NULL, NULL }, /* 5622 */ - { 0, 0, NULL, NULL }, /* 5623 */ - { 0, 0, NULL, NULL }, /* 5624 */ - { 0, 0, NULL, NULL }, /* 5625 */ - { 0, 0, NULL, NULL }, /* 5626 */ - { 0, 0, NULL, NULL }, /* 5627 */ - { 0, 0, NULL, NULL }, /* 5628 */ - { 0, 0, NULL, NULL }, /* 5629 */ - { 0, 0, NULL, NULL }, /* 5630 */ - { 0, 0, NULL, NULL }, /* 5631 */ - { 0, 0, NULL, NULL }, /* 5632 */ - { 0, 0, NULL, NULL }, /* 5633 */ - { 0, 0, NULL, NULL }, /* 5634 */ - { 0, 0, NULL, NULL }, /* 5635 */ - { 0, 0, NULL, NULL }, /* 5636 */ - { 0, 0, NULL, NULL }, /* 5637 */ - { 0, 0, NULL, NULL }, /* 5638 */ - { 0, 0, NULL, NULL }, /* 5639 */ - { 0, 0, NULL, NULL }, /* 5640 */ - { 0, 0, NULL, NULL }, /* 5641 */ - { 0, 0, NULL, NULL }, /* 5642 */ - { 0, 0, NULL, NULL }, /* 5643 */ - { 0, 0, NULL, NULL }, /* 5644 */ - { 0, 0, NULL, NULL }, /* 5645 */ - { 0, 0, NULL, NULL }, /* 5646 */ - { 0, 0, NULL, NULL }, /* 5647 */ - { 0, 0, NULL, NULL }, /* 5648 */ - { 0, 0, NULL, NULL }, /* 5649 */ - { 0, 0, NULL, NULL }, /* 5650 */ - { 0, 0, NULL, NULL }, /* 5651 */ - { 0, 0, NULL, NULL }, /* 5652 */ - { 0, 0, NULL, NULL }, /* 5653 */ - { 0, 0, NULL, NULL }, /* 5654 */ - { 0, 0, NULL, NULL }, /* 5655 */ - { 0, 0, NULL, NULL }, /* 5656 */ - { 0, 0, NULL, NULL }, /* 5657 */ - { 0, 0, NULL, NULL }, /* 5658 */ - { 0, 0, NULL, NULL }, /* 5659 */ - { 0, 0, NULL, NULL }, /* 5660 */ - { 0, 0, NULL, NULL }, /* 5661 */ - { 0, 0, NULL, NULL }, /* 5662 */ - { 0, 0, NULL, NULL }, /* 5663 */ - { 0, 0, NULL, NULL }, /* 5664 */ - { 0, 0, NULL, NULL }, /* 5665 */ - { 0, 0, NULL, NULL }, /* 5666 */ - { 0, 0, NULL, NULL }, /* 5667 */ - { 0, 0, NULL, NULL }, /* 5668 */ - { 0, 0, NULL, NULL }, /* 5669 */ - { 0, 0, NULL, NULL }, /* 5670 */ - { 0, 0, NULL, NULL }, /* 5671 */ - { 0, 0, NULL, NULL }, /* 5672 */ - { 0, 0, NULL, NULL }, /* 5673 */ - { 0, 0, NULL, NULL }, /* 5674 */ - { 0, 0, NULL, NULL }, /* 5675 */ - { 0, 0, NULL, NULL }, /* 5676 */ - { 0, 0, NULL, NULL }, /* 5677 */ - { 0, 0, NULL, NULL }, /* 5678 */ - { 0, 0, NULL, NULL }, /* 5679 */ - { 0, 0, NULL, NULL }, /* 5680 */ - { 0, 0, NULL, NULL }, /* 5681 */ - { 0, 0, NULL, NULL }, /* 5682 */ - { 0, 0, NULL, NULL }, /* 5683 */ - { 0, 0, NULL, NULL }, /* 5684 */ - { 0, 0, NULL, NULL }, /* 5685 */ - { 0, 0, NULL, NULL }, /* 5686 */ - { 0, 0, NULL, NULL }, /* 5687 */ - { 0, 0, NULL, NULL }, /* 5688 */ - { 0, 0, NULL, NULL }, /* 5689 */ - { 0, 0, NULL, NULL }, /* 5690 */ - { 0, 0, NULL, NULL }, /* 5691 */ - { 0, 0, NULL, NULL }, /* 5692 */ - { 0, 0, NULL, NULL }, /* 5693 */ - { 0, 0, NULL, NULL }, /* 5694 */ - { 0, 0, NULL, NULL }, /* 5695 */ - { 0, 0, NULL, NULL }, /* 5696 */ - { 0, 0, NULL, NULL }, /* 5697 */ - { 0, 0, NULL, NULL }, /* 5698 */ - { 0, 0, NULL, NULL }, /* 5699 */ - { 0, 0, NULL, NULL }, /* 5700 */ - { 0, 0, NULL, NULL }, /* 5701 */ - { 0, 0, NULL, NULL }, /* 5702 */ - { 0, 0, NULL, NULL }, /* 5703 */ - { 0, 0, NULL, NULL }, /* 5704 */ - { 0, 0, NULL, NULL }, /* 5705 */ - { 0, 0, NULL, NULL }, /* 5706 */ - { 0, 0, NULL, NULL }, /* 5707 */ - { 0, 0, NULL, NULL }, /* 5708 */ - { 0, 0, NULL, NULL }, /* 5709 */ - { 0, 0, NULL, NULL }, /* 5710 */ - { 0, 0, NULL, NULL }, /* 5711 */ - { 0, 0, NULL, NULL }, /* 5712 */ - { 0, 0, NULL, NULL }, /* 5713 */ - { 0, 0, NULL, NULL }, /* 5714 */ - { 0, 0, NULL, NULL }, /* 5715 */ - { 0, 0, NULL, NULL }, /* 5716 */ - { 0, 0, NULL, NULL }, /* 5717 */ - { 0, 0, NULL, NULL }, /* 5718 */ - { 0, 0, NULL, NULL }, /* 5719 */ - { 0, 0, NULL, NULL }, /* 5720 */ - { 0, 0, NULL, NULL }, /* 5721 */ - { 0, 0, NULL, NULL }, /* 5722 */ - { 0, 0, NULL, NULL }, /* 5723 */ - { 0, 0, NULL, NULL }, /* 5724 */ - { 0, 0, NULL, NULL }, /* 5725 */ - { 0, 0, NULL, NULL }, /* 5726 */ - { 0, 0, NULL, NULL }, /* 5727 */ - { 0, 0, NULL, NULL }, /* 5728 */ - { 0, 0, NULL, NULL }, /* 5729 */ - { 0, 0, NULL, NULL }, /* 5730 */ - { 0, 0, NULL, NULL }, /* 5731 */ - { 0, 0, NULL, NULL }, /* 5732 */ - { 0, 0, NULL, NULL }, /* 5733 */ - { 0, 0, NULL, NULL }, /* 5734 */ - { 0, 0, NULL, NULL }, /* 5735 */ - { 0, 0, NULL, NULL }, /* 5736 */ - { 0, 0, NULL, NULL }, /* 5737 */ - { 0, 0, NULL, NULL }, /* 5738 */ - { 0, 0, NULL, NULL }, /* 5739 */ - { 0, 0, NULL, NULL }, /* 5740 */ - { 0, 0, NULL, NULL }, /* 5741 */ - { 0, 0, NULL, NULL }, /* 5742 */ - { 0, 0, NULL, NULL }, /* 5743 */ - { 0, 0, NULL, NULL }, /* 5744 */ - { 0, 0, NULL, NULL }, /* 5745 */ - { 0, 0, NULL, NULL }, /* 5746 */ - { 0, 0, NULL, NULL }, /* 5747 */ - { 0, 0, NULL, NULL }, /* 5748 */ - { 0, 0, NULL, NULL }, /* 5749 */ - { 0, 0, NULL, NULL }, /* 5750 */ - { 0, 0, NULL, NULL }, /* 5751 */ - { 0, 0, NULL, NULL }, /* 5752 */ - { 0, 0, NULL, NULL }, /* 5753 */ - { 0, 0, NULL, NULL }, /* 5754 */ - { 0, 0, NULL, NULL }, /* 5755 */ - { 0, 0, NULL, NULL }, /* 5756 */ - { 0, 0, NULL, NULL }, /* 5757 */ - { 0, 0, NULL, NULL }, /* 5758 */ - { 0, 0, NULL, NULL }, /* 5759 */ - { 0, 0, NULL, NULL }, /* 5760 */ - { 0, 0, NULL, NULL }, /* 5761 */ - { 0, 0, NULL, NULL }, /* 5762 */ - { 0, 0, NULL, NULL }, /* 5763 */ - { 0, 0, NULL, NULL }, /* 5764 */ - { 0, 0, NULL, NULL }, /* 5765 */ - { 0, 0, NULL, NULL }, /* 5766 */ - { 0, 0, NULL, NULL }, /* 5767 */ - { 0, 0, NULL, NULL }, /* 5768 */ - { 0, 0, NULL, NULL }, /* 5769 */ - { 0, 0, NULL, NULL }, /* 5770 */ - { 0, 0, NULL, NULL }, /* 5771 */ - { 0, 0, NULL, NULL }, /* 5772 */ - { 0, 0, NULL, NULL }, /* 5773 */ - { 0, 0, NULL, NULL }, /* 5774 */ - { 0, 0, NULL, NULL }, /* 5775 */ - { 0, 0, NULL, NULL }, /* 5776 */ - { 0, 0, NULL, NULL }, /* 5777 */ - { 0, 0, NULL, NULL }, /* 5778 */ - { 0, 0, NULL, NULL }, /* 5779 */ - { 0, 0, NULL, NULL }, /* 5780 */ - { 0, 0, NULL, NULL }, /* 5781 */ - { 0, 0, NULL, NULL }, /* 5782 */ - { 0, 0, NULL, NULL }, /* 5783 */ - { 0, 0, NULL, NULL }, /* 5784 */ - { 0, 0, NULL, NULL }, /* 5785 */ - { 0, 0, NULL, NULL }, /* 5786 */ - { 0, 0, NULL, NULL }, /* 5787 */ - { 0, 0, NULL, NULL }, /* 5788 */ - { 0, 0, NULL, NULL }, /* 5789 */ - { 0, 0, NULL, NULL }, /* 5790 */ - { 0, 0, NULL, NULL }, /* 5791 */ - { 0, 0, NULL, NULL }, /* 5792 */ - { 0, 0, NULL, NULL }, /* 5793 */ - { 0, 0, NULL, NULL }, /* 5794 */ - { 0, 0, NULL, NULL }, /* 5795 */ - { 0, 0, NULL, NULL }, /* 5796 */ - { 0, 0, NULL, NULL }, /* 5797 */ - { 0, 0, NULL, NULL }, /* 5798 */ - { 0, 0, NULL, NULL }, /* 5799 */ - { 0, 0, NULL, NULL }, /* 5800 */ - { 0, 0, NULL, NULL }, /* 5801 */ - { 0, 0, NULL, NULL }, /* 5802 */ - { 0, 0, NULL, NULL }, /* 5803 */ - { 0, 0, NULL, NULL }, /* 5804 */ - { 0, 0, NULL, NULL }, /* 5805 */ - { 0, 0, NULL, NULL }, /* 5806 */ - { 0, 0, NULL, NULL }, /* 5807 */ - { 0, 0, NULL, NULL }, /* 5808 */ - { 0, 0, NULL, NULL }, /* 5809 */ - { 0, 0, NULL, NULL }, /* 5810 */ - { 0, 0, NULL, NULL }, /* 5811 */ - { 0, 0, NULL, NULL }, /* 5812 */ - { 0, 0, NULL, NULL }, /* 5813 */ - { 0, 0, NULL, NULL }, /* 5814 */ - { 0, 0, NULL, NULL }, /* 5815 */ - { 0, 0, NULL, NULL }, /* 5816 */ - { 0, 0, NULL, NULL }, /* 5817 */ - { 0, 0, NULL, NULL }, /* 5818 */ - { 0, 0, NULL, NULL }, /* 5819 */ - { 0, 0, NULL, NULL }, /* 5820 */ - { 0, 0, NULL, NULL }, /* 5821 */ - { 0, 0, NULL, NULL }, /* 5822 */ - { 0, 0, NULL, NULL }, /* 5823 */ - { 0, 0, NULL, NULL }, /* 5824 */ - { 0, 0, NULL, NULL }, /* 5825 */ - { 0, 0, NULL, NULL }, /* 5826 */ - { 0, 0, NULL, NULL }, /* 5827 */ - { 0, 0, NULL, NULL }, /* 5828 */ - { 0, 0, NULL, NULL }, /* 5829 */ - { 0, 0, NULL, NULL }, /* 5830 */ - { 0, 0, NULL, NULL }, /* 5831 */ - { 0, 0, NULL, NULL }, /* 5832 */ - { 0, 0, NULL, NULL }, /* 5833 */ - { 0, 0, NULL, NULL }, /* 5834 */ - { 0, 0, NULL, NULL }, /* 5835 */ - { 0, 0, NULL, NULL }, /* 5836 */ - { 0, 0, NULL, NULL }, /* 5837 */ - { 0, 0, NULL, NULL }, /* 5838 */ - { 0, 0, NULL, NULL }, /* 5839 */ - { 0, 0, NULL, NULL }, /* 5840 */ - { 0, 0, NULL, NULL }, /* 5841 */ - { 0, 0, NULL, NULL }, /* 5842 */ - { 0, 0, NULL, NULL }, /* 5843 */ - { 0, 0, NULL, NULL }, /* 5844 */ - { 0, 0, NULL, NULL }, /* 5845 */ - { 0, 0, NULL, NULL }, /* 5846 */ - { 0, 0, NULL, NULL }, /* 5847 */ - { 0, 0, NULL, NULL }, /* 5848 */ - { 0, 0, NULL, NULL }, /* 5849 */ - { 0, 0, NULL, NULL }, /* 5850 */ - { 0, 0, NULL, NULL }, /* 5851 */ - { 0, 0, NULL, NULL }, /* 5852 */ - { 0, 0, NULL, NULL }, /* 5853 */ - { 0, 0, NULL, NULL }, /* 5854 */ - { 0, 0, NULL, NULL }, /* 5855 */ - { 0, 0, NULL, NULL }, /* 5856 */ - { 0, 0, NULL, NULL }, /* 5857 */ - { 0, 0, NULL, NULL }, /* 5858 */ - { 0, 0, NULL, NULL }, /* 5859 */ - { 0, 0, NULL, NULL }, /* 5860 */ - { 0, 0, NULL, NULL }, /* 5861 */ - { 0, 0, NULL, NULL }, /* 5862 */ - { 0, 0, NULL, NULL }, /* 5863 */ - { 0, 0, NULL, NULL }, /* 5864 */ - { 0, 0, NULL, NULL }, /* 5865 */ - { 0, 0, NULL, NULL }, /* 5866 */ - { 0, 0, NULL, NULL }, /* 5867 */ - { 0, 0, NULL, NULL }, /* 5868 */ - { 0, 0, NULL, NULL }, /* 5869 */ - { 0, 0, NULL, NULL }, /* 5870 */ - { 0, 0, NULL, NULL }, /* 5871 */ - { 0, 0, NULL, NULL }, /* 5872 */ - { 0, 0, NULL, NULL }, /* 5873 */ - { 0, 0, NULL, NULL }, /* 5874 */ - { 0, 0, NULL, NULL }, /* 5875 */ - { 0, 0, NULL, NULL }, /* 5876 */ - { 0, 0, NULL, NULL }, /* 5877 */ - { 0, 0, NULL, NULL }, /* 5878 */ - { 0, 0, NULL, NULL }, /* 5879 */ - { 0, 0, NULL, NULL }, /* 5880 */ - { 0, 0, NULL, NULL }, /* 5881 */ - { 0, 0, NULL, NULL }, /* 5882 */ - { 0, 0, NULL, NULL }, /* 5883 */ - { 0, 0, NULL, NULL }, /* 5884 */ - { 0, 0, NULL, NULL }, /* 5885 */ - { 0, 0, NULL, NULL }, /* 5886 */ - { 0, 0, NULL, NULL }, /* 5887 */ - { 0, 0, NULL, NULL }, /* 5888 */ - { 0, 0, NULL, NULL }, /* 5889 */ - { 0, 0, NULL, NULL }, /* 5890 */ - { 0, 0, NULL, NULL }, /* 5891 */ - { 0, 0, NULL, NULL }, /* 5892 */ - { 0, 0, NULL, NULL }, /* 5893 */ - { 0, 0, NULL, NULL }, /* 5894 */ - { 0, 0, NULL, NULL }, /* 5895 */ - { 0, 0, NULL, NULL }, /* 5896 */ - { 0, 0, NULL, NULL }, /* 5897 */ - { 0, 0, NULL, NULL }, /* 5898 */ - { 0, 0, NULL, NULL }, /* 5899 */ - { 0, 0, NULL, NULL }, /* 5900 */ - { 0, 0, NULL, NULL }, /* 5901 */ - { 0, 0, NULL, NULL }, /* 5902 */ - { 0, 0, NULL, NULL }, /* 5903 */ - { 0, 0, NULL, NULL }, /* 5904 */ - { 0, 0, NULL, NULL }, /* 5905 */ - { 0, 0, NULL, NULL }, /* 5906 */ - { 0, 0, NULL, NULL }, /* 5907 */ - { 0, 0, NULL, NULL }, /* 5908 */ - { 0, 0, NULL, NULL }, /* 5909 */ - { 0, 0, NULL, NULL }, /* 5910 */ - { 0, 0, NULL, NULL }, /* 5911 */ - { 0, 0, NULL, NULL }, /* 5912 */ - { 0, 0, NULL, NULL }, /* 5913 */ - { 0, 0, NULL, NULL }, /* 5914 */ - { 0, 0, NULL, NULL }, /* 5915 */ - { 0, 0, NULL, NULL }, /* 5916 */ - { 0, 0, NULL, NULL }, /* 5917 */ - { 0, 0, NULL, NULL }, /* 5918 */ - { 0, 0, NULL, NULL }, /* 5919 */ - { 0, 0, NULL, NULL }, /* 5920 */ - { 0, 0, NULL, NULL }, /* 5921 */ - { 0, 0, NULL, NULL }, /* 5922 */ - { 0, 0, NULL, NULL }, /* 5923 */ - { 0, 0, NULL, NULL }, /* 5924 */ - { 0, 0, NULL, NULL }, /* 5925 */ - { 0, 0, NULL, NULL }, /* 5926 */ - { 0, 0, NULL, NULL }, /* 5927 */ - { 0, 0, NULL, NULL }, /* 5928 */ - { 0, 0, NULL, NULL }, /* 5929 */ - { 0, 0, NULL, NULL }, /* 5930 */ - { 0, 0, NULL, NULL }, /* 5931 */ - { 0, 0, NULL, NULL }, /* 5932 */ - { 0, 0, NULL, NULL }, /* 5933 */ - { 0, 0, NULL, NULL }, /* 5934 */ - { 0, 0, NULL, NULL }, /* 5935 */ - { 0, 0, NULL, NULL }, /* 5936 */ - { 0, 0, NULL, NULL }, /* 5937 */ - { 0, 0, NULL, NULL }, /* 5938 */ - { 0, 0, NULL, NULL }, /* 5939 */ - { 0, 0, NULL, NULL }, /* 5940 */ - { 0, 0, NULL, NULL }, /* 5941 */ - { 0, 0, NULL, NULL }, /* 5942 */ - { 0, 0, NULL, NULL }, /* 5943 */ - { 0, 0, NULL, NULL }, /* 5944 */ - { 0, 0, NULL, NULL }, /* 5945 */ - { 0, 0, NULL, NULL }, /* 5946 */ - { 0, 0, NULL, NULL }, /* 5947 */ - { 0, 0, NULL, NULL }, /* 5948 */ - { 0, 0, NULL, NULL }, /* 5949 */ - { 0, 0, NULL, NULL }, /* 5950 */ - { 0, 0, NULL, NULL }, /* 5951 */ - { 0, 0, NULL, NULL }, /* 5952 */ - { 0, 0, NULL, NULL }, /* 5953 */ - { 0, 0, NULL, NULL }, /* 5954 */ - { 0, 0, NULL, NULL }, /* 5955 */ - { 0, 0, NULL, NULL }, /* 5956 */ - { 0, 0, NULL, NULL }, /* 5957 */ - { 0, 0, NULL, NULL }, /* 5958 */ - { 0, 0, NULL, NULL }, /* 5959 */ - { 0, 0, NULL, NULL }, /* 5960 */ - { 0, 0, NULL, NULL }, /* 5961 */ - { 0, 0, NULL, NULL }, /* 5962 */ - { 0, 0, NULL, NULL }, /* 5963 */ - { 0, 0, NULL, NULL }, /* 5964 */ - { 0, 0, NULL, NULL }, /* 5965 */ - { 0, 0, NULL, NULL }, /* 5966 */ - { 0, 0, NULL, NULL }, /* 5967 */ - { 0, 0, NULL, NULL }, /* 5968 */ - { 0, 0, NULL, NULL }, /* 5969 */ - { 0, 0, NULL, NULL }, /* 5970 */ - { 0, 0, NULL, NULL }, /* 5971 */ - { 0, 0, NULL, NULL }, /* 5972 */ - { 0, 0, NULL, NULL }, /* 5973 */ - { 0, 0, NULL, NULL }, /* 5974 */ - { 0, 0, NULL, NULL }, /* 5975 */ - { 0, 0, NULL, NULL }, /* 5976 */ - { 0, 0, NULL, NULL }, /* 5977 */ - { 0, 0, NULL, NULL }, /* 5978 */ - { 0, 0, NULL, NULL }, /* 5979 */ - { 0, 0, NULL, NULL }, /* 5980 */ - { 0, 0, NULL, NULL }, /* 5981 */ - { 0, 0, NULL, NULL }, /* 5982 */ - { 0, 0, NULL, NULL }, /* 5983 */ - { 0, 0, NULL, NULL }, /* 5984 */ - { 0, 0, NULL, NULL }, /* 5985 */ - { 0, 0, NULL, NULL }, /* 5986 */ - { 0, 0, NULL, NULL }, /* 5987 */ - { 0, 0, NULL, NULL }, /* 5988 */ - { 0, 0, NULL, NULL }, /* 5989 */ - { 0, 0, NULL, NULL }, /* 5990 */ - { 0, 0, NULL, NULL }, /* 5991 */ - { 0, 0, NULL, NULL }, /* 5992 */ - { 0, 0, NULL, NULL }, /* 5993 */ - { 0, 0, NULL, NULL }, /* 5994 */ - { 0, 0, NULL, NULL }, /* 5995 */ - { 0, 0, NULL, NULL }, /* 5996 */ - { 0, 0, NULL, NULL }, /* 5997 */ - { 0, 0, NULL, NULL }, /* 5998 */ - { 0, 0, NULL, NULL }, /* 5999 */ /* end of Linux N64 */ - -#if defined(LINUX_MIPSN32) - /* For an N32 strace decode the N32 64-bit syscalls. */ - { 3, TF, sys_read, "read" }, /* 6000 */ /* start of Linux N32 */ - { 3, TF, sys_write, "write" }, /* 6001 */ - { 3, TF, sys_open, "open" }, /* 6002 */ - { 1, 0, sys_close, "close" }, /* 6003 */ - { 2, TF, sys_stat64, "stat" }, /* 6004 */ - { 2, 0, sys_fstat64, "fstat" }, /* 6005 */ - { 2, TF, sys_lstat64, "lstat" }, /* 6006 */ - { 3, 0, sys_poll, "poll" }, /* 6007 */ - { 3, 0, sys_lseek, "lseek" }, /* 6008 */ - { 6, TD, sys_mmap, "mmap" }, /* 6009 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 6010 */ - { 2, 0, sys_munmap, "munmap" }, /* 6011 */ - { 1, 0, sys_brk, "brk" }, /* 6012 */ - { 4, TS, sys_rt_sigaction, "rt_sigaction" }, /* 6013 */ - { 4, TS, sys_rt_sigprocmask, "rt_sigprocmask"}, /* 6014 */ - { 3, 0, sys_ioctl, "ioctl" }, /* 6015 */ - { 6, TD, sys_pread, "pread" }, /* 6016 */ - { 6, TD, sys_pwrite, "pwrite" }, /* 6017 */ - { 3, 0, sys_readv, "readv" }, /* 6018 */ - { 3, 0, sys_writev, "writev" }, /* 6019 */ - { 2, TF, sys_access, "access" }, /* 6020 */ - { 1, 0, sys_pipe, "pipe" }, /* 6021 */ - { 5, 0, sys_select, "_newselect" }, /* 6022 */ - { 0, 0, sys_sched_yield, "sched_yield" }, /* 6023 */ - { 5, 0, sys_mremap, "mremap" }, /* 6024 */ - { 3, 0, sys_msync, "msync" }, /* 6025 */ - { 3, 0, sys_mincore, "mincore" }, /* 6026 */ - { 3, 0, sys_madvise, "madvise" }, /* 6027 */ - { 3, TI, sys_shmget, "shmget" }, /* 6028 */ - { 3, TI, sys_shmat, "shmgat" }, /* 6029 */ - { 3, TI, sys_shmctl, "shmctl" }, /* 6030 */ - { 1, 0, sys_dup, "dup" }, /* 6031 */ - { 2, 0, sys_dup2, "dup2" }, /* 6032 */ - { 0, TS, sys_pause, "pause" }, /* 6033 */ - { 2, 0, sys_nanosleep, "nanosleep" }, /* 6034 */ - { 2, 0, sys_getitimer, "getitimer" }, /* 6035 */ - { 3, 0, sys_setitimer, "setitimer" }, /* 6036 */ - { 1, 0, sys_alarm, "alarm" }, /* 6037 */ - { 0, 0, sys_getpid, "getpid" }, /* 6038 */ - { 4, TD|TN, sys_sendfile, "sendfile" }, /* 6039 */ - { 2, 0, sys_socketcall, "socketcall" }, /* 6040 */ - { 3, TN, sys_connect, "connect" }, /* 6041 */ - { 3, TN, sys_accept, "accept" }, /* 6042 */ - { 6, TN, sys_sendto, "sendto" }, /* 6043 */ - { 6, TN, sys_recvfrom, "recvfrom" }, /* 6044 */ - { 3, TN, sys_sendmsg, "sendmsg" }, /* 6045 */ - { 3, TN, sys_recvmsg, "recvmsg" }, /* 6046 */ - { 2, TN, sys_shutdown, "shutdown" }, /* 6047 */ - { 3, TN, sys_bind, "bind" }, /* 6048 */ - { 2, TN, sys_listen, "listen" }, /* 6049 */ - { 3, TN, sys_getsockname, "getsockname" }, /* 6050 */ - { 3, TN, sys_getpeername, "getpeername" }, /* 6051 */ - { 4, TN, sys_socketpair, "socketpair" }, /* 6052 */ - { 5, TN, sys_setsockopt, "setsockopt" }, /* 6053 */ - { 5, TN, sys_getsockopt, "getsockopt" }, /* 6054 */ - { 2, TP, sys_clone, "clone" }, /* 6055 */ - { 0, TP, sys_fork, "fork" }, /* 6056 */ - { 3, TF|TP, sys_execve, "execve" }, /* 6057 */ - { 1, TP, sys_exit, "exit" }, /* 6058 */ - { 4, TP, sys_wait4, "wait4" }, /* 6059 */ - { 2, TS, sys_kill, "kill" }, /* 6060 */ - { 1, 0, sys_uname, "uname" }, /* 6061 */ - { 3, TI, sys_semget, "semget" }, /* 6062 */ - { 3, TI, printargs, "semop" }, /* 6063 */ - { 4, TI, sys_semctl, "semctl" }, /* 6064 */ - { 1, TI, sys_shmdt, "shmdt" }, /* 6065 */ - { 2, TI, sys_msgget, "msgget" }, /* 6066 */ - { 4, TI, sys_msgsnd, "msgsnd" }, /* 6067 */ - { 5, TI, sys_msgrcv, "msgrcv" }, /* 6068 */ - { 3, TI, sys_msgctl, "msgctl" }, /* 6069 */ - { 3, 0, sys_fcntl, "fcntl" }, /* 6070 */ - { 2, 0, sys_flock, "flock" }, /* 6071 */ - { 1, TD, sys_fsync, "fsync" }, /* 6072 */ - { 1, 0, sys_fdatasync, "fdatasync" }, /* 6073 */ - { 2, TF, sys_truncate, "truncate" }, /* 6074 */ - { 2, 0, sys_ftruncate, "ftruncate" }, /* 6075 */ - { 3, 0, sys_getdents, "getdents" }, /* 6076 */ - { 2, TF, sys_getcwd, "getcwd" }, /* 6077 */ - { 1, TF, sys_chdir, "chdir" }, /* 6078 */ - { 1, TF, sys_fchdir, "fchdir" }, /* 6079 */ - { 2, TF, sys_rename, "rename" }, /* 6080 */ - { 2, TF, sys_mkdir, "mkdir" }, /* 6081 */ - { 1, TF, sys_rmdir, "rmdir" }, /* 6082 */ - { 2, TF, sys_creat, "creat" }, /* 6083 */ - { 2, TF, sys_link, "link" }, /* 6084 */ - { 1, TF, sys_unlink, "unlink" }, /* 6085 */ - { 2, TF, sys_symlink, "symlink" }, /* 6086 */ - { 3, TF, sys_readlink, "readlink" }, /* 6087 */ - { 2, TF, sys_chmod, "chmod" }, /* 6088 */ - { 2, 0, sys_fchmod, "fchmod" }, /* 6089 */ - { 3, TF, sys_chown, "chown" }, /* 6090 */ - { 3, 0, sys_fchown, "fchown" }, /* 6091 */ - { 3, TF, sys_chown, "lchown" }, /* 6092 */ - { 1, 0, sys_umask, "umask" }, /* 6093 */ - { 2, 0, sys_gettimeofday, "gettimeofday" }, /* 6094 */ - { 2, 0, sys_getrlimit, "getrlimit" }, /* 6095 */ - { 2, 0, sys_getrusage, "getrusage" }, /* 6096 */ - { 1, 0, sys_sysinfo, "sysinfo" }, /* 6097 */ - { 1, 0, sys_times, "times" }, /* 6098 */ - { 4, 0, sys_ptrace, "ptrace" }, /* 6099 */ - { 0, NF, sys_getuid, "getuid" }, /* 6100 */ - { 3, 0, sys_syslog, "syslog" }, /* 6101 */ - { 0, NF, sys_getgid, "getgid" }, /* 6102 */ - { 1, 0, sys_setuid, "setuid" }, /* 6103 */ - { 1, 0, sys_setgid, "setgid" }, /* 6104 */ - { 0, NF, sys_geteuid, "geteuid" }, /* 6105 */ - { 0, NF, sys_getegid, "getegid" }, /* 6106 */ - { 2, 0, sys_setpgid, "setpgid" }, /* 6107 */ - { 0, 0, sys_getppid, "getppid" }, /* 6108 */ - { 0, 0, sys_getpgrp, "getpgrp" }, /* 6109 */ - { 0, 0, sys_setsid, "setsid" }, /* 6110 */ - { 2, 0, sys_setreuid, "setreuid" }, /* 6111 */ - { 2, 0, sys_setregid, "setregid" }, /* 6112 */ - { 2, 0, sys_getgroups, "getgroups" }, /* 6113 */ - { 2, 0, sys_setgroups, "setgroups" }, /* 6114 */ - { 3, 0, sys_setresuid, "setresuid" }, /* 6115 */ - { 3, 0, sys_getresuid, "getresuid" }, /* 6116 */ - { 3, 0, sys_setresgid, "setresgid" }, /* 6117 */ - { 3, 0, sys_getresgid, "getresgid" }, /* 6118 */ - { 0, 0, sys_getpgid, "getpgid" }, /* 6119 */ - { 1, NF, sys_setfsuid, "setfsuid" }, /* 6120 */ - { 1, NF, sys_setfsgid, "setfsgid" }, /* 6121 */ - { 1, 0, sys_getsid, "getsid" }, /* 6122 */ - { 2, 0, sys_capget, "capget" }, /* 6123 */ - { 2, 0, sys_capset, "capset" }, /* 6124 */ - { 2, TS, sys_rt_sigpending, "rt_sigpending" }, /* 6125 */ - { 4, TS, sys_rt_sigtimedwait, "rt_sigtimedwait"},/* 6126 */ - { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo"},/* 6127 */ - { 2, TS, sys_rt_sigsuspend, "rt_siguspend" }, /* 6128 */ - { 2, TS, sys_sigaltstack, "sigaltstatck" }, /* 6129 */ - { 2, TF, sys_utime, "utime" }, /* 6130 */ - { 3, TF, sys_mknod, "mknod" }, /* 6131 */ - { 1, 0, sys_personality, "personality" }, /* 6132 */ - { 2, 0, sys_ustat, "ustat" }, /* 6133 */ - { 3, 0, sys_statfs, "statfs" }, /* 6134 */ - { 3, 0, sys_fstatfs, "fstatfs" }, /* 6135 */ - { 5, 0, sys_sysfs, "sysfs" }, /* 6136 */ - { 2, 0, sys_getpriority, "getpriority" }, /* 6137 */ - { 3, 0, sys_setpriority, "setpriority" }, /* 6138 */ - { 2, 0, sys_sched_setparam, "sched_setparam"}, /* 6139 */ - { 2, 0, sys_sched_getparam, "sched_getparam"}, /* 6140 */ - { 3, 0, sys_sched_setscheduler, "sched_setscheduler"}, /* 6141 */ - { 1, 0, sys_sched_getscheduler, "sched_getscheduler"}, /* 6142 */ - { 1, 0, sys_sched_get_priority_max,"sched_get_priority_max"}, /* 6143 */ - { 1, 0, sys_sched_get_priority_min,"sched_get_priority_min"}, /* 6144 */ - { 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 6145 */ - { 2, 0, sys_mlock, "mlock" }, /* 6146 */ - { 2, 0, sys_munlock, "munlock" }, /* 6147 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 6148 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 6149 */ - { 0, 0, sys_vhangup, "vhangup" }, /* 6150 */ - { 2, 0, sys_pivotroot, "pivot_root" }, /* 6151 */ - { 1, 0, sys_sysctl, "_sysctl" }, /* 6152 */ - { 5, 0, sys_prctl, "prctl" }, /* 6153 */ - { 1, 0, sys_adjtimex, "adjtimex" }, /* 6154 */ - { 2, 0, sys_setrlimit, "setrlimit" }, /* 6155 */ - { 1, TF, sys_chroot, "chroot" }, /* 6156 */ - { 0, 0, sys_sync, "sync" }, /* 6157 */ - { 1, TF, sys_acct, "acct" }, /* 6158 */ - { 2, 0, sys_settimeofday, "settimeofday" }, /* 6159 */ - { 5, TF, sys_mount, "mount" }, /* 6160 */ - { 2, TF, sys_umount2, "umount" }, /* 6161 */ - { 2, TF, sys_swapon, "swapon" }, /* 6162 */ - { 1, TF, sys_swapoff, "swapoff" }, /* 6163 */ - { 4, 0, sys_reboot, "reboot" }, /* 6164 */ - { 2, 0, sys_sethostname, "sethostname" }, /* 6165 */ - { 2, 0, sys_setdomainname, "setdomainname" }, /* 6166 */ - { 2, 0, sys_create_module, "create_module" }, /* 6167 */ - { 4, 0, sys_init_module, "init_module" }, /* 6168 */ - { 1, 0, sys_delete_module, "delete_module" }, /* 6169 */ - { 1, 0, sys_get_kernel_syms, "get_kernel_syms"}, /* 6170 */ - { 5, 0, sys_query_module, "query_module" }, /* 6171 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 6172 */ - { 3, 0, sys_nfsservctl, "nfsservctl" }, /* 6173 */ - { 5, TN, printargs, "getpmsg" }, /* 6174 */ - { 5, TN, printargs, "putpmsg" }, /* 6175 */ - { 0, 0, sys_afs_syscall, "afs_syscall" }, /* 6176 */ - { 0, 0, printargs, "reserved177" }, /* 6177 */ - { 0, 0, sys_gettid, "gettid" }, /* 6178 */ - { 3, 0, sys_readahead, "readahead" }, /* 6179 */ - { 5, 0, sys_setxattr, "setxattr" }, /* 6180 */ - { 5, 0, sys_setxattr, "lsetxattr" }, /* 6181 */ - { 5, 0, sys_fsetxattr, "fsetxattr" }, /* 6182 */ - { 4, 0, sys_getxattr, "getxattr" }, /* 6183 */ - { 4, 0, sys_getxattr, "lgetxattr" }, /* 6184 */ - { 4, TD, sys_fgetxattr, "fgetxattr" }, /* 6185 */ - { 3, 0, sys_listxattr, "listxattr" }, /* 6186 */ - { 3, 0, sys_listxattr, "llistxattr" }, /* 6187 */ - { 3, TD, sys_flistxattr, "flistxattr" }, /* 6188 */ - { 2, 0, sys_removexattr, "removexattr" }, /* 6189 */ - { 2, 0, sys_removexattr, "lremovexattr" }, /* 6190 */ - { 2, TD, sys_fremovexattr, "fremovexattr" }, /* 6191 */ - { 2, TS, sys_kill, "tkill" }, /* 6192 */ - { 1, 0, sys_time, "time" }, /* 6193 */ - { 6, 0, sys_futex, "futex" }, /* 6194 */ - { 3, 0, sys_sched_setaffinity, "sched_setaffinity"}, /* 6195 */ - { 3, 0, sys_sched_getaffinity, "sched_getaffinity"}, /* 6196 */ - { 3, 0, printargs, "cacheflush" }, /* 6197 */ - { 3, 0, printargs, "cachectl" }, /* 6198 */ - { 4, 0, sys_sysmips, "sysmips" }, /* 6199 */ - { 2, 0, sys_io_setup, "io_setup" }, /* 6200 */ - { 1, 0, sys_io_destroy, "io_destroy" }, /* 6201 */ - { 5, 0, sys_io_getevents, "io_getevents" }, /* 6202 */ - { 3, 0, sys_io_submit, "io_submit" }, /* 6203 */ - { 3, 0, sys_io_cancel, "io_cancel" }, /* 6204 */ - { 1, TP, sys_exit, "exit_group"}, /* 6205 */ - { 3, 0, sys_lookup_dcookie, "lookup_dcookie" }, /* 6206 */ - { 1, TD, sys_epoll_create, "epoll_create" }, /* 6207 */ - { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 6208 */ - { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 6209 */ - { 5, 0, sys_remap_file_pages, "remap_file_pages" }, /* 6210 */ - { 0, TS, sys_rt_sigreturn, "rt_sigreturn" }, /* 6211 */ - { 3, 0, sys_fcntl, "fcntl64" }, /* 6212 */ - { 1, 0, sys_set_tid_address, "set_tid_address" }, /* 6213 */ - { 0, 0, sys_restart_syscall, "restart_syscall" }, /* 6214 */ - { 5, TI, sys_semtimedop, "semtimedop" }, /* 6215 */ - { 5, TD, sys_fadvise64, "fadvise64" }, /* 6216 */ - { 3, TF, sys_statfs64, "statfs64" }, /* 6217 */ - { 3, TD, sys_fstatfs64, "fstatfs64" }, /* 6218 */ - { 4, TD|TN, sys_sendfile64, "sendfile64" }, /* 6219 */ - { 3, 0, sys_timer_create, "timer_create" }, /* 6220 */ - { 4, 0, sys_timer_settime, "timer_settime" }, /* 6221 */ - { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 6222 */ - { 1, 0, sys_timer_getoverrun, "timer_getoverrun" }, /* 6223 */ - { 1, 0, sys_timer_delete, "timer_delete" }, /* 6224 */ - { 2, 0, sys_clock_settime, "clock_settime" }, /* 6225 */ - { 2, 0, sys_clock_gettime, "clock_gettime" }, /* 6226 */ - { 2, 0, sys_clock_getres, "clock_getres" }, /* 6227 */ - { 4, 0, sys_clock_nanosleep, "clock_nanosleep" }, /* 6228 */ - { 3, TS, sys_tgkill, "tgkill" }, /* 6229 */ - { 2, TF, sys_utimes, "utimes" }, /* 6230 */ - { 0, 0, NULL, NULL }, /* 6231 */ - { 0, 0, NULL, NULL }, /* 6232 */ - { 0, 0, NULL, NULL }, /* 6233 */ - { 4, 0, sys_mq_open, "mq_open" }, /* 6234 */ - { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 6235 */ - { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 6236 */ - { 5, 0, sys_mq_timedreceive, "mq_timedreceive" }, /* 6237 */ - { 2, 0, sys_mq_notify, "mq_notify" }, /* 6238 */ - { 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 6239 */ - { 0, 0, NULL, NULL }, /* 6240 */ - { 5, TP, sys_waitid, "waitid" }, /* 6241 */ - { 0, 0, NULL, NULL }, /* 6242 */ - { 5, 0, sys_add_key, "add_key" }, /* 6243 */ - { 4, 0, sys_request_key, "request_key" }, /* 6244 */ - { 5, 0, sys_keyctl, "keyctl" }, /* 6245 */ - { 1, 0, sys_set_thread_area, "set_thread_area" }, /* 6246 */ - { 0, TD, sys_inotify_init, "inotify_init" }, /* 6247 */ - { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 6248 */ - { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 6249 */ - { 4, 0, sys_migrate_pages, "migrate_pages" }, /* 6250 */ - { 4, TD|TF, sys_openat, "openat" }, /* 6251 */ - { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 6252 */ - { 4, TD|TF, sys_mknodat, "mknodat" }, /* 6253 */ - { 5, TD|TF, sys_fchownat, "fchownat" }, /* 6254 */ - { 3, TD|TF, sys_futimesat, "futimesat" }, /* 6255 */ - { 4, TD|TF, sys_newfstatat, "newfstatat" }, /* 6256 */ - { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 6257 */ - { 4, TD|TF, sys_renameat, "renameat" }, /* 6258 */ - { 5, TD|TF, sys_linkat, "linkat" }, /* 6259 */ - { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 6260 */ - { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 6261 */ - { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 6262 */ - { 3, TD|TF, sys_faccessat, "faccessat" }, /* 6263 */ - { 6, TD, sys_pselect6, "pselect6" }, /* 6264 */ - { 5, TD, sys_ppoll, "ppoll" }, /* 6265 */ - { 1, TP, sys_unshare, "unshare" }, /* 6266 */ - { 6, TD, sys_splice, "splice" }, /* 6267 */ - { 4, TD, sys_sync_file_range, "sync_file_range" }, /* 6268 */ - { 4, TD, sys_tee, "tee" }, /* 6269 */ - { 4, TD, sys_vmsplice, "vmsplice" }, /* 6270 */ - { 6, 0, printargs, "move_pages" }, /* 6271 */ - { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 6272 */ - { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 6273 */ - { 4, 0, sys_kexec_load, "kexec_load" }, /* 6274 */ - { 3, 0, sys_getcpu, "getcpu" }, /* 6275 */ - { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 6276 */ - { 3, 0, sys_ioprio_set, "ioprio_set" }, /* 6277 */ - { 2, 0, sys_ioprio_get, "ioprio_get" }, /* 6278 */ - { 4, TD|TF, sys_utimensat, "utimensat" }, /* 6279 */ - { 3, TD|TS, sys_signalfd, "signalfd" }, /* 6280 */ - { 0, 0, NULL, NULL }, /* 6281 */ - { 1, TD, sys_eventfd, "eventfd" }, /* 6282 */ - { 6, TD, sys_fallocate, "fallocate" }, /* 6283 */ - { 2, TD, sys_timerfd_create, "timerfd_create" }, /* 6284 */ - { 2, TD, sys_timerfd_gettime, "timerfd_gettime" }, /* 6285 */ - { 4, TD, sys_timerfd_settime, "timerfd_settime" }, /* 6286 */ - { 4, TD|TS, sys_signalfd4, "signalfd4" }, /* 6287 */ - { 2, TD, sys_eventfd2, "eventfd2" }, /* 6288 */ - { 1, TD, sys_epoll_create1, "epoll_create1" }, /* 6289 */ - { 3, TD, sys_dup3, "dup3" }, /* 6290 */ - { 2, TD, sys_pipe2, "pipe2" }, /* 6291 */ - { 1, TD, sys_inotify_init1, "inotify_init1" }, /* 6292 */ - { 5, TD, sys_preadv, "preadv" }, /* 6293 */ - { 5, TD, sys_pwritev, "pwritev" }, /* 6294 */ - { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo" }, /* 6295 */ - { 5, TD, sys_perf_event_open, "perf_event_open" }, /* 6296 */ - { 4, TN, sys_accept4, "accept4" }, /* 6297 */ - { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 6298 */ - { 3, TD, sys_getdents, "getdents" }, /* 6299 */ - { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 6300 */ - { 5, TD|TF, sys_fanotify_mark, "fanotify_mark" }, /* 6301 */ - { 4, 0, sys_prlimit64, "prlimit64" }, /* 6302 */ - { 5, TD|TF, sys_name_to_handle_at, "name_to_handle_at"}, /* 6303 */ - { 3, TD, sys_open_by_handle_at, "open_by_handle_at"}, /* 6304 */ - { 2, 0, sys_clock_adjtime, "clock_adjtime" }, /* 6305 */ - { 1, TD, sys_syncfs, "syncfs" }, /* 6306 */ - { 4, TN, sys_sendmmsg, "sendmmsg" }, /* 6307 */ - { 2, TD, sys_setns, "setns" }, /* 6308 */ - { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 6309 */ - { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 6310 */ - -#else - { 0, 0, printargs, "n32_read" }, /* 6000 */ - { 0, 0, printargs, "n32_write" }, /* 6001 */ - { 0, 0, printargs, "n32_open" }, /* 6002 */ - { 0, 0, printargs, "n32_close" }, /* 6003 */ - { 0, 0, printargs, "n32_stat" }, /* 6004 */ - { 0, 0, printargs, "n32_fstat" }, /* 6005 */ - { 0, 0, printargs, "n32_lstat" }, /* 6006 */ - { 0, 0, printargs, "n32_poll" }, /* 6007 */ - { 0, 0, printargs, "n32_lseek" }, /* 6008 */ - { 0, 0, printargs, "n32_mmap" }, /* 6009 */ - { 0, 0, printargs, "n32_mprotect" }, /* 6010 */ - { 0, 0, printargs, "n32_munmap" }, /* 6011 */ - { 0, 0, printargs, "n32_brk" }, /* 6012 */ - { 0, 0, printargs, "n32_rt_sigaction" }, /* 6013 */ - { 0, 0, printargs, "n32_rt_sigprocmask" }, /* 6014 */ - { 0, 0, printargs, "n32_ioctl" }, /* 6015 */ - { 0, 0, printargs, "n32_pread" }, /* 6016 */ - { 0, 0, printargs, "n32_pwrite" }, /* 6017 */ - { 0, 0, printargs, "n32_readv" }, /* 6018 */ - { 0, 0, printargs, "n32_writev" }, /* 6019 */ - { 0, 0, printargs, "n32_access" }, /* 6020 */ - { 0, 0, printargs, "n32_pipe" }, /* 6021 */ - { 0, 0, printargs, "n32__newselect" }, /* 6022 */ - { 0, 0, printargs, "n32_sched_yield" }, /* 6023 */ - { 0, 0, printargs, "n32_mremap" }, /* 6024 */ - { 0, 0, printargs, "n32_msync" }, /* 6025 */ - { 0, 0, printargs, "n32_mincore" }, /* 6026 */ - { 0, 0, printargs, "n32_madvise" }, /* 6027 */ - { 0, 0, printargs, "n32_shmget" }, /* 6028 */ - { 0, 0, printargs, "n32_shmgat" }, /* 6029 */ - { 0, 0, printargs, "n32_shmctl" }, /* 6030 */ - { 0, 0, printargs, "n32_dup" }, /* 6031 */ - { 0, 0, printargs, "n32_dup2" }, /* 6032 */ - { 0, 0, printargs, "n32_pause" }, /* 6033 */ - { 0, 0, printargs, "n32_nanosleep" }, /* 6034 */ - { 0, 0, printargs, "n32_getitimer" }, /* 6035 */ - { 0, 0, printargs, "n32_setitimer" }, /* 6036 */ - { 0, 0, printargs, "n32_alarm" }, /* 6037 */ - { 0, 0, printargs, "n32_getpid" }, /* 6038 */ - { 0, 0, printargs, "n32_sendfile" }, /* 6039 */ - { 0, 0, printargs, "n32_socketcall" }, /* 6040 */ - { 0, 0, printargs, "n32_connect" }, /* 6041 */ - { 0, 0, printargs, "n32_accept" }, /* 6042 */ - { 0, 0, printargs, "n32_sendto" }, /* 6043 */ - { 0, 0, printargs, "n32_recvfrom" }, /* 6044 */ - { 0, 0, printargs, "n32_sendmsg" }, /* 6045 */ - { 0, 0, printargs, "n32_recvmsg" }, /* 6046 */ - { 0, 0, printargs, "n32_shutdown" }, /* 6047 */ - { 0, 0, printargs, "n32_bind" }, /* 6048 */ - { 0, 0, printargs, "n32_listen" }, /* 6049 */ - { 0, 0, printargs, "n32_getsockname" }, /* 6050 */ - { 0, 0, printargs, "n32_getpeername" }, /* 6051 */ - { 0, 0, printargs, "n32_socketpair" }, /* 6052 */ - { 0, 0, printargs, "n32_setsockopt" }, /* 6053 */ - { 0, 0, printargs, "n32_getsockopt" }, /* 6054 */ - { 0, 0, printargs, "n32_clone" }, /* 6055 */ - { 0, 0, printargs, "n32_fork" }, /* 6056 */ - { 0, 0, printargs, "n32_execve" }, /* 6057 */ - { 0, 0, printargs, "n32_exit" }, /* 6058 */ - { 0, 0, printargs, "n32_wait4" }, /* 6059 */ - { 0, 0, printargs, "n32_kill" }, /* 6060 */ - { 0, 0, printargs, "n32_uname" }, /* 6061 */ - { 0, 0, printargs, "n32_semget" }, /* 6062 */ - { 0, 0, printargs, "n32_semop" }, /* 6063 */ - { 0, 0, printargs, "n32_semctl" }, /* 6064 */ - { 0, 0, printargs, "n32_shmdt" }, /* 6065 */ - { 0, 0, printargs, "n32_msgget" }, /* 6066 */ - { 0, 0, printargs, "n32_msgsnd" }, /* 6067 */ - { 0, 0, printargs, "n32_msgrcv" }, /* 6068 */ - { 0, 0, printargs, "n32_msgctl" }, /* 6069 */ - { 0, 0, printargs, "n32_fcntl" }, /* 6070 */ - { 0, 0, printargs, "n32_flock" }, /* 6071 */ - { 0, 0, printargs, "n32_fsync" }, /* 6072 */ - { 0, 0, printargs, "n32_fdatasync" }, /* 6073 */ - { 0, 0, printargs, "n32_truncate" }, /* 6074 */ - { 0, 0, printargs, "n32_ftruncate" }, /* 6075 */ - { 0, 0, printargs, "n32_getdents" }, /* 6076 */ - { 0, 0, printargs, "n32_getcwd" }, /* 6077 */ - { 0, 0, printargs, "n32_chdir" }, /* 6078 */ - { 0, 0, printargs, "n32_fchdir" }, /* 6079 */ - { 0, 0, printargs, "n32_rename" }, /* 6080 */ - { 0, 0, printargs, "n32_mkdir" }, /* 6081 */ - { 0, 0, printargs, "n32_rmdir" }, /* 6082 */ - { 0, 0, printargs, "n32_creat" }, /* 6083 */ - { 0, 0, printargs, "n32_link" }, /* 6084 */ - { 0, 0, printargs, "n32_unlink" }, /* 6085 */ - { 0, 0, printargs, "n32_symlink" }, /* 6086 */ - { 0, 0, printargs, "n32_readlink" }, /* 6087 */ - { 0, 0, printargs, "n32_chmod" }, /* 6088 */ - { 0, 0, printargs, "n32_fchmod" }, /* 6089 */ - { 0, 0, printargs, "n32_chown" }, /* 6090 */ - { 0, 0, printargs, "n32_fchown" }, /* 6091 */ - { 0, 0, printargs, "n32_lchown" }, /* 6092 */ - { 0, 0, printargs, "n32_umask" }, /* 6093 */ - { 0, 0, printargs, "n32_gettimeofday" }, /* 6094 */ - { 0, 0, printargs, "n32_getrlimit" }, /* 6095 */ - { 0, 0, printargs, "n32_getrusage" }, /* 6096 */ - { 0, 0, printargs, "n32_sysinfo" }, /* 6097 */ - { 0, 0, printargs, "n32_times" }, /* 6098 */ - { 0, 0, printargs, "n32_ptrace" }, /* 6099 */ - { 0, 0, printargs, "n32_getuid" }, /* 6100 */ - { 0, 0, printargs, "n32_syslog" }, /* 6101 */ - { 0, 0, printargs, "n32_getgid" }, /* 6102 */ - { 0, 0, printargs, "n32_setuid" }, /* 6103 */ - { 0, 0, printargs, "n32_setgid" }, /* 6104 */ - { 0, 0, printargs, "n32_geteuid" }, /* 6105 */ - { 0, 0, printargs, "n32_getegid" }, /* 6106 */ - { 0, 0, printargs, "n32_setpgid" }, /* 6107 */ - { 0, 0, printargs, "n32_getppid" }, /* 6108 */ - { 0, 0, printargs, "n32_getpgrp" }, /* 6109 */ - { 0, 0, printargs, "n32_setsid" }, /* 6110 */ - { 0, 0, printargs, "n32_setreuid" }, /* 6111 */ - { 0, 0, printargs, "n32_setregid" }, /* 6112 */ - { 0, 0, printargs, "n32_getgroups" }, /* 6113 */ - { 0, 0, printargs, "n32_setgroups" }, /* 6114 */ - { 0, 0, printargs, "n32_setresuid" }, /* 6115 */ - { 0, 0, printargs, "n32_getresuid" }, /* 6116 */ - { 0, 0, printargs, "n32_setresgid" }, /* 6117 */ - { 0, 0, printargs, "n32_getresgid" }, /* 6118 */ - { 0, 0, printargs, "n32_getpgid" }, /* 6119 */ - { 0, 0, printargs, "n32_setfsuid" }, /* 6120 */ - { 0, 0, printargs, "n32_setfsgid" }, /* 6121 */ - { 0, 0, printargs, "n32_getsid" }, /* 6122 */ - { 0, 0, printargs, "n32_capget" }, /* 6123 */ - { 0, 0, printargs, "n32_capset" }, /* 6124 */ - { 0, 0, printargs, "n32_rt_sigpending" }, /* 6125 */ - { 0, 0, printargs, "n32_rt_sigtimedwait" }, /* 6126 */ - { 0, 0, printargs, "n32_rt_sigqueueinfo" }, /* 6127 */ - { 0, 0, printargs, "n32_rt_siguspend" }, /* 6128 */ - { 0, 0, printargs, "n32_sigaltstatck" }, /* 6129 */ - { 0, 0, printargs, "n32_utime" }, /* 6130 */ - { 0, 0, printargs, "n32_mknod" }, /* 6131 */ - { 0, 0, printargs, "n32_personality" }, /* 6132 */ - { 0, 0, printargs, "n32_ustat" }, /* 6133 */ - { 0, 0, printargs, "n32_statfs" }, /* 6134 */ - { 0, 0, printargs, "n32_fstatfs" }, /* 6135 */ - { 0, 0, printargs, "n32_sysfs" }, /* 6136 */ - { 0, 0, printargs, "n32_getpriority" }, /* 6137 */ - { 0, 0, printargs, "n32_setpriority" }, /* 6138 */ - { 0, 0, printargs, "n32_sched_setparam" }, /* 6139 */ - { 0, 0, printargs, "n32_sched_getparam" }, /* 6140 */ - { 0, 0, printargs, "n32_sched_setscheduler"}, /* 6141 */ - { 0, 0, printargs, "n32_sched_getscheduler"}, /* 6142 */ - { 0, 0, printargs, "n32_sched_get_priority_max"}, /* 6143 */ - { 0, 0, printargs, "n32_sched_get_priority_min"}, /* 6144 */ - { 0, 0, printargs, "n32_sched_rr_get_interval"}, /* 6145 */ - { 0, 0, printargs, "n32_mlock" }, /* 6146 */ - { 0, 0, printargs, "n32_munlock" }, /* 6147 */ - { 0, 0, printargs, "n32_mlockall" }, /* 6148 */ - { 0, 0, printargs, "n32_munlockall" }, /* 6149 */ - { 0, 0, printargs, "n32_vhangup" }, /* 6150 */ - { 0, 0, printargs, "n32_pivot_root" }, /* 6151 */ - { 0, 0, printargs, "n32__sysctl" }, /* 6152 */ - { 0, 0, printargs, "n32_prctl" }, /* 6153 */ - { 0, 0, printargs, "n32_adjtimex" }, /* 6154 */ - { 0, 0, printargs, "n32_setrlimit" }, /* 6155 */ - { 0, 0, printargs, "n32_chroot" }, /* 6156 */ - { 0, 0, printargs, "n32_sync" }, /* 6157 */ - { 0, 0, printargs, "n32_acct" }, /* 6158 */ - { 0, 0, printargs, "n32_settimeofday" }, /* 6159 */ - { 0, 0, printargs, "n32_mount" }, /* 6160 */ - { 0, 0, printargs, "n32_umount" }, /* 6161 */ - { 0, 0, printargs, "n32_swapon" }, /* 6162 */ - { 0, 0, printargs, "n32_swapoff" }, /* 6163 */ - { 0, 0, printargs, "n32_reboot" }, /* 6164 */ - { 0, 0, printargs, "n32_sethostname" }, /* 6165 */ - { 0, 0, printargs, "n32_setdomainname" }, /* 6166 */ - { 0, 0, printargs, "n32_create_module" }, /* 6167 */ - { 0, 0, printargs, "n32_init_module" }, /* 6168 */ - { 0, 0, printargs, "n32_delete_module" }, /* 6169 */ - { 0, 0, printargs, "n32_get_kernel_syms" }, /* 6170 */ - { 0, 0, printargs, "n32_query_module" }, /* 6171 */ - { 0, 0, printargs, "n32_quotactl" }, /* 6172 */ - { 0, 0, printargs, "n32_nfsservctl" }, /* 6173 */ - { 0, 0, printargs, "n32_getpmsg" }, /* 6174 */ - { 0, 0, printargs, "n32_putpmsg" }, /* 6175 */ - { 0, 0, printargs, "n32_afs_syscall" }, /* 6176 */ - { 0, 0, printargs, "n32_reserved177" }, /* 6177 */ - { 0, 0, printargs, "n32_gettid" }, /* 6178 */ - { 0, 0, printargs, "n32_readahead" }, /* 6179 */ - { 0, 0, printargs, "n32_setxattr" }, /* 6180 */ - { 0, 0, printargs, "n32_lsetxattr" }, /* 6181 */ - { 0, 0, printargs, "n32_fsetxattr" }, /* 6182 */ - { 0, 0, printargs, "n32_getxattr" }, /* 6183 */ - { 0, 0, printargs, "n32_lgetxattr" }, /* 6184 */ - { 0, 0, printargs, "n32_fgetxattr" }, /* 6185 */ - { 0, 0, printargs, "n32_listxattr" }, /* 6186 */ - { 0, 0, printargs, "n32_llistxattr" }, /* 6187 */ - { 0, 0, printargs, "n32_flistxattr" }, /* 6188 */ - { 0, 0, printargs, "n32_removexattr" }, /* 6189 */ - { 0, 0, printargs, "n32_lremovexattr" }, /* 6190 */ - { 0, 0, printargs, "n32_fremovexattr" }, /* 6191 */ - { 0, 0, printargs, "n32_tkill" }, /* 6192 */ - { 0, 0, printargs, "n32_time" }, /* 6193 */ - { 0, 0, printargs, "n32_futex" }, /* 6194 */ - { 0, 0, printargs, "n32_sched_setaffinity" }, /* 6195 */ - { 0, 0, printargs, "n32_sched_getaffinity" }, /* 6196 */ - { 0, 0, printargs, "n32_cacheflush" }, /* 6197 */ - { 0, 0, printargs, "n32_cachectl" }, /* 6198 */ - { 0, 0, printargs, "n32_sysmips" }, /* 6199 */ - { 0, 0, printargs, "n32_io_setup" }, /* 6200 */ - { 0, 0, printargs, "n32_io_destroy" }, /* 6201 */ - { 0, 0, printargs, "n32_io_getevents" }, /* 6202 */ - { 0, 0, printargs, "n32_io_submit" }, /* 6203 */ - { 0, 0, printargs, "n32_io_cancel" }, /* 6204 */ - { 1, TP, printargs, "n32_exit_group" }, /* 6205 */ - { 0, 0, printargs, "n32_lookup_dcookie" }, /* 6206 */ - { 0, 0, printargs, "n32_epoll_create" }, /* 6207 */ - { 0, 0, printargs, "n32_epoll_ctl" }, /* 6208 */ - { 0, 0, printargs, "n32_epoll_wait" }, /* 6209 */ - { 0, 0, printargs, "n32_remap_file_pages" }, /* 6210 */ - { 0, 0, printargs, "n32_rt_sigreturn" }, /* 6211 */ - { 0, 0, printargs, "n32_fcntl64" }, /* 6212 */ - { 0, 0, printargs, "n32_set_tid_address" }, /* 6213 */ - { 0, 0, printargs, "n32_restart_syscall" }, /* 6214 */ - { 0, 0, printargs, "n32_semtimedop" }, /* 6215 */ - { 0, 0, printargs, "n32_fadvise64" }, /* 6216 */ - { 0, 0, printargs, "n32_statfs64" }, /* 6217 */ - { 0, 0, printargs, "n32_fstatfs64" }, /* 6218 */ - { 0, 0, printargs, "n32_sendfile64" }, /* 6219 */ - { 3, 0, printargs, "n32_timer_create" }, /* 6220 */ - { 4, 0, printargs, "n32_timer_settime" }, /* 6221 */ - { 2, 0, printargs, "n32_timer_gettime" }, /* 6222 */ - { 1, 0, printargs, "n32_timer_getoverrun" }, /* 6223 */ - { 1, 0, printargs, "n32_timer_delete" }, /* 6224 */ - { 2, 0, printargs, "n32_clock_settime" }, /* 6225 */ - { 2, 0, printargs, "n32_clock_gettime" }, /* 6226 */ - { 2, 0, printargs, "n32_clock_getres" }, /* 6227 */ - { 4, 0, printargs, "n32_clock_nanosleep" }, /* 6228 */ - { 3, 0, printargs, "n32_tgkill" }, /* 6229 */ - { 2, 0, printargs, "n32_utimes" }, /* 6230 */ - { 0, 0, printargs, "n32_SYS_6231" }, /* 6231 */ - { 0, 0, printargs, "n32_SYS_6232" }, /* 6232 */ - { 0, 0, printargs, "n32_SYS_6233" }, /* 6233 */ - { 4, 0, printargs, "n32_mq_open" }, /* 6234 */ - { 1, 0, printargs, "n32_mq_unlink" }, /* 6235 */ - { 5, 0, printargs, "n32_mq_timedsend" }, /* 6236 */ - { 5, 0, printargs, "n32_mq_timedreceive" }, /* 6237 */ - { 2, 0, printargs, "n32_mq_notify" }, /* 6238 */ - { 3, 0, printargs, "n32_mq_getsetattr" }, /* 6239 */ - { 0, 0, printargs, "n32_SYS_6240" }, /* 6240 */ - { 5, TP, printargs, "n32_waitid" }, /* 6241 */ - { 0, 0, printargs, "n32_SYS_6242" }, /* 6242 */ - { 5, 0, printargs, "n32_add_key" }, /* 6243 */ - { 4, 0, printargs, "n32_request_key" }, /* 6244 */ - { 5, 0, printargs, "n32_keyctl" }, /* 6245 */ - { 1, 0, printargs, "n32_set_thread_area" }, /* 6246 */ - { 0, TD, printargs, "n32_inotify_init" }, /* 6247 */ - { 3, TD, printargs, "n32_inotify_add_watch" }, /* 6248 */ - { 2, TD, printargs, "n32_inotify_rm_watch" }, /* 6249 */ - { 4, 0, printargs, "n32_migrate_pages" }, /* 6250 */ - { 4, TD|TF, printargs, "n32_openat" }, /* 6251 */ - { 3, TD|TF, printargs, "n32_mkdirat" }, /* 6252 */ - { 4, TD|TF, printargs, "n32_mknodat" }, /* 6253 */ - { 5, TD|TF, printargs, "n32_fchownat" }, /* 6254 */ - { 3, TD|TF, printargs, "n32_futimesat" }, /* 6255 */ - { 4, TD|TF, printargs, "n32_newfstatat" }, /* 6256 */ - { 3, TD|TF, printargs, "n32_unlinkat" }, /* 6257 */ - { 4, TD|TF, printargs, "n32_renameat" }, /* 6258 */ - { 5, TD|TF, printargs, "n32_linkat" }, /* 6259 */ - { 3, TD|TF, printargs, "n32_symlinkat" }, /* 6260 */ - { 4, TD|TF, printargs, "n32_readlinkat" }, /* 6261 */ - { 3, TD|TF, printargs, "n32_fchmodat" }, /* 6262 */ - { 3, TD|TF, printargs, "n32_faccessat" }, /* 6263 */ - { 6, TD, printargs, "n32_pselect6" }, /* 6264 */ - { 5, TD, printargs, "n32_ppoll" }, /* 6265 */ - { 1, TP, printargs, "n32_unshare" }, /* 6266 */ - { 6, TD, printargs, "n32_splice" }, /* 6267 */ - { 4, TD, printargs, "n32_sync_file_range" }, /* 6268 */ - { 4, TD, printargs, "n32_tee" }, /* 6269 */ - { 4, TD, printargs, "n32_vmsplice" }, /* 6270 */ - { 6, 0, printargs, "n32_move_pages" }, /* 6271 */ - { 2, 0, printargs, "n32_set_robust_list" }, /* 6272 */ - { 3, 0, printargs, "n32_get_robust_list" }, /* 6273 */ - { 5, 0, printargs, "n32_kexec_load" }, /* 6274 */ - { 3, 0, printargs, "n32_getcpu" }, /* 6275 */ - { 5, TD, printargs, "n32_epoll_pwait" }, /* 6276 */ - { 3, 0, printargs, "n32_ioprio_set" }, /* 6277 */ - { 2, 0, printargs, "n32_ioprio_get" }, /* 6278 */ - { 4, TD|TF, printargs, "n32_utimensat" }, /* 6279 */ - { 3, TD|TS, printargs, "n32_signalfd" }, /* 6280 */ - { 0, 0, printargs, "n32_SYS_6281" }, /* 6281 */ - { 1, TD, printargs, "n32_eventfd" }, /* 6282 */ - { 6, TD, printargs, "n32_fallocate" }, /* 6283 */ - { 2, TD, printargs, "n32_timerfd_create" }, /* 6284 */ - { 2, TD, printargs, "n32_timerfd_gettime" }, /* 6285 */ - { 4, TD, printargs, "n32_timerfd_settime" }, /* 6286 */ - { 4, TD|TS, printargs, "n32_signalfd4" }, /* 6287 */ - { 2, TD, printargs, "n32_eventfd2" }, /* 6288 */ - { 1, TD, printargs, "n32_epoll_create1" }, /* 6289 */ - { 3, TD, printargs, "n32_dup3" }, /* 6290 */ - { 2, TD, printargs, "n32_pipe2" }, /* 6291 */ - { 1, TD, printargs, "n32_inotify_init1" }, /* 6292 */ - { 5, TD, printargs, "n32_preadv" }, /* 6293 */ - { 5, TD, printargs, "n32_pwritev" }, /* 6294 */ - { 4, TP|TS, printargs, "n32_rt_tgsigqueueinfo" }, /* 6295 */ - { 5, TD, printargs, "n32_perf_event_open" }, /* 6296 */ - { 4, TN, printargs, "n32_accept4" }, /* 6297 */ - { 5, TN, printargs, "n32_recvmmsg" }, /* 6298 */ - { 3, TD, printargs, "n32_getdents" }, /* 6299 */ - { 2, 0, printargs, "n32_fanotify_init" }, /* 6300 */ - { 5, 0, printargs, "n32_fanotify_mark" }, /* 6301 */ - { 4, 0, printargs, "n32_prlimit64" }, /* 6302 */ - { 5, TD|TF, printargs, "n32_name_to_handle_at" }, /* 6303 */ - { 3, TD, printargs, "n32_open_by_handle_at" }, /* 6304 */ - { 2, 0, printargs, "n32_clock_adjtime" }, /* 6305 */ - { 1, TD, printargs, "n32_syncfs" }, /* 6306 */ - { 4, TN, printargs, "n32_sendmmsg" }, /* 6307 */ - { 2, TD, printargs, "n32_setns" }, /* 6308 */ - { 6, 0, printargs, "n32_process_vm_readv" }, /* 6309 */ - { 6, 0, printargs, "n32_process_vm_writev" }, /* 6310 */ -#endif - { 0, 0, NULL, NULL }, /* 6311 */ - { 0, 0, NULL, NULL }, /* 6312 */ - { 0, 0, NULL, NULL }, /* 6313 */ - { 0, 0, NULL, NULL }, /* 6314 */ - { 0, 0, NULL, NULL }, /* 6315 */ - { 0, 0, NULL, NULL }, /* 6316 */ - { 0, 0, NULL, NULL }, /* 6317 */ - { 0, 0, NULL, NULL }, /* 6318 */ - { 0, 0, NULL, NULL }, /* 6319 */ - { 0, 0, NULL, NULL }, /* 6320 */ - { 0, 0, NULL, NULL }, /* 6321 */ - { 0, 0, NULL, NULL }, /* 6322 */ - { 0, 0, NULL, NULL }, /* 6323 */ - { 0, 0, NULL, NULL }, /* 6324 */ - { 0, 0, NULL, NULL }, /* 6325 */ - { 0, 0, NULL, NULL }, /* 6326 */ - { 0, 0, NULL, NULL }, /* 6327 */ - { 0, 0, NULL, NULL }, /* 6328 */ - { 0, 0, NULL, NULL }, /* 6329 */ - { 0, 0, NULL, NULL }, /* 6330 */ - { 0, 0, NULL, NULL }, /* 6331 */ - { 0, 0, NULL, NULL }, /* 6332 */ - { 0, 0, NULL, NULL }, /* 6333 */ - { 0, 0, NULL, NULL }, /* 6334 */ - { 0, 0, NULL, NULL }, /* 6335 */ - { 0, 0, NULL, NULL }, /* 6336 */ - { 0, 0, NULL, NULL }, /* 6337 */ - { 0, 0, NULL, NULL }, /* 6338 */ - { 0, 0, NULL, NULL }, /* 6339 */ - { 0, 0, NULL, NULL }, /* 6340 */ - { 0, 0, NULL, NULL }, /* 6341 */ - { 0, 0, NULL, NULL }, /* 6342 */ - { 0, 0, NULL, NULL }, /* 6343 */ - { 0, 0, NULL, NULL }, /* 6344 */ - { 0, 0, NULL, NULL }, /* 6345 */ - { 0, 0, NULL, NULL }, /* 6346 */ - { 0, 0, NULL, NULL }, /* 6347 */ - { 0, 0, NULL, NULL }, /* 6348 */ - { 0, 0, NULL, NULL }, /* 6349 */ - { 0, 0, NULL, NULL }, /* 6350 */ - { 0, 0, NULL, NULL }, /* 6351 */ - { 0, 0, NULL, NULL }, /* 6352 */ - { 0, 0, NULL, NULL }, /* 6353 */ - { 0, 0, NULL, NULL }, /* 6354 */ - { 0, 0, NULL, NULL }, /* 6355 */ - { 0, 0, NULL, NULL }, /* 6356 */ - { 0, 0, NULL, NULL }, /* 6357 */ - { 0, 0, NULL, NULL }, /* 6358 */ - { 0, 0, NULL, NULL }, /* 6359 */ - { 0, 0, NULL, NULL }, /* 6360 */ - { 0, 0, NULL, NULL }, /* 6361 */ - { 0, 0, NULL, NULL }, /* 6362 */ - { 0, 0, NULL, NULL }, /* 6363 */ - { 0, 0, NULL, NULL }, /* 6364 */ - { 0, 0, NULL, NULL }, /* 6365 */ - { 0, 0, NULL, NULL }, /* 6366 */ - { 0, 0, NULL, NULL }, /* 6367 */ - { 0, 0, NULL, NULL }, /* 6368 */ - { 0, 0, NULL, NULL }, /* 6369 */ - { 0, 0, NULL, NULL }, /* 6370 */ - { 0, 0, NULL, NULL }, /* 6371 */ - { 0, 0, NULL, NULL }, /* 6372 */ - { 0, 0, NULL, NULL }, /* 6373 */ - { 0, 0, NULL, NULL }, /* 6374 */ - { 0, 0, NULL, NULL }, /* 6375 */ - { 0, 0, NULL, NULL }, /* 6376 */ - { 0, 0, NULL, NULL }, /* 6377 */ - { 0, 0, NULL, NULL }, /* 6378 */ - { 0, 0, NULL, NULL }, /* 6379 */ - { 0, 0, NULL, NULL }, /* 6380 */ - { 0, 0, NULL, NULL }, /* 6381 */ - { 0, 0, NULL, NULL }, /* 6382 */ - { 0, 0, NULL, NULL }, /* 6383 */ - { 0, 0, NULL, NULL }, /* 6384 */ - { 0, 0, NULL, NULL }, /* 6385 */ - { 0, 0, NULL, NULL }, /* 6386 */ - { 0, 0, NULL, NULL }, /* 6387 */ - { 0, 0, NULL, NULL }, /* 6388 */ - { 0, 0, NULL, NULL }, /* 6389 */ - { 0, 0, NULL, NULL }, /* 6390 */ - { 0, 0, NULL, NULL }, /* 6391 */ - { 0, 0, NULL, NULL }, /* 6392 */ - { 0, 0, NULL, NULL }, /* 6393 */ - { 0, 0, NULL, NULL }, /* 6394 */ - { 0, 0, NULL, NULL }, /* 6395 */ - { 0, 0, NULL, NULL }, /* 6396 */ - { 0, 0, NULL, NULL }, /* 6397 */ - { 0, 0, NULL, NULL }, /* 6398 */ - { 0, 0, NULL, NULL }, /* 6399 */ - { 0, 0, NULL, NULL }, /* 6400 */ - { 0, 0, NULL, NULL }, /* 6401 */ - { 0, 0, NULL, NULL }, /* 6402 */ - { 0, 0, NULL, NULL }, /* 6403 */ - { 0, 0, NULL, NULL }, /* 6404 */ - { 0, 0, NULL, NULL }, /* 6405 */ - { 0, 0, NULL, NULL }, /* 6406 */ - { 0, 0, NULL, NULL }, /* 6407 */ - { 0, 0, NULL, NULL }, /* 6408 */ - { 0, 0, NULL, NULL }, /* 6409 */ - { 0, 0, NULL, NULL }, /* 6410 */ - { 0, 0, NULL, NULL }, /* 6411 */ - { 0, 0, NULL, NULL }, /* 6412 */ - { 0, 0, NULL, NULL }, /* 6413 */ - { 0, 0, NULL, NULL }, /* 6414 */ - { 0, 0, NULL, NULL }, /* 6415 */ - { 0, 0, NULL, NULL }, /* 6416 */ - { 0, 0, NULL, NULL }, /* 6417 */ - { 0, 0, NULL, NULL }, /* 6418 */ - { 0, 0, NULL, NULL }, /* 6419 */ - { 0, 0, NULL, NULL }, /* 6420 */ - { 0, 0, NULL, NULL }, /* 6421 */ - { 0, 0, NULL, NULL }, /* 6422 */ - { 0, 0, NULL, NULL }, /* 6423 */ - { 0, 0, NULL, NULL }, /* 6424 */ - { 0, 0, NULL, NULL }, /* 6425 */ - { 0, 0, NULL, NULL }, /* 6426 */ - { 0, 0, NULL, NULL }, /* 6427 */ - { 0, 0, NULL, NULL }, /* 6428 */ - { 0, 0, NULL, NULL }, /* 6429 */ - { 0, 0, NULL, NULL }, /* 6430 */ - { 0, 0, NULL, NULL }, /* 6431 */ - { 0, 0, NULL, NULL }, /* 6432 */ - { 0, 0, NULL, NULL }, /* 6433 */ - { 0, 0, NULL, NULL }, /* 6434 */ - { 0, 0, NULL, NULL }, /* 6435 */ - { 0, 0, NULL, NULL }, /* 6436 */ - { 0, 0, NULL, NULL }, /* 6437 */ - { 0, 0, NULL, NULL }, /* 6438 */ - { 0, 0, NULL, NULL }, /* 6439 */ - { 0, 0, NULL, NULL }, /* 6440 */ - { 0, 0, NULL, NULL }, /* 6441 */ - { 0, 0, NULL, NULL }, /* 6442 */ - { 0, 0, NULL, NULL }, /* 6443 */ - { 0, 0, NULL, NULL }, /* 6444 */ - { 0, 0, NULL, NULL }, /* 6445 */ - { 0, 0, NULL, NULL }, /* 6446 */ - { 0, 0, NULL, NULL }, /* 6447 */ - { 0, 0, NULL, NULL }, /* 6448 */ - { 0, 0, NULL, NULL }, /* 6449 */ - { 0, 0, NULL, NULL }, /* 6450 */ - { 0, 0, NULL, NULL }, /* 6451 */ - { 0, 0, NULL, NULL }, /* 6452 */ - { 0, 0, NULL, NULL }, /* 6453 */ - { 0, 0, NULL, NULL }, /* 6454 */ - { 0, 0, NULL, NULL }, /* 6455 */ - { 0, 0, NULL, NULL }, /* 6456 */ - { 0, 0, NULL, NULL }, /* 6457 */ - { 0, 0, NULL, NULL }, /* 6458 */ - { 0, 0, NULL, NULL }, /* 6459 */ - { 0, 0, NULL, NULL }, /* 6460 */ - { 0, 0, NULL, NULL }, /* 6461 */ - { 0, 0, NULL, NULL }, /* 6462 */ - { 0, 0, NULL, NULL }, /* 6463 */ - { 0, 0, NULL, NULL }, /* 6464 */ - { 0, 0, NULL, NULL }, /* 6465 */ - { 0, 0, NULL, NULL }, /* 6466 */ - { 0, 0, NULL, NULL }, /* 6467 */ - { 0, 0, NULL, NULL }, /* 6468 */ - { 0, 0, NULL, NULL }, /* 6469 */ - { 0, 0, NULL, NULL }, /* 6470 */ - { 0, 0, NULL, NULL }, /* 6471 */ - { 0, 0, NULL, NULL }, /* 6472 */ - { 0, 0, NULL, NULL }, /* 6473 */ - { 0, 0, NULL, NULL }, /* 6474 */ - { 0, 0, NULL, NULL }, /* 6475 */ - { 0, 0, NULL, NULL }, /* 6476 */ - { 0, 0, NULL, NULL }, /* 6477 */ - { 0, 0, NULL, NULL }, /* 6478 */ - { 0, 0, NULL, NULL }, /* 6479 */ - { 0, 0, NULL, NULL }, /* 6480 */ - { 0, 0, NULL, NULL }, /* 6481 */ - { 0, 0, NULL, NULL }, /* 6482 */ - { 0, 0, NULL, NULL }, /* 6483 */ - { 0, 0, NULL, NULL }, /* 6484 */ - { 0, 0, NULL, NULL }, /* 6485 */ - { 0, 0, NULL, NULL }, /* 6486 */ - { 0, 0, NULL, NULL }, /* 6487 */ - { 0, 0, NULL, NULL }, /* 6488 */ - { 0, 0, NULL, NULL }, /* 6489 */ - { 0, 0, NULL, NULL }, /* 6490 */ - { 0, 0, NULL, NULL }, /* 6491 */ - { 0, 0, NULL, NULL }, /* 6492 */ - { 0, 0, NULL, NULL }, /* 6493 */ - { 0, 0, NULL, NULL }, /* 6494 */ - { 0, 0, NULL, NULL }, /* 6495 */ - { 0, 0, NULL, NULL }, /* 6496 */ - { 0, 0, NULL, NULL }, /* 6497 */ - { 0, 0, NULL, NULL }, /* 6498 */ - { 0, 0, NULL, NULL }, /* 6499 */ - { 0, 0, NULL, NULL }, /* 6500 */ - { 0, 0, NULL, NULL }, /* 6501 */ - { 0, 0, NULL, NULL }, /* 6502 */ - { 0, 0, NULL, NULL }, /* 6503 */ - { 0, 0, NULL, NULL }, /* 6504 */ - { 0, 0, NULL, NULL }, /* 6505 */ - { 0, 0, NULL, NULL }, /* 6506 */ - { 0, 0, NULL, NULL }, /* 6507 */ - { 0, 0, NULL, NULL }, /* 6508 */ - { 0, 0, NULL, NULL }, /* 6509 */ - { 0, 0, NULL, NULL }, /* 6510 */ - { 0, 0, NULL, NULL }, /* 6511 */ - { 0, 0, NULL, NULL }, /* 6512 */ - { 0, 0, NULL, NULL }, /* 6513 */ - { 0, 0, NULL, NULL }, /* 6514 */ - { 0, 0, NULL, NULL }, /* 6515 */ - { 0, 0, NULL, NULL }, /* 6516 */ - { 0, 0, NULL, NULL }, /* 6517 */ - { 0, 0, NULL, NULL }, /* 6518 */ - { 0, 0, NULL, NULL }, /* 6519 */ - { 0, 0, NULL, NULL }, /* 6520 */ - { 0, 0, NULL, NULL }, /* 6521 */ - { 0, 0, NULL, NULL }, /* 6522 */ - { 0, 0, NULL, NULL }, /* 6523 */ - { 0, 0, NULL, NULL }, /* 6524 */ - { 0, 0, NULL, NULL }, /* 6525 */ - { 0, 0, NULL, NULL }, /* 6526 */ - { 0, 0, NULL, NULL }, /* 6527 */ - { 0, 0, NULL, NULL }, /* 6528 */ - { 0, 0, NULL, NULL }, /* 6529 */ - { 0, 0, NULL, NULL }, /* 6530 */ - { 0, 0, NULL, NULL }, /* 6531 */ - { 0, 0, NULL, NULL }, /* 6532 */ - { 0, 0, NULL, NULL }, /* 6533 */ - { 0, 0, NULL, NULL }, /* 6534 */ - { 0, 0, NULL, NULL }, /* 6535 */ - { 0, 0, NULL, NULL }, /* 6536 */ - { 0, 0, NULL, NULL }, /* 6537 */ - { 0, 0, NULL, NULL }, /* 6538 */ - { 0, 0, NULL, NULL }, /* 6539 */ - { 0, 0, NULL, NULL }, /* 6540 */ - { 0, 0, NULL, NULL }, /* 6541 */ - { 0, 0, NULL, NULL }, /* 6542 */ - { 0, 0, NULL, NULL }, /* 6543 */ - { 0, 0, NULL, NULL }, /* 6544 */ - { 0, 0, NULL, NULL }, /* 6545 */ - { 0, 0, NULL, NULL }, /* 6546 */ - { 0, 0, NULL, NULL }, /* 6547 */ - { 0, 0, NULL, NULL }, /* 6548 */ - { 0, 0, NULL, NULL }, /* 6549 */ - { 0, 0, NULL, NULL }, /* 6550 */ - { 0, 0, NULL, NULL }, /* 6551 */ - { 0, 0, NULL, NULL }, /* 6552 */ - { 0, 0, NULL, NULL }, /* 6553 */ - { 0, 0, NULL, NULL }, /* 6554 */ - { 0, 0, NULL, NULL }, /* 6555 */ - { 0, 0, NULL, NULL }, /* 6556 */ - { 0, 0, NULL, NULL }, /* 6557 */ - { 0, 0, NULL, NULL }, /* 6558 */ - { 0, 0, NULL, NULL }, /* 6559 */ - { 0, 0, NULL, NULL }, /* 6560 */ - { 0, 0, NULL, NULL }, /* 6561 */ - { 0, 0, NULL, NULL }, /* 6562 */ - { 0, 0, NULL, NULL }, /* 6563 */ - { 0, 0, NULL, NULL }, /* 6564 */ - { 0, 0, NULL, NULL }, /* 6565 */ - { 0, 0, NULL, NULL }, /* 6566 */ - { 0, 0, NULL, NULL }, /* 6567 */ - { 0, 0, NULL, NULL }, /* 6568 */ - { 0, 0, NULL, NULL }, /* 6569 */ - { 0, 0, NULL, NULL }, /* 6570 */ - { 0, 0, NULL, NULL }, /* 6571 */ - { 0, 0, NULL, NULL }, /* 6572 */ - { 0, 0, NULL, NULL }, /* 6573 */ - { 0, 0, NULL, NULL }, /* 6574 */ - { 0, 0, NULL, NULL }, /* 6575 */ - { 0, 0, NULL, NULL }, /* 6576 */ - { 0, 0, NULL, NULL }, /* 6577 */ - { 0, 0, NULL, NULL }, /* 6578 */ - { 0, 0, NULL, NULL }, /* 6579 */ - { 0, 0, NULL, NULL }, /* 6580 */ - { 0, 0, NULL, NULL }, /* 6581 */ - { 0, 0, NULL, NULL }, /* 6582 */ - { 0, 0, NULL, NULL }, /* 6583 */ - { 0, 0, NULL, NULL }, /* 6584 */ - { 0, 0, NULL, NULL }, /* 6585 */ - { 0, 0, NULL, NULL }, /* 6586 */ - { 0, 0, NULL, NULL }, /* 6587 */ - { 0, 0, NULL, NULL }, /* 6588 */ - { 0, 0, NULL, NULL }, /* 6589 */ - { 0, 0, NULL, NULL }, /* 6590 */ - { 0, 0, NULL, NULL }, /* 6591 */ - { 0, 0, NULL, NULL }, /* 6592 */ - { 0, 0, NULL, NULL }, /* 6593 */ - { 0, 0, NULL, NULL }, /* 6594 */ - { 0, 0, NULL, NULL }, /* 6595 */ - { 0, 0, NULL, NULL }, /* 6596 */ - { 0, 0, NULL, NULL }, /* 6597 */ - { 0, 0, NULL, NULL }, /* 6598 */ - { 0, 0, NULL, NULL }, /* 6599 */ - { 0, 0, NULL, NULL }, /* 6600 */ - { 0, 0, NULL, NULL }, /* 6601 */ - { 0, 0, NULL, NULL }, /* 6602 */ - { 0, 0, NULL, NULL }, /* 6603 */ - { 0, 0, NULL, NULL }, /* 6604 */ - { 0, 0, NULL, NULL }, /* 6605 */ - { 0, 0, NULL, NULL }, /* 6606 */ - { 0, 0, NULL, NULL }, /* 6607 */ - { 0, 0, NULL, NULL }, /* 6608 */ - { 0, 0, NULL, NULL }, /* 6609 */ - { 0, 0, NULL, NULL }, /* 6610 */ - { 0, 0, NULL, NULL }, /* 6611 */ - { 0, 0, NULL, NULL }, /* 6612 */ - { 0, 0, NULL, NULL }, /* 6613 */ - { 0, 0, NULL, NULL }, /* 6614 */ - { 0, 0, NULL, NULL }, /* 6615 */ - { 0, 0, NULL, NULL }, /* 6616 */ - { 0, 0, NULL, NULL }, /* 6617 */ - { 0, 0, NULL, NULL }, /* 6618 */ - { 0, 0, NULL, NULL }, /* 6619 */ - { 0, 0, NULL, NULL }, /* 6620 */ - { 0, 0, NULL, NULL }, /* 6621 */ - { 0, 0, NULL, NULL }, /* 6622 */ - { 0, 0, NULL, NULL }, /* 6623 */ - { 0, 0, NULL, NULL }, /* 6624 */ - { 0, 0, NULL, NULL }, /* 6625 */ - { 0, 0, NULL, NULL }, /* 6626 */ - { 0, 0, NULL, NULL }, /* 6627 */ - { 0, 0, NULL, NULL }, /* 6628 */ - { 0, 0, NULL, NULL }, /* 6629 */ - { 0, 0, NULL, NULL }, /* 6630 */ - { 0, 0, NULL, NULL }, /* 6631 */ - { 0, 0, NULL, NULL }, /* 6632 */ - { 0, 0, NULL, NULL }, /* 6633 */ - { 0, 0, NULL, NULL }, /* 6634 */ - { 0, 0, NULL, NULL }, /* 6635 */ - { 0, 0, NULL, NULL }, /* 6636 */ - { 0, 0, NULL, NULL }, /* 6637 */ - { 0, 0, NULL, NULL }, /* 6638 */ - { 0, 0, NULL, NULL }, /* 6639 */ - { 0, 0, NULL, NULL }, /* 6640 */ - { 0, 0, NULL, NULL }, /* 6641 */ - { 0, 0, NULL, NULL }, /* 6642 */ - { 0, 0, NULL, NULL }, /* 6643 */ - { 0, 0, NULL, NULL }, /* 6644 */ - { 0, 0, NULL, NULL }, /* 6645 */ - { 0, 0, NULL, NULL }, /* 6646 */ - { 0, 0, NULL, NULL }, /* 6647 */ - { 0, 0, NULL, NULL }, /* 6648 */ - { 0, 0, NULL, NULL }, /* 6649 */ - { 0, 0, NULL, NULL }, /* 6650 */ - { 0, 0, NULL, NULL }, /* 6651 */ - { 0, 0, NULL, NULL }, /* 6652 */ - { 0, 0, NULL, NULL }, /* 6653 */ - { 0, 0, NULL, NULL }, /* 6654 */ - { 0, 0, NULL, NULL }, /* 6655 */ - { 0, 0, NULL, NULL }, /* 6656 */ - { 0, 0, NULL, NULL }, /* 6657 */ - { 0, 0, NULL, NULL }, /* 6658 */ - { 0, 0, NULL, NULL }, /* 6659 */ - { 0, 0, NULL, NULL }, /* 6660 */ - { 0, 0, NULL, NULL }, /* 6661 */ - { 0, 0, NULL, NULL }, /* 6662 */ - { 0, 0, NULL, NULL }, /* 6663 */ - { 0, 0, NULL, NULL }, /* 6664 */ - { 0, 0, NULL, NULL }, /* 6665 */ - { 0, 0, NULL, NULL }, /* 6666 */ - { 0, 0, NULL, NULL }, /* 6667 */ - { 0, 0, NULL, NULL }, /* 6668 */ - { 0, 0, NULL, NULL }, /* 6669 */ - { 0, 0, NULL, NULL }, /* 6670 */ - { 0, 0, NULL, NULL }, /* 6671 */ - { 0, 0, NULL, NULL }, /* 6672 */ - { 0, 0, NULL, NULL }, /* 6673 */ - { 0, 0, NULL, NULL }, /* 6674 */ - { 0, 0, NULL, NULL }, /* 6675 */ - { 0, 0, NULL, NULL }, /* 6676 */ - { 0, 0, NULL, NULL }, /* 6677 */ - { 0, 0, NULL, NULL }, /* 6678 */ - { 0, 0, NULL, NULL }, /* 6679 */ - { 0, 0, NULL, NULL }, /* 6680 */ - { 0, 0, NULL, NULL }, /* 6681 */ - { 0, 0, NULL, NULL }, /* 6682 */ - { 0, 0, NULL, NULL }, /* 6683 */ - { 0, 0, NULL, NULL }, /* 6684 */ - { 0, 0, NULL, NULL }, /* 6685 */ - { 0, 0, NULL, NULL }, /* 6686 */ - { 0, 0, NULL, NULL }, /* 6687 */ - { 0, 0, NULL, NULL }, /* 6688 */ - { 0, 0, NULL, NULL }, /* 6689 */ - { 0, 0, NULL, NULL }, /* 6690 */ - { 0, 0, NULL, NULL }, /* 6691 */ - { 0, 0, NULL, NULL }, /* 6692 */ - { 0, 0, NULL, NULL }, /* 6693 */ - { 0, 0, NULL, NULL }, /* 6694 */ - { 0, 0, NULL, NULL }, /* 6695 */ - { 0, 0, NULL, NULL }, /* 6696 */ - { 0, 0, NULL, NULL }, /* 6697 */ - { 0, 0, NULL, NULL }, /* 6698 */ - { 0, 0, NULL, NULL }, /* 6699 */ - { 0, 0, NULL, NULL }, /* 6700 */ - { 0, 0, NULL, NULL }, /* 6701 */ - { 0, 0, NULL, NULL }, /* 6702 */ - { 0, 0, NULL, NULL }, /* 6703 */ - { 0, 0, NULL, NULL }, /* 6704 */ - { 0, 0, NULL, NULL }, /* 6705 */ - { 0, 0, NULL, NULL }, /* 6706 */ - { 0, 0, NULL, NULL }, /* 6707 */ - { 0, 0, NULL, NULL }, /* 6708 */ - { 0, 0, NULL, NULL }, /* 6709 */ - { 0, 0, NULL, NULL }, /* 6710 */ - { 0, 0, NULL, NULL }, /* 6711 */ - { 0, 0, NULL, NULL }, /* 6712 */ - { 0, 0, NULL, NULL }, /* 6713 */ - { 0, 0, NULL, NULL }, /* 6714 */ - { 0, 0, NULL, NULL }, /* 6715 */ - { 0, 0, NULL, NULL }, /* 6716 */ - { 0, 0, NULL, NULL }, /* 6717 */ - { 0, 0, NULL, NULL }, /* 6718 */ - { 0, 0, NULL, NULL }, /* 6719 */ - { 0, 0, NULL, NULL }, /* 6720 */ - { 0, 0, NULL, NULL }, /* 6721 */ - { 0, 0, NULL, NULL }, /* 6722 */ - { 0, 0, NULL, NULL }, /* 6723 */ - { 0, 0, NULL, NULL }, /* 6724 */ - { 0, 0, NULL, NULL }, /* 6725 */ - { 0, 0, NULL, NULL }, /* 6726 */ - { 0, 0, NULL, NULL }, /* 6727 */ - { 0, 0, NULL, NULL }, /* 6728 */ - { 0, 0, NULL, NULL }, /* 6729 */ - { 0, 0, NULL, NULL }, /* 6730 */ - { 0, 0, NULL, NULL }, /* 6731 */ - { 0, 0, NULL, NULL }, /* 6732 */ - { 0, 0, NULL, NULL }, /* 6733 */ - { 0, 0, NULL, NULL }, /* 6734 */ - { 0, 0, NULL, NULL }, /* 6735 */ - { 0, 0, NULL, NULL }, /* 6736 */ - { 0, 0, NULL, NULL }, /* 6737 */ - { 0, 0, NULL, NULL }, /* 6738 */ - { 0, 0, NULL, NULL }, /* 6739 */ - { 0, 0, NULL, NULL }, /* 6740 */ - { 0, 0, NULL, NULL }, /* 6741 */ - { 0, 0, NULL, NULL }, /* 6742 */ - { 0, 0, NULL, NULL }, /* 6743 */ - { 0, 0, NULL, NULL }, /* 6744 */ - { 0, 0, NULL, NULL }, /* 6745 */ - { 0, 0, NULL, NULL }, /* 6746 */ - { 0, 0, NULL, NULL }, /* 6747 */ - { 0, 0, NULL, NULL }, /* 6748 */ - { 0, 0, NULL, NULL }, /* 6749 */ - { 0, 0, NULL, NULL }, /* 6750 */ - { 0, 0, NULL, NULL }, /* 6751 */ - { 0, 0, NULL, NULL }, /* 6752 */ - { 0, 0, NULL, NULL }, /* 6753 */ - { 0, 0, NULL, NULL }, /* 6754 */ - { 0, 0, NULL, NULL }, /* 6755 */ - { 0, 0, NULL, NULL }, /* 6756 */ - { 0, 0, NULL, NULL }, /* 6757 */ - { 0, 0, NULL, NULL }, /* 6758 */ - { 0, 0, NULL, NULL }, /* 6759 */ - { 0, 0, NULL, NULL }, /* 6760 */ - { 0, 0, NULL, NULL }, /* 6761 */ - { 0, 0, NULL, NULL }, /* 6762 */ - { 0, 0, NULL, NULL }, /* 6763 */ - { 0, 0, NULL, NULL }, /* 6764 */ - { 0, 0, NULL, NULL }, /* 6765 */ - { 0, 0, NULL, NULL }, /* 6766 */ - { 0, 0, NULL, NULL }, /* 6767 */ - { 0, 0, NULL, NULL }, /* 6768 */ - { 0, 0, NULL, NULL }, /* 6769 */ - { 0, 0, NULL, NULL }, /* 6770 */ - { 0, 0, NULL, NULL }, /* 6771 */ - { 0, 0, NULL, NULL }, /* 6772 */ - { 0, 0, NULL, NULL }, /* 6773 */ - { 0, 0, NULL, NULL }, /* 6774 */ - { 0, 0, NULL, NULL }, /* 6775 */ - { 0, 0, NULL, NULL }, /* 6776 */ - { 0, 0, NULL, NULL }, /* 6777 */ - { 0, 0, NULL, NULL }, /* 6778 */ - { 0, 0, NULL, NULL }, /* 6779 */ - { 0, 0, NULL, NULL }, /* 6780 */ - { 0, 0, NULL, NULL }, /* 6781 */ - { 0, 0, NULL, NULL }, /* 6782 */ - { 0, 0, NULL, NULL }, /* 6783 */ - { 0, 0, NULL, NULL }, /* 6784 */ - { 0, 0, NULL, NULL }, /* 6785 */ - { 0, 0, NULL, NULL }, /* 6786 */ - { 0, 0, NULL, NULL }, /* 6787 */ - { 0, 0, NULL, NULL }, /* 6788 */ - { 0, 0, NULL, NULL }, /* 6789 */ - { 0, 0, NULL, NULL }, /* 6790 */ - { 0, 0, NULL, NULL }, /* 6791 */ - { 0, 0, NULL, NULL }, /* 6792 */ - { 0, 0, NULL, NULL }, /* 6793 */ - { 0, 0, NULL, NULL }, /* 6794 */ - { 0, 0, NULL, NULL }, /* 6795 */ - { 0, 0, NULL, NULL }, /* 6796 */ - { 0, 0, NULL, NULL }, /* 6797 */ - { 0, 0, NULL, NULL }, /* 6798 */ - { 0, 0, NULL, NULL }, /* 6799 */ - { 0, 0, NULL, NULL }, /* 6800 */ - { 0, 0, NULL, NULL }, /* 6801 */ - { 0, 0, NULL, NULL }, /* 6802 */ - { 0, 0, NULL, NULL }, /* 6803 */ - { 0, 0, NULL, NULL }, /* 6804 */ - { 0, 0, NULL, NULL }, /* 6805 */ - { 0, 0, NULL, NULL }, /* 6806 */ - { 0, 0, NULL, NULL }, /* 6807 */ - { 0, 0, NULL, NULL }, /* 6808 */ - { 0, 0, NULL, NULL }, /* 6809 */ - { 0, 0, NULL, NULL }, /* 6810 */ - { 0, 0, NULL, NULL }, /* 6811 */ - { 0, 0, NULL, NULL }, /* 6812 */ - { 0, 0, NULL, NULL }, /* 6813 */ - { 0, 0, NULL, NULL }, /* 6814 */ - { 0, 0, NULL, NULL }, /* 6815 */ - { 0, 0, NULL, NULL }, /* 6816 */ - { 0, 0, NULL, NULL }, /* 6817 */ - { 0, 0, NULL, NULL }, /* 6818 */ - { 0, 0, NULL, NULL }, /* 6819 */ - { 0, 0, NULL, NULL }, /* 6820 */ - { 0, 0, NULL, NULL }, /* 6821 */ - { 0, 0, NULL, NULL }, /* 6822 */ - { 0, 0, NULL, NULL }, /* 6823 */ - { 0, 0, NULL, NULL }, /* 6824 */ - { 0, 0, NULL, NULL }, /* 6825 */ - { 0, 0, NULL, NULL }, /* 6826 */ - { 0, 0, NULL, NULL }, /* 6827 */ - { 0, 0, NULL, NULL }, /* 6828 */ - { 0, 0, NULL, NULL }, /* 6829 */ - { 0, 0, NULL, NULL }, /* 6830 */ - { 0, 0, NULL, NULL }, /* 6831 */ - { 0, 0, NULL, NULL }, /* 6832 */ - { 0, 0, NULL, NULL }, /* 6833 */ - { 0, 0, NULL, NULL }, /* 6834 */ - { 0, 0, NULL, NULL }, /* 6835 */ - { 0, 0, NULL, NULL }, /* 6836 */ - { 0, 0, NULL, NULL }, /* 6837 */ - { 0, 0, NULL, NULL }, /* 6838 */ - { 0, 0, NULL, NULL }, /* 6839 */ - { 0, 0, NULL, NULL }, /* 6840 */ - { 0, 0, NULL, NULL }, /* 6841 */ - { 0, 0, NULL, NULL }, /* 6842 */ - { 0, 0, NULL, NULL }, /* 6843 */ - { 0, 0, NULL, NULL }, /* 6844 */ - { 0, 0, NULL, NULL }, /* 6845 */ - { 0, 0, NULL, NULL }, /* 6846 */ - { 0, 0, NULL, NULL }, /* 6847 */ - { 0, 0, NULL, NULL }, /* 6848 */ - { 0, 0, NULL, NULL }, /* 6849 */ - { 0, 0, NULL, NULL }, /* 6850 */ - { 0, 0, NULL, NULL }, /* 6851 */ - { 0, 0, NULL, NULL }, /* 6852 */ - { 0, 0, NULL, NULL }, /* 6853 */ - { 0, 0, NULL, NULL }, /* 6854 */ - { 0, 0, NULL, NULL }, /* 6855 */ - { 0, 0, NULL, NULL }, /* 6856 */ - { 0, 0, NULL, NULL }, /* 6857 */ - { 0, 0, NULL, NULL }, /* 6858 */ - { 0, 0, NULL, NULL }, /* 6859 */ - { 0, 0, NULL, NULL }, /* 6860 */ - { 0, 0, NULL, NULL }, /* 6861 */ - { 0, 0, NULL, NULL }, /* 6862 */ - { 0, 0, NULL, NULL }, /* 6863 */ - { 0, 0, NULL, NULL }, /* 6864 */ - { 0, 0, NULL, NULL }, /* 6865 */ - { 0, 0, NULL, NULL }, /* 6866 */ - { 0, 0, NULL, NULL }, /* 6867 */ - { 0, 0, NULL, NULL }, /* 6868 */ - { 0, 0, NULL, NULL }, /* 6869 */ - { 0, 0, NULL, NULL }, /* 6870 */ - { 0, 0, NULL, NULL }, /* 6871 */ - { 0, 0, NULL, NULL }, /* 6872 */ - { 0, 0, NULL, NULL }, /* 6873 */ - { 0, 0, NULL, NULL }, /* 6874 */ - { 0, 0, NULL, NULL }, /* 6875 */ - { 0, 0, NULL, NULL }, /* 6876 */ - { 0, 0, NULL, NULL }, /* 6877 */ - { 0, 0, NULL, NULL }, /* 6878 */ - { 0, 0, NULL, NULL }, /* 6879 */ - { 0, 0, NULL, NULL }, /* 6880 */ - { 0, 0, NULL, NULL }, /* 6881 */ - { 0, 0, NULL, NULL }, /* 6882 */ - { 0, 0, NULL, NULL }, /* 6883 */ - { 0, 0, NULL, NULL }, /* 6884 */ - { 0, 0, NULL, NULL }, /* 6885 */ - { 0, 0, NULL, NULL }, /* 6886 */ - { 0, 0, NULL, NULL }, /* 6887 */ - { 0, 0, NULL, NULL }, /* 6888 */ - { 0, 0, NULL, NULL }, /* 6889 */ - { 0, 0, NULL, NULL }, /* 6890 */ - { 0, 0, NULL, NULL }, /* 6891 */ - { 0, 0, NULL, NULL }, /* 6892 */ - { 0, 0, NULL, NULL }, /* 6893 */ - { 0, 0, NULL, NULL }, /* 6894 */ - { 0, 0, NULL, NULL }, /* 6895 */ - { 0, 0, NULL, NULL }, /* 6896 */ - { 0, 0, NULL, NULL }, /* 6897 */ - { 0, 0, NULL, NULL }, /* 6898 */ - { 0, 0, NULL, NULL }, /* 6899 */ - { 0, 0, NULL, NULL }, /* 6900 */ - { 0, 0, NULL, NULL }, /* 6901 */ - { 0, 0, NULL, NULL }, /* 6902 */ - { 0, 0, NULL, NULL }, /* 6903 */ - { 0, 0, NULL, NULL }, /* 6904 */ - { 0, 0, NULL, NULL }, /* 6905 */ - { 0, 0, NULL, NULL }, /* 6906 */ - { 0, 0, NULL, NULL }, /* 6907 */ - { 0, 0, NULL, NULL }, /* 6908 */ - { 0, 0, NULL, NULL }, /* 6909 */ - { 0, 0, NULL, NULL }, /* 6910 */ - { 0, 0, NULL, NULL }, /* 6911 */ - { 0, 0, NULL, NULL }, /* 6912 */ - { 0, 0, NULL, NULL }, /* 6913 */ - { 0, 0, NULL, NULL }, /* 6914 */ - { 0, 0, NULL, NULL }, /* 6915 */ - { 0, 0, NULL, NULL }, /* 6916 */ - { 0, 0, NULL, NULL }, /* 6917 */ - { 0, 0, NULL, NULL }, /* 6918 */ - { 0, 0, NULL, NULL }, /* 6919 */ - { 0, 0, NULL, NULL }, /* 6920 */ - { 0, 0, NULL, NULL }, /* 6921 */ - { 0, 0, NULL, NULL }, /* 6922 */ - { 0, 0, NULL, NULL }, /* 6923 */ - { 0, 0, NULL, NULL }, /* 6924 */ - { 0, 0, NULL, NULL }, /* 6925 */ - { 0, 0, NULL, NULL }, /* 6926 */ - { 0, 0, NULL, NULL }, /* 6927 */ - { 0, 0, NULL, NULL }, /* 6928 */ - { 0, 0, NULL, NULL }, /* 6929 */ - { 0, 0, NULL, NULL }, /* 6930 */ - { 0, 0, NULL, NULL }, /* 6931 */ - { 0, 0, NULL, NULL }, /* 6932 */ - { 0, 0, NULL, NULL }, /* 6933 */ - { 0, 0, NULL, NULL }, /* 6934 */ - { 0, 0, NULL, NULL }, /* 6935 */ - { 0, 0, NULL, NULL }, /* 6936 */ - { 0, 0, NULL, NULL }, /* 6937 */ - { 0, 0, NULL, NULL }, /* 6938 */ - { 0, 0, NULL, NULL }, /* 6939 */ - { 0, 0, NULL, NULL }, /* 6940 */ - { 0, 0, NULL, NULL }, /* 6941 */ - { 0, 0, NULL, NULL }, /* 6942 */ - { 0, 0, NULL, NULL }, /* 6943 */ - { 0, 0, NULL, NULL }, /* 6944 */ - { 0, 0, NULL, NULL }, /* 6945 */ - { 0, 0, NULL, NULL }, /* 6946 */ - { 0, 0, NULL, NULL }, /* 6947 */ - { 0, 0, NULL, NULL }, /* 6948 */ - { 0, 0, NULL, NULL }, /* 6949 */ - { 0, 0, NULL, NULL }, /* 6950 */ - { 0, 0, NULL, NULL }, /* 6951 */ - { 0, 0, NULL, NULL }, /* 6952 */ - { 0, 0, NULL, NULL }, /* 6953 */ - { 0, 0, NULL, NULL }, /* 6954 */ - { 0, 0, NULL, NULL }, /* 6955 */ - { 0, 0, NULL, NULL }, /* 6956 */ - { 0, 0, NULL, NULL }, /* 6957 */ - { 0, 0, NULL, NULL }, /* 6958 */ - { 0, 0, NULL, NULL }, /* 6959 */ - { 0, 0, NULL, NULL }, /* 6960 */ - { 0, 0, NULL, NULL }, /* 6961 */ - { 0, 0, NULL, NULL }, /* 6962 */ - { 0, 0, NULL, NULL }, /* 6963 */ - { 0, 0, NULL, NULL }, /* 6964 */ - { 0, 0, NULL, NULL }, /* 6965 */ - { 0, 0, NULL, NULL }, /* 6966 */ - { 0, 0, NULL, NULL }, /* 6967 */ - { 0, 0, NULL, NULL }, /* 6968 */ - { 0, 0, NULL, NULL }, /* 6969 */ - { 0, 0, NULL, NULL }, /* 6970 */ - { 0, 0, NULL, NULL }, /* 6971 */ - { 0, 0, NULL, NULL }, /* 6972 */ - { 0, 0, NULL, NULL }, /* 6973 */ - { 0, 0, NULL, NULL }, /* 6974 */ - { 0, 0, NULL, NULL }, /* 6975 */ - { 0, 0, NULL, NULL }, /* 6976 */ - { 0, 0, NULL, NULL }, /* 6977 */ - { 0, 0, NULL, NULL }, /* 6978 */ - { 0, 0, NULL, NULL }, /* 6979 */ - { 0, 0, NULL, NULL }, /* 6980 */ - { 0, 0, NULL, NULL }, /* 6981 */ - { 0, 0, NULL, NULL }, /* 6982 */ - { 0, 0, NULL, NULL }, /* 6983 */ - { 0, 0, NULL, NULL }, /* 6984 */ - { 0, 0, NULL, NULL }, /* 6985 */ - { 0, 0, NULL, NULL }, /* 6986 */ - { 0, 0, NULL, NULL }, /* 6987 */ - { 0, 0, NULL, NULL }, /* 6988 */ - { 0, 0, NULL, NULL }, /* 6989 */ - { 0, 0, NULL, NULL }, /* 6990 */ - { 0, 0, NULL, NULL }, /* 6991 */ - { 0, 0, NULL, NULL }, /* 6992 */ - { 0, 0, NULL, NULL }, /* 6993 */ - { 0, 0, NULL, NULL }, /* 6994 */ - { 0, 0, NULL, NULL }, /* 6995 */ - { 0, 0, NULL, NULL }, /* 6996 */ - { 0, 0, NULL, NULL }, /* 6997 */ - { 0, 0, NULL, NULL }, /* 6998 */ - { 0, 0, NULL, NULL }, /* 6999 */ /* end of Linux N32 */ +#include "syscallent-compat.h" +#include "syscallent-o32.h" +#include "syscallent-n64.h" +#include "syscallent-n32.h" diff --git a/linux/mtd-abi.h b/linux/mtd-abi.h index 576e8c95..b197861f 100644 --- a/linux/mtd-abi.h +++ b/linux/mtd-abi.h @@ -115,7 +115,7 @@ struct mtd_write_req { #define MTD_NANDECC_PLACE 1 // Use the given placement in the structure (YAFFS1 legacy mode) #define MTD_NANDECC_AUTOPLACE 2 // Use the default placement scheme #define MTD_NANDECC_PLACEONLY 3 // Use the given placement in the structure (Do not store ecc result on read) -#define MTD_NANDECC_AUTOPL_USR 4 // Use the given autoplacement scheme rather than using the default +#define MTD_NANDECC_AUTOPL_USR 4 // Use the given autoplacement scheme rather than using the default /* OTP mode selection */ #define MTD_OTP_OFF 0 diff --git a/linux/or1k/ioctlent.h.in b/linux/or1k/ioctlent.h.in new file mode 100644 index 00000000..52ac99ba --- /dev/null +++ b/linux/or1k/ioctlent.h.in @@ -0,0 +1 @@ +#include "../i386/ioctlent.h.in" diff --git a/linux/or1k/syscallent.h b/linux/or1k/syscallent.h new file mode 100644 index 00000000..d1122126 --- /dev/null +++ b/linux/or1k/syscallent.h @@ -0,0 +1,262 @@ + { 2, 0, sys_io_setup, "io_setup" }, /* 0 */ + { 1, 0, sys_io_destroy, "io_destroy" }, /* 1 */ + { 3, 0, sys_io_submit, "io_submit" }, /* 2 */ + { 3, 0, sys_io_cancel, "io_cancel" }, /* 3 */ + { 5, 0, sys_io_getevents, "io_getevents" }, /* 4 */ + { 5, TF, sys_setxattr, "setxattr" }, /* 5 */ + { 5, TF, sys_setxattr, "lsetxattr" }, /* 6 */ + { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 7 */ + { 4, TF, sys_getxattr, "getxattr" }, /* 8 */ + { 4, TF, sys_getxattr, "lgetxattr" }, /* 9 */ + { 4, TD, sys_fgetxattr, "fgetxattr" }, /* 10 */ + { 3, TF, sys_listxattr, "listxattr" }, /* 11 */ + { 3, TF, sys_listxattr, "llistxattr" }, /* 12 */ + { 3, TD, sys_flistxattr, "flistxattr" }, /* 13 */ + { 2, TF, sys_removexattr, "removexattr" }, /* 14 */ + { 2, TF, sys_removexattr, "lremovexattr" }, /* 15 */ + { 2, TD, sys_fremovexattr, "fremovexattr" }, /* 16 */ + { 2, TF, sys_getcwd, "getcwd" }, /* 17 */ + { 4, 0, sys_lookup_dcookie, "lookup_dcookie" }, /* 18 */ + { 2, TD, sys_eventfd2, "eventfd2" }, /* 19 */ + { 1, TD, sys_epoll_create1, "epoll_create1" }, /* 20 */ + { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 21 */ + { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 22 */ + { 1, TD, sys_dup, "dup" }, /* 23 */ + { 3, TD, sys_dup3, "dup3" }, /* 24 */ + { 3, TD, sys_fcntl, "fcntl64" }, /* 25 */ + { 1, TD, sys_inotify_init1, "inotify_init1" }, /* 26 */ + { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 27 */ + { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 28 */ + { 3, TD, sys_ioctl, "ioctl" }, /* 29 */ + { 3, 0, sys_ioprio_set, "ioprio_set" }, /* 30 */ + { 2, 0, sys_ioprio_get, "ioprio_get" }, /* 31 */ + { 2, TD, sys_flock, "flock" }, /* 32 */ + { 4, TD|TF, sys_mknodat, "mknodat" }, /* 33 */ + { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 34 */ + { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 35 */ + { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 36 */ + { 5, TD|TF, sys_linkat, "linkat" }, /* 37 */ + { 4, TD|TF, sys_renameat, "renameat" }, /* 38 */ + { 2, TF, sys_umount2, "umount" }, /* 39 */ + { 5, TF, sys_mount, "mount" }, /* 40 */ + { 2, TF, sys_pivotroot, "pivot_root" }, /* 41 */ + { 3, 0, sys_nfsservctl, "nfsservctl" }, /* 42 */ + { 3, TF, sys_statfs64, "statfs64" }, /* 43 */ + { 3, TD, sys_fstatfs64, "fstatfs64" }, /* 44 */ + { 3, TF, sys_truncate64, "truncate64" }, /* 45 */ + { 3, TD, sys_ftruncate64, "ftruncate64" }, /* 46 */ + { 6, TD, sys_fallocate, "fallocate" }, /* 47 */ + { 3, TD|TF, sys_faccessat, "faccessat" }, /* 48 */ + { 1, TF, sys_chdir, "chdir" }, /* 49 */ + { 1, TD, sys_fchdir, "fchdir" }, /* 50 */ + { 1, TF, sys_chroot, "chroot" }, /* 51 */ + { 2, TD, sys_fchmod, "fchmod" }, /* 52 */ + { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 53 */ + { 5, TD|TF, sys_fchownat, "fchownat" }, /* 54 */ + { 3, TD, sys_fchown, "fchown" }, /* 55 */ + { 4, TD|TF, sys_openat, "openat" }, /* 56 */ + { 1, TD, sys_close, "close" }, /* 57 */ + { 0, 0, sys_vhangup, "vhangup" }, /* 58 */ + { 2, TD, sys_pipe2, "pipe2" }, /* 59 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 60 */ + { 3, TD, sys_getdents64, "getdents64" }, /* 61 */ + { 5, TD, sys_llseek, "_llseek" }, /* 62 */ + { 3, TD, sys_read, "read" }, /* 63 */ + { 3, TD, sys_write, "write" }, /* 64 */ + { 3, TD, sys_readv, "readv" }, /* 65 */ + { 3, TD, sys_writev, "writev" }, /* 66 */ + { 5, TD, sys_pread, "pread64" }, /* 67 */ + { 5, TD, sys_pwrite, "pwrite64" }, /* 68 */ + { 5, TD, sys_preadv, "preadv" }, /* 69 */ + { 5, TD, sys_pwritev, "pwritev" }, /* 70 */ + { 4, TD|TN, sys_sendfile64, "sendfile" }, /* 71 */ + { 6, TD, sys_pselect6, "pselect6" }, /* 72 */ + { 5, TD, sys_ppoll, "ppoll" }, /* 73 */ + { 4, TD|TS, sys_signalfd4, "signalfd4" }, /* 74 */ + { 4, TD, sys_vmsplice, "vmsplice" }, /* 75 */ + { 6, TD, sys_splice, "splice" }, /* 76 */ + { 4, TD, sys_tee, "tee" }, /* 77 */ + { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 78 */ + { 4, TD|TF, sys_newfstatat, "fstatat64" }, /* 79 */ + { 2, TD, sys_fstat64, "fstat64" }, /* 80 */ + { 0, 0, sys_sync, "sync" }, /* 81 */ + { 1, TD, sys_fsync, "fsync" }, /* 82 */ + { 1, TD, sys_fdatasync, "fdatasync" }, /* 83 */ + { 6, TD, sys_sync_file_range, "sync_file_range" }, /* 84 */ + { 2, TD, sys_timerfd_create, "timerfd_create" }, /* 85 */ + { 4, TD, sys_timerfd_settime, "timerfd_settime" }, /* 86 */ + { 2, TD, sys_timerfd_gettime, "timerfd_gettime" }, /* 87 */ + { 4, TD|TF, sys_utimensat, "utimensat" }, /* 88 */ + { 1, TF, sys_acct, "acct" }, /* 89 */ + { 2, 0, sys_capget, "capget" }, /* 90 */ + { 2, 0, sys_capset, "capset" }, /* 91 */ + { 1, 0, sys_personality, "personality" }, /* 92 */ + { 1, TP, sys_exit, "exit" }, /* 93 */ + { 1, TP, sys_exit, "exit_group" }, /* 94 */ + { 5, TP, sys_waitid, "waitid" }, /* 95 */ + { 1, 0, sys_set_tid_address, "set_tid_address" }, /* 96 */ + { 1, TP, sys_unshare, "unshare" }, /* 97 */ + { 6, 0, sys_futex, "futex" }, /* 98 */ + { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 99 */ + { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 100 */ + { 2, 0, sys_nanosleep, "nanosleep" }, /* 101 */ + { 2, 0, sys_getitimer, "getitimer" }, /* 102 */ + { 3, 0, sys_setitimer, "setitimer" }, /* 103 */ + { 4, 0, sys_kexec_load, "kexec_load" }, /* 104 */ + { 3, 0, sys_init_module, "init_module" }, /* 105 */ + { 2, 0, sys_delete_module, "delete_module" }, /* 106 */ + { 3, 0, sys_timer_create, "timer_create" }, /* 107 */ + { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 108 */ + { 1, 0, sys_timer_getoverrun, "timer_getoverrun" }, /* 109 */ + { 4, 0, sys_timer_settime, "timer_settime" }, /* 110 */ + { 1, 0, sys_timer_delete, "timer_delete" }, /* 111 */ + { 2, 0, sys_clock_settime, "clock_settime" }, /* 112 */ + { 2, 0, sys_clock_gettime, "clock_gettime" }, /* 113 */ + { 2, 0, sys_clock_getres, "clock_getres" }, /* 114 */ + { 4, 0, sys_clock_nanosleep, "clock_nanosleep" }, /* 115 */ + { 3, 0, sys_syslog, "syslog" }, /* 116 */ + { 4, 0, sys_ptrace, "ptrace" }, /* 117 */ + { 2, 0, sys_sched_setparam, "sched_setparam" }, /* 118 */ + { 3, 0, sys_sched_setscheduler, "sched_setscheduler" }, /* 119 */ + { 1, 0, sys_sched_getscheduler, "sched_getscheduler" }, /* 120 */ + { 2, 0, sys_sched_getparam, "sched_getparam" }, /* 121 */ + { 3, 0, sys_sched_setaffinity, "sched_setaffinity" }, /* 122 */ + { 3, 0, sys_sched_getaffinity, "sched_getaffinity" }, /* 123 */ + { 0, 0, sys_sched_yield, "sched_yield" }, /* 124 */ + { 1, 0, sys_sched_get_priority_max, "sched_get_priority_max"}, /* 125 */ + { 1, 0, sys_sched_get_priority_min, "sched_get_priority_min"}, /* 126 */ + { 2, 0, sys_sched_rr_get_interval, "sched_rr_get_interval" }, /* 127 */ + { 0, 0, sys_restart_syscall, "restart_syscall" }, /* 128 */ + { 2, TS, sys_kill, "kill" }, /* 129 */ + { 2, TS, sys_kill, "tkill" }, /* 130 */ + { 3, TS, sys_tgkill, "tgkill" }, /* 131 */ + { 2, TS, sys_sigaltstack, "sigaltstack" }, /* 132 */ + { 2, TS, sys_rt_sigsuspend, "rt_sigsuspend" }, /* 133 */ + { 4, TS, sys_rt_sigaction, "rt_sigaction" }, /* 134 */ + { 4, TS, sys_rt_sigprocmask, "rt_sigprocmask" }, /* 135 */ + { 2, TS, sys_rt_sigpending, "rt_sigpending" }, /* 136 */ + { 4, TS, sys_rt_sigtimedwait, "rt_sigtimedwait" }, /* 137 */ + { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo" }, /* 138 */ + { 0, TS, sys_rt_sigreturn, "rt_sigreturn" }, /* 139 */ + { 3, 0, sys_setpriority, "setpriority" }, /* 140 */ + { 2, 0, sys_getpriority, "getpriority" }, /* 141 */ + { 4, 0, sys_reboot, "reboot" }, /* 142 */ + { 2, 0, sys_setregid, "setregid" }, /* 143 */ + { 1, 0, sys_setgid, "setgid" }, /* 144 */ + { 2, 0, sys_setreuid, "setreuid" }, /* 145 */ + { 1, 0, sys_setuid, "setuid" }, /* 146 */ + { 3, 0, sys_setresuid, "setresuid" }, /* 147 */ + { 3, 0, sys_getresuid, "getresuid" }, /* 148 */ + { 3, 0, sys_setresgid, "setresgid" }, /* 149 */ + { 3, 0, sys_getresgid, "getresgid" }, /* 150 */ + { 1, NF, sys_setfsuid, "setfsuid" }, /* 151 */ + { 1, NF, sys_setfsgid, "setfsgid" }, /* 152 */ + { 1, 0, sys_times, "times" }, /* 153 */ + { 2, 0, sys_setpgid, "setpgid" }, /* 154 */ + { 1, 0, sys_getpgid, "getpgid" }, /* 155 */ + { 1, 0, sys_getsid, "getsid" }, /* 156 */ + { 0, 0, sys_setsid, "setsid" }, /* 157 */ + { 2, 0, sys_getgroups, "getgroups" }, /* 158 */ + { 2, 0, sys_setgroups, "setgroups" }, /* 159 */ + { 1, 0, sys_uname, "uname" }, /* 160 */ + { 2, 0, sys_sethostname, "sethostname" }, /* 161 */ + { 2, 0, sys_setdomainname, "setdomainname" }, /* 162 */ + { 2, 0, sys_getrlimit, "oldgetrlimit" }, /* 163 */ + { 2, 0, sys_setrlimit, "setrlimit" }, /* 164 */ + { 2, 0, sys_getrusage, "getrusage" }, /* 165 */ + { 1, 0, sys_umask, "umask" }, /* 166 */ + { 5, 0, sys_prctl, "prctl" }, /* 167 */ + { 3, 0, sys_getcpu, "getcpu" }, /* 168 */ + { 2, 0, sys_gettimeofday, "gettimeofday" }, /* 169 */ + { 2, 0, sys_settimeofday, "settimeofday" }, /* 170 */ + { 1, 0, sys_adjtimex, "adjtimex" }, /* 171 */ + { 0, 0, sys_getpid, "getpid" }, /* 172 */ + { 0, 0, sys_getppid, "getppid" }, /* 173 */ + { 0, NF, sys_getuid, "getuid" }, /* 174 */ + { 0, NF, sys_geteuid, "geteuid" }, /* 175 */ + { 0, NF, sys_getgid, "getgid" }, /* 176 */ + { 0, NF, sys_getegid, "getegid" }, /* 177 */ + { 0, 0, sys_gettid, "gettid" }, /* 178 */ + { 1, 0, sys_sysinfo, "sysinfo" }, /* 179 */ + { 4, 0, sys_mq_open, "mq_open" }, /* 180 */ + { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 181 */ + { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 182 */ + { 5, 0, sys_mq_timedreceive, "mq_timedreceive" }, /* 183 */ + { 2, 0, sys_mq_notify, "mq_notify" }, /* 184 */ + { 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 185 */ + { 4, TI, sys_msgget, "msgget" }, /* 186 */ + { 4, TI, sys_msgctl, "msgctl" }, /* 187 */ + { 4, TI, sys_msgrcv, "msgrcv" }, /* 188 */ + { 4, TI, sys_msgsnd, "msgsnd" }, /* 189 */ + { 4, TI, sys_semget, "semget" }, /* 190 */ + { 4, TI, sys_semctl, "semctl" }, /* 191 */ + { 5, TI, sys_semtimedop, "semtimedop" }, /* 192 */ + { 4, TI, sys_semop, "semop" }, /* 193 */ + { 4, TI, sys_shmget, "shmget" }, /* 194 */ + { 4, TI, sys_shmctl, "shmctl" }, /* 195 */ + { 4, TI, sys_shmat, "shmat" }, /* 196 */ + { 4, TI, sys_shmdt, "shmdt" }, /* 197 */ + { 3, TN, sys_socket, "socket" }, /* 198 */ + { 4, TN, sys_socketpair, "socketpair" }, /* 199 */ + { 3, TN, sys_bind, "bind" }, /* 200 */ + { 2, TN, sys_listen, "listen" }, /* 201 */ + { 3, TN, sys_accept, "accept" }, /* 202 */ + { 3, TN, sys_connect, "connect" }, /* 203 */ + { 3, TN, sys_getsockname, "getsockname" }, /* 204 */ + { 3, TN, sys_getpeername, "getpeername" }, /* 205 */ + { 6, TN, sys_sendto, "sendto" }, /* 206 */ + { 6, TN, sys_recvfrom, "recvfrom" }, /* 207 */ + { 5, TN, sys_setsockopt, "setsockopt" }, /* 208 */ + { 5, TN, sys_getsockopt, "getsockopt" }, /* 209 */ + { 2, TN, sys_shutdown, "shutdown" }, /* 210 */ + { 3, TN, sys_sendmsg, "sendmsg" }, /* 211 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 212 */ + { 4, TD, sys_readahead, "readahead" }, /* 213 */ + { 1, TM, sys_brk, "brk" }, /* 214 */ + { 2, TM, sys_munmap, "munmap" }, /* 215 */ + { 5, TM, sys_mremap, "mremap" }, /* 216 */ + { 5, 0, sys_add_key, "add_key" }, /* 217 */ + { 4, 0, sys_request_key, "request_key" }, /* 218 */ + { 5, 0, sys_keyctl, "keyctl" }, /* 219 */ + { 5, TP, sys_clone, "clone" }, /* 220 */ + { 3, TF|TP, sys_execve, "execve" }, /* 221 */ + { 6, TD|TM, sys_mmap_pgoff, "mmap2" }, /* 222 */ + { 6, TD, sys_fadvise64_64, "fadvise64_64" }, /* 223 */ + { 2, TF, sys_swapon, "swapon" }, /* 224 */ + { 1, TF, sys_swapoff, "swapoff" }, /* 225 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 226 */ + { 3, TM, sys_msync, "msync" }, /* 227 */ + { 2, TM, sys_mlock, "mlock" }, /* 228 */ + { 2, TM, sys_munlock, "munlock" }, /* 229 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 230 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 231 */ + { 3, TM, sys_mincore, "mincore" }, /* 232 */ + { 3, TM, sys_madvise, "madvise" }, /* 233 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages" }, /* 234 */ + { 6, TM, sys_mbind, "mbind" }, /* 235 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 236 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 237 */ + { 5, TM, sys_migrate_pages, "migrate_pages" }, /* 238 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 239 */ + { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo" }, /* 240 */ + { 5, TD, sys_perf_event_open, "perf_event_open" }, /* 241 */ + { 4, TN, sys_accept4, "accept4" }, /* 242 */ + { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 243 */ + { 6, NF, sys_or1k_atomic, "or1k_atomic" }, /* 244 */ + + [245 ... 259] = { }, + + { 4, TP, sys_wait4, "wait4" }, /* 260 */ + { 4, 0, sys_prlimit64, "prlimit64" }, /* 261 */ + { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 262 */ + { 5, TD|TF, sys_fanotify_mark, "fanotify_mark" }, /* 263 */ + { 5, TD|TF, sys_name_to_handle_at, "name_to_handle_at" }, /* 264 */ + { 3, TD, sys_open_by_handle_at, "open_by_handle_at" }, /* 265 */ + { 2, 0, sys_clock_adjtime, "clock_adjtime" }, /* 266 */ + { 1, TD, sys_syncfs, "syncfs" }, /* 267 */ + { 2, TD, sys_setns, "setns" }, /* 268 */ + { 4, TN, sys_sendmmsg, "sendmmsg" }, /* 269 */ + { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 270 */ + { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 271 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 272 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 273 */ diff --git a/linux/powerpc/ioctlent.h.in b/linux/powerpc/ioctlent.h.in index 0870704f..510f5aa4 100644 --- a/linux/powerpc/ioctlent.h.in +++ b/linux/powerpc/ioctlent.h.in @@ -1,36 +1,18 @@ - {"asm-generic/ioctls.h", "TCGETS", 0x5401}, - {"asm-generic/ioctls.h", "TCSETS", 0x5402}, - {"asm-generic/ioctls.h", "TCSETSW", 0x5403}, - {"asm-generic/ioctls.h", "TCSETSF", 0x5404}, - {"asm-generic/ioctls.h", "TCGETA", 0x5405}, - {"asm-generic/ioctls.h", "TCSETA", 0x5406}, - {"asm-generic/ioctls.h", "TCSETAW", 0x5407}, - {"asm-generic/ioctls.h", "TCSETAF", 0x5408}, - {"asm-generic/ioctls.h", "TCSBRK", 0x5409}, - {"asm-generic/ioctls.h", "TCXONC", 0x540a}, - {"asm-generic/ioctls.h", "TCFLSH", 0x540b}, {"asm/ioctls.h", "TIOCEXCL", 0x540c}, {"asm/ioctls.h", "TIOCNXCL", 0x540d}, {"asm/ioctls.h", "TIOCSCTTY", 0x540e}, - {"asm-generic/ioctls.h", "TIOCGPGRP", 0x540f}, - {"asm-generic/ioctls.h", "TIOCSPGRP", 0x5410}, - {"asm-generic/ioctls.h", "TIOCOUTQ", 0x5411}, {"asm/ioctls.h", "TIOCSTI", 0x5412}, - {"asm-generic/ioctls.h", "TIOCGWINSZ", 0x5413}, - {"asm-generic/ioctls.h", "TIOCSWINSZ", 0x5414}, {"asm/ioctls.h", "TIOCMGET", 0x5415}, {"asm/ioctls.h", "TIOCMBIS", 0x5416}, {"asm/ioctls.h", "TIOCMBIC", 0x5417}, {"asm/ioctls.h", "TIOCMSET", 0x5418}, {"asm/ioctls.h", "TIOCGSOFTCAR", 0x5419}, {"asm/ioctls.h", "TIOCSSOFTCAR", 0x541a}, - {"asm-generic/ioctls.h", "FIONREAD", 0x541b}, {"asm/ioctls.h", "TIOCLINUX", 0x541c}, {"asm/ioctls.h", "TIOCCONS", 0x541d}, {"asm/ioctls.h", "TIOCGSERIAL", 0x541e}, {"asm/ioctls.h", "TIOCSSERIAL", 0x541f}, {"asm/ioctls.h", "TIOCPKT", 0x5420}, - {"asm-generic/ioctls.h", "FIONBIO", 0x5421}, {"asm/ioctls.h", "TIOCNOTTY", 0x5422}, {"asm/ioctls.h", "TIOCSETD", 0x5423}, {"asm/ioctls.h", "TIOCGETD", 0x5424}, @@ -38,22 +20,11 @@ {"asm/ioctls.h", "TIOCSBRK", 0x5427}, {"asm/ioctls.h", "TIOCCBRK", 0x5428}, {"asm/ioctls.h", "TIOCGSID", 0x5429}, - {"asm-generic/ioctls.h", "TCGETS2", 0x542a}, - {"asm-generic/ioctls.h", "TCSETS2", 0x542b}, - {"asm-generic/ioctls.h", "TCSETSW2", 0x542c}, - {"asm-generic/ioctls.h", "TCSETSF2", 0x542d}, {"asm/ioctls.h", "TIOCGRS485", 0x542e}, {"asm/ioctls.h", "TIOCSRS485", 0x542f}, {"asm/ioctls.h", "TIOCGPTN", 0x5430}, {"asm/ioctls.h", "TIOCSPTLCK", 0x5431}, - {"asm-generic/ioctls.h", "TCGETX", 0x5432}, - {"asm-generic/ioctls.h", "TCSETX", 0x5433}, - {"asm-generic/ioctls.h", "TCSETXF", 0x5434}, - {"asm-generic/ioctls.h", "TCSETXW", 0x5435}, {"asm/ioctls.h", "TIOCSIG", 0x5436}, - {"asm-generic/ioctls.h", "FIONCLEX", 0x5450}, - {"asm-generic/ioctls.h", "FIOCLEX", 0x5451}, - {"asm-generic/ioctls.h", "FIOASYNC", 0x5452}, {"asm/ioctls.h", "TIOCSERCONFIG", 0x5453}, {"asm/ioctls.h", "TIOCSERGWILD", 0x5454}, {"asm/ioctls.h", "TIOCSERSWILD", 0x5455}, @@ -65,7 +36,6 @@ {"asm/ioctls.h", "TIOCSERSETMULTI", 0x545b}, {"asm/ioctls.h", "TIOCMIWAIT", 0x545c}, {"asm/ioctls.h", "TIOCGICOUNT", 0x545d}, - {"asm-generic/ioctls.h", "FIOQSIZE", 0x5460}, {"asm/ioctls.h", "FIOCLEX", 0x6601}, {"asm/ioctls.h", "FIONCLEX", 0x6602}, {"asm/ioctls.h", "FIOASYNC", 0x667d}, diff --git a/linux/powerpc/ioctlent1.h b/linux/powerpc/ioctlent1.h index 18d31b54..72eeaf19 100644 --- a/linux/powerpc/ioctlent1.h +++ b/linux/powerpc/ioctlent1.h @@ -1 +1 @@ -#include "linux/ioctlent.h" +#include "ioctlent.h" diff --git a/linux/powerpc/syscallent.h b/linux/powerpc/syscallent.h index 35f3b391..d84a8f48 100644 --- a/linux/powerpc/syscallent.h +++ b/linux/powerpc/syscallent.h @@ -43,9 +43,9 @@ { 3, TF, sys_mknod, "mknod" }, /* 14 */ { 2, TF, sys_chmod, "chmod" }, /* 15 */ { 3, TF, sys_chown, "lchown" }, /* 16 */ - { 0, 0, sys_break, "break" }, /* 17 */ + { 0, TM, sys_break, "break" }, /* 17 */ { 2, TF, sys_oldstat, "oldstat" }, /* 18 */ - { 3, TF, sys_lseek, "lseek" }, /* 19 */ + { 3, TD, sys_lseek, "lseek" }, /* 19 */ { 0, 0, sys_getpid, "getpid" }, /* 20 */ { 5, TF, sys_mount, "mount" }, /* 21 */ { 1, TF, sys_umount, "oldumount" }, /* 22 */ @@ -71,7 +71,7 @@ { 1, TD, sys_pipe, "pipe" }, /* 42 */ { 1, 0, sys_times, "times" }, /* 43 */ { 0, 0, sys_prof, "prof" }, /* 44 */ - { 1, 0, sys_brk, "brk" }, /* 45 */ + { 1, TM, sys_brk, "brk" }, /* 45 */ { 1, 0, sys_setgid, "setgid" }, /* 46 */ { 0, NF, sys_getgid, "getgid" }, /* 47 */ { 3, TS, sys_signal, "signal" }, /* 48 */ @@ -116,8 +116,8 @@ { 2, TF, sys_swapon, "swapon" }, /* 87 */ { 4, 0, sys_reboot, "reboot" }, /* 88 */ { 3, TD, sys_readdir, "readdir" }, /* 89 */ - { 6, TD, sys_mmap, "mmap" }, /* 90 */ - { 2, 0, sys_munmap, "munmap" }, /* 91 */ + { 6, TD|TM, sys_mmap, "mmap" }, /* 90 */ + { 2, TM, sys_munmap, "munmap" }, /* 91 */ { 2, TF, sys_truncate, "truncate" }, /* 92 */ { 2, TD, sys_ftruncate, "ftruncate" }, /* 93 */ { 2, TD, sys_fchmod, "fchmod" }, /* 94 */ @@ -151,35 +151,35 @@ { 1, 0, sys_uname, "uname" }, /* 122 */ { 5, 0, printargs, "modify_ldt" }, /* 123 */ { 1, 0, sys_adjtimex, "adjtimex" }, /* 124 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 125 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 125 */ { 3, TS, sys_sigprocmask, "sigprocmask" }, /* 126 */ { 2, 0, sys_create_module, "create_module" }, /* 127 */ { 3, 0, sys_init_module, "init_module" }, /* 128 */ { 2, 0, sys_delete_module, "delete_module" }, /* 129 */ { 1, 0, sys_get_kernel_syms, "get_kernel_syms" }, /* 130 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 131 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 131 */ { 1, 0, sys_getpgid, "getpgid" }, /* 132 */ - { 1, TF, sys_fchdir, "fchdir" }, /* 133 */ + { 1, TD, sys_fchdir, "fchdir" }, /* 133 */ { 0, 0, sys_bdflush, "bdflush" }, /* 134 */ { 3, 0, sys_sysfs, "sysfs" }, /* 135 */ { 1, 0, sys_personality, "personality" }, /* 136 */ { 5, 0, sys_afs_syscall, "afs_syscall" }, /* 137 */ { 1, NF, sys_setfsuid, "setfsuid" }, /* 138 */ { 1, NF, sys_setfsgid, "setfsgid" }, /* 139 */ - { 5, TF, sys_llseek, "_llseek" }, /* 140 */ + { 5, TD, sys_llseek, "_llseek" }, /* 140 */ { 3, TD, sys_getdents, "getdents" }, /* 141 */ { 5, TD, sys_select, "select" }, /* 142 */ { 2, TD, sys_flock, "flock" }, /* 143 */ - { 3, 0, sys_msync, "msync" }, /* 144 */ + { 3, TM, sys_msync, "msync" }, /* 144 */ { 3, TD, sys_readv, "readv" }, /* 145 */ { 3, TD, sys_writev, "writev" }, /* 146 */ { 1, 0, sys_getsid, "getsid" }, /* 147 */ { 1, TD, sys_fdatasync, "fdatasync" }, /* 148 */ { 1, 0, sys_sysctl, "_sysctl" }, /* 149 */ - { 2, 0, sys_mlock, "mlock" }, /* 150 */ - { 2, 0, sys_munlock, "munlock" }, /* 151 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 152 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 153 */ + { 2, TM, sys_mlock, "mlock" }, /* 150 */ + { 2, TM, sys_munlock, "munlock" }, /* 151 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 152 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 153 */ { 2, 0, sys_sched_setparam, "sched_setparam" }, /* 154 */ { 2, 0, sys_sched_getparam, "sched_getparam" }, /* 155 */ { 3, 0, sys_sched_setscheduler, "sched_setscheduler" }, /* 156 */ @@ -189,7 +189,7 @@ { 1, 0, sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */ { 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */ { 2, 0, sys_nanosleep, "nanosleep" }, /* 162 */ - { 5, 0, sys_mremap, "mremap" }, /* 163 */ + { 5, TM, sys_mremap, "mremap" }, /* 163 */ { 3, 0, sys_setresuid, "setresuid" }, /* 164 */ { 3, 0, sys_getresuid, "getresuid" }, /* 165 */ { 5, 0, sys_query_module, "query_module" }, /* 166 */ @@ -218,7 +218,7 @@ { 0, TP, sys_vfork, "vfork" }, /* 189 */ { 2, 0, sys_getrlimit, "getrlimit" }, /* 190 */ { 5, TD, sys_readahead, "readahead" }, /* 190 */ - { 6, TD, sys_mmap, "mmap2" }, /* 192 */ + { 6, TD|TM, sys_mmap_4koff, "mmap2" }, /* 192 */ { 4, TF, sys_truncate64, "truncate64" }, /* 193 */ { 4, TD, sys_ftruncate64, "ftruncate64" }, /* 194 */ { 2, TF, sys_stat64, "stat64" }, /* 195 */ @@ -231,8 +231,8 @@ { 3, TD, sys_getdents64, "getdents64" }, /* 202 */ { 2, TF, sys_pivotroot, "pivot_root" }, /* 203 */ { 3, TD, sys_fcntl, "fcntl64" }, /* 204 */ - { 3, 0, sys_madvise, "madvise" }, /* 205 */ - { 3, 0, sys_mincore, "mincore" }, /* 206 */ + { 3, TM, sys_madvise, "madvise" }, /* 205 */ + { 3, TM, sys_mincore, "mincore" }, /* 206 */ { 0, 0, sys_gettid, "gettid" }, /* 207 */ { 2, TS, sys_kill, "tkill" }, /* 208 */ { 5, TF, sys_setxattr, "setxattr" }, /* 209 */ @@ -265,7 +265,7 @@ { 1, TD, sys_epoll_create, "epoll_create" }, /* 236 */ { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 237 */ { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 238 */ - { 5, 0, sys_remap_file_pages, "remap_file_pages" }, /* 239 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages" }, /* 239 */ { 3, 0, sys_timer_create, "timer_create" }, /* 240 */ { 4, 0, sys_timer_settime, "timer_settime" }, /* 241 */ { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 242 */ @@ -284,10 +284,10 @@ { 1, 0, printargs, "rtas" }, /* 255 */ { 5, 0, printargs, "debug_setcontext" }, /* 256 */ { 5, 0, sys_vserver, "vserver" }, /* 257 */ - { 5, 0, sys_migrate_pages, "migrate_pages" }, /* 258 */ - { 6, 0, sys_mbind, "mbind" }, /* 259 */ - { 5, 0, sys_get_mempolicy, "get_mempolicy" }, /* 260 */ - { 3, 0, sys_set_mempolicy, "set_mempolicy" }, /* 261 */ + { 5, TM, sys_migrate_pages, "migrate_pages" }, /* 258 */ + { 6, TM, sys_mbind, "mbind" }, /* 259 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 260 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 261 */ { 4, 0, sys_mq_open, "mq_open" }, /* 262 */ { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 263 */ { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 264 */ @@ -327,14 +327,14 @@ { 3, TD|TF, sys_faccessat, "faccessat" }, /* 298 */ { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 299 */ { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 300 */ - { 6, 0, sys_move_pages, "move_pages" }, /* 301 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 301 */ { 3, 0, sys_getcpu, "getcpu" }, /* 302 */ { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 303 */ { 4, TD|TF, sys_utimensat, "utimensat" }, /* 304 */ { 3, TD|TS, sys_signalfd, "signalfd" }, /* 305 */ - { 4, TD, sys_timerfd_create, "timerfd_create" }, /* 306 */ + { 2, TD, sys_timerfd_create, "timerfd_create" }, /* 306 */ { 1, TD, sys_eventfd, "eventfd" }, /* 307 */ - { 4, TD, sys_sync_file_range, "sync_file_range" }, /* 308 */ + { 6, TD, sys_sync_file_range2, "sync_file_range2" }, /* 308 */ { 6, TD, sys_fallocate, "fallocate" }, /* 309 */ { 3, 0, sys_subpage_prot, "subpage_prot" }, /* 310 */ { 4, TD, sys_timerfd_settime, "timerfd_settime" }, /* 311 */ @@ -346,8 +346,8 @@ { 2, TD, sys_pipe2, "pipe2" }, /* 317 */ { 1, TD, sys_inotify_init1, "inotify_init1" }, /* 318 */ { 5, TD, sys_perf_event_open, "perf_event_open" }, /* 319 */ - { 5, TD, sys_preadv, "preadv" }, /* 320 */ - { 5, TD, sys_pwritev, "pwritev" }, /* 321 */ + { 6, TD, sys_preadv, "preadv" }, /* 320 */ + { 6, TD, sys_pwritev, "pwritev" }, /* 321 */ { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo" }, /* 322 */ { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 323 */ { 5, TD|TF, sys_fanotify_mark, "fanotify_mark" }, /* 324 */ @@ -368,7 +368,7 @@ { 5, TN, sys_setsockopt, "setsockopt" }, /* 339 */ { 5, TN, sys_getsockopt, "getsockopt" }, /* 340 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 341 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 342 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 342 */ { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 343 */ { 4, TN, sys_accept4, "accept4" }, /* 344 */ { 5, TD|TF, sys_name_to_handle_at, "name_to_handle_at" }, /* 345 */ @@ -379,8 +379,8 @@ { 2, TD, sys_setns, "setns" }, /* 350 */ { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 351 */ { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 352 */ - { 5, 0, NULL, NULL }, /* 353 */ - { 5, 0, NULL, NULL }, /* 354 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 353 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 354 */ { 5, 0, NULL, NULL }, /* 355 */ { 5, 0, NULL, NULL }, /* 356 */ { 5, 0, NULL, NULL }, /* 357 */ @@ -426,10 +426,8 @@ { 5, 0, NULL, NULL }, /* 397 */ { 5, 0, NULL, NULL }, /* 398 */ { 5, 0, NULL, NULL }, /* 399 */ - -#if SYS_socket_subcall != 400 - #error fix me -#endif +#define SYS_socket_subcall 400 +#include "subcall.h" { 6, 0, printargs, "socket_subcall"}, /* 400 */ { 3, TN, sys_socket, "socket" }, /* 401 */ { 3, TN, sys_bind, "bind" }, /* 402 */ @@ -447,7 +445,7 @@ { 5, TN, sys_setsockopt, "setsockopt" }, /* 414 */ { 5, TN, sys_getsockopt, "getsockopt" }, /* 415 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 416 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 417 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 417 */ { 4, TN, sys_accept4, "accept4" }, /* 418 */ { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 419 */ diff --git a/linux/s390/ioctlent.h.in b/linux/s390/ioctlent.h.in index 35cdd815..1e93a0b5 100644 --- a/linux/s390/ioctlent.h.in +++ b/linux/s390/ioctlent.h.in @@ -19,76 +19,7 @@ {"asm/cmb.h", "BIODASDCMFDISABLE", 0x4421}, {"asm/cmb.h", "BIODASDREADALLCMB", 0x4421}, {"asm/dasd.h", "BIODASDSYMMIO", 0x44f0}, - {"asm-generic/ioctls.h", "TCGETS", 0x5401}, - {"asm-generic/ioctls.h", "TCSETS", 0x5402}, - {"asm-generic/ioctls.h", "TCSETSW", 0x5403}, - {"asm-generic/ioctls.h", "TCSETSF", 0x5404}, - {"asm-generic/ioctls.h", "TCGETA", 0x5405}, - {"asm-generic/ioctls.h", "TCSETA", 0x5406}, - {"asm-generic/ioctls.h", "TCSETAW", 0x5407}, - {"asm-generic/ioctls.h", "TCSETAF", 0x5408}, - {"asm-generic/ioctls.h", "TCSBRK", 0x5409}, - {"asm-generic/ioctls.h", "TCXONC", 0x540a}, - {"asm-generic/ioctls.h", "TCFLSH", 0x540b}, - {"asm-generic/ioctls.h", "TIOCEXCL", 0x540c}, - {"asm-generic/ioctls.h", "TIOCNXCL", 0x540d}, - {"asm-generic/ioctls.h", "TIOCSCTTY", 0x540e}, - {"asm-generic/ioctls.h", "TIOCGPGRP", 0x540f}, - {"asm-generic/ioctls.h", "TIOCSPGRP", 0x5410}, - {"asm-generic/ioctls.h", "TIOCOUTQ", 0x5411}, - {"asm-generic/ioctls.h", "TIOCSTI", 0x5412}, - {"asm-generic/ioctls.h", "TIOCGWINSZ", 0x5413}, - {"asm-generic/ioctls.h", "TIOCSWINSZ", 0x5414}, - {"asm-generic/ioctls.h", "TIOCMGET", 0x5415}, - {"asm-generic/ioctls.h", "TIOCMBIS", 0x5416}, - {"asm-generic/ioctls.h", "TIOCMBIC", 0x5417}, - {"asm-generic/ioctls.h", "TIOCMSET", 0x5418}, - {"asm-generic/ioctls.h", "TIOCGSOFTCAR", 0x5419}, - {"asm-generic/ioctls.h", "TIOCSSOFTCAR", 0x541a}, - {"asm-generic/ioctls.h", "FIONREAD", 0x541b}, - {"asm-generic/ioctls.h", "TIOCLINUX", 0x541c}, - {"asm-generic/ioctls.h", "TIOCCONS", 0x541d}, - {"asm-generic/ioctls.h", "TIOCGSERIAL", 0x541e}, - {"asm-generic/ioctls.h", "TIOCSSERIAL", 0x541f}, - {"asm-generic/ioctls.h", "TIOCPKT", 0x5420}, - {"asm-generic/ioctls.h", "FIONBIO", 0x5421}, - {"asm-generic/ioctls.h", "TIOCNOTTY", 0x5422}, - {"asm-generic/ioctls.h", "TIOCSETD", 0x5423}, - {"asm-generic/ioctls.h", "TIOCGETD", 0x5424}, - {"asm-generic/ioctls.h", "TCSBRKP", 0x5425}, - {"asm-generic/ioctls.h", "TIOCSBRK", 0x5427}, - {"asm-generic/ioctls.h", "TIOCCBRK", 0x5428}, - {"asm-generic/ioctls.h", "TIOCGSID", 0x5429}, - {"asm-generic/ioctls.h", "TCGETS2", 0x542a}, - {"asm-generic/ioctls.h", "TCSETS2", 0x542b}, - {"asm-generic/ioctls.h", "TCSETSW2", 0x542c}, - {"asm-generic/ioctls.h", "TCSETSF2", 0x542d}, - {"asm-generic/ioctls.h", "TIOCGRS485", 0x542e}, - {"asm-generic/ioctls.h", "TIOCSRS485", 0x542f}, - {"asm-generic/ioctls.h", "TIOCGPTN", 0x5430}, - {"asm-generic/ioctls.h", "TIOCSPTLCK", 0x5431}, - {"asm-generic/ioctls.h", "TCGETX", 0x5432}, - {"asm-generic/ioctls.h", "TIOCGDEV", 0x5432}, - {"asm-generic/ioctls.h", "TCSETX", 0x5433}, - {"asm-generic/ioctls.h", "TCSETXF", 0x5434}, - {"asm-generic/ioctls.h", "TCSETXW", 0x5435}, - {"asm-generic/ioctls.h", "TIOCSIG", 0x5436}, - {"asm-generic/ioctls.h", "FIONCLEX", 0x5450}, - {"asm-generic/ioctls.h", "FIOCLEX", 0x5451}, - {"asm-generic/ioctls.h", "FIOASYNC", 0x5452}, - {"asm-generic/ioctls.h", "TIOCSERCONFIG", 0x5453}, - {"asm-generic/ioctls.h", "TIOCSERGWILD", 0x5454}, - {"asm-generic/ioctls.h", "TIOCSERSWILD", 0x5455}, - {"asm-generic/ioctls.h", "TIOCGLCKTRMIOS", 0x5456}, - {"asm-generic/ioctls.h", "TIOCSLCKTRMIOS", 0x5457}, - {"asm-generic/ioctls.h", "TIOCSERGSTRUCT", 0x5458}, - {"asm-generic/ioctls.h", "TIOCSERGETLSR", 0x5459}, - {"asm-generic/ioctls.h", "TIOCSERGETMULTI", 0x545a}, - {"asm-generic/ioctls.h", "TIOCSERSETMULTI", 0x545b}, - {"asm-generic/ioctls.h", "TIOCMIWAIT", 0x545c}, - {"asm-generic/ioctls.h", "TIOCGICOUNT", 0x545d}, {"asm/ioctls.h", "FIOQSIZE", 0x545e}, - {"asm-generic/ioctls.h", "FIOQSIZE", 0x5460}, {"asm/chsc.h", "CHSC_START", 0x6381}, {"asm/chsc.h", "CHSC_INFO_CHANNEL_PATH", 0x6382}, {"asm/chsc.h", "CHSC_INFO_CU", 0x6383}, @@ -116,10 +47,3 @@ {"asm/zcrypt.h", "Z90STAT_PCIXCCMCL3COUNT", 0x7a4c}, {"asm/zcrypt.h", "Z90STAT_CEX2CCOUNT", 0x7a4d}, {"asm/zcrypt.h", "Z90STAT_CEX2ACOUNT", 0x7a4e}, - {"asm-generic/sockios.h", "FIOSETOWN", 0x8901}, - {"asm-generic/sockios.h", "SIOCSPGRP", 0x8902}, - {"asm-generic/sockios.h", "FIOGETOWN", 0x8903}, - {"asm-generic/sockios.h", "SIOCGPGRP", 0x8904}, - {"asm-generic/sockios.h", "SIOCATMARK", 0x8905}, - {"asm-generic/sockios.h", "SIOCGSTAMP", 0x8906}, - {"asm-generic/sockios.h", "SIOCGSTAMPNS", 0x8907}, diff --git a/linux/s390/syscallent.h b/linux/s390/syscallent.h index ccd4b015..719029f4 100644 --- a/linux/s390/syscallent.h +++ b/linux/s390/syscallent.h @@ -73,7 +73,7 @@ { 1, TD, sys_pipe, "pipe" }, /* 42 */ { 1, 0, sys_times, "times" }, /* 43 */ { MA, 0, NULL, NULL }, /* 44 */ - { 1, 0, sys_brk, "brk" }, /* 45 */ + { 1, TM, sys_brk, "brk" }, /* 45 */ { MA, 0, NULL, NULL }, /* 46 */ { MA, 0, NULL, NULL }, /* 47 */ { 3, TS, sys_signal, "signal" }, /* 48 */ @@ -118,8 +118,8 @@ { 2, TF, sys_swapon, "swapon" }, /* 87 */ { 4, 0, sys_reboot, "reboot" }, /* 88 */ { 3, TD, sys_readdir, "readdir" }, /* 89 */ - { 6, TD, sys_old_mmap, "mmap" }, /* 90 */ - { 2, 0, sys_munmap, "munmap" }, /* 91 */ + { 6, TD|TM, sys_old_mmap, "mmap" }, /* 90 */ + { 2, TM, sys_munmap, "munmap" }, /* 91 */ { 2, TF, sys_truncate, "truncate" }, /* 92 */ { 2, TD, sys_ftruncate, "ftruncate" }, /* 93 */ { 2, TD, sys_fchmod, "fchmod" }, /* 94 */ @@ -153,13 +153,13 @@ { 1, 0, sys_uname, "uname" }, /* 122 */ { MA, 0, NULL, NULL }, /* 123 */ { 1, 0, sys_adjtimex, "adjtimex" }, /* 124 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 125 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 125 */ { 3, TS, sys_sigprocmask, "sigprocmask" }, /* 126 */ { 2, 0, sys_create_module, "create_module" }, /* 127 */ { 3, 0, sys_init_module, "init_module" }, /* 128 */ { 2, 0, sys_delete_module, "delete_module" }, /* 129 */ { 1, 0, sys_get_kernel_syms, "get_kernel_syms"}, /* 130 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 131 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 131 */ { 1, 0, sys_getpgid, "getpgid" }, /* 132 */ { 1, TD, sys_fchdir, "fchdir" }, /* 133 */ { 0, 0, sys_bdflush, "bdflush" }, /* 134 */ @@ -172,16 +172,16 @@ { 3, TD, sys_getdents, "getdents" }, /* 141 */ { 5, TD, sys_select, "select" }, /* 142 */ { 2, TD, sys_flock, "flock" }, /* 143 */ - { 3, 0, sys_msync, "msync" }, /* 144 */ + { 3, TM, sys_msync, "msync" }, /* 144 */ { 3, TD, sys_readv, "readv" }, /* 145 */ { 3, TD, sys_writev, "writev" }, /* 146 */ { 1, 0, sys_getsid, "getsid" }, /* 147 */ { 1, TD, sys_fdatasync, "fdatasync" }, /* 148 */ { 1, 0, sys_sysctl, "_sysctl" }, /* 149 */ - { 2, 0, sys_mlock, "mlock" }, /* 150 */ - { 2, 0, sys_munlock, "munlock" }, /* 151 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 152 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 153 */ + { 2, TM, sys_mlock, "mlock" }, /* 150 */ + { 2, TM, sys_munlock, "munlock" }, /* 151 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 152 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 153 */ { 0, 0, sys_sched_setparam, "sched_setparam"}, /* 154 */ { 2, 0, sys_sched_getparam, "sched_getparam"}, /* 155 */ { 3, 0, sys_sched_setscheduler, "sched_setscheduler"}, /* 156 */ @@ -191,7 +191,7 @@ { 1, 0, sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */ { 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */ { 2, 0, sys_nanosleep, "nanosleep" }, /* 162 */ - { 5, 0, sys_mremap, "mremap" }, /* 163 */ + { 5, TM, sys_mremap, "mremap" }, /* 163 */ { 3, 0, sys_setresuid, "setresuid" }, /* 164 */ { 3, 0, sys_getresuid, "getresuid" }, /* 165 */ { MA, 0, NULL, NULL }, /* 166 */ @@ -220,9 +220,9 @@ { 5, 0, sys_putpmsg, "putpmsg" }, /* 189 */ { 0, TP, sys_vfork, "vfork" }, /* 190 */ { 2, 0, sys_getrlimit, "getrlimit" }, /* 191 */ - { 6, TD, sys_mmap, "mmap2" }, /* 192 */ - { 2, TF, sys_truncate64, "truncate64" }, /* 193 */ - { 2, TD, sys_ftruncate64, "ftruncate64" }, /* 194 */ + { 1, TD|TM, sys_old_mmap_pgoff, "mmap2" }, /* 192 */ + { 3, TF, sys_truncate64, "truncate64" }, /* 193 */ + { 3, TD, sys_ftruncate64, "ftruncate64" }, /* 194 */ { 2, TF, sys_stat64, "stat64" }, /* 195 */ { 2, TF, sys_lstat64, "lstat64" }, /* 196 */ { 2, TD, sys_fstat64, "fstat64" }, /* 197 */ @@ -246,8 +246,8 @@ { 1, NF, sys_setfsuid, "setfsuid" }, /* 215 */ { 1, NF, sys_setfsgid, "setfsgid" }, /* 216 */ { 2, TF, sys_pivotroot, "pivot_root" }, /* 217 */ - { 3, 0, sys_mincore, "mincore" }, /* 218 */ - { 3, 0, sys_madvise, "madvise" }, /* 219 */ + { 3, TM, sys_mincore, "mincore" }, /* 218 */ + { 3, TM, sys_madvise, "madvise" }, /* 219 */ { 3, TD, sys_getdents64, "getdents64" }, /* 220 */ { 3, TD, sys_fcntl, "fcntl64" }, /* 221 */ { 4, TD, sys_readahead, "readahead" }, /* 222 */ @@ -281,7 +281,7 @@ { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 250 */ { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 251 */ { 1, 0, sys_set_tid_address, "set_tid_address"}, /* 252 */ - { 5, TD, printargs, "fadvise64" }, /* 253 */ + { 5, TD, sys_fadvise64, "fadvise64" }, /* 253 */ { 3, 0, sys_timer_create, "timer_create" }, /* 254 */ { 4, 0, sys_timer_settime, "timer_settime" }, /* 255 */ { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 256 */ @@ -294,11 +294,11 @@ { 5, 0, sys_vserver, "vserver" }, /* 263 */ { 5, TD, printargs, "fadvise64_64" }, /* 264 */ { 3, TF, sys_statfs64, "statfs64" }, /* 265 */ - { 3, TF, sys_fstatfs64, "fstatfs64" }, /* 266 */ - { 5, 0, sys_remap_file_pages, "remap_file_pages"}, /* 267 */ - { 6, 0, sys_mbind, "mbind" }, /* 268 */ - { 5, 0, sys_get_mempolicy, "get_mempolicy" }, /* 269 */ - { 3, 0, sys_set_mempolicy, "set_mempolicy" }, /* 270 */ + { 3, TD, sys_fstatfs64, "fstatfs64" }, /* 266 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages"}, /* 267 */ + { 6, TM, sys_mbind, "mbind" }, /* 268 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 269 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 270 */ { 4, 0, sys_mq_open, "mq_open" }, /* 271 */ { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 272 */ { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 273 */ @@ -315,7 +315,7 @@ { 0, TD, sys_inotify_init, "inotify_init" }, /* 284 */ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 285 */ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 286 */ - { 4, 0, sys_migrate_pages, "migrate_pages" }, /* 287 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 287 */ { 4, TD|TF, sys_openat, "openat" }, /* 288 */ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 289 */ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 290 */ @@ -335,10 +335,10 @@ { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 304 */ { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 305 */ { 6, TD, sys_splice, "splice" }, /* 306 */ - { 4, TD, sys_sync_file_range, "sync_file_range" }, /* 307 */ + { 6, TD, sys_sync_file_range, "sync_file_range" }, /* 307 */ { 4, TD, sys_tee, "tee" }, /* 308 */ { 4, TD, sys_vmsplice, "vmsplice" }, /* 309 */ - { 6, 0, sys_move_pages, "move_pages" }, /* 310 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 310 */ { 3, 0, sys_getcpu, "getcpu" }, /* 311 */ { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 312 */ { 2, TF, sys_utimes, "utimes" }, /* 313 */ @@ -370,9 +370,9 @@ { 2, TD, sys_setns, "setns" }, /* 339 */ { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 340 */ { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 341 */ - { 5, 0, NULL, NULL }, /* 342 */ - { 5, 0, NULL, NULL }, /* 343 */ - { 5, 0, NULL, NULL }, /* 344 */ + { 2, 0, printargs, "s390_runtime_instr" }, /* 342 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 343 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 344 */ { 5, 0, NULL, NULL }, /* 345 */ { 5, 0, NULL, NULL }, /* 346 */ { 5, 0, NULL, NULL }, /* 347 */ @@ -428,10 +428,8 @@ { 5, 0, NULL, NULL }, /* 397 */ { 5, 0, NULL, NULL }, /* 398 */ { 5, 0, NULL, NULL }, /* 399 */ - -#if SYS_socket_subcall != 400 - #error fix me -#endif +#define SYS_socket_subcall 400 +#include "subcall.h" { 6, 0, printargs, "socket_subcall"}, /* 400 */ { 3, TN, sys_socket, "socket" }, /* 401 */ { 3, TN, sys_bind, "bind" }, /* 402 */ @@ -449,7 +447,7 @@ { 5, TN, sys_setsockopt, "setsockopt" }, /* 414 */ { 5, TN, sys_getsockopt, "getsockopt" }, /* 415 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 416 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 417 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 417 */ { 4, TN, sys_accept4, "accept4" }, /* 418 */ { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 419 */ diff --git a/linux/s390x/syscallent.h b/linux/s390x/syscallent.h index b1264d1f..66face5f 100644 --- a/linux/s390x/syscallent.h +++ b/linux/s390x/syscallent.h @@ -72,7 +72,7 @@ { 1, TD, sys_pipe, "pipe" }, /* 42 */ { 1, 0, sys_times, "times" }, /* 43 */ { MA, 0, NULL, NULL }, /* 44 */ - { 1, 0, sys_brk, "brk" }, /* 45 */ + { 1, TM, sys_brk, "brk" }, /* 45 */ { MA, 0, NULL, NULL }, /* 46 */ { MA, 0, NULL, NULL }, /* 47 */ { 3, TS, sys_signal, "signal" }, /* 48 */ @@ -117,8 +117,8 @@ { 2, TF, sys_swapon, "swapon" }, /* 87 */ { 4, 0, sys_reboot, "reboot" }, /* 88 */ { MA, 0, NULL, NULL }, /* 89 */ - { 6, TD, sys_old_mmap, "mmap" }, /* 90 */ - { 2, 0, sys_munmap, "munmap" }, /* 91 */ + { 1, TD|TM, sys_old_mmap, "mmap" }, /* 90 */ + { 2, TM, sys_munmap, "munmap" }, /* 91 */ { 2, TF, sys_truncate, "truncate" }, /* 92 */ { 2, TD, sys_ftruncate, "ftruncate" }, /* 93 */ { 2, TD, sys_fchmod, "fchmod" }, /* 94 */ @@ -152,13 +152,13 @@ { 1, 0, sys_uname, "uname" }, /* 122 */ { MA, 0, NULL, NULL }, /* 123 */ { 1, 0, sys_adjtimex, "adjtimex" }, /* 124 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 125 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 125 */ { 3, TS, sys_sigprocmask, "sigprocmask" }, /* 126 */ { 2, 0, sys_create_module, "create_module" }, /* 127 */ { 3, 0, sys_init_module, "init_module" }, /* 128 */ { 2, 0, sys_delete_module, "delete_module" }, /* 129 */ { 1, 0, sys_get_kernel_syms, "get_kernel_syms"}, /* 130 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 131 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 131 */ { 1, 0, sys_getpgid, "getpgid" }, /* 132 */ { 1, TD, sys_fchdir, "fchdir" }, /* 133 */ { 0, 0, sys_bdflush, "bdflush" }, /* 134 */ @@ -167,20 +167,20 @@ { 5, 0, sys_afs_syscall, "afs_syscall" }, /* 137 */ { MA, 0, NULL, NULL }, /* 138 */ { MA, 0, NULL, NULL }, /* 139 */ - { 5, 0, sys_llseek, "_llseek" }, /* 140 */ + { 5, TD, sys_llseek, "_llseek" }, /* 140 */ { 3, TD, sys_getdents, "getdents" }, /* 141 */ { 5, TD, sys_select, "select" }, /* 142 */ { 2, TD, sys_flock, "flock" }, /* 143 */ - { 3, 0, sys_msync, "msync" }, /* 144 */ + { 3, TM, sys_msync, "msync" }, /* 144 */ { 3, TD, sys_readv, "readv" }, /* 145 */ { 3, TD, sys_writev, "writev" }, /* 146 */ { 1, 0, sys_getsid, "getsid" }, /* 147 */ { 1, TD, sys_fdatasync, "fdatasync" }, /* 148 */ { 1, 0, sys_sysctl, "_sysctl" }, /* 149 */ - { 2, 0, sys_mlock, "mlock" }, /* 150 */ - { 2, 0, sys_munlock, "munlock" }, /* 151 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 152 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 153 */ + { 2, TM, sys_mlock, "mlock" }, /* 150 */ + { 2, TM, sys_munlock, "munlock" }, /* 151 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 152 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 153 */ { 0, 0, sys_sched_setparam, "sched_setparam"}, /* 154 */ { 2, 0, sys_sched_getparam, "sched_getparam"}, /* 155 */ { 3, 0, sys_sched_setscheduler, "sched_setscheduler"}, /* 156 */ @@ -190,7 +190,7 @@ { 1, 0, sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */ { 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */ { 2, 0, sys_nanosleep, "nanosleep" }, /* 162 */ - { 5, 0, sys_mremap, "mremap" }, /* 163 */ + { 5, TM, sys_mremap, "mremap" }, /* 163 */ { MA, 0, NULL, NULL }, /* 164 */ { MA, 0, NULL, NULL }, /* 165 */ { MA, 0, NULL, NULL }, /* 166 */ @@ -207,8 +207,8 @@ { 4, TS, sys_rt_sigtimedwait, "rt_sigtimedwait"}, /* 177 */ { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo"}, /* 178 */ { 2, TS, sys_rt_sigsuspend, "rt_sigsuspend" }, /* 179 */ - { 5, TD, sys_pread, "pread" }, /* 180 */ - { 5, TD, sys_pwrite, "pwrite" }, /* 181 */ + { 4, TD, sys_pread, "pread" }, /* 180 */ + { 4, TD, sys_pwrite, "pwrite" }, /* 181 */ { MA, 0, NULL, NULL }, /* 182 */ { 2, TF, sys_getcwd, "getcwd" }, /* 183 */ { 2, 0, sys_capget, "capget" }, /* 184 */ @@ -245,11 +245,11 @@ { 1, NF, sys_setfsuid, "setfsuid" }, /* 215 */ { 1, NF, sys_setfsgid, "setfsgid" }, /* 216 */ { 2, TF, sys_pivotroot, "pivot_root" }, /* 217 */ - { 3, 0, sys_mincore, "mincore" }, /* 218 */ - { 3, 0, sys_madvise, "madvise" }, /* 219 */ + { 3, TM, sys_mincore, "mincore" }, /* 218 */ + { 3, TM, sys_madvise, "madvise" }, /* 219 */ { 3, TD, sys_getdents64, "getdents64" }, /* 220 */ { MA, 0, NULL, NULL }, /* 221 */ - { 4, TD, sys_readahead, "readahead" }, /* 222 */ + { 3, TD, sys_readahead, "readahead" }, /* 222 */ { 4, TD|TN, sys_sendfile64, "sendfile64" }, /* 223 */ { 5, TF, sys_setxattr, "setxattr" }, /* 224 */ { 5, TF, sys_setxattr, "lsetxattr" }, /* 225 */ @@ -280,7 +280,7 @@ { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 250 */ { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 251 */ { 1, 0, sys_set_tid_address, "set_tid_address"}, /* 252 */ - { 5, TD, printargs, "fadvise64" }, /* 253 */ + { 4, TD, sys_fadvise64, "fadvise64" }, /* 253 */ { 3, 0, sys_timer_create, "timer_create" }, /* 254 */ { 4, 0, sys_timer_settime, "timer_settime" }, /* 255 */ { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 256 */ @@ -291,13 +291,13 @@ { 2, 0, sys_clock_getres, "clock_getres" }, /* 261 */ { 4, 0, sys_clock_nanosleep, "clock_nanosleep"}, /* 262 */ { 5, 0, sys_vserver, "vserver" }, /* 263 */ - { 6, TD, sys_fadvise64_64, "fadvise64_64" }, /* 264 */ + { 4, TD, sys_fadvise64, "fadvise64_64" }, /* 264 */ { 3, TF, sys_statfs64, "statfs64" }, /* 265 */ - { 3, TF, sys_fstatfs64, "fstatfs64" }, /* 266 */ - { 5, 0, sys_remap_file_pages, "remap_file_pages"}, /* 267 */ - { 6, 0, sys_mbind, "mbind" }, /* 268 */ - { 5, 0, sys_get_mempolicy, "get_mempolicy" }, /* 269 */ - { 3, 0, sys_set_mempolicy, "set_mempolicy" }, /* 270 */ + { 3, TD, sys_fstatfs64, "fstatfs64" }, /* 266 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages"}, /* 267 */ + { 6, TM, sys_mbind, "mbind" }, /* 268 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 269 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 270 */ { 4, 0, sys_mq_open, "mq_open" }, /* 271 */ { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 272 */ { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 273 */ @@ -314,7 +314,7 @@ { 0, TD, sys_inotify_init, "inotify_init" }, /* 284 */ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 285 */ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 286 */ - { 4, 0, sys_migrate_pages, "migrate_pages" }, /* 287 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 287 */ { 4, TD|TF, sys_openat, "openat" }, /* 288 */ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 289 */ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 290 */ @@ -337,11 +337,11 @@ { 4, TD, sys_sync_file_range, "sync_file_range" }, /* 307 */ { 4, TD, sys_tee, "tee" }, /* 308 */ { 4, TD, sys_vmsplice, "vmsplice" }, /* 309 */ - { 6, 0, sys_move_pages, "move_pages" }, /* 310 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 310 */ { 3, 0, sys_getcpu, "getcpu" }, /* 311 */ { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 312 */ { 2, TF, sys_utimes, "utimes" }, /* 313 */ - { 6, TD, sys_fallocate, "fallocate" }, /* 314 */ + { 4, TD, sys_fallocate, "fallocate" }, /* 314 */ { 4, TD|TF, sys_utimensat, "utimensat" }, /* 315 */ { 3, TD|TS, sys_signalfd, "signalfd" }, /* 316 */ { 4, TD, sys_timerfd, "timerfd" }, /* 317 */ @@ -355,8 +355,8 @@ { 2, TD, sys_pipe2, "pipe2" }, /* 325 */ { 3, TD, sys_dup3, "dup3" }, /* 326 */ { 1, TD, sys_epoll_create1, "epoll_create1" }, /* 327 */ - { 5, TD, sys_preadv, "preadv" }, /* 328 */ - { 5, TD, sys_pwritev, "pwritev" }, /* 329 */ + { 4, TD, sys_preadv, "preadv" }, /* 328 */ + { 4, TD, sys_pwritev, "pwritev" }, /* 329 */ { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo"}, /* 330 */ { 5, TD, sys_perf_event_open, "perf_event_open"}, /* 331 */ { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 332 */ @@ -369,9 +369,9 @@ { 2, TD, sys_setns, "setns" }, /* 339 */ { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 340 */ { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 341 */ - { 5, 0, NULL, NULL }, /* 342 */ - { 5, 0, NULL, NULL }, /* 343 */ - { 5, 0, NULL, NULL }, /* 344 */ + { 2, 0, printargs, "s390_runtime_instr" }, /* 342 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 343 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 344 */ { 5, 0, NULL, NULL }, /* 345 */ { 5, 0, NULL, NULL }, /* 346 */ { 5, 0, NULL, NULL }, /* 347 */ @@ -427,10 +427,8 @@ { 5, 0, NULL, NULL }, /* 397 */ { 5, 0, NULL, NULL }, /* 398 */ { 5, 0, NULL, NULL }, /* 399 */ - -#if SYS_socket_subcall != 400 - #error fix me -#endif +#define SYS_socket_subcall 400 +#include "subcall.h" { 6, 0, printargs, "socket_subcall"}, /* 400 */ { 3, TN, sys_socket, "socket" }, /* 401 */ { 3, TN, sys_bind, "bind" }, /* 402 */ @@ -448,7 +446,7 @@ { 5, TN, sys_setsockopt, "setsockopt" }, /* 414 */ { 5, TN, sys_getsockopt, "getsockopt" }, /* 415 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 416 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 417 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 417 */ { 4, TN, sys_accept4, "accept4" }, /* 418 */ { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 419 */ diff --git a/linux/sh/syscallent.h b/linux/sh/syscallent.h index 3f3917ba..b51fc6ff 100644 --- a/linux/sh/syscallent.h +++ b/linux/sh/syscallent.h @@ -45,7 +45,7 @@ { 3, TF, sys_mknod, "mknod" }, /* 14 */ { 2, TF, sys_chmod, "chmod" }, /* 15 */ { 3, TF, sys_chown, "lchown" }, /* 16 */ - { 0, 0, sys_break, "break" }, /* 17 */ + { 0, TM, sys_break, "break" }, /* 17 */ { 2, TF, sys_oldstat, "oldstat" }, /* 18 */ { 3, TD, sys_lseek, "lseek" }, /* 19 */ { 0, 0, sys_getpid, "getpid" }, /* 20 */ @@ -73,7 +73,7 @@ { 1, TD, sys_pipe, "pipe" }, /* 42 */ { 1, 0, sys_times, "times" }, /* 43 */ { 0, 0, sys_prof, "prof" }, /* 44 */ - { 1, 0, sys_brk, "brk" }, /* 45 */ + { 1, TM, sys_brk, "brk" }, /* 45 */ { 1, 0, sys_setgid, "setgid" }, /* 46 */ { 0, NF, sys_getgid, "getgid" }, /* 47 */ { 3, TS, sys_signal, "signal" }, /* 48 */ @@ -118,8 +118,8 @@ { 2, TF, sys_swapon, "swapon" }, /* 87 */ { 4, 0, sys_reboot, "reboot" }, /* 88 */ { 3, TD, sys_readdir, "readdir" }, /* 89 */ - { 6, TD, sys_old_mmap, "old_mmap" }, /* 90 */ - { 2, 0, sys_munmap, "munmap" }, /* 91 */ + { 6, TD|TM, sys_mmap, "old_mmap" }, /* 90 */ + { 2, TM, sys_munmap, "munmap" }, /* 91 */ { 2, TF, sys_truncate, "truncate" }, /* 92 */ { 2, TD, sys_ftruncate, "ftruncate" }, /* 93 */ { 2, TD, sys_fchmod, "fchmod" }, /* 94 */ @@ -153,13 +153,13 @@ { 1, 0, sys_uname, "uname" }, /* 122 */ { 3, 0, sys_cacheflush, "cacheflush" }, /* 123 */ { 1, 0, sys_adjtimex, "adjtimex" }, /* 124 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 125 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 125 */ { 3, TS, sys_sigprocmask, "sigprocmask" }, /* 126 */ { 2, 0, sys_create_module, "create_module" }, /* 127 */ { 3, 0, sys_init_module, "init_module" }, /* 128 */ { 2, 0, sys_delete_module, "delete_module" }, /* 129 */ { 1, 0, sys_get_kernel_syms, "get_kernel_syms"}, /* 130 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 131 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 131 */ { 1, 0, sys_getpgid, "getpgid" }, /* 132 */ { 1, TD, sys_fchdir, "fchdir" }, /* 133 */ { 0, 0, sys_bdflush, "bdflush" }, /* 134 */ @@ -172,16 +172,16 @@ { 3, TD, sys_getdents, "getdents" }, /* 141 */ { 5, TD, sys_select, "select" }, /* 142 */ { 2, TD, sys_flock, "flock" }, /* 143 */ - { 3, 0, sys_msync, "msync" }, /* 144 */ + { 3, TM, sys_msync, "msync" }, /* 144 */ { 3, TD, sys_readv, "readv" }, /* 145 */ { 3, TD, sys_writev, "writev" }, /* 146 */ { 1, 0, sys_getsid, "getsid" }, /* 147 */ { 1, TD, sys_fdatasync, "fdatasync" }, /* 148 */ { 1, 0, sys_sysctl, "_sysctl" }, /* 149 */ - { 1, 0, sys_mlock, "mlock" }, /* 150 */ - { 2, 0, sys_munlock, "munlock" }, /* 151 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 152 */ - { 1, 0, sys_munlockall, "munlockall" }, /* 153 */ + { 1, TM, sys_mlock, "mlock" }, /* 150 */ + { 2, TM, sys_munlock, "munlock" }, /* 151 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 152 */ + { 1, TM, sys_munlockall, "munlockall" }, /* 153 */ { 0, 0, sys_sched_setparam, "sched_setparam"}, /* 154 */ { 2, 0, sys_sched_getparam, "sched_getparam"}, /* 155 */ { 3, 0, sys_sched_setscheduler, "sched_setscheduler"}, /* 156 */ @@ -191,7 +191,7 @@ { 1, 0, sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */ { 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */ { 2, 0, sys_nanosleep, "nanosleep" }, /* 162 */ - { 5, 0, sys_mremap, "mremap" }, /* 163 */ + { 5, TM, sys_mremap, "mremap" }, /* 163 */ { 3, 0, sys_setresuid, "setresuid" }, /* 164 */ { 3, 0, sys_getresuid, "getresuid" }, /* 165 */ { 5, 0, sys_vm86, "vm86" }, /* 166 */ @@ -212,7 +212,7 @@ { 6, TD, sys_pread, "pread" }, /* 180 */ { 6, TD, sys_pwrite, "pwrite" }, /* 181 */ { 3, TF, sys_chown, "chown" }, /* 182 */ - { 2, 0, sys_getcwd, "getcwd" }, /* 183 */ + { 2, TF, sys_getcwd, "getcwd" }, /* 183 */ { 2, 0, sys_capget, "capget" }, /* 184 */ { 2, 0, sys_capset, "capset" }, /* 185 */ { 2, TS, sys_sigaltstack, "sigaltstack" }, /* 186 */ @@ -221,9 +221,9 @@ { 5, 0, NULL, NULL }, /* 189 */ { 0, TP, sys_vfork, "vfork" }, /* 190 */ { 5, 0, printargs, "getrlimit" }, /* 191 */ - { 6, TD, sys_mmap, "mmap2" }, /* 192 */ - { 5, 0, sys_truncate64, "truncate64" }, /* 193 */ - { 5, TD, sys_ftruncate64, "ftruncate64" }, /* 194 */ + { 6, TD|TM, sys_mmap_4koff, "mmap2" }, /* 192 */ + { 3, TF, sys_truncate64, "truncate64" }, /* 193 */ + { 3, TD, sys_ftruncate64, "ftruncate64" }, /* 194 */ { 2, TF, sys_stat64, "stat64" }, /* 195 */ { 2, TF, sys_lstat64, "lstat64" }, /* 196 */ { 2, TD, sys_fstat64, "fstat64" }, /* 197 */ @@ -248,14 +248,14 @@ { 1, 0, printargs, "setfsuid32" }, /* 215 */ { 1, 0, printargs, "setfsgid32" }, /* 216 */ { 2, TF, sys_pivotroot, "pivot_root" }, /* 217 */ - { 3, 0, sys_mincore, "mincore" }, /* 218 */ - { 3, 0, sys_madvise, "madvise" }, /* 219 */ + { 3, TM, sys_mincore, "mincore" }, /* 218 */ + { 3, TM, sys_madvise, "madvise" }, /* 219 */ { 3, TD, sys_getdents64, "getdents64" }, /* 220 */ { 3, TD, sys_fcntl, "fcntl64" }, /* 221 */ { 4, 0, NULL, NULL }, /* 222 */ { 4, 0, NULL, NULL }, /* 223 */ { 4, 0, sys_gettid, "gettid" }, /* 224 */ - { 5, TD, sys_readahead, "readahead" }, /* 225 */ + { 4, TD, sys_readahead, "readahead" }, /* 225 */ { 5, TF, sys_setxattr, "setxattr" }, /* 226 */ { 5, TF, sys_setxattr, "lsetxattr" }, /* 227 */ { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 228 */ @@ -287,7 +287,7 @@ { 1, TD, sys_epoll_create, "epoll_create" }, /* 254 */ { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 255 */ { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 256 */ - { 5, 0, sys_remap_file_pages, "remap_file_pages"}, /* 257 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages"}, /* 257 */ { 1, 0, sys_set_tid_address, "set_tid_address"}, /* 258 */ { 3, 0, sys_timer_create, "timer_create" }, /* 259 */ { 4, 0, sys_timer_settime, "timer_settime" }, /* 260 */ @@ -304,9 +304,9 @@ { 2, TF, sys_utimes, "utimes" }, /* 271 */ { 6, TD, sys_fadvise64_64, "fadvise64_64" }, /* 272 */ { 0, 0, NULL, NULL }, /* 273 */ - { 4, 0, sys_mbind, "mbind" }, /* 274 */ - { 5, 0, sys_get_mempolicy, "get_mempolicy" }, /* 275 */ - { 3, 0, sys_set_mempolicy, "set_mempolicy" }, /* 276 */ + { 4, TM, sys_mbind, "mbind" }, /* 274 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 275 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 276 */ { 4, 0, sys_mq_open, "mq_open" }, /* 277 */ { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 278 */ { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 279 */ @@ -324,7 +324,7 @@ { 3, TD, sys_inotify_add_watch, "inotify_add_watch"}, /* 291 */ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch"}, /* 292 */ { 5, 0, NULL, NULL }, /* 293 */ - { 4, 0, sys_migrate_pages, "migrate_pages" }, /* 294 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 294 */ { 4, TD|TF, sys_openat, "openat" }, /* 295 */ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 296 */ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 297 */ @@ -344,10 +344,10 @@ { 2, 0, sys_set_robust_list, "set_robust_list"}, /* 311 */ { 3, 0, sys_get_robust_list, "get_robust_list"}, /* 312 */ { 6, TD, sys_splice, "splice" }, /* 313 */ - { 4, TD, sys_sync_file_range, "sync_file_range"}, /* 314 */ + { 6, TD, sys_sync_file_range, "sync_file_range"}, /* 314 */ { 4, TD, sys_tee, "tee" }, /* 315 */ { 5, TD, sys_vmsplice, "vmsplice" }, /* 316 */ - { 6, 0, sys_move_pages, "move_pages" }, /* 317 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 317 */ { 3, 0, sys_getcpu, "getcpu" }, /* 318 */ { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 319 */ { 4, TD|TF, sys_utimensat, "utimensat" }, /* 320 */ @@ -363,8 +363,8 @@ { 3, TD, sys_dup3, "dup3" }, /* 330 */ { 2, TD, sys_pipe2, "pipe2" }, /* 331 */ { 1, TD, sys_inotify_init1, "inotify_init1" }, /* 332 */ - { 5, TD, sys_preadv, "preadv" }, /* 333 */ - { 5, TD, sys_pwritev, "pwritev" }, /* 334 */ + { 6, TD, sys_preadv, "preadv" }, /* 333 */ + { 6, TD, sys_pwritev, "pwritev" }, /* 334 */ { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo"}, /* 335 */ { 5, TD, sys_perf_event_open, "perf_event_open"}, /* 336 */ { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 337 */ @@ -386,7 +386,7 @@ { 5, TN, sys_setsockopt, "setsockopt" }, /* 353 */ { 5, TN, sys_getsockopt, "getsockopt" }, /* 354 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 355 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 356 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 356 */ { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 357 */ { 4, TN, sys_accept4, "accept4" }, /* 358 */ { 5, TD|TF, sys_name_to_handle_at, "name_to_handle_at"}, /* 359 */ @@ -397,8 +397,8 @@ { 2, TD, sys_setns, "setns" }, /* 364 */ { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 365 */ { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 366 */ - { 5, 0, NULL, NULL }, /* 367 */ - { 5, 0, NULL, NULL }, /* 368 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 367 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 368 */ { 5, 0, NULL, NULL }, /* 369 */ { 5, 0, NULL, NULL }, /* 370 */ { 5, 0, NULL, NULL }, /* 371 */ @@ -430,10 +430,8 @@ { 5, 0, NULL, NULL }, /* 397 */ { 5, 0, NULL, NULL }, /* 398 */ { 5, 0, NULL, NULL }, /* 399 */ - -#if SYS_socket_subcall != 400 - #error fix me -#endif +#define SYS_socket_subcall 400 +#include "subcall.h" { 6, 0, printargs, "socket_subcall"}, /* 400 */ { 3, TN, sys_socket, "socket" }, /* 401 */ { 3, TN, sys_bind, "bind" }, /* 402 */ @@ -451,7 +449,7 @@ { 5, TN, sys_setsockopt, "setsockopt" }, /* 414 */ { 5, TN, sys_getsockopt, "getsockopt" }, /* 415 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 416 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 417 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 417 */ { 4, TN, sys_accept4, "accept4" }, /* 418 */ { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 419 */ diff --git a/linux/sh64/syscallent.h b/linux/sh64/syscallent.h index 347ff0c7..e970147d 100644 --- a/linux/sh64/syscallent.h +++ b/linux/sh64/syscallent.h @@ -43,7 +43,7 @@ { 3, TF, sys_mknod, "mknod" }, /* 14 */ { 2, TF, sys_chmod, "chmod" }, /* 15 */ { 3, TF, sys_chown, "lchown" }, /* 16 */ - { 0, 0, sys_break, "break" }, /* 17 */ + { 0, TM, sys_break, "break" }, /* 17 */ { 2, TF, sys_oldstat, "oldstat" }, /* 18 */ { 3, TD, sys_lseek, "lseek" }, /* 19 */ { 0, 0, sys_getpid, "getpid" }, /* 20 */ @@ -71,7 +71,7 @@ { 1, TD, sys_pipe, "pipe" }, /* 42 */ { 1, 0, sys_times, "times" }, /* 43 */ { 0, 0, sys_prof, "prof" }, /* 44 */ - { 1, 0, sys_brk, "brk" }, /* 45 */ + { 1, TM, sys_brk, "brk" }, /* 45 */ { 1, 0, sys_setgid, "setgid" }, /* 46 */ { 0, NF, sys_getgid, "getgid" }, /* 47 */ { 3, TS, sys_signal, "signal" }, /* 48 */ @@ -116,8 +116,8 @@ { 2, TF, sys_swapon, "swapon" }, /* 87 */ { 4, 0, sys_reboot, "reboot" }, /* 88 */ { 3, TD, sys_readdir, "readdir" }, /* 89 */ - { 6, TD, sys_old_mmap, "old_mmap" }, /* 90 */ - { 2, 0, sys_munmap, "munmap" }, /* 91 */ + { 6, TD|TM, sys_mmap, "old_mmap" }, /* 90 */ + { 2, TM, sys_munmap, "munmap" }, /* 91 */ { 2, TF, sys_truncate, "truncate" }, /* 92 */ { 2, TD, sys_ftruncate, "ftruncate" }, /* 93 */ { 2, TD, sys_fchmod, "fchmod" }, /* 94 */ @@ -151,13 +151,13 @@ { 1, 0, sys_uname, "uname" }, /* 122 */ { 3, 0, printargs, "cacheflush" }, /* 123 */ { 1, 0, sys_adjtimex, "adjtimex" }, /* 124 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 125 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 125 */ { 3, TS, sys_sigprocmask, "sigprocmask" }, /* 126 */ { 2, 0, sys_create_module, "create_module" }, /* 127 */ { 3, 0, sys_init_module, "init_module" }, /* 128 */ { 2, 0, sys_delete_module, "delete_module" }, /* 129 */ { 1, 0, sys_get_kernel_syms, "get_kernel_syms"}, /* 130 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 131 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 131 */ { 1, 0, sys_getpgid, "getpgid" }, /* 132 */ { 1, TD, sys_fchdir, "fchdir" }, /* 133 */ { 0, 0, sys_bdflush, "bdflush" }, /* 134 */ @@ -170,16 +170,16 @@ { 3, TD, sys_getdents, "getdents" }, /* 141 */ { 5, TD, sys_select, "select" }, /* 142 */ { 2, TD, sys_flock, "flock" }, /* 143 */ - { 3, 0, sys_msync, "msync" }, /* 144 */ + { 3, TM, sys_msync, "msync" }, /* 144 */ { 3, TD, sys_readv, "readv" }, /* 145 */ { 3, TD, sys_writev, "writev" }, /* 146 */ { 1, 0, sys_getsid, "getsid" }, /* 147 */ { 1, TD, sys_fdatasync, "fdatasync" }, /* 148 */ { 1, 0, sys_sysctl, "_sysctl" }, /* 149 */ - { 1, 0, sys_mlock, "mlock" }, /* 150 */ - { 2, 0, sys_munlock, "munlock" }, /* 151 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 152 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 153 */ + { 1, TM, sys_mlock, "mlock" }, /* 150 */ + { 2, TM, sys_munlock, "munlock" }, /* 151 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 152 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 153 */ { 0, 0, sys_sched_setparam, "sched_setparam"}, /* 154 */ { 2, 0, sys_sched_getparam, "sched_getparam"}, /* 155 */ { 3, 0, sys_sched_setscheduler, "sched_setscheduler"}, /* 156 */ @@ -189,7 +189,7 @@ { 1, 0, sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */ { 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */ { 2, 0, sys_nanosleep, "nanosleep" }, /* 162 */ - { 5, 0, sys_mremap, "mremap" }, /* 163 */ + { 5, TM, sys_mremap, "mremap" }, /* 163 */ { 3, 0, sys_setresuid, "setresuid" }, /* 164 */ { 3, 0, sys_getresuid, "getresuid" }, /* 165 */ { 5, 0, NULL, NULL }, /* 166 */ @@ -206,8 +206,8 @@ { 4, TS, sys_rt_sigtimedwait, "rt_sigtimedwait"}, /* 177 */ { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo"}, /* 178 */ { 2, TS, sys_rt_sigsuspend, "rt_sigsuspend" }, /* 179 */ - { 5, TD, sys_pread, "pread" }, /* 180 */ - { 5, TD, sys_pwrite, "pwrite" }, /* 181 */ + { 4, TD, sys_pread, "pread" }, /* 180 */ + { 4, TD, sys_pwrite, "pwrite" }, /* 181 */ { 3, TF, sys_chown, "chown" }, /* 182 */ { 2, TF, sys_getcwd, "getcwd" }, /* 183 */ { 2, 0, sys_capget, "capget" }, /* 184 */ @@ -218,9 +218,9 @@ { 5, 0, NULL, NULL }, /* 189 */ { 0, TP, sys_vfork, "vfork" }, /* 190 */ { 2, 0, printargs, "getrlimit" }, /* 191 */ - { 6, TD, sys_mmap, "mmap2" }, /* 192 */ - { 2, TF, sys_truncate64, "truncate64" }, /* 193 */ - { 2, TD, sys_ftruncate64, "ftruncate64" }, /* 194 */ + { 6, TD|TM, sys_mmap_4koff, "mmap2" }, /* 192 */ + { 2, TF, sys_truncate, "truncate64" }, /* 193 */ + { 2, TD, sys_ftruncate, "ftruncate64" }, /* 194 */ { 2, TF, sys_stat64, "stat64" }, /* 195 */ { 2, TF, sys_lstat64, "lstat64" }, /* 196 */ { 2, TD, sys_fstat64, "fstat64" }, /* 197 */ @@ -244,8 +244,8 @@ { 1, 0, printargs, "setfsuid32" }, /* 215 */ { 1, 0, printargs, "setfsgid32" }, /* 216 */ { 2, TF, sys_pivotroot, "pivot_root" }, /* 217 */ - { 3, 0, sys_mincore, "mincore" }, /* 218 */ - { 3, 0, sys_madvise, "madvise" }, /* 219 */ + { 3, TM, sys_mincore, "mincore" }, /* 218 */ + { 3, TM, sys_madvise, "madvise" }, /* 219 */ { 3, TN, sys_socket, "socket" }, /* 220 */ { 3, TN, sys_bind, "bind" }, /* 221 */ { 3, TN, sys_connect, "connect" }, /* 222 */ @@ -262,7 +262,7 @@ { 5, TN, sys_setsockopt, "setsockopt" }, /* 233 */ { 5, TN, sys_getsockopt, "getsockopt" }, /* 234 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 235 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 236 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 236 */ { 4, TI, sys_semop, "semop" }, /* 237 */ { 4, TI, sys_semget, "semget" }, /* 238 */ { 4, TI, sys_semctl, "semctl" }, /* 239 */ @@ -279,7 +279,7 @@ { 4, 0, NULL, NULL }, /* 250 */ { 4, 0, NULL, NULL }, /* 251 */ { 4, 0, sys_gettid, "gettid" }, /* 252 */ - { 5, TD, sys_readahead, "readahead" }, /* 253 */ + { 3, TD, sys_readahead, "readahead" }, /* 253 */ { 5, TF, sys_setxattr, "setxattr" }, /* 254 */ { 5, TF, sys_setxattr, "lsetxattr" }, /* 255 */ { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 256 */ @@ -304,14 +304,14 @@ { 5, 0, sys_io_getevents, "io_getevents" }, /* 275 */ { 3, 0, sys_io_submit, "io_submit" }, /* 276 */ { 3, 0, sys_io_cancel, "io_cancel" }, /* 277 */ - { 5, TD, sys_fadvise64, "fadvise64" }, /* 278 */ + { 4, TD, sys_fadvise64, "fadvise64" }, /* 278 */ { 5, 0, NULL, NULL }, /* 279 */ { 1, TP, sys_exit, "exit_group" }, /* 280 */ - { 4, 0, sys_lookup_dcookie, "lookup_dcookie"}, /* 281 */ + { 3, 0, sys_lookup_dcookie, "lookup_dcookie"}, /* 281 */ { 1, TD, sys_epoll_create, "epoll_create" }, /* 282 */ { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 283 */ { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 284 */ - { 5, 0, sys_remap_file_pages, "remap_file_pages"}, /* 285 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages"}, /* 285 */ { 1, 0, sys_set_tid_address, "set_tid_address"}, /* 286 */ { 3, 0, sys_timer_create, "timer_create" }, /* 287 */ { 4, 0, sys_timer_settime, "timer_settime" }, /* 288 */ @@ -326,11 +326,11 @@ { 2, TD, sys_fstatfs64, "fstatfs64" }, /* 297 */ { 3, TS, sys_tgkill, "tgkill" }, /* 298 */ { 2, TF, sys_utimes, "utimes" }, /* 299 */ - { 6, TD, sys_fadvise64_64, "fadvise64_64" }, /* 300 */ + { 4, TD, sys_fadvise64, "fadvise64_64" }, /* 300 */ { 0, 0, NULL, NULL }, /* 301 */ - { 4, 0, sys_mbind, "mbind" }, /* 302 */ - { 5, 0, sys_get_mempolicy, "get_mempolicy" }, /* 303 */ - { 3, 0, sys_set_mempolicy, "set_mempolicy" }, /* 304 */ + { 4, TM, sys_mbind, "mbind" }, /* 302 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 303 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 304 */ { 4, 0, sys_mq_open, "mq_open" }, /* 305 */ { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 306 */ { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 307 */ @@ -348,7 +348,7 @@ { 3, TD, printargs, "inotify_add_watch"}, /* 319 */ { 2, TD, printargs, "inotify_rm_watch"}, /* 320 */ { 5, 0, NULL, NULL }, /* 321 */ - { 4, 0, sys_migrate_pages, "migrate_pages" }, /* 322 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 322 */ { 4, TD|TF, sys_openat, "openat" }, /* 323 */ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 324 */ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 325 */ @@ -371,14 +371,14 @@ { 4, TD, sys_sync_file_range, "sync_file_range"}, /* 342 */ { 4, TD, sys_tee, "tee" }, /* 343 */ { 5, TD, sys_vmsplice, "vmsplice" }, /* 344 */ - { 6, 0, sys_move_pages, "move_pages" }, /* 345 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 345 */ { 3, 0, sys_getcpu, "getcpu" }, /* 346 */ { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 347 */ { 4, TD|TF, sys_utimensat, "utimensat" }, /* 348 */ { 3, TD|TS, sys_signalfd, "signalfd" }, /* 349 */ { 4, TD, sys_timerfd, "timerfd" }, /* 350 */ { 1, TD, sys_eventfd, "eventfd" }, /* 351 */ - { 6, TD, sys_fallocate, "fallocate" }, /* 352 */ + { 4, TD, sys_fallocate, "fallocate" }, /* 352 */ { 4, TD, sys_timerfd_settime, "timerfd_settime"}, /* 353 */ { 2, TD, sys_timerfd_gettime, "timerfd_gettime"}, /* 354 */ { 4, TD|TS, sys_signalfd4, "signalfd4" }, /* 355 */ @@ -387,8 +387,8 @@ { 3, TD, sys_dup3, "dup3" }, /* 358 */ { 2, TD, sys_pipe2, "pipe2" }, /* 359 */ { 1, TD, sys_inotify_init1, "inotify_init1" }, /* 360 */ - { 5, TD, sys_preadv, "preadv" }, /* 361 */ - { 5, TD, sys_pwritev, "pwritev" }, /* 362 */ + { 4, TD, sys_preadv, "preadv" }, /* 361 */ + { 4, TD, sys_pwritev, "pwritev" }, /* 362 */ { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo"}, /* 363 */ { 5, TD, sys_perf_event_open, "perf_event_open"}, /* 364 */ { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 365 */ @@ -404,8 +404,8 @@ { 2, TD, sys_setns, "setns" }, /* 375 */ { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 376 */ { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 377 */ - { 5, 0, NULL, NULL }, /* 378 */ - { 5, 0, NULL, NULL }, /* 379 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 378 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 379 */ { 5, 0, NULL, NULL }, /* 380 */ { 5, 0, NULL, NULL }, /* 381 */ { 5, 0, NULL, NULL }, /* 382 */ @@ -426,10 +426,8 @@ { 5, 0, NULL, NULL }, /* 397 */ { 5, 0, NULL, NULL }, /* 398 */ { 5, 0, NULL, NULL }, /* 399 */ - -#if SYS_socket_subcall != 400 - #error fix me -#endif +#define SYS_socket_subcall 400 +#include "subcall.h" { 6, 0, printargs, "socket_subcall"}, /* 400 */ { 3, TN, sys_socket, "socket" }, /* 401 */ { 3, TN, sys_bind, "bind" }, /* 402 */ @@ -447,7 +445,7 @@ { 5, TN, sys_setsockopt, "setsockopt" }, /* 414 */ { 5, TN, sys_getsockopt, "getsockopt" }, /* 415 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 416 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 417 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 417 */ { 4, TN, sys_accept4, "accept4" }, /* 418 */ { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 419 */ diff --git a/linux/sparc/ioctlent.h.in b/linux/sparc/ioctlent.h.in index 25b7b4d5..008aae09 100644 --- a/linux/sparc/ioctlent.h.in +++ b/linux/sparc/ioctlent.h.in @@ -32,76 +32,24 @@ {"asm/openpromio.h", "OPIOCGETNEXT", 0x4f05}, {"asm/openpromio.h", "OPIOCGETCHILD", 0x4f06}, {"asm/ioctls.h", "TCGETA", 0x5401}, - {"asm-generic/ioctls.h", "TCGETS", 0x5401}, {"asm/ioctls.h", "TCSETA", 0x5402}, - {"asm-generic/ioctls.h", "TCSETS", 0x5402}, {"asm/ioctls.h", "TCSETAW", 0x5403}, - {"asm-generic/ioctls.h", "TCSETSW", 0x5403}, {"asm/ioctls.h", "TCSETAF", 0x5404}, - {"asm-generic/ioctls.h", "TCSETSF", 0x5404}, - {"asm-generic/ioctls.h", "TCGETA", 0x5405}, {"asm/ioctls.h", "TCSBRK", 0x5405}, - {"asm-generic/ioctls.h", "TCSETA", 0x5406}, {"asm/ioctls.h", "TCXONC", 0x5406}, {"asm/ioctls.h", "TCFLSH", 0x5407}, - {"asm-generic/ioctls.h", "TCSETAW", 0x5407}, {"asm/ioctls.h", "TCGETS", 0x5408}, - {"asm-generic/ioctls.h", "TCSETAF", 0x5408}, - {"asm-generic/ioctls.h", "TCSBRK", 0x5409}, {"asm/ioctls.h", "TCSETS", 0x5409}, {"asm/ioctls.h", "TCSETSW", 0x540a}, - {"asm-generic/ioctls.h", "TCXONC", 0x540a}, - {"asm-generic/ioctls.h", "TCFLSH", 0x540b}, {"asm/ioctls.h", "TCSETSF", 0x540b}, {"asm/ioctls.h", "TCGETS2", 0x540c}, - {"asm-generic/ioctls.h", "TIOCEXCL", 0x540c}, {"asm/ioctls.h", "TCSETS2", 0x540d}, - {"asm-generic/ioctls.h", "TIOCNXCL", 0x540d}, {"asm/ioctls.h", "TCSETSW2", 0x540e}, - {"asm-generic/ioctls.h", "TIOCSCTTY", 0x540e}, {"asm/ioctls.h", "TCSETSF2", 0x540f}, - {"asm-generic/ioctls.h", "TIOCGPGRP", 0x540f}, - {"asm-generic/ioctls.h", "TIOCSPGRP", 0x5410}, - {"asm-generic/ioctls.h", "TIOCOUTQ", 0x5411}, - {"asm-generic/ioctls.h", "TIOCSTI", 0x5412}, - {"asm-generic/ioctls.h", "TIOCGWINSZ", 0x5413}, - {"asm-generic/ioctls.h", "TIOCSWINSZ", 0x5414}, - {"asm-generic/ioctls.h", "TIOCMGET", 0x5415}, - {"asm-generic/ioctls.h", "TIOCMBIS", 0x5416}, - {"asm-generic/ioctls.h", "TIOCMBIC", 0x5417}, - {"asm-generic/ioctls.h", "TIOCMSET", 0x5418}, - {"asm-generic/ioctls.h", "TIOCGSOFTCAR", 0x5419}, - {"asm-generic/ioctls.h", "TIOCSSOFTCAR", 0x541a}, - {"asm-generic/ioctls.h", "FIONREAD", 0x541b}, {"asm/ioctls.h", "TIOCLINUX", 0x541c}, - {"asm-generic/ioctls.h", "TIOCCONS", 0x541d}, {"asm/ioctls.h", "TIOCGSERIAL", 0x541e}, {"asm/ioctls.h", "TIOCSSERIAL", 0x541f}, - {"asm-generic/ioctls.h", "TIOCPKT", 0x5420}, - {"asm-generic/ioctls.h", "FIONBIO", 0x5421}, - {"asm-generic/ioctls.h", "TIOCNOTTY", 0x5422}, - {"asm-generic/ioctls.h", "TIOCSETD", 0x5423}, - {"asm-generic/ioctls.h", "TIOCGETD", 0x5424}, {"asm/ioctls.h", "TCSBRKP", 0x5425}, - {"asm-generic/ioctls.h", "TIOCSBRK", 0x5427}, - {"asm-generic/ioctls.h", "TIOCCBRK", 0x5428}, - {"asm-generic/ioctls.h", "TIOCGSID", 0x5429}, - {"asm-generic/ioctls.h", "TCGETS2", 0x542a}, - {"asm-generic/ioctls.h", "TCSETS2", 0x542b}, - {"asm-generic/ioctls.h", "TCSETSW2", 0x542c}, - {"asm-generic/ioctls.h", "TCSETSF2", 0x542d}, - {"asm-generic/ioctls.h", "TIOCGRS485", 0x542e}, - {"asm-generic/ioctls.h", "TIOCSRS485", 0x542f}, - {"asm-generic/ioctls.h", "TIOCGPTN", 0x5430}, - {"asm-generic/ioctls.h", "TIOCSPTLCK", 0x5431}, - {"asm-generic/ioctls.h", "TCGETX", 0x5432}, - {"asm-generic/ioctls.h", "TCSETX", 0x5433}, - {"asm-generic/ioctls.h", "TCSETXF", 0x5434}, - {"asm-generic/ioctls.h", "TCSETXW", 0x5435}, - {"asm-generic/ioctls.h", "TIOCSIG", 0x5436}, - {"asm-generic/ioctls.h", "FIONCLEX", 0x5450}, - {"asm-generic/ioctls.h", "FIOCLEX", 0x5451}, - {"asm-generic/ioctls.h", "FIOASYNC", 0x5452}, {"asm/ioctls.h", "TIOCSERCONFIG", 0x5453}, {"asm/ioctls.h", "TIOCSERGWILD", 0x5454}, {"asm/ioctls.h", "TIOCSERSWILD", 0x5455}, @@ -113,7 +61,6 @@ {"asm/ioctls.h", "TIOCSERSETMULTI", 0x545b}, {"asm/ioctls.h", "TIOCMIWAIT", 0x545c}, {"asm/ioctls.h", "TIOCGICOUNT", 0x545d}, - {"asm-generic/ioctls.h", "FIOQSIZE", 0x5460}, {"asm/watchdog.h", "WIOCSTART", 0x570a}, {"asm/watchdog.h", "WIOCSTOP", 0x570b}, {"asm/watchdog.h", "WIOCGSTAT", 0x570c}, diff --git a/linux/sparc/syscallent.h b/linux/sparc/syscallent.h index 259eb4b2..804e8c36 100644 --- a/linux/sparc/syscallent.h +++ b/linux/sparc/syscallent.h @@ -15,7 +15,7 @@ { 3, TF, sys_mknod, "mknod" }, /* 14 */ { 2, TF, sys_chmod, "chmod" }, /* 15 */ { 3, TF, sys_chown, "lchown" }, /* 16 */ - { 1, 0, sys_brk, "brk" }, /* 17 */ + { 1, TM, sys_brk, "brk" }, /* 17 */ { 4, 0, printargs, "perfctr" }, /* 18 */ { 3, TD, sys_lseek, "lseek" }, /* 19 */ { 0, 0, sys_getpid, "getpid" }, /* 20 */ @@ -54,7 +54,7 @@ { 0, NF, sys_getgid, "getgid32" }, /* 53 */ { 3, TD, sys_ioctl, "ioctl" }, /* 54 */ { 4, 0, sys_reboot, "reboot" }, /* 55 */ - { 6, TD, sys_mmap, "mmap2" }, /* 56 */ + { 6, TD|TM, sys_mmap, "mmap2" }, /* 56 */ { 2, TF, sys_symlink, "symlink" }, /* 57 */ { 3, TF, sys_readlink, "readlink" }, /* 58 */ { 3, TF|TP, sys_execve, "execve" }, /* 59 */ @@ -63,26 +63,26 @@ { 2, TD, sys_fstat, "fstat" }, /* 62 */ { 2, TD, sys_fstat64, "fstat64" }, /* 63 */ { 0, 0, sys_getpagesize,"getpagesize" }, /* 64 */ - { 3, 0, sys_msync, "msync" }, /* 65 */ + { 3, TM, sys_msync, "msync" }, /* 65 */ { 0, TP, sys_vfork, "vfork" }, /* 66 */ { 5, TD, sys_pread, "pread" }, /* 67 */ { 5, TD, sys_pwrite, "pwrite" }, /* 68 */ { 0, NF, sys_geteuid, "geteuid32" }, /* 69 */ { 0, NF, sys_getegid, "getegid32" }, /* 70 */ - { 6, TD, sys_mmap, "mmap" }, /* 71 */ + { 6, TD|TM, sys_mmap, "mmap" }, /* 71 */ { 2, 0, sys_setreuid, "setreuid32" }, /* 72 */ - { 2, 0, sys_munmap, "munmap" }, /* 73 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 74 */ - { 3, 0, sys_madvise, "madvise" }, /* 75 */ + { 2, TM, sys_munmap, "munmap" }, /* 73 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 74 */ + { 3, TM, sys_madvise, "madvise" }, /* 75 */ { 0, 0, sys_vhangup, "vhangup" }, /* 76 */ { 3, TF, sys_truncate64, "truncate64" }, /* 77 */ - { 3, 0, sys_mincore, "mincore" }, /* 78 */ + { 3, TM, sys_mincore, "mincore" }, /* 78 */ { 2, 0, sys_getgroups, "getgroups" }, /* 79 */ { 2, 0, sys_setgroups, "setgroups" }, /* 80 */ { 0, 0, sys_getpgrp, "getpgrp" }, /* 81 */ { 2, 0, sys_setgroups32,"setgroups32" }, /* 82 */ { 3, 0, sys_setitimer, "setitimer" }, /* 83 */ - { 2, TD, sys_ftruncate, "ftruncate64" }, /* 84 */ + { 3, TD, sys_ftruncate64,"ftruncate64" }, /* 84 */ { 2, TF, sys_swapon, "swapon" }, /* 85 */ { 2, 0, sys_getitimer, "getitimer" }, /* 86 */ { 1, 0, sys_setuid, "setuid32" }, /* 87 */ @@ -106,12 +106,12 @@ { 4, TS, sys_rt_sigtimedwait,"rt_sigtimedwait" },/* 105 */ { 3, TS, sys_rt_sigqueueinfo,"rt_sigqueueinfo" },/* 106 */ { 2, TS, sys_rt_sigsuspend,"rt_sigsuspend" }, /* 107 */ - { 3, TS, sys_setresuid, "setresuid" }, /* 108 */ - { 3, TS, sys_getresuid, "getresuid" }, /* 109 */ - { 3, TS, sys_setresgid, "setresgid" }, /* 110 */ - { 3, TS, sys_getresgid, "getresgid" }, /* 111 */ - { 2, TS, sys_setresgid, "setresgid32" }, /* 112 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 113 */ + { 3, 0, sys_setresuid, "setresuid" }, /* 108 */ + { 3, 0, sys_getresuid, "getresuid" }, /* 109 */ + { 3, 0, sys_setresgid, "setresgid" }, /* 110 */ + { 3, 0, sys_getresgid, "getresgid" }, /* 111 */ + { 2, 0, sys_setresgid, "setresgid32" }, /* 112 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 113 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 114 */ { 2, 0, sys_getgroups32,"getgroups32" }, /* 115 */ { 2, 0, sys_gettimeofday,"gettimeofday" }, /* 116 */ @@ -163,7 +163,7 @@ { 2, 0, printargs, "getdomainname" }, /* 162 */ { 2, 0, sys_setdomainname,"setdomainname" }, /* 163 */ { 5, 0, printargs, "utrap_install" }, /* 164 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 165 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 165 */ { 1, 0, sys_set_tid_address,"set_tid_address" }, /* 166 */ { 5, TF, sys_mount, "mount" }, /* 167 */ { 2, 0, sys_ustat, "ustat" }, /* 168 */ @@ -190,7 +190,7 @@ { 1, 0, sys_uname, "uname" }, /* 189 */ { 3, 0, sys_init_module,"init_module" }, /* 190 */ { 1, 0, sys_personality,"personality" }, /* 191 */ - { 5, 0, sys_remap_file_pages,"remap_file_pages" },/* 192 */ + { 5, TM, sys_remap_file_pages,"remap_file_pages" },/* 192 */ { 1, TD, sys_epoll_create,"epoll_create" }, /* 193 */ { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 194 */ { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 195 */ @@ -207,8 +207,8 @@ { 2, TD, sys_socketcall, "socketcall" }, /* 206 */ { 3, 0, sys_syslog, "syslog" }, /* 207 */ { 4, 0, sys_lookup_dcookie,"lookup_dcookie" }, /* 208 */ - { 6, TD, printargs, "fadvise64" }, /* 209 */ - { 6, TD, printargs, "fadvise64_64" }, /* 210 */ + { 5, TD, sys_fadvise64, "fadvise64" }, /* 209 */ + { 6, TD, sys_fadvise64_64,"fadvise64_64" }, /* 210 */ { 3, TS, sys_tgkill, "tgkill" }, /* 211 */ { 3, TP, sys_waitpid, "waitpid" }, /* 212 */ { 1, TF, sys_swapoff, "swapoff" }, /* 213 */ @@ -235,20 +235,20 @@ { 3, TF, sys_statfs64, "statfs64" }, /* 234 */ { 3, TD, sys_fstatfs64, "fstatfs64" }, /* 235 */ { 5, TD, sys_llseek, "_llseek" }, /* 236 */ - { 2, 0, sys_mlock, "mlock" }, /* 237 */ - { 2, 0, sys_munlock, "munlock" }, /* 238 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 239 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 240 */ + { 2, TM, sys_mlock, "mlock" }, /* 237 */ + { 2, TM, sys_munlock, "munlock" }, /* 238 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 239 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 240 */ { 2, 0, sys_sched_setparam,"sched_setparam"}, /* 241 */ { 2, 0, sys_sched_getparam,"sched_getparam"}, /* 242 */ { 3, 0, sys_sched_setscheduler,"sched_setscheduler"},/* 243 */ { 1, 0, sys_sched_getscheduler,"sched_getscheduler"},/* 244 */ { 0, 0, sys_sched_yield,"sched_yield" }, /* 245 */ - { 1,0,sys_sched_get_priority_max,"sched_get_priority_max"},/* 246 */ - { 1,0,sys_sched_get_priority_min,"sched_get_priority_min"},/* 247 */ - { 2, 0,sys_sched_rr_get_interval,"sched_rr_get_interval"},/* 248 */ + { 1, 0, sys_sched_get_priority_max,"sched_get_priority_max"},/* 246 */ + { 1, 0, sys_sched_get_priority_min,"sched_get_priority_min"},/* 247 */ + { 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"},/* 248 */ { 2, 0, sys_nanosleep, "nanosleep" }, /* 249 */ - { 5, 0, sys_mremap, "mremap" }, /* 250 */ + { 5, TM, sys_mremap, "mremap" }, /* 250 */ { 1, 0, sys_sysctl, "_sysctl" }, /* 251 */ { 1, 0, sys_getsid, "getsid" }, /* 252 */ { 1, TD, sys_fdatasync, "fdatasync" }, /* 253 */ @@ -300,12 +300,12 @@ { 1, TP, sys_unshare, "unshare" }, /* 299 */ { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 300 */ { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 301 */ - { 4, 0, sys_migrate_pages, "migrate_pages" }, /* 302 */ - { 6, 0, sys_mbind, "mbind" }, /* 303 */ - { 5, 0, sys_get_mempolicy, "get_mempolicy" }, /* 304 */ - { 3, 0, sys_set_mempolicy, "set_mempolicy" }, /* 305 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 302 */ + { 6, TM, sys_mbind, "mbind" }, /* 303 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 304 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 305 */ { 4, 0, sys_kexec_load, "kexec_load" }, /* 306 */ - { 6, 0, sys_move_pages, "move_pages" }, /* 307 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 307 */ { 3, 0, sys_getcpu, "getcpu" }, /* 308 */ { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 309 */ { 4, TD|TF, sys_utimensat, "utimensat" }, /* 310 */ @@ -338,9 +338,9 @@ { 2, TD, sys_setns, "setns" }, /* 337 */ { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 338 */ { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 339 */ - { 5, 0, NULL, NULL }, /* 340 */ - { 5, 0, NULL, NULL }, /* 341 */ - { 5, 0, NULL, NULL }, /* 342 */ + { 0, NF, printargs, "kern_features" }, /* 340 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 341 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 342 */ { 5, 0, NULL, NULL }, /* 343 */ { 5, 0, NULL, NULL }, /* 344 */ { 5, 0, NULL, NULL }, /* 345 */ @@ -351,9 +351,8 @@ { 5, 0, NULL, NULL }, /* 350 */ { 5, 0, NULL, NULL }, /* 351 */ { 5, 0, NULL, NULL }, /* 352 */ -#if SYS_socket_subcall != 353 - #error fix me -#endif +#define SYS_socket_subcall 353 +#include "subcall.h" { 6, 0, printargs, "socket_subcall"}, /* 353 */ { 3, TN, sys_socket, "socket" }, /* 354 */ { 3, TN, sys_bind, "bind" }, /* 355 */ @@ -371,7 +370,7 @@ { 5, TN, sys_setsockopt, "setsockopt" }, /* 367 */ { 5, TN, sys_getsockopt, "getsockopt" }, /* 368 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 369 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 370 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 370 */ { 4, TN, sys_accept4, "accept4" }, /* 371 */ { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 372 */ #if SYS_ipc_subcall != 373 diff --git a/linux/sparc/syscallent1.h b/linux/sparc/syscallent1.h index 5e9fe961..9519e085 100644 --- a/linux/sparc/syscallent1.h +++ b/linux/sparc/syscallent1.h @@ -140,7 +140,7 @@ { 6, 0, solaris_priocntlsys, "priocntlsys" }, /* 112 */ { 6, TF, solaris_pathconf, "pathconf" }, /* 113 */ { 6, 0, solaris_mincore, "mincore" }, /* 114 */ - { 6, TD, solaris_mmap, "mmap" }, /* 115 */ + { 6, TD|TM, solaris_mmap, "mmap" }, /* 115 */ { 6, 0, solaris_mprotect, "mprotect" }, /* 116 */ { 6, 0, solaris_munmap, "munmap" }, /* 117 */ { 6, 0, solaris_fpathconf, "fpathconf" }, /* 118 */ diff --git a/linux/subcall.h b/linux/subcall.h new file mode 100644 index 00000000..54f7fcaf --- /dev/null +++ b/linux/subcall.h @@ -0,0 +1,6 @@ +#ifndef SYS_socket_subcall +# error SYS_socket_subcall is not defined +#endif +#define SYS_socket_nsubcalls 20 +#define SYS_ipc_subcall ((SYS_socket_subcall)+(SYS_socket_nsubcalls)) +#define SYS_ipc_nsubcalls 25 diff --git a/linux/syscall.h b/linux/syscall.h index 7e0155ec..f6afcac0 100644 --- a/linux/syscall.h +++ b/linux/syscall.h @@ -98,7 +98,7 @@ int sys_getgroups32(); int sys_gethostname(); int sys_getitimer(); int sys_getpeername(); -int sys_getpmsg(); +int sys_getpmsg(); /* TODO: non-Linux, remove? */ int sys_getpriority(); int sys_getresuid(); int sys_getrlimit(); @@ -126,8 +126,6 @@ int sys_listen(); int sys_listxattr(); int sys_llseek(); int sys_lseek(); -int sys_lstat(); -int sys_lstat64(); int sys_madvise(); int sys_mbind(); int sys_migrate_pages(); @@ -138,6 +136,8 @@ int sys_mknod(); int sys_mknodat(); int sys_mlockall(); int sys_mmap(); +int sys_mmap_pgoff(); +int sys_mmap_4koff(); int sys_modify_ldt(); int sys_mount(); int sys_move_pages(); @@ -157,12 +157,13 @@ int sys_munmap(); int sys_nanosleep(); int sys_newfstatat(); int sys_old_mmap(); +int sys_old_mmap_pgoff(); int sys_oldfstat(); -int sys_oldlstat(); int sys_oldselect(); int sys_oldstat(); int sys_open(); int sys_openat(); +int sys_perf_event_open(); int sys_personality(); int sys_pipe(); int sys_pipe2(); @@ -177,7 +178,7 @@ int sys_process_vm_readv(); int sys_process_vm_writev(); int sys_pselect6(); int sys_ptrace(); -int sys_putpmsg(); +int sys_putpmsg(); /* TODO: non-Linux, remove? */ int sys_pwrite(); int sys_pwritev(); int sys_query_module(); @@ -312,33 +313,10 @@ int sys_osf_utimes(); int sys_osf_wait4(); #endif -#if !defined(ALPHA) && !defined(MIPS) && !defined(HPPA) && \ - !defined(__ARM_EABI__) -# if defined(SPARC) || defined(SPARC64) -# define SYS_socket_subcall 353 -# else -# define SYS_socket_subcall 400 -# endif - -#define SYS_socket_nsubcalls 20 -#endif /* !(ALPHA || MIPS || HPPA) */ - -#if !defined(ALPHA) && !defined(MIPS) && !defined(HPPA) && \ - !defined(__ARM_EABI__) -#define SYS_ipc_subcall ((SYS_socket_subcall)+(SYS_socket_nsubcalls)) -#define SYS_ipc_nsubcalls 25 -#endif /* !(ALPHA || MIPS || HPPA) */ - #if defined(ALPHA) || defined(IA64) || defined(SPARC) || defined(SPARC64) int sys_getpagesize(); #endif -#ifdef IA64 -/* STREAMS stuff */ -int sys_getpmsg(); -int sys_putpmsg(); -#endif - #ifdef MIPS int sys_sysmips(); #endif @@ -347,6 +325,10 @@ int sys_sysmips(); int sys_cacheflush(); #endif +#if defined OR1K +int sys_or1k_atomic(); +#endif + #ifdef POWERPC int sys_subpage_prot(); #endif @@ -360,18 +342,5 @@ int sys_sram_alloc(); #include "sparc/syscall1.h" int sys_execv(); int sys_getmsg(); -int sys_msgsys(); int sys_putmsg(); -int sys_semsys(); -int sys_shmsys(); -#define SYS_semsys_subcall 200 -#define SYS_semsys_nsubcalls 3 -#define SYS_msgsys_subcall 203 -#define SYS_msgsys_nsubcalls 4 -#define SYS_shmsys_subcall 207 -#define SYS_shmsys_nsubcalls 4 -#endif - -#ifdef X32 -int sys_lseek32(); #endif diff --git a/linux/tile/errnoent1.h b/linux/tile/errnoent1.h new file mode 100644 index 00000000..439ec5c2 --- /dev/null +++ b/linux/tile/errnoent1.h @@ -0,0 +1,2 @@ +/* tilegx32/tilepro */ +#include "../errnoent.h" diff --git a/linux/tile/ioctlent1.h b/linux/tile/ioctlent1.h new file mode 100644 index 00000000..9057b32f --- /dev/null +++ b/linux/tile/ioctlent1.h @@ -0,0 +1,2 @@ +/* tilegx32/tilepro */ +#include "ioctlent.h" diff --git a/linux/tile/signalent1.h b/linux/tile/signalent1.h new file mode 100644 index 00000000..27a3e481 --- /dev/null +++ b/linux/tile/signalent1.h @@ -0,0 +1,2 @@ +/* tilegx32/tilepro */ +#include "../signalent.h" diff --git a/linux/tile/syscallent.h b/linux/tile/syscallent.h index c21a1e09..a0693342 100644 --- a/linux/tile/syscallent.h +++ b/linux/tile/syscallent.h @@ -1,302 +1,274 @@ - { 0, 0, sys_restart_syscall, "restart_syscall" }, /* 0 */ - { 1, TP, sys_exit, "exit" }, /* 1 */ - { 0, TP, sys_fork, "fork" }, /* 2 */ - { 3, TD, sys_read, "read" }, /* 3 */ - { 3, TD, sys_write, "write" }, /* 4 */ - { 3, TD|TF, sys_open, "open" }, /* 5 */ - { 1, TD, sys_close, "close" }, /* 6 */ - { 3, TP, sys_waitpid, "waitpid" }, /* 7 */ - { 2, TD|TF, sys_creat, "creat" }, /* 8 */ - { 2, TF, sys_link, "link" }, /* 9 */ - { 1, TF, sys_unlink, "unlink" }, /* 10 */ - { 3, TF|TP, sys_execve, "execve" }, /* 11 */ - { 1, TF, sys_chdir, "chdir" }, /* 12 */ - { 1, 0, sys_time, "time" }, /* 13 */ - { 3, TF, sys_mknod, "mknod" }, /* 14 */ - { 2, TF, sys_chmod, "chmod" }, /* 15 */ - { 3, TF, sys_chown, "lchown" }, /* 16 */ - { 2, TF, sys_stat, "stat" }, /* 17 */ - { 3, TD, sys_lseek, "lseek" }, /* 18 */ - { 0, 0, sys_getpid, "getpid" }, /* 19 */ - { 5, TF, sys_mount, "mount" }, /* 20 */ - { 2, TF, sys_umount2, "umount" }, /* 21 */ - { 1, 0, sys_setuid, "setuid" }, /* 22 */ - { 0, NF, sys_getuid, "getuid" }, /* 23 */ - { 1, 0, sys_stime, "stime" }, /* 24 */ - { 4, 0, sys_ptrace, "ptrace" }, /* 25 */ - { 1, 0, sys_alarm, "alarm" }, /* 26 */ - { 2, TD, sys_fstat, "fstat" }, /* 27 */ - { 0, TS, sys_pause, "pause" }, /* 28 */ - { 2, TF, sys_utime, "utime" }, /* 29 */ - { 2, TF, sys_access, "access" }, /* 30 */ - { 1, 0, sys_nice, "nice" }, /* 31 */ - { 0, 0, sys_sync, "sync" }, /* 32 */ - { 2, TS, sys_kill, "kill" }, /* 33 */ - { 2, TF, sys_rename, "rename" }, /* 34 */ - { 2, TF, sys_mkdir, "mkdir" }, /* 35 */ - { 1, TF, sys_rmdir, "rmdir" }, /* 36 */ - { 1, TD, sys_dup, "dup" }, /* 37 */ - { 1, TD, sys_pipe, "pipe" }, /* 38 */ - { 1, 0, sys_times, "times" }, /* 39 */ - { 1, 0, sys_brk, "brk" }, /* 40 */ - { 1, 0, sys_setgid, "setgid" }, /* 41 */ - { 0, NF, sys_getgid, "getgid" }, /* 42 */ - { 3, TS, sys_signal, "signal" }, /* 43 */ - { 0, NF, sys_geteuid, "geteuid" }, /* 44 */ - { 0, NF, sys_getegid, "getegid" }, /* 45 */ - { 1, TF, sys_acct, "acct" }, /* 46 */ - { 3, TD, sys_ioctl, "ioctl" }, /* 47 */ - { 3, TD, sys_fcntl, "fcntl" }, /* 48 */ - { 2, 0, sys_setpgid, "setpgid" }, /* 49 */ - { 1, 0, sys_umask, "umask" }, /* 50 */ - { 1, TF, sys_chroot, "chroot" }, /* 51 */ - { 2, 0, sys_ustat, "ustat" }, /* 52 */ - { 2, TD, sys_dup2, "dup2" }, /* 53 */ - { 0, 0, sys_getppid, "getppid" }, /* 54 */ - { 0, 0, sys_getpgrp, "getpgrp" }, /* 55 */ - { 0, 0, sys_setsid, "setsid" }, /* 56 */ - { 0, TS, sys_siggetmask, "sgetmask" }, /* 57 */ - { 1, TS, sys_sigsetmask, "ssetmask" }, /* 58 */ - { 2, 0, sys_setreuid, "setreuid" }, /* 59 */ - { 2, 0, sys_setregid, "setregid" }, /* 60 */ - { 1, TS, sys_sigpending, "sigpending" }, /* 61 */ - { 2, 0, sys_sethostname, "sethostname" }, /* 62 */ - { 2, 0, sys_setrlimit, "setrlimit" }, /* 63 */ - { 2, 0, sys_getrlimit, "ugetrlimit" }, /* 64 */ - { 2, 0, sys_getrusage, "getrusage" }, /* 65 */ - { 2, 0, sys_gettimeofday, "gettimeofday" }, /* 66 */ - { 2, 0, sys_settimeofday, "settimeofday" }, /* 67 */ - { 2, 0, sys_getgroups, "getgroups" }, /* 68 */ - { 2, 0, sys_setgroups, "setgroups" }, /* 69 */ - { 5, TD, sys_select, "select" }, /* 70 */ - { 2, TF, sys_symlink, "symlink" }, /* 71 */ - { 2, TF, sys_lstat, "lstat" }, /* 72 */ - { 3, TF, sys_readlink, "readlink" }, /* 73 */ - { 1, TF, sys_uselib, "uselib" }, /* 74 */ - { 2, TF, sys_swapon, "swapon" }, /* 75 */ - { 4, 0, sys_reboot, "reboot" }, /* 76 */ - { 6, TD, sys_mmap, "mmap2" }, /* 77 */ - { 2, 0, sys_munmap, "munmap" }, /* 78 */ - { 2, TF, sys_truncate, "truncate" }, /* 79 */ - { 2, TD, sys_ftruncate, "ftruncate" }, /* 80 */ - { 2, TD, sys_fchmod, "fchmod" }, /* 81 */ - { 3, TD, sys_fchown, "fchown" }, /* 82 */ - { 2, 0, sys_getpriority, "getpriority" }, /* 83 */ - { 3, 0, sys_setpriority, "setpriority" }, /* 84 */ - { 2, TF, sys_statfs, "statfs" }, /* 85 */ - { 2, TD, sys_fstatfs, "fstatfs" }, /* 86 */ - { 3, TN, sys_socket, "socket" }, /* 87 */ - { 3, TN, sys_bind, "bind" }, /* 88 */ - { 3, TN, sys_connect, "connect" }, /* 89 */ - { 2, TN, sys_listen, "listen" }, /* 90 */ - { 3, TN, sys_accept, "accept" }, /* 91 */ - { 3, TN, sys_getsockname, "getsockname" }, /* 92 */ - { 3, TN, sys_getpeername, "getpeername" }, /* 93 */ - { 4, TN, sys_socketpair, "socketpair" }, /* 94 */ - { 4, TN, sys_send, "send" }, /* 95 */ - { 6, TN, sys_sendto, "sendto" }, /* 96 */ - { 4, TN, sys_recv, "recv" }, /* 97 */ - { 6, TN, sys_recvfrom, "recvfrom" }, /* 98 */ - { 2, TN, sys_shutdown, "shutdown" }, /* 99 */ - { 5, TN, sys_setsockopt, "setsockopt" }, /* 100 */ - { 5, TN, sys_getsockopt, "getsockopt" }, /* 101 */ - { 3, TN, sys_sendmsg, "sendmsg" }, /* 102 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 103 */ - { 3, 0, sys_syslog, "syslog" }, /* 104 */ - { 3, 0, sys_setitimer, "setitimer" }, /* 105 */ - { 2, 0, sys_getitimer, "getitimer" }, /* 106 */ - { 0, 0, sys_vhangup, "vhangup" }, /* 107 */ - { 4, TP, sys_wait4, "wait4" }, /* 108 */ - { 1, TF, sys_swapoff, "swapoff" }, /* 109 */ - { 1, 0, sys_sysinfo, "sysinfo" }, /* 110 */ - { 4, TI, sys_shmget, "shmget" }, /* 111 */ - { 4, TI, sys_shmat, "shmat" }, /* 112 */ - { 4, TI, sys_shmctl, "shmctl" }, /* 113 */ - { 4, TI, sys_shmdt, "shmdt" }, /* 114 */ - { 4, TI, sys_semget, "semget" }, /* 115 */ - { 4, TI, sys_semop, "semop" }, /* 116 */ - { 4, TI, sys_semctl, "semctl" }, /* 117 */ - { 5, TI, sys_semtimedop, "semtimedop" }, /* 118 */ - { 4, TI, sys_msgget, "msgget" }, /* 119 */ - { 4, TI, sys_msgsnd, "msgsnd" }, /* 120 */ - { 4, TI, sys_msgrcv, "msgrcv" }, /* 121 */ - { 4, TI, sys_msgctl, "msgctl" }, /* 122 */ - { 1, TD, sys_fsync, "fsync" }, /* 123 */ - { 0, TS, printargs, "sigreturn" }, /* 124 */ - { 5, TP, sys_clone, "clone" }, /* 125 */ - { 2, 0, sys_setdomainname, "setdomainname" }, /* 126 */ - { 1, 0, sys_uname, "uname" }, /* 127 */ - { 1, 0, sys_adjtimex, "adjtimex" }, /* 128 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 129 */ - { 3, TS, sys_sigprocmask, "sigprocmask" }, /* 130 */ - { 3, 0, sys_init_module, "init_module" }, /* 131 */ - { 1, 0, sys_delete_module, "delete_module" }, /* 132 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 133 */ - { 1, 0, sys_getpgid, "getpgid" }, /* 134 */ - { 1, TD, sys_fchdir, "fchdir" }, /* 135 */ - { 0, 0, sys_bdflush, "bdflush" }, /* 136 */ - { 3, 0, sys_sysfs, "sysfs" }, /* 137 */ - { 1, 0, sys_personality, "personality" }, /* 138 */ - { 5, 0, sys_afs_syscall, "afs_syscall" }, /* 139 */ - { 1, NF, sys_setfsuid, "setfsuid" }, /* 140 */ - { 1, NF, sys_setfsgid, "setfsgid" }, /* 141 */ - { 5, TD, sys_llseek, "_llseek" }, /* 142 */ - { 3, TD, sys_getdents, "getdents" }, /* 143 */ - { 2, TD, sys_flock, "flock" }, /* 144 */ - { 3, 0, sys_msync, "msync" }, /* 145 */ - { 3, TD, sys_readv, "readv" }, /* 146 */ - { 3, TD, sys_writev, "writev" }, /* 147 */ - { 1, 0, sys_getsid, "getsid" }, /* 148 */ - { 1, TD, sys_fdatasync, "fdatasync" }, /* 149 */ - { 1, 0, sys_sysctl, "_sysctl" }, /* 150 */ - { 2, 0, sys_mlock, "mlock" }, /* 151 */ - { 2, 0, sys_munlock, "munlock" }, /* 152 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 153 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 154 */ - { 0, 0, sys_sched_setparam, "sched_setparam" }, /* 155 */ - { 2, 0, sys_sched_getparam, "sched_getparam" }, /* 156 */ - { 3, 0, sys_sched_setscheduler, "sched_setscheduler" }, /* 157 */ - { 1, 0, sys_sched_getscheduler, "sched_getscheduler" }, /* 158 */ - { 0, 0, sys_sched_yield, "sched_yield" }, /* 159 */ - { 1, 0, sys_sched_get_priority_max,"sched_get_priority_max" }, /* 160 */ - { 1, 0, sys_sched_get_priority_min,"sched_get_priority_min" }, /* 161 */ - { 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval" }, /* 162 */ - { 2, 0, sys_nanosleep, "nanosleep" }, /* 163 */ - { 4, 0, sys_mremap, "mremap" }, /* 164 */ - { 3, 0, sys_setresuid, "setresuid" }, /* 165 */ - { 3, 0, sys_getresuid, "getresuid" }, /* 166 */ - { 3, TD, sys_poll, "poll" }, /* 167 */ - { 3, 0, sys_nfsservctl, "nfsservctl" }, /* 168 */ - { 3, 0, sys_setresgid, "setresgid" }, /* 169 */ - { 3, 0, sys_getresgid, "getresgid" }, /* 170 */ - { 5, 0, sys_prctl, "prctl" }, /* 171 */ - { 0, TS, sys_rt_sigreturn, "rt_sigreturn" }, /* 172 */ - { 4, TS, sys_rt_sigaction, "rt_sigaction" }, /* 173 */ - { 4, TS, sys_rt_sigprocmask, "rt_sigprocmask" }, /* 174 */ - { 2, TS, sys_rt_sigpending, "rt_sigpending" }, /* 175 */ - { 4, TS, sys_rt_sigtimedwait, "rt_sigtimedwait" }, /* 176 */ - { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo" }, /* 177 */ - { 2, TS, sys_rt_sigsuspend, "rt_sigsuspend" }, /* 178 */ - { 5, TD, sys_pread, "pread64" }, /* 179 */ - { 5, TD, sys_pwrite, "pwrite64" }, /* 180 */ - { 3, TF, sys_chown, "chown" }, /* 181 */ - { 2, TF, sys_getcwd, "getcwd" }, /* 182 */ - { 2, 0, sys_capget, "capget" }, /* 183 */ - { 2, 0, sys_capset, "capset" }, /* 184 */ - { 2, TS, sys_sigaltstack, "sigaltstack" }, /* 185 */ - { 4, TD|TN, sys_sendfile, "sendfile" }, /* 186 */ - { 5, 0, sys_getpmsg, "getpmsg" }, /* 187 */ - { 5, 0, sys_putpmsg, "putpmsg" }, /* 188 */ - { 0, TP, sys_vfork, "vfork" }, /* 189 */ - { 3, TF, sys_truncate64, "truncate64" }, /* 190 */ - { 3, TD, sys_ftruncate64, "ftruncate64" }, /* 191 */ - { 2, TF, sys_stat64, "stat64" }, /* 192 */ - { 2, TF, sys_lstat64, "lstat64" }, /* 193 */ - { 2, TD, sys_fstat64, "fstat64" }, /* 194 */ - { 2, TF, sys_pivotroot, "pivot_root" }, /* 195 */ - { 3, 0, sys_mincore, "mincore" }, /* 196 */ - { 3, 0, sys_madvise, "madvise" }, /* 197 */ - { 4, TD, sys_getdents64, "getdents64" }, /* 198 */ - { 3, TD, sys_fcntl, "fcntl64" }, /* 199 */ - { 0, 0, sys_gettid, "gettid" }, /* 200 */ - { 4, TD, sys_readahead, "readahead" }, /* 201 */ - { 5, TF, sys_setxattr, "setxattr" }, /* 202 */ - { 5, TF, sys_setxattr, "lsetxattr" }, /* 203 */ - { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 204 */ - { 4, TF, sys_getxattr, "getxattr" }, /* 205 */ - { 4, TF, sys_getxattr, "lgetxattr" }, /* 206 */ - { 4, TD, sys_fgetxattr, "fgetxattr" }, /* 207 */ - { 3, TF, sys_listxattr, "listxattr" }, /* 208 */ - { 3, TF, sys_listxattr, "llistxattr" }, /* 209 */ - { 3, TD, sys_flistxattr, "flistxattr" }, /* 210 */ - { 2, TF, sys_removexattr, "removexattr" }, /* 211 */ - { 2, TF, sys_removexattr, "lremovexattr" }, /* 212 */ - { 2, TD, sys_fremovexattr, "fremovexattr" }, /* 213 */ - { 2, TS, sys_kill, "tkill" }, /* 214 */ - { 4, TD|TN, sys_sendfile64, "sendfile64" }, /* 215 */ - { 5, 0, sys_futex, "futex" }, /* 216 */ - { 3, 0, sys_sched_setaffinity, "sched_setaffinity" }, /* 217 */ - { 3, 0, sys_sched_getaffinity, "sched_getaffinity" }, /* 218 */ - { 2, 0, sys_io_setup, "io_setup" }, /* 219 */ - { 1, 0, sys_io_destroy, "io_destroy" }, /* 220 */ - { 5, 0, sys_io_getevents, "io_getevents" }, /* 221 */ - { 3, 0, sys_io_submit, "io_submit" }, /* 222 */ - { 3, 0, sys_io_cancel, "io_cancel" }, /* 223 */ - { 5, TD, sys_fadvise64, "fadvise64" }, /* 224 */ - { 4, 0, sys_migrate_pages, "migrate_pages" }, /* 225 */ - { 1, TP, sys_exit, "exit_group" }, /* 226 */ - { 4, 0, sys_lookup_dcookie, "lookup_dcookie" }, /* 227 */ - { 1, TD, sys_epoll_create, "epoll_create" }, /* 228 */ - { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 229 */ - { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 230 */ - { 5, 0, sys_remap_file_pages, "remap_file_pages" }, /* 231 */ - { 1, 0, sys_set_tid_address, "set_tid_address" }, /* 232 */ - { 3, 0, sys_timer_create, "timer_create" }, /* 233 */ - { 4, 0, sys_timer_settime, "timer_settime" }, /* 234 */ - { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 235 */ - { 1, 0, sys_timer_getoverrun, "timer_getoverrun"}, /* 236 */ - { 1, 0, sys_timer_delete, "timer_delete" }, /* 237 */ - { 2, 0, sys_clock_settime, "clock_settime" }, /* 239 */ - { 2, 0, sys_clock_gettime, "clock_gettime" }, /* 239 */ - { 2, 0, sys_clock_getres, "clock_getres" }, /* 240 */ - { 4, 0, sys_clock_nanosleep, "clock_nanosleep"}, /* 241 */ - { 3, TF, sys_statfs64, "statfs64" }, /* 242 */ - { 3, TD, sys_fstatfs64, "fstatfs64" }, /* 243 */ - { 3, TS, sys_tgkill, "tgkill" }, /* 244 */ - { 2, TF, sys_utimes, "utimes" }, /* 245 */ - { 6, TD, sys_fadvise64_64, "fadvise64_64" }, /* 246 */ - { 6, 0, sys_mbind, "mbind" }, /* 247 */ - { 5, 0, sys_get_mempolicy, "get_mempolicy" }, /* 248 */ - { 3, 0, sys_set_mempolicy, "set_mempolicy" }, /* 249 */ - { 4, 0, sys_mq_open, "mq_open" }, /* 250 */ - { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 251 */ - { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 252 */ - { 5, 0, sys_mq_timedreceive, "mq_timedreceive" }, /* 253 */ - { 2, 0, sys_mq_notify, "mq_notify" }, /* 254 */ - { 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 255 */ - { 4, 0, sys_kexec_load, "kexec_load" }, /* 256 */ - { 5, TP, sys_waitid, "waitid" }, /* 257 */ - { 5, 0, sys_add_key, "add_key" }, /* 258 */ - { 4, 0, sys_request_key, "request_key" }, /* 259 */ - { 5, 0, sys_keyctl, "keyctl" }, /* 260 */ - { 3, 0, sys_ioprio_set, "ioprio_set" }, /* 261 */ - { 2, 0, sys_ioprio_get, "ioprio_get" }, /* 262 */ - { 0, TD, sys_inotify_init, "inotify_init" }, /* 263 */ - { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 264 */ - { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 265 */ - { 1, 0, printargs, "raise_fpe" }, /* 266 */ - { 4, TD|TF, sys_openat, "openat" }, /* 267 */ - { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 268 */ - { 4, TD|TF, sys_mknodat, "mknodat" }, /* 269 */ - { 5, TD|TF, sys_fchownat, "fchownat" }, /* 270 */ - { 3, TD|TF, sys_futimesat, "futimesat" }, /* 271 */ - { 4, TD|TF, sys_newfstatat, "fstatat64" }, /* 272 */ - { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 273 */ - { 4, TD|TF, sys_renameat, "renameat" }, /* 274 */ - { 5, TD|TF, sys_linkat, "linkat" }, /* 275 */ - { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 276 */ - { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 277 */ - { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 278 */ - { 3, TD|TF, sys_faccessat, "faccessat" }, /* 279 */ - { 6, TD, sys_pselect6, "pselect6" }, /* 280 */ - { 5, TD, sys_ppoll, "ppoll" }, /* 281 */ - { 1, TP, sys_unshare, "unshare" }, /* 282 */ - { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 283 */ - { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 284 */ - { 6, TD, sys_splice, "splice" }, /* 285 */ - { 4, TD, sys_sync_file_range, "sync_file_range" }, /* 286 */ - { 4, TD, sys_tee, "tee" }, /* 287 */ - { 4, TD, sys_vmsplice, "vmsplice" }, /* 288 */ - { 6, TP, sys_move_pages, "move_pages" }, /* 289 */ - { 1, TP, printargs, "unused" }, /* 290 */ - { 1, 0, printargs, "cmpxchg_badaddr" }, /* 291 */ - { 3, 0, sys_getcpu, "getcpu" }, /* 292 */ - { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 293 */ - { 4, TD|TF, sys_utimensat, "utimensat" }, /* 294 */ - { 3, TD|TS, sys_signalfd, "signalfd" }, /* 295 */ - { 2, TD, sys_timerfd_create, "timerfd_create" }, /* 296 */ - { 1, TD, sys_eventfd, "eventfd" }, /* 297 */ - { 6, TD, sys_fallocate, "fallocate" }, /* 298 */ - { 4, TD, sys_timerfd_settime, "timerfd_settime" }, /* 299 */ - { 2, TD, sys_timerfd_gettime, "timerfd_gettime" }, /* 300 */ - { 1, 0, printargs, "flush_cache" } /* 301 */ + { 2, 0, sys_io_setup, "io_setup" }, /* 0 */ + { 1, 0, sys_io_destroy, "io_destroy" }, /* 1 */ + { 3, 0, sys_io_submit, "io_submit" }, /* 2 */ + { 3, 0, sys_io_cancel, "io_cancel" }, /* 3 */ + { 5, 0, sys_io_getevents, "io_getevents" }, /* 4 */ + { 5, TF, sys_setxattr, "setxattr" }, /* 5 */ + { 5, TF, sys_setxattr, "lsetxattr" }, /* 6 */ + { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 7 */ + { 4, TF, sys_getxattr, "getxattr" }, /* 8 */ + { 4, TF, sys_getxattr, "lgetxattr" }, /* 9 */ + { 4, TD, sys_fgetxattr, "fgetxattr" }, /* 10 */ + { 3, TF, sys_listxattr, "listxattr" }, /* 11 */ + { 3, TF, sys_listxattr, "llistxattr" }, /* 12 */ + { 3, TD, sys_flistxattr, "flistxattr" }, /* 13 */ + { 2, TF, sys_removexattr, "removexattr" }, /* 14 */ + { 2, TF, sys_removexattr, "lremovexattr" }, /* 15 */ + { 2, TD, sys_fremovexattr, "fremovexattr" }, /* 16 */ + { 2, TF, sys_getcwd, "getcwd" }, /* 17 */ + { 4, 0, sys_lookup_dcookie, "lookup_dcookie" }, /* 18 */ + { 2, TD, sys_eventfd2, "eventfd2" }, /* 19 */ + { 1, TD, sys_epoll_create1, "epoll_create1" }, /* 20 */ + { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 21 */ + { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 22 */ + { 1, TD, sys_dup, "dup" }, /* 23 */ + { 3, TD, sys_dup3, "dup3" }, /* 24 */ + { 3, TD, sys_fcntl, "fcntl" }, /* 25 */ + { 1, TD, sys_inotify_init1, "inotify_init1" }, /* 26 */ + { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 27 */ + { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 28 */ + { 3, TD, sys_ioctl, "ioctl" }, /* 29 */ + { 3, 0, sys_ioprio_set, "ioprio_set" }, /* 30 */ + { 2, 0, sys_ioprio_get, "ioprio_get" }, /* 31 */ + { 2, TD, sys_flock, "flock" }, /* 32 */ + { 4, TD|TF, sys_mknodat, "mknodat" }, /* 33 */ + { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 34 */ + { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 35 */ + { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 36 */ + { 5, TD|TF, sys_linkat, "linkat" }, /* 37 */ + { 4, TD|TF, sys_renameat, "renameat" }, /* 38 */ + { 2, TF, sys_umount2, "umount2" }, /* 39 */ + { 5, TF, sys_mount, "mount" }, /* 40 */ + { 2, TF, sys_pivotroot, "pivot_root" }, /* 41 */ + { 3, 0, sys_nfsservctl, "nfsservctl" }, /* 42 */ + { 2, TF, sys_statfs, "statfs" }, /* 43 */ + { 2, TD, sys_fstatfs, "fstatfs" }, /* 44 */ + { 2, TF, sys_truncate, "truncate" }, /* 45 */ + { 2, TD, sys_ftruncate, "ftruncate" }, /* 46 */ + { 4, TD, sys_fallocate, "fallocate" }, /* 47 */ + { 3, TD|TF, sys_faccessat, "faccessat" }, /* 48 */ + { 1, TF, sys_chdir, "chdir" }, /* 49 */ + { 1, TD, sys_fchdir, "fchdir" }, /* 50 */ + { 1, TF, sys_chroot, "chroot" }, /* 51 */ + { 2, TD, sys_fchmod, "fchmod" }, /* 52 */ + { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 53 */ + { 5, TD|TF, sys_fchownat, "fchownat" }, /* 54 */ + { 3, TD, sys_fchown, "fchown" }, /* 55 */ + { 4, TD|TF, sys_openat, "openat" }, /* 56 */ + { 1, TD, sys_close, "close" }, /* 57 */ + { 0, 0, sys_vhangup, "vhangup" }, /* 58 */ + { 2, TD, sys_pipe2, "pipe2" }, /* 59 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 60 */ + { 3, TD, sys_getdents64, "getdents64" }, /* 61 */ + { 3, TD, sys_lseek, "lseek" }, /* 62 */ + { 3, TD, sys_read, "read" }, /* 63 */ + { 3, TD, sys_write, "write" }, /* 64 */ + { 3, TD, sys_readv, "readv" }, /* 65 */ + { 3, TD, sys_writev, "writev" }, /* 66 */ + { 4, TD, sys_pread, "pread64" }, /* 67 */ + { 4, TD, sys_pwrite, "pwrite64" }, /* 68 */ + { 4, TD, sys_preadv, "preadv" }, /* 69 */ + { 4, TD, sys_pwritev, "pwritev" }, /* 70 */ + { 4, TD|TN, sys_sendfile64, "sendfile" }, /* 71 */ + { 6, TD, sys_pselect6, "pselect6" }, /* 72 */ + { 5, TD, sys_ppoll, "ppoll" }, /* 73 */ + { 4, TD|TS, sys_signalfd4, "signalfd4" }, /* 74 */ + { 4, TD, sys_vmsplice, "vmsplice" }, /* 75 */ + { 6, TD, sys_splice, "splice" }, /* 76 */ + { 4, TD, sys_tee, "tee" }, /* 77 */ + { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 78 */ + { 4, TD|TF, sys_newfstatat, "fstatat" }, /* 79 */ + { 2, TD, sys_fstat, "fstat" }, /* 80 */ + { 0, 0, sys_sync, "sync" }, /* 81 */ + { 1, TD, sys_fsync, "fsync" }, /* 82 */ + { 1, TD, sys_fdatasync, "fdatasync" }, /* 83 */ + { 4, TD, sys_sync_file_range2, "sync_file_range2" }, /* 84 */ + { 2, TD, sys_timerfd_create, "timerfd_create" }, /* 85 */ + { 4, TD, sys_timerfd_settime, "timerfd_settime" }, /* 86 */ + { 2, TD, sys_timerfd_gettime, "timerfd_gettime" }, /* 87 */ + { 4, TD|TF, sys_utimensat, "utimensat" }, /* 88 */ + { 1, TF, sys_acct, "acct" }, /* 89 */ + { 2, 0, sys_capget, "capget" }, /* 90 */ + { 2, 0, sys_capset, "capset" }, /* 91 */ + { 1, 0, sys_personality, "personality" }, /* 92 */ + { 1, TP, sys_exit, "exit" }, /* 93 */ + { 1, TP, sys_exit, "exit_group" }, /* 94 */ + { 5, TP, sys_waitid, "waitid" }, /* 95 */ + { 1, 0, sys_set_tid_address, "set_tid_address" }, /* 96 */ + { 1, TP, sys_unshare, "unshare" }, /* 97 */ + { 6, 0, sys_futex, "futex" }, /* 98 */ + { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 99 */ + { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 100 */ + { 2, 0, sys_nanosleep, "nanosleep" }, /* 101 */ + { 2, 0, sys_getitimer, "getitimer" }, /* 102 */ + { 3, 0, sys_setitimer, "setitimer" }, /* 103 */ + { 4, 0, sys_kexec_load, "kexec_load" }, /* 104 */ + { 3, 0, sys_init_module, "init_module" }, /* 105 */ + { 2, 0, sys_delete_module, "delete_module" }, /* 106 */ + { 3, 0, sys_timer_create, "timer_create" }, /* 107 */ + { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 108 */ + { 1, 0, sys_timer_getoverrun, "timer_getoverrun" }, /* 109 */ + { 4, 0, sys_timer_settime, "timer_settime" }, /* 110 */ + { 1, 0, sys_timer_delete, "timer_delete" }, /* 111 */ + { 2, 0, sys_clock_settime, "clock_settime" }, /* 112 */ + { 2, 0, sys_clock_gettime, "clock_gettime" }, /* 113 */ + { 2, 0, sys_clock_getres, "clock_getres" }, /* 114 */ + { 4, 0, sys_clock_nanosleep, "clock_nanosleep" }, /* 115 */ + { 3, 0, sys_syslog, "syslog" }, /* 116 */ + { 4, 0, sys_ptrace, "ptrace" }, /* 117 */ + { 0, 0, sys_sched_setparam, "sched_setparam" }, /* 118 */ + { 3, 0, sys_sched_setscheduler, "sched_setscheduler" }, /* 119 */ + { 1, 0, sys_sched_getscheduler, "sched_getscheduler" }, /* 120 */ + { 2, 0, sys_sched_getparam, "sched_getparam" }, /* 121 */ + { 3, 0, sys_sched_setaffinity, "sched_setaffinity" }, /* 122 */ + { 3, 0, sys_sched_getaffinity, "sched_getaffinity" }, /* 123 */ + { 0, 0, sys_sched_yield, "sched_yield" }, /* 124 */ + { 1, 0, sys_sched_get_priority_max, "sched_get_priority_max" }, /* 125 */ + { 1, 0, sys_sched_get_priority_min, "sched_get_priority_min" }, /* 126 */ + { 2, 0, sys_sched_rr_get_interval, "sched_rr_get_interval" }, /* 127 */ + { 0, 0, sys_restart_syscall, "restart_syscall" }, /* 128 */ + { 2, TS, sys_kill, "kill" }, /* 129 */ + { 2, TS, sys_kill, "tkill" }, /* 130 */ + { 3, TS, sys_tgkill, "tgkill" }, /* 131 */ + { 2, TS, sys_sigaltstack, "sigaltstack" }, /* 132 */ + { 2, TS, sys_rt_sigsuspend, "rt_sigsuspend" }, /* 133 */ + { 4, TS, sys_rt_sigaction, "rt_sigaction" }, /* 134 */ + { 4, TS, sys_rt_sigprocmask, "rt_sigprocmask" }, /* 135 */ + { 2, TS, sys_rt_sigpending, "rt_sigpending" }, /* 136 */ + { 4, TS, sys_rt_sigtimedwait, "rt_sigtimedwait" }, /* 137 */ + { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo" }, /* 138 */ + { 0, TS, sys_rt_sigreturn, "rt_sigreturn" }, /* 139 */ + { 3, 0, sys_setpriority, "setpriority" }, /* 140 */ + { 2, 0, sys_getpriority, "getpriority" }, /* 141 */ + { 4, 0, sys_reboot, "reboot" }, /* 142 */ + { 2, 0, sys_setregid, "setregid" }, /* 143 */ + { 1, 0, sys_setgid, "setgid" }, /* 144 */ + { 2, 0, sys_setreuid, "setreuid" }, /* 145 */ + { 1, 0, sys_setuid, "setuid" }, /* 146 */ + { 3, 0, sys_setresuid, "setresuid" }, /* 147 */ + { 3, 0, sys_getresuid, "getresuid" }, /* 148 */ + { 3, 0, sys_setresgid, "setresgid" }, /* 149 */ + { 3, 0, sys_getresgid, "getresgid" }, /* 150 */ + { 1, NF, sys_setfsuid, "setfsuid" }, /* 151 */ + { 1, NF, sys_setfsgid, "setfsgid" }, /* 152 */ + { 1, 0, sys_times, "times" }, /* 153 */ + { 2, 0, sys_setpgid, "setpgid" }, /* 154 */ + { 1, 0, sys_getpgid, "getpgid" }, /* 155 */ + { 1, 0, sys_getsid, "getsid" }, /* 156 */ + { 0, 0, sys_setsid, "setsid" }, /* 157 */ + { 2, 0, sys_getgroups, "getgroups" }, /* 158 */ + { 2, 0, sys_setgroups, "setgroups" }, /* 159 */ + { 1, 0, sys_uname, "uname" }, /* 160 */ + { 2, 0, sys_sethostname, "sethostname" }, /* 161 */ + { 2, 0, sys_setdomainname, "setdomainname" }, /* 162 */ + { 2, 0, sys_getrlimit, "getrlimit" }, /* 163 */ + { 2, 0, sys_setrlimit, "setrlimit" }, /* 164 */ + { 2, 0, sys_getrusage, "getrusage" }, /* 165 */ + { 1, 0, sys_umask, "umask" }, /* 166 */ + { 5, 0, sys_prctl, "prctl" }, /* 167 */ + { 3, 0, sys_getcpu, "getcpu" }, /* 168 */ + { 2, 0, sys_gettimeofday, "gettimeofday" }, /* 169 */ + { 2, 0, sys_settimeofday, "settimeofday" }, /* 170 */ + { 1, 0, sys_adjtimex, "adjtimex" }, /* 171 */ + { 0, 0, sys_getpid, "getpid" }, /* 172 */ + { 0, 0, sys_getppid, "getppid" }, /* 173 */ + { 0, NF, sys_getuid, "getuid" }, /* 174 */ + { 0, NF, sys_geteuid, "geteuid" }, /* 175 */ + { 0, NF, sys_getgid, "getgid" }, /* 176 */ + { 0, NF, sys_getegid, "getegid" }, /* 177 */ + { 0, 0, sys_gettid, "gettid" }, /* 178 */ + { 1, 0, sys_sysinfo, "sysinfo" }, /* 179 */ + { 4, 0, sys_mq_open, "mq_open" }, /* 180 */ + { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 181 */ + { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 182 */ + { 5, 0, sys_mq_timedreceive, "mq_timedreceive" }, /* 183 */ + { 2, 0, sys_mq_notify, "mq_notify" }, /* 184 */ + { 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 185 */ + { 4, TI, sys_msgget, "msgget" }, /* 186 */ + { 3, TI, sys_msgctl, "msgctl" }, /* 187 */ + { 5, TI, sys_msgrcv, "msgrcv" }, /* 188 */ + { 4, TI, sys_msgsnd, "msgsnd" }, /* 189 */ + { 4, TI, sys_semget, "semget" }, /* 190 */ + { 4, TI, sys_semctl, "semctl" }, /* 191 */ + { 5, TI, sys_semtimedop, "semtimedop" }, /* 192 */ + { 4, TI, sys_semop, "semop" }, /* 193 */ + { 4, TI, sys_shmget, "shmget" }, /* 194 */ + { 4, TI, sys_shmctl, "shmctl" }, /* 195 */ + { 4, TI, sys_shmat, "shmat" }, /* 196 */ + { 4, TI, sys_shmdt, "shmdt" }, /* 197 */ + { 3, TN, sys_socket, "socket" }, /* 198 */ + { 4, TN, sys_socketpair, "socketpair" }, /* 199 */ + { 3, TN, sys_bind, "bind" }, /* 200 */ + { 2, TN, sys_listen, "listen" }, /* 201 */ + { 3, TN, sys_accept, "accept" }, /* 202 */ + { 3, TN, sys_connect, "connect" }, /* 203 */ + { 3, TN, sys_getsockname, "getsockname" }, /* 204 */ + { 3, TN, sys_getpeername, "getpeername" }, /* 205 */ + { 6, TN, sys_sendto, "sendto" }, /* 206 */ + { 6, TN, sys_recvfrom, "recvfrom" }, /* 207 */ + { 5, TN, sys_setsockopt, "setsockopt" }, /* 208 */ + { 5, TN, sys_getsockopt, "getsockopt" }, /* 209 */ + { 2, TN, sys_shutdown, "shutdown" }, /* 210 */ + { 3, TN, sys_sendmsg, "sendmsg" }, /* 211 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 212 */ + { 3, TD, sys_readahead, "readahead" }, /* 213 */ + { 1, TM, sys_brk, "brk" }, /* 214 */ + { 2, TM, sys_munmap, "munmap" }, /* 215 */ + { 5, TM, sys_mremap, "mremap" }, /* 216 */ + { 5, 0, sys_add_key, "add_key" }, /* 217 */ + { 4, 0, sys_request_key, "request_key" }, /* 218 */ + { 5, 0, sys_keyctl, "keyctl" }, /* 219 */ + { 5, TP, sys_clone, "clone" }, /* 220 */ + { 3, TF|TP, sys_execve, "execve" }, /* 221 */ + { 6, TD|TM, sys_mmap, "mmap" }, /* 222 */ + { 4, TD, sys_fadvise64, "fadvise64" }, /* 223 */ + { 1, TF, sys_swapon, "swapon" }, /* 224 */ + { 1, TF, sys_swapoff, "swapoff" }, /* 225 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 226 */ + { 3, TM, sys_msync, "msync" }, /* 227 */ + { 2, TM, sys_mlock, "mlock" }, /* 228 */ + { 2, TM, sys_munlock, "munlock" }, /* 229 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 230 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 231 */ + { 3, TM, sys_mincore, "mincore" }, /* 232 */ + { 3, TM, sys_madvise, "madvise" }, /* 233 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages" }, /* 234 */ + { 6, TM, sys_mbind, "mbind" }, /* 235 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 236 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 237 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 238 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 239 */ + { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo" }, /* 240 */ + { 5, TD, sys_perf_event_open, "perf_event_open" }, /* 241 */ + { 4, TN, sys_accept4, "accept4" }, /* 242 */ + { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 243 */ + { 0, 0, printargs, "arch_unimpl" }, /* 244 */ + { 3, 0, printargs, "cacheflush" }, /* 245 */ + { 1, 0, printargs, "set_dataplane" }, /* 246 */ + { 0, 0, printargs, "arch_unimpl" }, /* 247 */ + { 0, 0, printargs, "arch_unimpl" }, /* 248 */ + { 0, 0, printargs, "arch_unimpl" }, /* 249 */ + { 0, 0, printargs, "arch_unimpl" }, /* 250 */ + { 0, 0, printargs, "arch_unimpl" }, /* 251 */ + { 0, 0, printargs, "arch_unimpl" }, /* 252 */ + { 0, 0, printargs, "arch_unimpl" }, /* 253 */ + { 0, 0, printargs, "arch_unimpl" }, /* 254 */ + { 0, 0, printargs, "arch_unimpl" }, /* 255 */ + { 0, 0, printargs, "arch_unimpl" }, /* 256 */ + { 0, 0, printargs, "arch_unimpl" }, /* 257 */ + { 0, 0, printargs, "arch_unimpl" }, /* 258 */ + { 0, 0, printargs, "arch_unimpl" }, /* 259 */ + { 4, TP, sys_wait4, "wait4" }, /* 260 */ + { 4, 0, sys_prlimit64, "prlimit64" }, /* 261 */ + { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 262 */ + { 5, TD|TF, sys_fanotify_mark, "fanotify_mark" }, /* 263 */ + { 5, TD|TF, sys_name_to_handle_at, "name_to_handle_at" }, /* 264 */ + { 3, TD, sys_open_by_handle_at, "open_by_handle_at" }, /* 265 */ + { 2, 0, sys_clock_adjtime, "clock_adjtime" }, /* 266 */ + { 1, TD, sys_syncfs, "syncfs" }, /* 267 */ + { 2, TD, sys_setns, "setns" }, /* 268 */ + { 4, TN, sys_sendmmsg, "sendmmsg" }, /* 269 */ + { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 270 */ + { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 271 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 272 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 273 */ diff --git a/linux/tile/syscallent1.h b/linux/tile/syscallent1.h new file mode 100644 index 00000000..9f205218 --- /dev/null +++ b/linux/tile/syscallent1.h @@ -0,0 +1,278 @@ + { 2, 0, sys_io_setup, "io_setup" }, /* 0 */ + { 1, 0, sys_io_destroy, "io_destroy" }, /* 1 */ + { 3, 0, sys_io_submit, "io_submit" }, /* 2 */ + { 3, 0, sys_io_cancel, "io_cancel" }, /* 3 */ + { 5, 0, sys_io_getevents, "io_getevents" }, /* 4 */ + { 5, TF, sys_setxattr, "setxattr" }, /* 5 */ + { 5, TF, sys_setxattr, "lsetxattr" }, /* 6 */ + { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 7 */ + { 4, TF, sys_getxattr, "getxattr" }, /* 8 */ + { 4, TF, sys_getxattr, "lgetxattr" }, /* 9 */ + { 4, TD, sys_fgetxattr, "fgetxattr" }, /* 10 */ + { 3, TF, sys_listxattr, "listxattr" }, /* 11 */ + { 3, TF, sys_listxattr, "llistxattr" }, /* 12 */ + { 3, TD, sys_flistxattr, "flistxattr" }, /* 13 */ + { 2, TF, sys_removexattr, "removexattr" }, /* 14 */ + { 2, TF, sys_removexattr, "lremovexattr" }, /* 15 */ + { 2, TD, sys_fremovexattr, "fremovexattr" }, /* 16 */ + { 2, TF, sys_getcwd, "getcwd" }, /* 17 */ + { 4, 0, sys_lookup_dcookie, "lookup_dcookie" }, /* 18 */ + { 2, TD, sys_eventfd2, "eventfd2" }, /* 19 */ + { 1, TD, sys_epoll_create1, "epoll_create1" }, /* 20 */ + { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 21 */ + { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 22 */ + { 1, TD, sys_dup, "dup" }, /* 23 */ + { 3, TD, sys_dup3, "dup3" }, /* 24 */ + { 3, TD, sys_fcntl, "fcntl64" }, /* 25 */ + { 1, TD, sys_inotify_init1, "inotify_init1" }, /* 26 */ + { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 27 */ + { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 28 */ + { 3, TD, sys_ioctl, "ioctl" }, /* 29 */ + { 3, 0, sys_ioprio_set, "ioprio_set" }, /* 30 */ + { 2, 0, sys_ioprio_get, "ioprio_get" }, /* 31 */ + { 2, TD, sys_flock, "flock" }, /* 32 */ + { 4, TD|TF, sys_mknodat, "mknodat" }, /* 33 */ + { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 34 */ + { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 35 */ + { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 36 */ + { 5, TD|TF, sys_linkat, "linkat" }, /* 37 */ + { 4, TD|TF, sys_renameat, "renameat" }, /* 38 */ + { 2, TF, sys_umount2, "umount2" }, /* 39 */ + { 5, TF, sys_mount, "mount" }, /* 40 */ + { 2, TF, sys_pivotroot, "pivot_root" }, /* 41 */ + { 3, 0, sys_nfsservctl, "nfsservctl" }, /* 42 */ + { 3, TF, sys_statfs64, "statfs64" }, /* 43 */ + { 3, TD, sys_fstatfs64, "fstatfs64" }, /* 44 */ + { 4, TF, sys_truncate64, "truncate64" }, /* 45 */ + { 4, TD, sys_ftruncate64, "ftruncate64" }, /* 46 */ + { 6, TD, sys_fallocate, "fallocate" }, /* 47 */ + { 3, TD|TF, sys_faccessat, "faccessat" }, /* 48 */ + { 1, TF, sys_chdir, "chdir" }, /* 49 */ + { 1, TD, sys_fchdir, "fchdir" }, /* 50 */ + { 1, TF, sys_chroot, "chroot" }, /* 51 */ + { 2, TD, sys_fchmod, "fchmod" }, /* 52 */ + { 3, TD|TF, sys_fchmodat, "fchmodat" }, /* 53 */ + { 5, TD|TF, sys_fchownat, "fchownat" }, /* 54 */ + { 3, TD, sys_fchown, "fchown" }, /* 55 */ + { 4, TD|TF, sys_openat, "openat" }, /* 56 */ + { 1, TD, sys_close, "close" }, /* 57 */ + { 0, 0, sys_vhangup, "vhangup" }, /* 58 */ + { 2, TD, sys_pipe2, "pipe2" }, /* 59 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 60 */ + { 3, TD, sys_getdents64, "getdents64" }, /* 61 */ + { 5, TD, sys_llseek, "llseek" }, /* 62 */ + { 3, TD, sys_read, "read" }, /* 63 */ + { 3, TD, sys_write, "write" }, /* 64 */ + { 3, TD, sys_readv, "readv" }, /* 65 */ + { 3, TD, sys_writev, "writev" }, /* 66 */ + { 6, TD, sys_pread, "pread64" }, /* 67 */ + { 6, TD, sys_pwrite, "pwrite64" }, /* 68 */ + { 5, TD, sys_preadv, "preadv" }, /* 69 */ + { 5, TD, sys_pwritev, "pwritev" }, /* 70 */ + { 4, TD|TN, sys_sendfile64, "sendfile64" }, /* 71 */ + { 6, TD, sys_pselect6, "pselect6" }, /* 72 */ + { 5, TD, sys_ppoll, "ppoll" }, /* 73 */ + { 4, TD|TS, sys_signalfd4, "signalfd4" }, /* 74 */ + { 4, TD, sys_vmsplice, "vmsplice" }, /* 75 */ + { 6, TD, sys_splice, "splice" }, /* 76 */ + { 4, TD, sys_tee, "tee" }, /* 77 */ + { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 78 */ + { 4, TD|TF, sys_newfstatat, "fstatat64" }, /* 79 */ + { 2, TD, sys_fstat64, "fstat64" }, /* 80 */ + { 0, 0, sys_sync, "sync" }, /* 81 */ + { 1, TD, sys_fsync, "fsync" }, /* 82 */ + { 1, TD, sys_fdatasync, "fdatasync" }, /* 83 */ + { 6, TD, sys_sync_file_range2, "sync_file_range2" }, /* 84 */ + { 2, TD, sys_timerfd_create, "timerfd_create" }, /* 85 */ + { 4, TD, sys_timerfd_settime, "timerfd_settime" }, /* 86 */ + { 2, TD, sys_timerfd_gettime, "timerfd_gettime" }, /* 87 */ + { 4, TD|TF, sys_utimensat, "utimensat" }, /* 88 */ + { 1, TF, sys_acct, "acct" }, /* 89 */ + { 2, 0, sys_capget, "capget" }, /* 90 */ + { 2, 0, sys_capset, "capset" }, /* 91 */ + { 1, 0, sys_personality, "personality" }, /* 92 */ + { 1, TP, sys_exit, "exit" }, /* 93 */ + { 1, TP, sys_exit, "exit_group" }, /* 94 */ + { 5, TP, sys_waitid, "waitid" }, /* 95 */ + { 1, 0, sys_set_tid_address, "set_tid_address" }, /* 96 */ + { 1, TP, sys_unshare, "unshare" }, /* 97 */ + { 6, 0, sys_futex, "futex" }, /* 98 */ + { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 99 */ + { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 100 */ + { 2, 0, sys_nanosleep, "nanosleep" }, /* 101 */ + { 2, 0, sys_getitimer, "getitimer" }, /* 102 */ + { 3, 0, sys_setitimer, "setitimer" }, /* 103 */ + { 4, 0, sys_kexec_load, "kexec_load" }, /* 104 */ + { 3, 0, sys_init_module, "init_module" }, /* 105 */ + { 2, 0, sys_delete_module, "delete_module" }, /* 106 */ + { 3, 0, sys_timer_create, "timer_create" }, /* 107 */ + { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 108 */ + { 1, 0, sys_timer_getoverrun, "timer_getoverrun" }, /* 109 */ + { 4, 0, sys_timer_settime, "timer_settime" }, /* 110 */ + { 1, 0, sys_timer_delete, "timer_delete" }, /* 111 */ + { 2, 0, sys_clock_settime, "clock_settime" }, /* 112 */ + { 2, 0, sys_clock_gettime, "clock_gettime" }, /* 113 */ + { 2, 0, sys_clock_getres, "clock_getres" }, /* 114 */ + { 4, 0, sys_clock_nanosleep, "clock_nanosleep" }, /* 115 */ + { 3, 0, sys_syslog, "syslog" }, /* 116 */ + { 4, 0, sys_ptrace, "ptrace" }, /* 117 */ + { 0, 0, sys_sched_setparam, "sched_setparam" }, /* 118 */ + { 3, 0, sys_sched_setscheduler, "sched_setscheduler" }, /* 119 */ + { 1, 0, sys_sched_getscheduler, "sched_getscheduler" }, /* 120 */ + { 2, 0, sys_sched_getparam, "sched_getparam" }, /* 121 */ + { 3, 0, sys_sched_setaffinity, "sched_setaffinity" }, /* 122 */ + { 3, 0, sys_sched_getaffinity, "sched_getaffinity" }, /* 123 */ + { 0, 0, sys_sched_yield, "sched_yield" }, /* 124 */ + { 1, 0, sys_sched_get_priority_max, "sched_get_priority_max" }, /* 125 */ + { 1, 0, sys_sched_get_priority_min, "sched_get_priority_min" }, /* 126 */ + { 2, 0, sys_sched_rr_get_interval, "sched_rr_get_interval" }, /* 127 */ + { 0, 0, sys_restart_syscall, "restart_syscall" }, /* 128 */ + { 2, TS, sys_kill, "kill" }, /* 129 */ + { 2, TS, sys_kill, "tkill" }, /* 130 */ + { 3, TS, sys_tgkill, "tgkill" }, /* 131 */ + { 2, TS, sys_sigaltstack, "sigaltstack" }, /* 132 */ + { 2, TS, sys_rt_sigsuspend, "rt_sigsuspend" }, /* 133 */ + { 4, TS, sys_rt_sigaction, "rt_sigaction" }, /* 134 */ + { 4, TS, sys_rt_sigprocmask, "rt_sigprocmask" }, /* 135 */ + { 2, TS, sys_rt_sigpending, "rt_sigpending" }, /* 136 */ + { 4, TS, sys_rt_sigtimedwait, "rt_sigtimedwait" }, /* 137 */ + { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo" }, /* 138 */ + { 0, TS, sys_rt_sigreturn, "rt_sigreturn" }, /* 139 */ + { 3, 0, sys_setpriority, "setpriority" }, /* 140 */ + { 2, 0, sys_getpriority, "getpriority" }, /* 141 */ + { 4, 0, sys_reboot, "reboot" }, /* 142 */ + { 2, 0, sys_setregid, "setregid" }, /* 143 */ + { 1, 0, sys_setgid, "setgid" }, /* 144 */ + { 2, 0, sys_setreuid, "setreuid" }, /* 145 */ + { 1, 0, sys_setuid, "setuid" }, /* 146 */ + { 3, 0, sys_setresuid, "setresuid" }, /* 147 */ + { 3, 0, sys_getresuid, "getresuid" }, /* 148 */ + { 3, 0, sys_setresgid, "setresgid" }, /* 149 */ + { 3, 0, sys_getresgid, "getresgid" }, /* 150 */ + { 1, NF, sys_setfsuid, "setfsuid" }, /* 151 */ + { 1, NF, sys_setfsgid, "setfsgid" }, /* 152 */ + { 1, 0, sys_times, "times" }, /* 153 */ + { 2, 0, sys_setpgid, "setpgid" }, /* 154 */ + { 1, 0, sys_getpgid, "getpgid" }, /* 155 */ + { 1, 0, sys_getsid, "getsid" }, /* 156 */ + { 0, 0, sys_setsid, "setsid" }, /* 157 */ + { 2, 0, sys_getgroups, "getgroups" }, /* 158 */ + { 2, 0, sys_setgroups, "setgroups" }, /* 159 */ + { 1, 0, sys_uname, "uname" }, /* 160 */ + { 2, 0, sys_sethostname, "sethostname" }, /* 161 */ + { 2, 0, sys_setdomainname, "setdomainname" }, /* 162 */ + { 2, 0, sys_getrlimit, "getrlimit" }, /* 163 */ + { 2, 0, sys_setrlimit, "setrlimit" }, /* 164 */ + { 2, 0, sys_getrusage, "getrusage" }, /* 165 */ + { 1, 0, sys_umask, "umask" }, /* 166 */ + { 5, 0, sys_prctl, "prctl" }, /* 167 */ + { 3, 0, sys_getcpu, "getcpu" }, /* 168 */ + { 2, 0, sys_gettimeofday, "gettimeofday" }, /* 169 */ + { 2, 0, sys_settimeofday, "settimeofday" }, /* 170 */ + { 1, 0, sys_adjtimex, "adjtimex" }, /* 171 */ + { 0, 0, sys_getpid, "getpid" }, /* 172 */ + { 0, 0, sys_getppid, "getppid" }, /* 173 */ + { 0, NF, sys_getuid, "getuid" }, /* 174 */ + { 0, NF, sys_geteuid, "geteuid" }, /* 175 */ + { 0, NF, sys_getgid, "getgid" }, /* 176 */ + { 0, NF, sys_getegid, "getegid" }, /* 177 */ + { 0, 0, sys_gettid, "gettid" }, /* 178 */ + { 1, 0, sys_sysinfo, "sysinfo" }, /* 179 */ + { 4, 0, sys_mq_open, "mq_open" }, /* 180 */ + { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 181 */ + { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 182 */ + { 5, 0, sys_mq_timedreceive, "mq_timedreceive" }, /* 183 */ + { 2, 0, sys_mq_notify, "mq_notify" }, /* 184 */ + { 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 185 */ + { 4, TI, sys_msgget, "msgget" }, /* 186 */ + { 3, TI, sys_msgctl, "msgctl" }, /* 187 */ + { 5, TI, sys_msgrcv, "msgrcv" }, /* 188 */ + { 4, TI, sys_msgsnd, "msgsnd" }, /* 189 */ + { 4, TI, sys_semget, "semget" }, /* 190 */ + { 4, TI, sys_semctl, "semctl" }, /* 191 */ + { 5, TI, sys_semtimedop, "semtimedop" }, /* 192 */ + { 4, TI, sys_semop, "semop" }, /* 193 */ + { 4, TI, sys_shmget, "shmget" }, /* 194 */ + { 4, TI, sys_shmctl, "shmctl" }, /* 195 */ + { 4, TI, sys_shmat, "shmat" }, /* 196 */ + { 4, TI, sys_shmdt, "shmdt" }, /* 197 */ + { 3, TN, sys_socket, "socket" }, /* 198 */ + { 4, TN, sys_socketpair, "socketpair" }, /* 199 */ + { 3, TN, sys_bind, "bind" }, /* 200 */ + { 2, TN, sys_listen, "listen" }, /* 201 */ + { 3, TN, sys_accept, "accept" }, /* 202 */ + { 3, TN, sys_connect, "connect" }, /* 203 */ + { 3, TN, sys_getsockname, "getsockname" }, /* 204 */ + { 3, TN, sys_getpeername, "getpeername" }, /* 205 */ + { 6, TN, sys_sendto, "sendto" }, /* 206 */ + { 6, TN, sys_recvfrom, "recvfrom" }, /* 207 */ + { 5, TN, sys_setsockopt, "setsockopt" }, /* 208 */ + { 5, TN, sys_getsockopt, "getsockopt" }, /* 209 */ + { 2, TN, sys_shutdown, "shutdown" }, /* 210 */ + { 3, TN, sys_sendmsg, "sendmsg" }, /* 211 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 212 */ + { 4, TD, sys_readahead, "readahead" }, /* 213 */ + { 1, TM, sys_brk, "brk" }, /* 214 */ + { 2, TM, sys_munmap, "munmap" }, /* 215 */ + { 5, TM, sys_mremap, "mremap" }, /* 216 */ + { 5, 0, sys_add_key, "add_key" }, /* 217 */ + { 4, 0, sys_request_key, "request_key" }, /* 218 */ + { 5, 0, sys_keyctl, "keyctl" }, /* 219 */ + { 5, TP, sys_clone, "clone" }, /* 220 */ + { 3, TF|TP, sys_execve, "execve" }, /* 221 */ + { 6, TD|TM, sys_mmap_4koff, "mmap2" }, /* 222 */ + { 5, TD, sys_fadvise64, "fadvise64" }, /* 223 */ + { 1, TF, sys_swapon, "swapon" }, /* 224 */ + { 1, TF, sys_swapoff, "swapoff" }, /* 225 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 226 */ + { 3, TM, sys_msync, "msync" }, /* 227 */ + { 2, TM, sys_mlock, "mlock" }, /* 228 */ + { 2, TM, sys_munlock, "munlock" }, /* 229 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 230 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 231 */ + { 3, TM, sys_mincore, "mincore" }, /* 232 */ + { 3, TM, sys_madvise, "madvise" }, /* 233 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages" }, /* 234 */ + { 6, TM, sys_mbind, "mbind" }, /* 235 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 236 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 237 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 238 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 239 */ + { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo" }, /* 240 */ + { 5, TD, sys_perf_event_open, "perf_event_open" }, /* 241 */ + { 4, TN, sys_accept4, "accept4" }, /* 242 */ + { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 243 */ +#ifdef __tilegx__ + { 0, 0, printargs, "arch_unimpl" }, /* 244 */ +#else + { 2, 0, printargs, "cmpxchg_badaddr" }, /* 244 */ +#endif + { 3, 0, printargs, "cacheflush" }, /* 245 */ + { 1, 0, printargs, "set_dataplane" }, /* 246 */ + { 0, 0, printargs, "arch_unimpl" }, /* 247 */ + { 0, 0, printargs, "arch_unimpl" }, /* 248 */ + { 0, 0, printargs, "arch_unimpl" }, /* 249 */ + { 0, 0, printargs, "arch_unimpl" }, /* 250 */ + { 0, 0, printargs, "arch_unimpl" }, /* 251 */ + { 0, 0, printargs, "arch_unimpl" }, /* 252 */ + { 0, 0, printargs, "arch_unimpl" }, /* 253 */ + { 0, 0, printargs, "arch_unimpl" }, /* 254 */ + { 0, 0, printargs, "arch_unimpl" }, /* 255 */ + { 0, 0, printargs, "arch_unimpl" }, /* 256 */ + { 0, 0, printargs, "arch_unimpl" }, /* 257 */ + { 0, 0, printargs, "arch_unimpl" }, /* 258 */ + { 0, 0, printargs, "arch_unimpl" }, /* 259 */ + { 4, TP, sys_wait4, "wait4" }, /* 260 */ + { 4, 0, sys_prlimit64, "prlimit64" }, /* 261 */ + { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 262 */ + { 5, TD|TF, sys_fanotify_mark, "fanotify_mark" }, /* 263 */ + { 5, TD|TF, sys_name_to_handle_at, "name_to_handle_at" }, /* 264 */ + { 3, TD, sys_open_by_handle_at, "open_by_handle_at" }, /* 265 */ + { 2, 0, sys_clock_adjtime, "clock_adjtime" }, /* 266 */ + { 1, TD, sys_syncfs, "syncfs" }, /* 267 */ + { 2, TD, sys_setns, "setns" }, /* 268 */ + { 4, TN, sys_sendmmsg, "sendmmsg" }, /* 269 */ + { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 270 */ + { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 271 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 272 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 273 */ diff --git a/linux/ubi-user.h b/linux/ubi-user.h new file mode 100644 index 00000000..a12c8848 --- /dev/null +++ b/linux/ubi-user.h @@ -0,0 +1,420 @@ +/* + * Copyright © International Business Machines Corp., 2006 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Artem Bityutskiy (Битюцкий Артём) + */ + +#ifndef __UBI_USER_H__ +#define __UBI_USER_H__ + +#include + +/* + * UBI device creation (the same as MTD device attachment) + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * MTD devices may be attached using %UBI_IOCATT ioctl command of the UBI + * control device. The caller has to properly fill and pass + * &struct ubi_attach_req object - UBI will attach the MTD device specified in + * the request and return the newly created UBI device number as the ioctl + * return value. + * + * UBI device deletion (the same as MTD device detachment) + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * An UBI device maybe deleted with %UBI_IOCDET ioctl command of the UBI + * control device. + * + * UBI volume creation + * ~~~~~~~~~~~~~~~~~~~ + * + * UBI volumes are created via the %UBI_IOCMKVOL ioctl command of UBI character + * device. A &struct ubi_mkvol_req object has to be properly filled and a + * pointer to it has to be passed to the ioctl. + * + * UBI volume deletion + * ~~~~~~~~~~~~~~~~~~~ + * + * To delete a volume, the %UBI_IOCRMVOL ioctl command of the UBI character + * device should be used. A pointer to the 32-bit volume ID hast to be passed + * to the ioctl. + * + * UBI volume re-size + * ~~~~~~~~~~~~~~~~~~ + * + * To re-size a volume, the %UBI_IOCRSVOL ioctl command of the UBI character + * device should be used. A &struct ubi_rsvol_req object has to be properly + * filled and a pointer to it has to be passed to the ioctl. + * + * UBI volumes re-name + * ~~~~~~~~~~~~~~~~~~~ + * + * To re-name several volumes atomically at one go, the %UBI_IOCRNVOL command + * of the UBI character device should be used. A &struct ubi_rnvol_req object + * has to be properly filled and a pointer to it has to be passed to the ioctl. + * + * UBI volume update + * ~~~~~~~~~~~~~~~~~ + * + * Volume update should be done via the %UBI_IOCVOLUP ioctl command of the + * corresponding UBI volume character device. A pointer to a 64-bit update + * size should be passed to the ioctl. After this, UBI expects user to write + * this number of bytes to the volume character device. The update is finished + * when the claimed number of bytes is passed. So, the volume update sequence + * is something like: + * + * fd = open("/dev/my_volume"); + * ioctl(fd, UBI_IOCVOLUP, &image_size); + * write(fd, buf, image_size); + * close(fd); + * + * Logical eraseblock erase + * ~~~~~~~~~~~~~~~~~~~~~~~~ + * + * To erase a logical eraseblock, the %UBI_IOCEBER ioctl command of the + * corresponding UBI volume character device should be used. This command + * unmaps the requested logical eraseblock, makes sure the corresponding + * physical eraseblock is successfully erased, and returns. + * + * Atomic logical eraseblock change + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * Atomic logical eraseblock change operation is called using the %UBI_IOCEBCH + * ioctl command of the corresponding UBI volume character device. A pointer to + * a &struct ubi_leb_change_req object has to be passed to the ioctl. Then the + * user is expected to write the requested amount of bytes (similarly to what + * should be done in case of the "volume update" ioctl). + * + * Logical eraseblock map + * ~~~~~~~~~~~~~~~~~~~~~ + * + * To map a logical eraseblock to a physical eraseblock, the %UBI_IOCEBMAP + * ioctl command should be used. A pointer to a &struct ubi_map_req object is + * expected to be passed. The ioctl maps the requested logical eraseblock to + * a physical eraseblock and returns. Only non-mapped logical eraseblocks can + * be mapped. If the logical eraseblock specified in the request is already + * mapped to a physical eraseblock, the ioctl fails and returns error. + * + * Logical eraseblock unmap + * ~~~~~~~~~~~~~~~~~~~~~~~~ + * + * To unmap a logical eraseblock to a physical eraseblock, the %UBI_IOCEBUNMAP + * ioctl command should be used. The ioctl unmaps the logical eraseblocks, + * schedules corresponding physical eraseblock for erasure, and returns. Unlike + * the "LEB erase" command, it does not wait for the physical eraseblock being + * erased. Note, the side effect of this is that if an unclean reboot happens + * after the unmap ioctl returns, you may find the LEB mapped again to the same + * physical eraseblock after the UBI is run again. + * + * Check if logical eraseblock is mapped + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * To check if a logical eraseblock is mapped to a physical eraseblock, the + * %UBI_IOCEBISMAP ioctl command should be used. It returns %0 if the LEB is + * not mapped, and %1 if it is mapped. + * + * Set an UBI volume property + * ~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * To set an UBI volume property the %UBI_IOCSETPROP ioctl command should be + * used. A pointer to a &struct ubi_set_vol_prop_req object is expected to be + * passed. The object describes which property should be set, and to which value + * it should be set. + */ + +/* + * When a new UBI volume or UBI device is created, users may either specify the + * volume/device number they want to create or to let UBI automatically assign + * the number using these constants. + */ +#define UBI_VOL_NUM_AUTO (-1) +#define UBI_DEV_NUM_AUTO (-1) + +/* Maximum volume name length */ +#define UBI_MAX_VOLUME_NAME 127 + +/* ioctl commands of UBI character devices */ + +#define UBI_IOC_MAGIC 'o' + +/* Create an UBI volume */ +#define UBI_IOCMKVOL _IOW(UBI_IOC_MAGIC, 0, struct ubi_mkvol_req) +/* Remove an UBI volume */ +#define UBI_IOCRMVOL _IOW(UBI_IOC_MAGIC, 1, __s32) +/* Re-size an UBI volume */ +#define UBI_IOCRSVOL _IOW(UBI_IOC_MAGIC, 2, struct ubi_rsvol_req) +/* Re-name volumes */ +#define UBI_IOCRNVOL _IOW(UBI_IOC_MAGIC, 3, struct ubi_rnvol_req) + +/* ioctl commands of the UBI control character device */ + +#define UBI_CTRL_IOC_MAGIC 'o' + +/* Attach an MTD device */ +#define UBI_IOCATT _IOW(UBI_CTRL_IOC_MAGIC, 64, struct ubi_attach_req) +/* Detach an MTD device */ +#define UBI_IOCDET _IOW(UBI_CTRL_IOC_MAGIC, 65, __s32) + +/* ioctl commands of UBI volume character devices */ + +#define UBI_VOL_IOC_MAGIC 'O' + +/* Start UBI volume update */ +#define UBI_IOCVOLUP _IOW(UBI_VOL_IOC_MAGIC, 0, __s64) +/* LEB erasure command, used for debugging, disabled by default */ +#define UBI_IOCEBER _IOW(UBI_VOL_IOC_MAGIC, 1, __s32) +/* Atomic LEB change command */ +#define UBI_IOCEBCH _IOW(UBI_VOL_IOC_MAGIC, 2, __s32) +/* Map LEB command */ +#define UBI_IOCEBMAP _IOW(UBI_VOL_IOC_MAGIC, 3, struct ubi_map_req) +/* Unmap LEB command */ +#define UBI_IOCEBUNMAP _IOW(UBI_VOL_IOC_MAGIC, 4, __s32) +/* Check if LEB is mapped command */ +#define UBI_IOCEBISMAP _IOR(UBI_VOL_IOC_MAGIC, 5, __s32) +/* Set an UBI volume property */ +#define UBI_IOCSETVOLPROP _IOW(UBI_VOL_IOC_MAGIC, 6, \ + struct ubi_set_vol_prop_req) + +/* Maximum MTD device name length supported by UBI */ +#define MAX_UBI_MTD_NAME_LEN 127 + +/* Maximum amount of UBI volumes that can be re-named at one go */ +#define UBI_MAX_RNVOL 32 + +/* + * UBI volume type constants. + * + * @UBI_DYNAMIC_VOLUME: dynamic volume + * @UBI_STATIC_VOLUME: static volume + */ +enum { + UBI_DYNAMIC_VOLUME = 3, + UBI_STATIC_VOLUME = 4, +}; + +/* + * UBI set volume property ioctl constants. + * + * @UBI_VOL_PROP_DIRECT_WRITE: allow (any non-zero value) or disallow (value 0) + * user to directly write and erase individual + * eraseblocks on dynamic volumes + */ +enum { + UBI_VOL_PROP_DIRECT_WRITE = 1, +}; + +/** + * struct ubi_attach_req - attach MTD device request. + * @ubi_num: UBI device number to create + * @mtd_num: MTD device number to attach + * @vid_hdr_offset: VID header offset (use defaults if %0) + * @max_beb_per1024: maximum expected number of bad PEB per 1024 PEBs + * @padding: reserved for future, not used, has to be zeroed + * + * This data structure is used to specify MTD device UBI has to attach and the + * parameters it has to use. The number which should be assigned to the new UBI + * device is passed in @ubi_num. UBI may automatically assign the number if + * @UBI_DEV_NUM_AUTO is passed. In this case, the device number is returned in + * @ubi_num. + * + * Most applications should pass %0 in @vid_hdr_offset to make UBI use default + * offset of the VID header within physical eraseblocks. The default offset is + * the next min. I/O unit after the EC header. For example, it will be offset + * 512 in case of a 512 bytes page NAND flash with no sub-page support. Or + * it will be 512 in case of a 2KiB page NAND flash with 4 512-byte sub-pages. + * + * But in rare cases, if this optimizes things, the VID header may be placed to + * a different offset. For example, the boot-loader might do things faster if + * the VID header sits at the end of the first 2KiB NAND page with 4 sub-pages. + * As the boot-loader would not normally need to read EC headers (unless it + * needs UBI in RW mode), it might be faster to calculate ECC. This is weird + * example, but it real-life example. So, in this example, @vid_hdr_offer would + * be 2KiB-64 bytes = 1984. Note, that this position is not even 512-bytes + * aligned, which is OK, as UBI is clever enough to realize this is 4th + * sub-page of the first page and add needed padding. + * + * The @max_beb_per1024 is the maximum amount of bad PEBs UBI expects on the + * UBI device per 1024 eraseblocks. This value is often given in an other form + * in the NAND datasheet (min NVB i.e. minimal number of valid blocks). The + * maximum expected bad eraseblocks per 1024 is then: + * 1024 * (1 - MinNVB / MaxNVB) + * Which gives 20 for most NAND devices. This limit is used in order to derive + * amount of eraseblock UBI reserves for handling new bad blocks. If the device + * has more bad eraseblocks than this limit, UBI does not reserve any physical + * eraseblocks for new bad eraseblocks, but attempts to use available + * eraseblocks (if any). The accepted range is 0-768. If 0 is given, the + * default kernel value of %CONFIG_MTD_UBI_BEB_LIMIT will be used. + */ +struct ubi_attach_req { + __s32 ubi_num; + __s32 mtd_num; + __s32 vid_hdr_offset; + __s16 max_beb_per1024; + __s8 padding[10]; +}; + +/** + * struct ubi_mkvol_req - volume description data structure used in + * volume creation requests. + * @vol_id: volume number + * @alignment: volume alignment + * @bytes: volume size in bytes + * @vol_type: volume type (%UBI_DYNAMIC_VOLUME or %UBI_STATIC_VOLUME) + * @padding1: reserved for future, not used, has to be zeroed + * @name_len: volume name length + * @padding2: reserved for future, not used, has to be zeroed + * @name: volume name + * + * This structure is used by user-space programs when creating new volumes. The + * @used_bytes field is only necessary when creating static volumes. + * + * The @alignment field specifies the required alignment of the volume logical + * eraseblock. This means, that the size of logical eraseblocks will be aligned + * to this number, i.e., + * (UBI device logical eraseblock size) mod (@alignment) = 0. + * + * To put it differently, the logical eraseblock of this volume may be slightly + * shortened in order to make it properly aligned. The alignment has to be + * multiple of the flash minimal input/output unit, or %1 to utilize the entire + * available space of logical eraseblocks. + * + * The @alignment field may be useful, for example, when one wants to maintain + * a block device on top of an UBI volume. In this case, it is desirable to fit + * an integer number of blocks in logical eraseblocks of this UBI volume. With + * alignment it is possible to update this volume using plane UBI volume image + * BLOBs, without caring about how to properly align them. + */ +struct ubi_mkvol_req { + __s32 vol_id; + __s32 alignment; + __s64 bytes; + __s8 vol_type; + __s8 padding1; + __s16 name_len; + __s8 padding2[4]; + char name[UBI_MAX_VOLUME_NAME + 1]; +} __attribute__((packed)); + +/** + * struct ubi_rsvol_req - a data structure used in volume re-size requests. + * @vol_id: ID of the volume to re-size + * @bytes: new size of the volume in bytes + * + * Re-sizing is possible for both dynamic and static volumes. But while dynamic + * volumes may be re-sized arbitrarily, static volumes cannot be made to be + * smaller than the number of bytes they bear. To arbitrarily shrink a static + * volume, it must be wiped out first (by means of volume update operation with + * zero number of bytes). + */ +struct ubi_rsvol_req { + __s64 bytes; + __s32 vol_id; +} __attribute__((packed)); + +/** + * struct ubi_rnvol_req - volumes re-name request. + * @count: count of volumes to re-name + * @padding1: reserved for future, not used, has to be zeroed + * @vol_id: ID of the volume to re-name + * @name_len: name length + * @padding2: reserved for future, not used, has to be zeroed + * @name: new volume name + * + * UBI allows to re-name up to %32 volumes at one go. The count of volumes to + * re-name is specified in the @count field. The ID of the volumes to re-name + * and the new names are specified in the @vol_id and @name fields. + * + * The UBI volume re-name operation is atomic, which means that should power cut + * happen, the volumes will have either old name or new name. So the possible + * use-cases of this command is atomic upgrade. Indeed, to upgrade, say, volumes + * A and B one may create temporary volumes %A1 and %B1 with the new contents, + * then atomically re-name A1->A and B1->B, in which case old %A and %B will + * be removed. + * + * If it is not desirable to remove old A and B, the re-name request has to + * contain 4 entries: A1->A, A->A1, B1->B, B->B1, in which case old A1 and B1 + * become A and B, and old A and B will become A1 and B1. + * + * It is also OK to request: A1->A, A1->X, B1->B, B->Y, in which case old A1 + * and B1 become A and B, and old A and B become X and Y. + * + * In other words, in case of re-naming into an existing volume name, the + * existing volume is removed, unless it is re-named as well at the same + * re-name request. + */ +struct ubi_rnvol_req { + __s32 count; + __s8 padding1[12]; + struct { + __s32 vol_id; + __s16 name_len; + __s8 padding2[2]; + char name[UBI_MAX_VOLUME_NAME + 1]; + } ents[UBI_MAX_RNVOL]; +} __attribute__((packed)); + +/** + * struct ubi_leb_change_req - a data structure used in atomic LEB change + * requests. + * @lnum: logical eraseblock number to change + * @bytes: how many bytes will be written to the logical eraseblock + * @dtype: pass "3" for better compatibility with old kernels + * @padding: reserved for future, not used, has to be zeroed + * + * The @dtype field used to inform UBI about what kind of data will be written + * to the LEB: long term (value 1), short term (value 2), unknown (value 3). + * UBI tried to pick a PEB with lower erase counter for short term data and a + * PEB with higher erase counter for long term data. But this was not really + * used because users usually do not know this and could easily mislead UBI. We + * removed this feature in May 2012. UBI currently just ignores the @dtype + * field. But for better compatibility with older kernels it is recommended to + * set @dtype to 3 (unknown). + */ +struct ubi_leb_change_req { + __s32 lnum; + __s32 bytes; + __s8 dtype; /* obsolete, do not use! */ + __s8 padding[7]; +} __attribute__((packed)); + +/** + * struct ubi_map_req - a data structure used in map LEB requests. + * @dtype: pass "3" for better compatibility with old kernels + * @lnum: logical eraseblock number to unmap + * @padding: reserved for future, not used, has to be zeroed + */ +struct ubi_map_req { + __s32 lnum; + __s8 dtype; /* obsolete, do not use! */ + __s8 padding[3]; +} __attribute__((packed)); + + +/** + * struct ubi_set_vol_prop_req - a data structure used to set an UBI volume + * property. + * @property: property to set (%UBI_VOL_PROP_DIRECT_WRITE) + * @padding: reserved for future, not used, has to be zeroed + * @value: value to set + */ +struct ubi_set_vol_prop_req { + __u8 property; + __u8 padding[7]; + __u64 value; +} __attribute__((packed)); + +#endif /* __UBI_USER_H__ */ diff --git a/linux/x32/errnoent1.h b/linux/x32/errnoent1.h index a8948276..de1136cd 100644 --- a/linux/x32/errnoent1.h +++ b/linux/x32/errnoent1.h @@ -1,2 +1,2 @@ -/* Our second set comes from the i386 files. */ +/* i386 personality */ #include "../errnoent.h" diff --git a/linux/x32/ioctlent1.h b/linux/x32/ioctlent1.h index 1f92feb7..47506717 100644 --- a/linux/x32/ioctlent1.h +++ b/linux/x32/ioctlent1.h @@ -1,2 +1,2 @@ -/* Our second set comes from the i386 files. */ -#include "linux/ioctlent.h" +/* i386 personality */ +#include "ioctlent.h" diff --git a/linux/x32/signalent1.h b/linux/x32/signalent1.h index 5c18d98b..c927d729 100644 --- a/linux/x32/signalent1.h +++ b/linux/x32/signalent1.h @@ -1,2 +1,2 @@ -/* Our second set comes from the i386 files. */ +/* i386 personality */ #include "../signalent.h" diff --git a/linux/x32/syscallent.h b/linux/x32/syscallent.h index fcb6a232..65df1271 100644 --- a/linux/x32/syscallent.h +++ b/linux/x32/syscallent.h @@ -7,26 +7,26 @@ { 2, TF, sys_lstat, "lstat" }, /* 6 */ { 3, TD, sys_poll, "poll" }, /* 7 */ { 3, TD, sys_lseek, "lseek" }, /* 8 */ - { 6, TD, sys_mmap, "mmap" }, /* 9 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 10 */ - { 2, 0, sys_munmap, "munmap" }, /* 11 */ - { 1, 0, sys_brk, "brk" }, /* 12 */ - { }, /* 13 */ + { 6, TD|TM, sys_mmap, "mmap" }, /* 9 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 10 */ + { 2, TM, sys_munmap, "munmap" }, /* 11 */ + { 1, TM, sys_brk, "brk" }, /* 12 */ + { 4, TS, printargs, "64:rt_sigaction" }, /* 13 */ { 4, TS, sys_rt_sigprocmask, "rt_sigprocmask"}, /* 14 */ - { }, /* 15 */ - { }, /* 16 */ - { 5, TD, sys_pread, "pread" }, /* 17 */ - { 5, TD, sys_pwrite, "pwrite" }, /* 18 */ - { }, /* 19 */ - { }, /* 20 */ + { 0, TS, printargs, "64:rt_sigreturn" }, /* 15 */ + { 3, TD, printargs, "64:ioctl" }, /* 16 */ + { 4, TD, sys_pread, "pread" }, /* 17 */ + { 4, TD, sys_pwrite, "pwrite" }, /* 18 */ + { 3, TD, printargs, "64:readv" }, /* 19 */ + { 3, TD, printargs, "64:writev" }, /* 20 */ { 2, TF, sys_access, "access" }, /* 21 */ { 1, TD, sys_pipe, "pipe" }, /* 22 */ { 5, TD, sys_select, "select" }, /* 23 */ { 0, 0, sys_sched_yield, "sched_yield" }, /* 24 */ - { 5, 0, sys_mremap, "mremap" }, /* 25 */ - { 3, 0, sys_msync, "msync" }, /* 26 */ - { 3, 0, sys_mincore, "mincore" }, /* 27 */ - { 3, 0, sys_madvise, "madvise" }, /* 28 */ + { 5, TM, sys_mremap, "mremap" }, /* 25 */ + { 3, TM, sys_msync, "msync" }, /* 26 */ + { 3, TM, sys_mincore, "mincore" }, /* 27 */ + { 3, TM, sys_madvise, "madvise" }, /* 28 */ { 4, TI, sys_shmget, "shmget" }, /* 29 */ { 4, TI, sys_shmat, "shmat" }, /* 30 */ { 4, TI, sys_shmctl, "shmctl" }, /* 31 */ @@ -38,26 +38,26 @@ { 1, 0, sys_alarm, "alarm" }, /* 37 */ { 3, 0, sys_setitimer, "setitimer" }, /* 38 */ { 0, 0, sys_getpid, "getpid" }, /* 39 */ - { 4, TD|TN, sys_sendfile, "sendfile" }, /* 40 */ + { 4, TD|TN, sys_sendfile64, "sendfile" }, /* 40 */ { 3, TN, sys_socket, "socket" }, /* 41 */ { 3, TN, sys_connect, "connect" }, /* 42 */ { 3, TN, sys_accept, "accept" }, /* 43 */ { 6, TN, sys_sendto, "sendto" }, /* 44 */ - { }, /* 45 */ - { }, /* 46 */ - { }, /* 47 */ + { 6, TN, printargs, "64:recvfrom" }, /* 45 */ + { 3, TN, printargs, "64:sendmsg" }, /* 46 */ + { 5, TN, printargs, "64:recvmsg" }, /* 47 */ { 2, TN, sys_shutdown, "shutdown" }, /* 48 */ { 3, TN, sys_bind, "bind" }, /* 49 */ { 2, TN, sys_listen, "listen" }, /* 50 */ { 3, TN, sys_getsockname, "getsockname" }, /* 51 */ { 3, TN, sys_getpeername, "getpeername" }, /* 52 */ { 4, TN, sys_socketpair, "socketpair" }, /* 53 */ - { 5, TN, sys_setsockopt, "setsockopt" }, /* 54 */ - { 5, TN, sys_getsockopt, "getsockopt" }, /* 55 */ + { 5, TN, printargs, "64:setsockopt" }, /* 54 */ + { 5, TN, printargs, "64:getsockopt" }, /* 55 */ { 5, TP, sys_clone, "clone" }, /* 56 */ { 0, TP, sys_fork, "fork" }, /* 57 */ { 0, TP, sys_vfork, "vfork" }, /* 58 */ - { }, /* 47 */ + { 3, TF|TP, printargs, "64:execve" }, /* 59 */ { 1, TP, sys_exit, "_exit" }, /* 60 */ { 4, TP, sys_wait4, "wait4" }, /* 61 */ { 2, TS, sys_kill, "kill" }, /* 62 */ @@ -74,9 +74,9 @@ { 2, TD, sys_flock, "flock" }, /* 73 */ { 1, TD, sys_fsync, "fsync" }, /* 74 */ { 1, TD, sys_fdatasync, "fdatasync" }, /* 75 */ - { 2, TF, sys_truncate, "truncate" }, /* 76 */ - { 2, TD, sys_ftruncate, "ftruncate" }, /* 77 */ - { }, /* 78 */ + { 2, TF, sys_truncate64, "truncate" }, /* 76 */ + { 2, TD, sys_ftruncate64, "ftruncate" }, /* 77 */ + { 3, TD, sys_getdents, "getdents" }, /* 78 */ { 2, TF, sys_getcwd, "getcwd" }, /* 79 */ { 1, TF, sys_chdir, "chdir" }, /* 80 */ { 1, TD, sys_fchdir, "fchdir" }, /* 81 */ @@ -99,7 +99,7 @@ { 2, 0, sys_getrusage, "getrusage" }, /* 98 */ { 1, 0, sys_sysinfo, "sysinfo" }, /* 99 */ { 1, 0, sys_times, "times" }, /* 100 */ - { }, /* 101 */ + { 4, 0, printargs, "64:ptrace" }, /* 101 */ { 0, NF, sys_getuid, "getuid" }, /* 102 */ { 3, 0, sys_syslog, "syslog" }, /* 103 */ { 0, NF, sys_getgid, "getgid" }, /* 104 */ @@ -125,14 +125,14 @@ { 1, 0, sys_getsid, "getsid" }, /* 124 */ { 2, 0, sys_capget, "capget" }, /* 125 */ { 2, 0, sys_capset, "capset" }, /* 126 */ - { }, /* 127 */ - { }, /* 128 */ - { }, /* 129 */ + { 2, TS, printargs, "64:rt_sigpending" }, /* 127 */ + { 4, TS, printargs, "64:rt_sigtimedwait" }, /* 128 */ + { 3, TS, printargs, "64:rt_sigqueueinfo" }, /* 129 */ { 2, TS, sys_rt_sigsuspend, "rt_sigsuspend" }, /* 130 */ - { }, /* 131 */ + { 2, TS, printargs, "64:sigaltstack"}, /* 131 */ { 2, TF, sys_utime, "utime" }, /* 132 */ { 3, TF, sys_mknod, "mknod" }, /* 133 */ - { }, /* 134 */ + { 1, TF, printargs, "64:uselib" }, /* 134 */ { 1, 0, sys_personality, "personality" }, /* 135 */ { 2, 0, sys_ustat, "ustat" }, /* 136 */ { 2, TF, sys_statfs, "statfs" }, /* 137 */ @@ -147,14 +147,14 @@ { 1, 0, sys_sched_get_priority_max, "sched_get_priority_max" }, /* 146 */ { 1, 0, sys_sched_get_priority_min, "sched_get_priority_min" }, /* 147 */ { 2, 0, sys_sched_rr_get_interval, "sched_rr_get_interval" }, /* 148 */ - { 2, 0, sys_mlock, "mlock" }, /* 149 */ - { 2, 0, sys_munlock, "munlock" }, /* 150 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 151 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 152 */ + { 2, TM, sys_mlock, "mlock" }, /* 149 */ + { 2, TM, sys_munlock, "munlock" }, /* 150 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 151 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 152 */ { 0, 0, sys_vhangup, "vhangup" }, /* 153 */ { 3, 0, sys_modify_ldt, "modify_ldt" }, /* 154 */ { 2, TF, sys_pivotroot, "pivot_root" }, /* 155 */ - { }, /* 156 */ + { 1, 0, printargs, "64:_sysctl" }, /* 156 */ { 5, 0, sys_prctl, "prctl" }, /* 157 */ { 2, TP, sys_arch_prctl, "arch_prctl" }, /* 158 */ { 1, 0, sys_adjtimex, "adjtimex" }, /* 159 */ @@ -172,20 +172,20 @@ { 2, 0, sys_setdomainname, "setdomainname" }, /* 171 */ { 1, 0, sys_iopl, "iopl" }, /* 172 */ { 3, 0, sys_ioperm, "ioperm" }, /* 173 */ - { 2, 0, sys_create_module, "create_module" }, /* 174 */ + { 2, 0, printargs, "64:create_module" }, /* 174 */ { 3, 0, sys_init_module, "init_module" }, /* 175 */ { 2, 0, sys_delete_module, "delete_module" }, /* 176 */ - { }, /* 177 */ - { }, /* 178 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 179 */ - { }, /* 180 */ - { }, /* 181 */ - { }, /* 182 */ - { }, /* 183 */ - { }, /* 184 */ - { }, /* 185 */ + { 1, 0, printargs, "64:get_kernel_syms" }, /* 177 */ + { 5, 0, printargs, "64:query_module" }, /* 178 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 179 */ + { 3, 0, printargs, "64:nfsservctl" }, /* 180 */ + { 5, 0, sys_getpmsg, "getpmsg" }, /* 181 */ + { 5, 0, sys_putpmsg, "putpmsg" }, /* 182 */ + { 5, 0, sys_afs_syscall, "afs_syscall" }, /* 183 */ + { 3, 0, sys_tuxcall, "tuxcall" }, /* 184 */ + { 3, 0, sys_security, "security" }, /* 185 */ { 0, 0, sys_gettid, "gettid" }, /* 186 */ - { 4, TD, sys_readahead, "readahead" }, /* 187 */ + { 3, TD, sys_readahead, "readahead" }, /* 187 */ { 5, TF, sys_setxattr, "setxattr" }, /* 188 */ { 5, TF, sys_setxattr, "lsetxattr" }, /* 189 */ { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 190 */ @@ -203,24 +203,24 @@ { 6, 0, sys_futex, "futex" }, /* 202 */ { 3, 0, sys_sched_setaffinity, "sched_setaffinity" },/* 203 */ { 3, 0, sys_sched_getaffinity, "sched_getaffinity" },/* 204 */ - { }, /* 205 */ + { 1, 0, printargs, "64:set_thread_area" }, /* 205 */ { 2, 0, sys_io_setup, "io_setup" }, /* 206 */ { 1, 0, sys_io_destroy, "io_destroy" }, /* 207 */ { 5, 0, sys_io_getevents, "io_getevents" }, /* 208 */ { 3, 0, sys_io_submit, "io_submit" }, /* 209 */ { 3, 0, sys_io_cancel, "io_cancel" }, /* 210 */ - { }, /* 211 */ + { 1, 0, printargs, "64:get_thread_area" }, /* 211 */ { 4, 0, sys_lookup_dcookie, "lookup_dcookie"}, /* 212 */ { 1, TD, sys_epoll_create, "epoll_create" }, /* 213 */ - { }, /* 214 */ - { }, /* 215 */ - { 5, 0, sys_remap_file_pages, "remap_file_pages"}, /* 216 */ + { 4, 0, printargs, "64:epoll_ctl_old" }, /* 214 */ + { 4, 0, printargs, "64:epoll_wait_old" }, /* 215 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages"}, /* 216 */ { 3, TD, sys_getdents64, "getdents64" }, /* 217 */ { 1, 0, sys_set_tid_address, "set_tid_address"}, /* 218 */ { 0, 0, sys_restart_syscall, "restart_syscall"}, /* 219 */ { 5, TI, sys_semtimedop, "semtimedop" }, /* 220 */ { 4, TD, sys_fadvise64_64, "fadvise64" }, /* 221 */ - { }, /* 222 */ + { 3, 0, printargs, "64:timer_create"}, /* 222 */ { 4, 0, sys_timer_settime, "timer_settime" }, /* 223 */ { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 224 */ { 1, 0, sys_timer_getoverrun, "timer_getoverrun"}, /* 225 */ @@ -234,18 +234,18 @@ { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 233 */ { 3, TS, sys_tgkill, "tgkill" }, /* 234 */ { 2, TF, sys_utimes, "utimes" }, /* 235 */ - { }, /* 236 */ - { 6, 0, sys_mbind, "mbind" }, /* 237 */ - { 3, 0, sys_set_mempolicy, "set_mempolicy" }, /* 238 */ - { 5, 0, sys_get_mempolicy, "get_mempolicy" }, /* 239 */ + { 5, 0, printargs, "64:vserver" }, /* 236 */ + { 6, TM, sys_mbind, "mbind" }, /* 237 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 238 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 239 */ { 4, 0, sys_mq_open, "mq_open" }, /* 240 */ { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 241 */ { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 242 */ { 5, 0, sys_mq_timedreceive, "mq_timedreceive" }, /* 243 */ - { }, /* 244 */ + { 2, 0, printargs, "64:mq_notify" }, /* 244 */ { 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 245 */ - { }, /* 246 */ - { }, /* 247 */ + { 4, 0, printargs, "64:kexec_load" }, /* 246 */ + { 5, TP, printargs, "64:waitid" }, /* 247 */ { 5, 0, sys_add_key, "add_key" }, /* 248 */ { 4, 0, sys_request_key, "request_key" }, /* 249 */ { 5, 0, sys_keyctl, "keyctl" }, /* 250 */ @@ -254,7 +254,7 @@ { 0, TD, sys_inotify_init, "inotify_init" }, /* 253 */ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 254 */ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 255 */ - { 4, 0, sys_migrate_pages, "migrate_pages" }, /* 256 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 256 */ { 4, TD|TF, sys_openat, "openat" }, /* 257 */ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 258 */ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 259 */ @@ -271,19 +271,19 @@ { 6, TD, sys_pselect6, "pselect6" }, /* 270 */ { 5, TD, sys_ppoll, "ppoll" }, /* 271 */ { 1, TP, sys_unshare, "unshare" }, /* 272 */ - { }, /* 273 */ - { }, /* 274 */ + { 2, 0, printargs, "64:set_robust_list" }, /* 273 */ + { 3, 0, printargs, "64:get_robust_list" }, /* 274 */ { 6, TD, sys_splice, "splice" }, /* 275 */ { 4, TD, sys_tee, "tee" }, /* 276 */ { 4, TD, sys_sync_file_range, "sync_file_range" }, /* 277 */ - { }, /* 278 */ - { }, /* 279 */ + { 4, TD, printargs, "64:vmsplice" }, /* 278 */ + { 6, TM, printargs, "64:move_pages" }, /* 279 */ { 4, TD|TF, sys_utimensat, "utimensat" }, /* 280 */ { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 281 */ { 3, TD|TS, sys_signalfd, "signalfd" }, /* 282 */ { 2, TD, sys_timerfd_create, "timerfd_create"}, /* 283 */ { 1, TD, sys_eventfd, "eventfd" }, /* 284 */ - { 6, TD, sys_fallocate, "fallocate" }, /* 285 */ + { 4, TD, sys_fallocate, "fallocate" }, /* 285 */ { 4, TD, sys_timerfd_settime, "timerfd_settime"}, /* 286 */ { 2, TD, sys_timerfd_gettime, "timerfd_gettime"}, /* 287 */ { 4, TN, sys_accept4, "accept4" }, /* 288 */ @@ -293,11 +293,11 @@ { 3, TD, sys_dup3, "dup3" }, /* 292 */ { 2, TD, sys_pipe2, "pipe2" }, /* 293 */ { 1, TD, sys_inotify_init1, "inotify_init1" }, /* 294 */ - { }, /* 295 */ - { }, /* 296 */ - { }, /* 297 */ + { 4, TD, printargs, "64:preadv" }, /* 295 */ + { 4, TD, printargs, "64:pwritev" }, /* 296 */ + { 4, TP|TS, printargs, "64:rt_tgsigqueueinfo"}, /* 297 */ { 5, TD, sys_perf_event_open, "perf_event_open"}, /* 298 */ - { }, /* 299 */ + { 5, TN, printargs, "64:recvmmsg" }, /* 299 */ { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 300 */ { 5, TD|TF, sys_fanotify_mark, "fanotify_mark" }, /* 301 */ { 4, 0, sys_prlimit64, "prlimit64" }, /* 302 */ @@ -305,13 +305,15 @@ { 3, TD, sys_open_by_handle_at, "open_by_handle_at"}, /* 304 */ { 2, 0, sys_clock_adjtime, "clock_adjtime" }, /* 305 */ { 1, TD, sys_syncfs, "syncfs" }, /* 306 */ - { }, /* 307 */ + { 4, TN, printargs, "64:sendmmsg" }, /* 307 */ { 2, TD, sys_setns, "setns" }, /* 308 */ { 3, 0, sys_getcpu, "getcpu" }, /* 309 */ - { }, /* 310 */ - { }, /* 311 */ + { 6, 0, printargs, "64:process_vm_readv" }, /* 310 */ + { 6, 0, printargs, "64:process_vm_writev" }, /* 311 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 312 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 313 */ - [312 ... 511] = {}, + [314 ... 511] = {}, { 4, TS, sys_rt_sigaction, "rt_sigaction" }, /* 512 */ { 0, TS, sys_rt_sigreturn, "rt_sigreturn" }, /* 513 */ @@ -320,12 +322,12 @@ { 3, TD, sys_writev, "writev" }, /* 516 */ { 6, TN, sys_recvfrom, "recvfrom" }, /* 517 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 518 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 519 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 519 */ { 3, TF|TP, sys_execve, "execve" }, /* 520 */ { 4, 0, sys_ptrace, "ptrace" }, /* 521 */ { 2, TS, sys_rt_sigpending, "rt_sigpending" }, /* 522 */ { 4, TS, sys_rt_sigtimedwait, "rt_sigtimedwait" }, /* 523 */ - { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo" }, /* 524 */ + { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo" }, /* 524 */ { 2, TS, sys_sigaltstack, "sigaltstack" }, /* 525 */ { 3, 0, sys_timer_create, "timer_create" }, /* 526 */ { 2, 0, sys_mq_notify, "mq_notify" }, /* 527 */ @@ -334,11 +336,13 @@ { 2, 0, sys_set_robust_list, "set_robust_list" }, /* 530 */ { 3, 0, sys_get_robust_list, "get_robust_list" }, /* 531 */ { 4, TD, sys_vmsplice, "vmsplice" }, /* 532 */ - { 6, 0, sys_move_pages, "move_pages" }, /* 533 */ - { 5, TD, sys_preadv, "preadv" }, /* 534 */ - { 5, TD, sys_pwritev, "pwritev" }, /* 535 */ - { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo"}, /* 536 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 533 */ + { 4, TD, sys_preadv, "preadv" }, /* 534 */ + { 4, TD, sys_pwritev, "pwritev" }, /* 535 */ + { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo" }, /* 536 */ { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 537 */ { 4, TN, sys_sendmmsg, "sendmmsg" }, /* 538 */ - { 6, 0, sys_process_vm_readv, "process_vm_readv"}, /* 539 */ - { 6, 0, sys_process_vm_writev, "process_vm_writev"}, /* 540 */ + { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 539 */ + { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 540 */ + { 5, TN, sys_setsockopt, "setsockopt" }, /* 541 */ + { 5, TN, sys_getsockopt, "getsockopt" }, /* 542 */ diff --git a/linux/x32/syscallent1.h b/linux/x32/syscallent1.h index 20c65292..c9100de8 100644 --- a/linux/x32/syscallent1.h +++ b/linux/x32/syscallent1.h @@ -1,11 +1,3 @@ -/* Our second set comes from the i386 files. - Only a couple of calls we cannot support without the i386 headers. */ +/* Our second set comes from the i386 files. */ -#define sys_oldstat printargs -#define sys_oldfstat printargs -#define sys_oldlstat printargs -#define sys_lseek sys_lseek32 -#define sys_lstat64 sys_stat64 -#define sys_truncate64 sys_truncate -#define sys_ftruncate64 sys_ftruncate -#include "i386/syscallent.h" +#include "../i386/syscallent.h" diff --git a/linux/x86_64/errnoent1.h b/linux/x86_64/errnoent1.h index a8948276..de1136cd 100644 --- a/linux/x86_64/errnoent1.h +++ b/linux/x86_64/errnoent1.h @@ -1,2 +1,2 @@ -/* Our second set comes from the i386 files. */ +/* i386 personality */ #include "../errnoent.h" diff --git a/linux/x86_64/errnoent2.h b/linux/x86_64/errnoent2.h index 00de57b6..0630919d 100644 --- a/linux/x86_64/errnoent2.h +++ b/linux/x86_64/errnoent2.h @@ -1,2 +1,2 @@ -/* Our third set is for x32. */ +/* x32 personality */ #include "../errnoent.h" diff --git a/linux/x86_64/ioctlent1.h b/linux/x86_64/ioctlent1.h index 1f92feb7..47506717 100644 --- a/linux/x86_64/ioctlent1.h +++ b/linux/x86_64/ioctlent1.h @@ -1,2 +1,2 @@ -/* Our second set comes from the i386 files. */ -#include "linux/ioctlent.h" +/* i386 personality */ +#include "ioctlent.h" diff --git a/linux/x86_64/ioctlent2.h b/linux/x86_64/ioctlent2.h index 060003b3..fd4b94dd 100644 --- a/linux/x86_64/ioctlent2.h +++ b/linux/x86_64/ioctlent2.h @@ -1,2 +1,2 @@ -/* Our third set is for x32. */ -#include "linux/ioctlent.h" +/* x32 personality */ +#include "ioctlent.h" diff --git a/linux/x86_64/signalent1.h b/linux/x86_64/signalent1.h index 5c18d98b..c927d729 100644 --- a/linux/x86_64/signalent1.h +++ b/linux/x86_64/signalent1.h @@ -1,2 +1,2 @@ -/* Our second set comes from the i386 files. */ +/* i386 personality */ #include "../signalent.h" diff --git a/linux/x86_64/signalent2.h b/linux/x86_64/signalent2.h index 6fbcab12..c8f6824f 100644 --- a/linux/x86_64/signalent2.h +++ b/linux/x86_64/signalent2.h @@ -1,2 +1,2 @@ -/* Our third set is for x32. */ +/* x32 personality */ #include "../signalent.h" diff --git a/linux/x86_64/syscallent.h b/linux/x86_64/syscallent.h index 34ebc53b..8e3a2007 100644 --- a/linux/x86_64/syscallent.h +++ b/linux/x86_64/syscallent.h @@ -7,26 +7,26 @@ { 2, TF, sys_lstat, "lstat" }, /* 6 */ { 3, TD, sys_poll, "poll" }, /* 7 */ { 3, TD, sys_lseek, "lseek" }, /* 8 */ - { 6, TD, sys_mmap, "mmap" }, /* 9 */ - { 3, 0, sys_mprotect, "mprotect" }, /* 10 */ - { 2, 0, sys_munmap, "munmap" }, /* 11 */ - { 1, 0, sys_brk, "brk" }, /* 12 */ + { 6, TD|TM, sys_mmap, "mmap" }, /* 9 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 10 */ + { 2, TM, sys_munmap, "munmap" }, /* 11 */ + { 1, TM, sys_brk, "brk" }, /* 12 */ { 4, TS, sys_rt_sigaction, "rt_sigaction" }, /* 13 */ { 4, TS, sys_rt_sigprocmask, "rt_sigprocmask"}, /* 14 */ { 0, TS, sys_rt_sigreturn, "rt_sigreturn" }, /* 15 */ { 3, TD, sys_ioctl, "ioctl" }, /* 16 */ - { 5, TD, sys_pread, "pread" }, /* 17 */ - { 5, TD, sys_pwrite, "pwrite" }, /* 18 */ + { 4, TD, sys_pread, "pread" }, /* 17 */ + { 4, TD, sys_pwrite, "pwrite" }, /* 18 */ { 3, TD, sys_readv, "readv" }, /* 19 */ { 3, TD, sys_writev, "writev" }, /* 20 */ { 2, TF, sys_access, "access" }, /* 21 */ { 1, TD, sys_pipe, "pipe" }, /* 22 */ { 5, TD, sys_select, "select" }, /* 23 */ { 0, 0, sys_sched_yield, "sched_yield" }, /* 24 */ - { 5, 0, sys_mremap, "mremap" }, /* 25 */ - { 3, 0, sys_msync, "msync" }, /* 26 */ - { 3, 0, sys_mincore, "mincore" }, /* 27 */ - { 3, 0, sys_madvise, "madvise" }, /* 28 */ + { 5, TM, sys_mremap, "mremap" }, /* 25 */ + { 3, TM, sys_msync, "msync" }, /* 26 */ + { 3, TM, sys_mincore, "mincore" }, /* 27 */ + { 3, TM, sys_madvise, "madvise" }, /* 28 */ { 4, TI, sys_shmget, "shmget" }, /* 29 */ { 4, TI, sys_shmat, "shmat" }, /* 30 */ { 4, TI, sys_shmctl, "shmctl" }, /* 31 */ @@ -38,14 +38,14 @@ { 1, 0, sys_alarm, "alarm" }, /* 37 */ { 3, 0, sys_setitimer, "setitimer" }, /* 38 */ { 0, 0, sys_getpid, "getpid" }, /* 39 */ - { 4, TD|TN, sys_sendfile, "sendfile" }, /* 40 */ + { 4, TD|TN, sys_sendfile64, "sendfile" }, /* 40 */ { 3, TN, sys_socket, "socket" }, /* 41 */ { 3, TN, sys_connect, "connect" }, /* 42 */ { 3, TN, sys_accept, "accept" }, /* 43 */ { 6, TN, sys_sendto, "sendto" }, /* 44 */ { 6, TN, sys_recvfrom, "recvfrom" }, /* 45 */ { 3, TN, sys_sendmsg, "sendmsg" }, /* 46 */ - { 5, TN, sys_recvmsg, "recvmsg" }, /* 47 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 47 */ { 2, TN, sys_shutdown, "shutdown" }, /* 48 */ { 3, TN, sys_bind, "bind" }, /* 49 */ { 2, TN, sys_listen, "listen" }, /* 50 */ @@ -147,10 +147,10 @@ { 1, 0, sys_sched_get_priority_max, "sched_get_priority_max" }, /* 146 */ { 1, 0, sys_sched_get_priority_min, "sched_get_priority_min" }, /* 147 */ { 2, 0, sys_sched_rr_get_interval, "sched_rr_get_interval" }, /* 148 */ - { 2, 0, sys_mlock, "mlock" }, /* 149 */ - { 2, 0, sys_munlock, "munlock" }, /* 150 */ - { 1, 0, sys_mlockall, "mlockall" }, /* 151 */ - { 0, 0, sys_munlockall, "munlockall" }, /* 152 */ + { 2, TM, sys_mlock, "mlock" }, /* 149 */ + { 2, TM, sys_munlock, "munlock" }, /* 150 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 151 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 152 */ { 0, 0, sys_vhangup, "vhangup" }, /* 153 */ { 3, 0, sys_modify_ldt, "modify_ldt" }, /* 154 */ { 2, TF, sys_pivotroot, "pivot_root" }, /* 155 */ @@ -177,7 +177,7 @@ { 2, 0, sys_delete_module, "delete_module" }, /* 176 */ { 1, 0, sys_get_kernel_syms, "get_kernel_syms"}, /* 177 */ { 5, 0, sys_query_module, "query_module" }, /* 178 */ - { 4, 0, sys_quotactl, "quotactl" }, /* 179 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 179 */ { 3, 0, sys_nfsservctl, "nfsservctl" }, /* 180 */ { 5, 0, sys_getpmsg, "getpmsg" }, /* 181 */ { 5, 0, sys_putpmsg, "putpmsg" }, /* 182 */ @@ -185,7 +185,7 @@ { 3, 0, sys_tuxcall, "tuxcall" }, /* 184 */ { 3, 0, sys_security, "security" }, /* 185 */ { 0, 0, sys_gettid, "gettid" }, /* 186 */ - { 4, TD, sys_readahead, "readahead" }, /* 187 */ + { 3, TD, sys_readahead, "readahead" }, /* 187 */ { 5, TF, sys_setxattr, "setxattr" }, /* 188 */ { 5, TF, sys_setxattr, "lsetxattr" }, /* 189 */ { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 190 */ @@ -210,16 +210,16 @@ { 3, 0, sys_io_submit, "io_submit" }, /* 209 */ { 3, 0, sys_io_cancel, "io_cancel" }, /* 210 */ { 1, 0, sys_get_thread_area, "get_thread_area" }, /* 211 */ - { 4, 0, sys_lookup_dcookie, "lookup_dcookie"}, /* 212 */ + { 3, 0, sys_lookup_dcookie, "lookup_dcookie"}, /* 212 */ { 1, TD, sys_epoll_create, "epoll_create" }, /* 213 */ { 4, 0, printargs, "epoll_ctl_old" }, /* 214 */ { 4, 0, printargs, "epoll_wait_old"}, /* 215 */ - { 5, 0, sys_remap_file_pages, "remap_file_pages"}, /* 216 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages"}, /* 216 */ { 3, TD, sys_getdents64, "getdents64" }, /* 217 */ { 1, 0, sys_set_tid_address, "set_tid_address"}, /* 218 */ { 0, 0, sys_restart_syscall, "restart_syscall"}, /* 219 */ { 5, TI, sys_semtimedop, "semtimedop" }, /* 220 */ - { 4, TD, sys_fadvise64_64, "fadvise64" }, /* 221 */ + { 4, TD, sys_fadvise64, "fadvise64" }, /* 221 */ { 3, 0, sys_timer_create, "timer_create" }, /* 222 */ { 4, 0, sys_timer_settime, "timer_settime" }, /* 223 */ { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 224 */ @@ -235,9 +235,9 @@ { 3, TS, sys_tgkill, "tgkill" }, /* 234 */ { 2, TF, sys_utimes, "utimes" }, /* 235 */ { 5, 0, sys_vserver, "vserver" }, /* 236 */ - { 6, 0, sys_mbind, "mbind" }, /* 237 */ - { 3, 0, sys_set_mempolicy, "set_mempolicy" }, /* 238 */ - { 5, 0, sys_get_mempolicy, "get_mempolicy" }, /* 239 */ + { 6, TM, sys_mbind, "mbind" }, /* 237 */ + { 3, TM, sys_set_mempolicy, "set_mempolicy" }, /* 238 */ + { 5, TM, sys_get_mempolicy, "get_mempolicy" }, /* 239 */ { 4, 0, sys_mq_open, "mq_open" }, /* 240 */ { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 241 */ { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 242 */ @@ -254,7 +254,7 @@ { 0, TD, sys_inotify_init, "inotify_init" }, /* 253 */ { 3, TD, sys_inotify_add_watch, "inotify_add_watch" }, /* 254 */ { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch" }, /* 255 */ - { 4, 0, sys_migrate_pages, "migrate_pages" }, /* 256 */ + { 4, TM, sys_migrate_pages, "migrate_pages" }, /* 256 */ { 4, TD|TF, sys_openat, "openat" }, /* 257 */ { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 258 */ { 4, TD|TF, sys_mknodat, "mknodat" }, /* 259 */ @@ -277,13 +277,13 @@ { 4, TD, sys_tee, "tee" }, /* 276 */ { 4, TD, sys_sync_file_range, "sync_file_range" }, /* 277 */ { 4, TD, sys_vmsplice, "vmsplice" }, /* 278 */ - { 6, 0, sys_move_pages, "move_pages" }, /* 279 */ + { 6, TM, sys_move_pages, "move_pages" }, /* 279 */ { 4, TD|TF, sys_utimensat, "utimensat" }, /* 280 */ { 6, TD, sys_epoll_pwait, "epoll_pwait" }, /* 281 */ { 3, TD|TS, sys_signalfd, "signalfd" }, /* 282 */ { 2, TD, sys_timerfd_create, "timerfd_create"}, /* 283 */ { 1, TD, sys_eventfd, "eventfd" }, /* 284 */ - { 6, TD, sys_fallocate, "fallocate" }, /* 285 */ + { 4, TD, sys_fallocate, "fallocate" }, /* 285 */ { 4, TD, sys_timerfd_settime, "timerfd_settime"}, /* 286 */ { 2, TD, sys_timerfd_gettime, "timerfd_gettime"}, /* 287 */ { 4, TN, sys_accept4, "accept4" }, /* 288 */ @@ -293,8 +293,8 @@ { 3, TD, sys_dup3, "dup3" }, /* 292 */ { 2, TD, sys_pipe2, "pipe2" }, /* 293 */ { 1, TD, sys_inotify_init1, "inotify_init1" }, /* 294 */ - { 5, TD, sys_preadv, "preadv" }, /* 295 */ - { 5, TD, sys_pwritev, "pwritev" }, /* 296 */ + { 4, TD, sys_preadv, "preadv" }, /* 295 */ + { 4, TD, sys_pwritev, "pwritev" }, /* 296 */ { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo"}, /* 297 */ { 5, TD, sys_perf_event_open, "perf_event_open"}, /* 298 */ { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 299 */ @@ -310,3 +310,5 @@ { 3, 0, sys_getcpu, "getcpu" }, /* 309 */ { 6, 0, sys_process_vm_readv, "process_vm_readv" }, /* 310 */ { 6, 0, sys_process_vm_writev, "process_vm_writev" }, /* 311 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 312 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 313 */ diff --git a/linux/x86_64/syscallent1.h b/linux/x86_64/syscallent1.h index 90977851..c9100de8 100644 --- a/linux/x86_64/syscallent1.h +++ b/linux/x86_64/syscallent1.h @@ -1,7 +1,3 @@ -/* Our second set comes from the i386 files. - Only a couple of calls we cannot support without the i386 headers. */ +/* Our second set comes from the i386 files. */ -#define sys_oldstat printargs -#define sys_oldfstat printargs -#define sys_oldlstat printargs -#include "i386/syscallent.h" +#include "../i386/syscallent.h" diff --git a/linux/x86_64/syscallent2.h b/linux/x86_64/syscallent2.h index 1d35f536..5e0df532 100644 --- a/linux/x86_64/syscallent2.h +++ b/linux/x86_64/syscallent2.h @@ -1,2 +1,2 @@ -/* Our third set is for x32. */ -#include "x32/syscallent.h" +/* x32 personality */ +#include "../x32/syscallent.h" diff --git a/linux/xtensa/ioctlent.h.in b/linux/xtensa/ioctlent.h.in new file mode 100644 index 00000000..a9eae81f --- /dev/null +++ b/linux/xtensa/ioctlent.h.in @@ -0,0 +1 @@ +/* intentionally empty */ diff --git a/linux/xtensa/syscallent.h b/linux/xtensa/syscallent.h new file mode 100644 index 00000000..62cb40d1 --- /dev/null +++ b/linux/xtensa/syscallent.h @@ -0,0 +1,326 @@ + { 0, 0, printargs, "spill" }, /* 0 */ + { 0, 0, printargs, "xtensa" }, /* 1 */ + [2 ... 7] = { }, + { 3, TD|TF, sys_open, "open" }, /* 8 */ + { 1, TD, sys_close, "close" }, /* 9 */ + { 1, TD, sys_dup, "dup" }, /* 10 */ + { 2, TD, sys_dup2, "dup2" }, /* 11 */ + { 3, TD, sys_read, "read" }, /* 12 */ + { 3, TD, sys_write, "write" }, /* 13 */ + { 5, TD, sys_select, "select" }, /* 14 */ + { 3, TD, sys_lseek, "lseek" }, /* 15 */ + { 3, TD, sys_poll, "poll" }, /* 16 */ + { 5, TD, sys_llseek, "_llseek" }, /* 17 */ + { 4, TD, sys_epoll_wait, "epoll_wait" }, /* 18 */ + { 4, TD, sys_epoll_ctl, "epoll_ctl" }, /* 19 */ + { 1, TD, sys_epoll_create, "epoll_create" }, /* 20 */ + { 2, TD|TF, sys_creat, "creat" }, /* 21 */ + { 2, TF, sys_truncate, "truncate" }, /* 22 */ + { 2, TD, sys_ftruncate, "ftruncate" }, /* 23 */ + { 3, TD, sys_readv, "readv" }, /* 24 */ + { 3, TD, sys_writev, "writev" }, /* 25 */ + { 1, TD, sys_fsync, "fsync" }, /* 26 */ + { 1, TD, sys_fdatasync, "fdatasync" }, /* 27 */ + { 4, TF, sys_truncate64, "truncate64" }, /* 28 */ + { 4, TD, sys_ftruncate64, "ftruncate64" }, /* 29 */ + { 6, TD, sys_pread, "pread64" }, /* 30 */ + { 6, TD, sys_pwrite, "pwrite64" }, /* 31 */ + { 2, TF, sys_link, "link" }, /* 32 */ + { 2, TF, sys_rename, "rename" }, /* 33 */ + { 2, TF, sys_symlink, "symlink" }, /* 34 */ + { 3, TF, sys_readlink, "readlink" }, /* 35 */ + { 3, TF, sys_mknod, "mknod" }, /* 36 */ + { 1, TD, sys_pipe, "pipe" }, /* 37 */ + { 1, TF, sys_unlink, "unlink" }, /* 38 */ + { 1, TF, sys_rmdir, "rmdir" }, /* 39 */ + { 2, TF, sys_mkdir, "mkdir" }, /* 40 */ + { 1, TF, sys_chdir, "chdir" }, /* 41 */ + { 1, TD, sys_fchdir, "fchdir" }, /* 42 */ + { 2, TF, sys_getcwd, "getcwd" }, /* 43 */ + { 2, TF, sys_chmod, "chmod" }, /* 44 */ + { 3, TF, sys_chown, "chown" }, /* 45 */ + { 2, TF, sys_stat, "stat" }, /* 46 */ + { 2, TF, sys_stat64, "stat64" }, /* 47 */ + { 3, TF, sys_chown, "lchown" }, /* 48 */ + { 2, TF, sys_lstat, "lstat" }, /* 49 */ + { 2, TF, sys_lstat64, "lstat64" }, /* 50 */ + [51] = { }, + { 2, TD, sys_fchmod, "fchmod" }, /* 52 */ + { 3, TD, sys_fchown, "fchown" }, /* 53 */ + { 2, TD, sys_fstat, "fstat" }, /* 54 */ + { 2, TD, sys_fstat64, "fstat64" }, /* 55 */ + { 2, TD, sys_flock, "flock" }, /* 56 */ + { 2, TF, sys_access, "access" }, /* 57 */ + { 1, 0, sys_umask, "umask" }, /* 58 */ + { 3, TD, sys_getdents, "getdents" }, /* 59 */ + { 3, TD, sys_getdents64, "getdents64" }, /* 60 */ + { 3, TD, sys_fcntl, "fcntl64" }, /* 61 */ + { 6, TD, sys_fallocate, "fallocate" }, /* 62 */ + { 6, TD, sys_fadvise64_64, "fadvise64_64" }, /* 63 */ + { 2, TF, sys_utime, "utime" }, /* 64 */ + { 2, TF, sys_utimes, "utimes" }, /* 65 */ + { 3, TD, sys_ioctl, "ioctl" }, /* 66 */ + { 3, TD, sys_fcntl, "fcntl" }, /* 67 */ + { 5, TF, sys_setxattr, "setxattr" }, /* 68 */ + { 4, TF, sys_getxattr, "getxattr" }, /* 69 */ + { 3, TF, sys_listxattr, "listxattr" }, /* 70 */ + { 2, TF, sys_removexattr, "removexattr" }, /* 71 */ + { 5, TF, sys_setxattr, "lsetxattr" }, /* 72 */ + { 4, TF, sys_getxattr, "lgetxattr" }, /* 73 */ + { 3, TF, sys_listxattr, "llistxattr" }, /* 74 */ + { 2, TF, sys_removexattr, "lremovexattr" }, /* 75 */ + { 5, TD, sys_fsetxattr, "fsetxattr" }, /* 76 */ + { 4, TD, sys_fgetxattr, "fgetxattr" }, /* 77 */ + { 3, TD, sys_flistxattr, "flistxattr" }, /* 78 */ + { 2, TD, sys_fremovexattr, "fremovexattr" }, /* 79 */ + { 6, TD|TM, sys_mmap_pgoff, "mmap2" }, /* 80 */ + { 2, TM, sys_munmap, "munmap" }, /* 81 */ + { 3, TM, sys_mprotect, "mprotect" }, /* 82 */ + { 1, TM, sys_brk, "brk" }, /* 83 */ + { 2, TM, sys_mlock, "mlock" }, /* 84 */ + { 2, TM, sys_munlock, "munlock" }, /* 85 */ + { 1, TM, sys_mlockall, "mlockall" }, /* 86 */ + { 0, TM, sys_munlockall, "munlockall" }, /* 87 */ + { 4, TM, sys_mremap, "mremap" }, /* 88 */ + { 3, TM, sys_msync, "msync" }, /* 89 */ + { 3, TM, sys_mincore, "mincore" }, /* 90 */ + { 3, TM, sys_madvise, "madvise" }, /* 91 */ + { 4, TI, sys_shmget, "shmget" }, /* 92 */ + { 4, TI, sys_shmat, "shmat" }, /* 93 */ + { 4, TI, sys_shmctl, "shmctl" }, /* 94 */ + { 4, TI, sys_shmdt, "shmdt" }, /* 95 */ + { 3, TN, sys_socket, "socket" }, /* 96 */ + { 5, TN, sys_setsockopt, "setsockopt" }, /* 97 */ + { 5, TN, sys_getsockopt, "getsockopt" }, /* 98 */ + { 2, TN, sys_shutdown, "shutdown" }, /* 99 */ + { 3, TN, sys_bind, "bind" }, /* 100 */ + { 3, TN, sys_connect, "connect" }, /* 101 */ + { 2, TN, sys_listen, "listen" }, /* 102 */ + { 3, TN, sys_accept, "accept" }, /* 103 */ + { 3, TN, sys_getsockname, "getsockname" }, /* 104 */ + { 3, TN, sys_getpeername, "getpeername" }, /* 105 */ + { 3, TN, sys_sendmsg, "sendmsg" }, /* 106 */ + { 3, TN, sys_recvmsg, "recvmsg" }, /* 107 */ + { 4, TN, sys_send, "send" }, /* 108 */ + { 4, TN, sys_recv, "recv" }, /* 109 */ + { 6, TN, sys_sendto, "sendto" }, /* 110 */ + { 6, TN, sys_recvfrom, "recvfrom" }, /* 111 */ + { 4, TN, sys_socketpair, "socketpair" }, /* 112 */ + { 4, TD|TN, sys_sendfile, "sendfile" }, /* 113 */ + { 4, TD|TN, sys_sendfile64, "sendfile64" }, /* 114 */ + { 4, TN, sys_sendmsg, "sendmsg" }, /* 115 */ + { 5, TP, sys_clone, "clone" }, /* 116 */ + { 3, TF|TP, sys_execve, "execve" }, /* 117 */ + { 1, TP, sys_exit, "exit" }, /* 118 */ + { 1, TP, sys_exit, "exit_group" }, /* 119 */ + { 0, 0, sys_getpid, "getpid" }, /* 120 */ + { 4, TP, sys_wait4, "wait4" }, /* 121 */ + { 5, TP, sys_waitid, "waitid" }, /* 122 */ + { 2, TS, sys_kill, "kill" }, /* 123 */ + { 2, TS, sys_kill, "tkill" }, /* 124 */ + { 3, TS, sys_tgkill, "tgkill" }, /* 125 */ + { 1, 0, printargs, "set_tid_address"}, /* 126 */ + { 0, 0, printargs, "gettid" }, /* 127 */ + { 0, 0, sys_setsid, "setsid" }, /* 128 */ + { 1, 0, sys_getsid, "getsid" }, /* 129 */ + { 5, 0, sys_prctl, "prctl" }, /* 130 */ + { 1, 0, sys_personality, "personality" }, /* 131 */ + { 2, 0, sys_getpriority, "getpriority" }, /* 132 */ + { 3, 0, sys_setpriority, "setpriority" }, /* 133 */ + { 3, 0, sys_setitimer, "setitimer" }, /* 134 */ + { 2, 0, sys_getitimer, "getitimer" }, /* 135 */ + { 1, 0, sys_setuid, "setuid" }, /* 136 */ + { 0, NF, sys_getuid, "getuid" }, /* 137 */ + { 1, 0, sys_setgid, "setgid" }, /* 138 */ + { 0, NF, sys_getgid, "getgid" }, /* 139 */ + { 0, NF, sys_geteuid, "geteuid" }, /* 140 */ + { 0, NF, sys_getegid, "getegid" }, /* 141 */ + { 2, 0, sys_setreuid, "setreuid" }, /* 142 */ + { 2, 0, sys_setregid, "setregid" }, /* 143 */ + { 3, 0, sys_setresuid, "setresuid" }, /* 144 */ + { 3, 0, sys_getresuid, "getresuid" }, /* 145 */ + { 3, 0, sys_setresgid, "setresgid" }, /* 146 */ + { 3, 0, sys_getresgid, "getresgid" }, /* 147 */ + { 2, 0, sys_setpgid, "setpgid" }, /* 148 */ + { 1, 0, sys_getpgid, "getpgid" }, /* 149 */ + { 0, 0, sys_getppid, "getppid" }, /* 150 */ + { 0, 0, sys_getpgrp, "getpgrp" }, /* 151 */ + [152 ... 153] = { }, + { 1, 0, sys_times, "times" }, /* 154 */ + { 1, TF, sys_acct, "acct" }, /* 155 */ + { 3, 0, sys_sched_setaffinity, "sched_setaffinity"}, /* 156 */ + { 3, 0, sys_sched_getaffinity, "sched_getaffinity"}, /* 157 */ + { 2, 0, sys_capget, "capget" }, /* 158 */ + { 2, 0, sys_capset, "capset" }, /* 159 */ + { 4, 0, sys_ptrace, "ptrace" }, /* 160 */ + { 5, TI, sys_semtimedop, "semtimedop" }, /* 161 */ + { 4, TI, sys_semget, "semget" }, /* 162 */ + { 4, TI, sys_semop, "semop" }, /* 163 */ + { 4, TI, sys_semctl, "semctl" }, /* 164 */ + [165] = { }, + { 4, TI, sys_msgget, "msgget" }, /* 166 */ + { 4, TI, sys_msgsnd, "msgsnd" }, /* 167 */ + { 4, TI, sys_msgrcv, "msgrcv" }, /* 168 */ + { 4, TI, sys_msgctl, "msgctl" }, /* 169 */ + [170] = { }, + { 2, TF, sys_umount2, "umount2" }, /* 171 */ + { 5, TF, sys_mount, "mount" }, /* 172 */ + { 2, TF, sys_swapon, "swapon" }, /* 173 */ + { 1, TF, sys_chroot, "chroot" }, /* 174 */ + { 2, TF, sys_pivotroot, "pivot_root" }, /* 175 */ + { 2, TF, sys_umount, "umount" }, /* 176 */ + { 1, TF, sys_swapoff, "swapoff" }, /* 177 */ + { 0, 0, sys_sync, "sync" }, /* 178 */ + [179] = { }, + { 1, NF, sys_setfsuid, "setfsuid" }, /* 180 */ + { 1, NF, sys_setfsgid, "setfsgid" }, /* 181 */ + { 3, 0, sys_sysfs, "sysfs" }, /* 182 */ + { 2, 0, sys_ustat, "ustat" }, /* 183 */ + { 2, TF, sys_statfs, "statfs" }, /* 184 */ + { 2, TD, sys_fstatfs, "fstatfs" }, /* 185 */ + { 3, TF, sys_statfs64, "statfs64" }, /* 186 */ + { 3, TD, sys_fstatfs64, "fstatfs64" }, /* 187 */ + { 2, 0, sys_setrlimit, "setrlimit" }, /* 188 */ + { 2, 0, sys_getrlimit, "getrlimit" }, /* 189 */ + { 2, 0, sys_getrusage, "getrusage" }, /* 190 */ + { 5, 0, sys_futex, "futex" }, /* 191 */ + { 2, 0, sys_gettimeofday, "gettimeofday" }, /* 192 */ + { 2, 0, sys_settimeofday, "settimeofday" }, /* 193 */ + { 1, 0, sys_adjtimex, "adjtimex" }, /* 194 */ + { 2, 0, sys_nanosleep, "nanosleep" }, /* 195 */ + { 2, 0, sys_getgroups, "getgroups" }, /* 196 */ + { 2, 0, sys_setgroups, "setgroups" }, /* 197 */ + { 2, 0, sys_sethostname, "sethostname" }, /* 198 */ + { 2, 0, sys_setdomainname, "setdomainname" }, /* 199 */ + { 3, 0, sys_syslog, "syslog" }, /* 200 */ + { 0, 0, sys_vhangup, "vhangup" }, /* 201 */ + { 1, TF, sys_uselib, "uselib" }, /* 202 */ + { 3, 0, sys_reboot, "reboot" }, /* 203 */ + { 4, TF, sys_quotactl, "quotactl" }, /* 204 */ + { 0, 0, printargs, "nfsservctl" }, /* 205 */ + { 1, 0, sys_sysctl, "_sysctl" }, /* 206 */ + { 2, 0, sys_bdflush, "bdflush" }, /* 207 */ + { 1, 0, sys_uname, "uname" }, /* 208 */ + { 1, 0, sys_sysinfo, "sysinfo" }, /* 209 */ + { 2, 0, sys_init_module, "init_module" }, /* 210 */ + { 1, 0, sys_delete_module, "delete_module" }, /* 211 */ + { 2, 0, sys_sched_setparam, "sched_setparam"}, /* 212 */ + { 2, 0, sys_sched_getparam, "sched_getparam"}, /* 213 */ + { 3, 0, sys_sched_setscheduler, "sched_setscheduler"}, /* 214 */ + { 1, 0, sys_sched_getscheduler, "sched_getscheduler"}, /* 215 */ + { 1, 0, sys_sched_get_priority_max, "sched_get_priority_max"}, /* 216 */ + { 1, 0, sys_sched_get_priority_min, "sched_get_priority_min"}, /* 217 */ + { 2, 0, sys_sched_rr_get_interval, "sched_rr_get_interval"}, /* 218 */ + { 0, 0, sys_sched_yield, "sched_yield" }, /* 219 */ + [220 ... 222] = { }, + { 0, 0, printargs, "restart_syscall"}, /* 223 */ + { 2, TS, sys_sigaltstack, "sigaltstack" }, /* 224 */ + { 0, TS, sys_rt_sigreturn, "rt_sigreturn" }, /* 225 */ + { 4, TS, sys_rt_sigaction, "rt_sigaction" }, /* 226 */ + { 4, TS, sys_rt_sigprocmask, "rt_sigprocmask"}, /* 227 */ + { 2, TS, sys_rt_sigpending, "rt_sigpending" }, /* 228 */ + { 4, TS, sys_rt_sigtimedwait, "rt_sigtimedwait"}, /* 229 */ + { 3, TS, sys_rt_sigqueueinfo, "rt_sigqueueinfo"}, /* 230 */ + { 2, TS, sys_rt_sigsuspend, "rt_sigsuspend" }, /* 231 */ + { 4, 0, sys_mq_open, "mq_open" }, /* 232 */ + { 1, 0, sys_mq_unlink, "mq_unlink" }, /* 233 */ + { 5, 0, sys_mq_timedsend, "mq_timedsend" }, /* 234 */ + { 5, 0, sys_mq_timedreceive, "mq_timedreceive"}, /* 235 */ + { 2, 0, sys_mq_notify, "mq_notify" }, /* 236 */ + { 3, 0, sys_mq_getsetattr, "mq_getsetattr" }, /* 237 */ + [238] = { }, + { 2, 0, printargs, "io_setup" }, /* 239 */ + { 1, 0, printargs, "io_destroy" }, /* 240 */ + { 3, 0, printargs, "io_submit" }, /* 241 */ + { 5, 0, printargs, "io_getevents" }, /* 242 */ + { 3, 0, printargs, "io_cancel" }, /* 243 */ + { 2, 0, sys_clock_settime, "clock_settime" }, /* 244 */ + { 2, 0, sys_clock_gettime, "clock_gettime" }, /* 245 */ + { 2, 0, sys_clock_getres, "clock_getres" }, /* 246 */ + { 4, 0, sys_clock_nanosleep, "clock_nanosleep"}, /* 247 */ + { 3, 0, sys_timer_create, "timer_create" }, /* 248 */ + { 1, 0, sys_timer_delete, "timer_delete" }, /* 249 */ + { 4, 0, sys_timer_settime, "timer_settime" }, /* 250 */ + { 2, 0, sys_timer_gettime, "timer_gettime" }, /* 251 */ + { 1, 0, sys_timer_getoverrun, "timer_getoverrun"}, /* 252 */ + [253] = { }, + { 4, 0, printargs, "lookup_dcookie"}, /* 254 */ + [255] = { }, + { 5, 0, printargs, "add_key" }, /* 256 */ + { 5, 0, printargs, "request_key" }, /* 257 */ + { 5, 0, printargs, "keyctl" }, /* 258 */ + [259] = { }, + { 5, TD, sys_readahead, "readahead" }, /* 260 */ + { 5, TM, sys_remap_file_pages, "remap_file_pages"}, /* 261 */ + { 5, TM, sys_migrate_pages, "migrate_pages" }, /* 262 */ + { 0, TM, sys_mbind, "mbind" }, /* 263 */ + { 6, TM, sys_get_mempolicy, "get_mempolicy" }, /* 264 */ + { 5, TM, sys_set_mempolicy, "set_mempolicy" }, /* 265 */ + { 3, TP, sys_unshare, "unshare" }, /* 266 */ + { 1, TM, sys_move_pages, "move_pages" }, /* 267 */ + { 0, TD, sys_splice, "splice" }, /* 268 */ + { 0, TD, sys_tee, "tee" }, /* 269 */ + { 0, TD, sys_vmsplice, "vmsplice" }, /* 270 */ + { 0, 0, printargs, "SYS_271" }, /* 271 */ + { 0, TD, sys_pselect6, "pselect6" }, /* 272 */ + { 0, TD, sys_ppoll, "ppoll" }, /* 273 */ + { 0, TD, sys_epoll_pwait, "epoll_pwait" }, /* 274 */ + { 1, TD, sys_epoll_create1, "epoll_create1" }, /* 275 */ + { 0, TD, sys_inotify_init, "inotify_init" }, /* 276 */ + { 3, TD, sys_inotify_add_watch, "inotify_add_watch"}, /* 277 */ + { 2, TD, sys_inotify_rm_watch, "inotify_rm_watch"}, /* 278 */ + { 1, TD, sys_inotify_init1, "inotify_init1" }, /* 279 */ + { 0, 0, sys_getcpu, "getcpu" }, /* 280 */ + { 4, 0, sys_kexec_load, "kexec_load" }, /* 281 */ + { 2, 0, sys_ioprio_set, "ioprio_set" }, /* 282 */ + { 3, 0, sys_ioprio_get, "ioprio_get" }, /* 283 */ + { 3, 0, sys_set_robust_list, "set_robust_list"}, /* 284 */ + { 3, 0, sys_get_robust_list, "get_robust_list"}, /* 285 */ + { 0, 0, printargs, "SYS_286" }, /* 286 */ + { 0, 0, printargs, "SYS_287" }, /* 287 */ + { 4, TD|TF, sys_openat, "openat" }, /* 288 */ + { 3, TD|TF, sys_mkdirat, "mkdirat" }, /* 289 */ + { 4, TD|TF, sys_mknodat, "mknodat" }, /* 290 */ + { 3, TD|TF, sys_unlinkat, "unlinkat" }, /* 291 */ + { 4, TD|TF, sys_renameat, "renameat" }, /* 292 */ + { 5, TD|TF, sys_linkat, "linkat" }, /* 293 */ + { 3, TD|TF, sys_symlinkat, "symlinkat" }, /* 294 */ + { 4, TD|TF, sys_readlinkat, "readlinkat" }, /* 295 */ + { 0, TD|TF, sys_utimensat, "utimensat" }, /* 296 */ + { 5, TD|TF, sys_fchownat, "fchownat" }, /* 297 */ + { 4, TD|TF, sys_futimesat, "futimesat" }, /* 298 */ + { 0, TD|TF, sys_newfstatat, "fstatat64" }, /* 299 */ + { 4, TD|TF, sys_fchmodat, "fchmodat" }, /* 300 */ + { 4, TD|TF, sys_faccessat, "faccessat" }, /* 301 */ + { 0, 0, printargs, "SYS_302" }, /* 302 */ + { 0, 0, printargs, "SYS_303" }, /* 303 */ + { 3, TD|TS, sys_signalfd, "signalfd" }, /* 304 */ + { 0, 0, printargs, "SYS_305" }, /* 305 */ + { 1, TD, sys_eventfd, "eventfd" }, /* 306 */ + { 5, TN, sys_recvmmsg, "recvmmsg" }, /* 307 */ + { 2, TD, sys_setns, "setns" }, /* 308 */ + { 4, TD|TS, sys_signalfd4, "signalfd4" }, /* 309 */ + { 3, TD, sys_dup3, "dup3" }, /* 310 */ + { 2, TD, sys_pipe2, "pipe2" }, /* 311 */ + { 2, TD, sys_timerfd_create, "timerfd_create"}, /* 312 */ + { 4, TD, sys_timerfd_settime, "timerfd_settime"}, /* 313 */ + { 2, TD, sys_timerfd_gettime, "timerfd_gettime"}, /* 314 */ + { 0, 0, printargs, "SYS_315" }, /* 315 */ + { 2, TD, sys_eventfd2, "eventfd2" }, /* 316 */ + { 6, TD, sys_preadv, "preadv" }, /* 317 */ + { 6, TD, sys_pwritev, "pwritev" }, /* 318 */ + [319] = { }, + { 2, TD, sys_fanotify_init, "fanotify_init" }, /* 320 */ + { 6, TD|TF, sys_fanotify_mark, "fanotify_mark" }, /* 321 */ + { 6, 0, sys_process_vm_readv, "process_vm_readv"}, /* 322 */ + { 6, 0, sys_process_vm_writev, "process_vm_writev"}, /* 323 */ + { 5, TD|TF, sys_name_to_handle_at, "name_to_handle_at"}, /* 324 */ + { 3, TD, sys_open_by_handle_at, "open_by_handle_at"}, /* 325 */ + { 6, TD, sys_sync_file_range2, "sync_file_range2"}, /* 326 */ + { 5, TD, sys_perf_event_open, "perf_event_open"}, /* 327 */ + { 4, TP|TS, sys_rt_tgsigqueueinfo, "rt_tgsigqueueinfo"}, /* 328 */ + { 2, 0, sys_clock_adjtime, "clock_adjtime" }, /* 329 */ + { 4, 0, sys_prlimit64, "prlimit64" }, /* 330 */ + { 5, 0, sys_kcmp, "kcmp" }, /* 331 */ + { 3, TD, sys_finit_module, "finit_module" }, /* 332 */ + { 4, TN, sys_accept4, "accept4" }, /* 333 */ diff --git a/loop.c b/loop.c index 83d91527..a3f89e06 100644 --- a/loop.c +++ b/loop.c @@ -72,7 +72,7 @@ int loop_ioctl(struct tcb *tcp, long code, long arg) if (!verbose(tcp) || umove(tcp, arg, &info) < 0) return 0; - tprintf(", {number=%i", info.lo_number); + tprintf(", {number=%d", info.lo_number); if (!abbrev(tcp)) { tprintf(", device=%#lx, inode=%lu, rdevice=%#lx", @@ -87,7 +87,7 @@ int loop_ioctl(struct tcb *tcp, long code, long arg) tprints(", encrypt_type="); printxval(loop_crypt_type_options, info.lo_encrypt_type, "LO_CRYPT_???"); - tprintf(", encrypt_key_size=%i", info.lo_encrypt_key_size); + tprintf(", encrypt_key_size=%d", info.lo_encrypt_key_size); } tprints(", flags="); diff --git a/mem.c b/mem.c index 02790305..ef273c7e 100644 --- a/mem.c +++ b/mem.c @@ -39,16 +39,16 @@ # define modify_ldt_ldt_s user_desc # endif #endif -#if defined(SH64) -# include /* for PAGE_SHIFT */ -#endif -#ifdef HAVE_LONG_LONG_OFF_T -/* - * Ugly hacks for systems that have a long long off_t - */ -# define sys_mmap64 sys_mmap -#endif +static unsigned long +get_pagesize() +{ + static unsigned long pagesize; + + if (!pagesize) + pagesize = sysconf(_SC_PAGESIZE); + return pagesize; +} int sys_brk(struct tcb *tcp) @@ -159,56 +159,20 @@ static const struct xlat mmap_flags[] = { #ifdef MAP_STACK { MAP_STACK, "MAP_STACK" }, #endif +#if defined MAP_UNINITIALIZED && MAP_UNINITIALIZED > 0 + { MAP_UNINITIALIZED,"MAP_UNINITIALIZED"}, +#endif #ifdef MAP_NOSYNC { MAP_NOSYNC, "MAP_NOSYNC" }, #endif #ifdef MAP_NOCORE { MAP_NOCORE, "MAP_NOCORE" }, -#endif -#ifdef TILE - { MAP_CACHE_NO_LOCAL, "MAP_CACHE_NO_LOCAL" }, - { MAP_CACHE_NO_L2, "MAP_CACHE_NO_L2" }, - { MAP_CACHE_NO_L1, "MAP_CACHE_NO_L1" }, #endif { 0, NULL }, }; -#ifdef TILE -static int -addtileflags(long flags) -{ - long home = flags & _MAP_CACHE_MKHOME(_MAP_CACHE_HOME_MASK); - flags &= ~_MAP_CACHE_MKHOME(_MAP_CACHE_HOME_MASK); - - if (flags & _MAP_CACHE_INCOHERENT) { - flags &= ~_MAP_CACHE_INCOHERENT; - if (home == MAP_CACHE_HOME_NONE) { - tprints("|MAP_CACHE_INCOHERENT"); - return flags; - } - tprints("|_MAP_CACHE_INCOHERENT"); - } - - switch (home) { - case 0: break; - case MAP_CACHE_HOME_HERE: tprints("|MAP_CACHE_HOME_HERE"); break; - case MAP_CACHE_HOME_NONE: tprints("|MAP_CACHE_HOME_NONE"); break; - case MAP_CACHE_HOME_SINGLE: tprints("|MAP_CACHE_HOME_SINGLE"); break; - case MAP_CACHE_HOME_TASK: tprints("|MAP_CACHE_HOME_TASK"); break; - case MAP_CACHE_HOME_HASH: tprints("|MAP_CACHE_HOME_HASH"); break; - default: - tprintf("|MAP_CACHE_HOME(%d)", - (home >> _MAP_CACHE_HOME_SHIFT) ); - break; - } - - return flags; -} -#endif - -#if !HAVE_LONG_LONG_OFF_T static int -print_mmap(struct tcb *tcp, long *u_arg, long long offset) +print_mmap(struct tcb *tcp, long *u_arg, unsigned long long offset) { if (entering(tcp)) { /* addr */ @@ -224,16 +188,12 @@ print_mmap(struct tcb *tcp, long *u_arg, long long offset) /* flags */ #ifdef MAP_TYPE printxval(mmap_flags, u_arg[3] & MAP_TYPE, "MAP_???"); -#ifdef TILE - addflags(mmap_flags, addtileflags(u_arg[3] & ~MAP_TYPE)); -#else addflags(mmap_flags, u_arg[3] & ~MAP_TYPE); -#endif #else printflags(mmap_flags, u_arg[3], "MAP_???"); #endif - /* fd */ tprints(", "); + /* fd */ printfd(tcp, u_arg[4]); /* offset */ tprintf(", %#llx", offset); @@ -241,161 +201,101 @@ print_mmap(struct tcb *tcp, long *u_arg, long long offset) return RVAL_HEX; } -int sys_old_mmap(struct tcb *tcp) +/* Syscall name<->function correspondence is messed up on many arches. + * For example: + * i386 has __NR_mmap == 90, and it is "old mmap", and + * also it has __NR_mmap2 == 192, which is a "new mmap with page offsets". + * But x86_64 has just one __NR_mmap == 9, a "new mmap with byte offsets". + * Confused? Me too! + */ + +/* Params are pointed to by u_arg[0], offset is in bytes */ +int +sys_old_mmap(struct tcb *tcp) { + long u_arg[6]; #if defined(IA64) /* * IA64 processes never call this routine, they only use the - * new `sys_mmap' interface. - * For IA32 processes, this code converts the integer arguments - * that they pushed onto the stack, into longs. - * - * Note that addresses with bit 31 set will be sign extended. - * Fortunately, those addresses are not currently being generated - * for IA32 processes so it's not a problem. + * new 'sys_mmap' interface. Only IA32 processes come here. */ int i; - long u_arg[6]; - int narrow_arg[6]; + unsigned narrow_arg[6]; if (umoven(tcp, tcp->u_arg[0], sizeof(narrow_arg), (char *) narrow_arg) == -1) return 0; for (i = 0; i < 6; i++) - u_arg[i] = narrow_arg[i]; -#elif defined(SH) || defined(SH64) - /* SH has always passed the args in registers */ - long *u_arg = tcp->u_arg; + u_arg[i] = (unsigned long) narrow_arg[i]; +#elif defined(X86_64) + /* We are here only in personality 1 (i386) */ + int i; + unsigned narrow_arg[6]; + if (umoven(tcp, tcp->u_arg[0], sizeof(narrow_arg), (char *) narrow_arg) == -1) + return 0; + for (i = 0; i < 6; ++i) + u_arg[i] = (unsigned long) narrow_arg[i]; #else - long u_arg[6]; -# if defined(X86_64) - if (current_personality == 1) { - int i; - unsigned narrow_arg[6]; - if (umoven(tcp, tcp->u_arg[0], sizeof(narrow_arg), (char *) narrow_arg) == -1) - return 0; - for (i = 0; i < 6; ++i) - u_arg[i] = narrow_arg[i]; - } - else -# endif if (umoven(tcp, tcp->u_arg[0], sizeof(u_arg), (char *) u_arg) == -1) return 0; -#endif /* other architectures */ +#endif + return print_mmap(tcp, u_arg, (unsigned long) u_arg[5]); +} - return print_mmap(tcp, u_arg, u_arg[5]); +#if defined(S390) +/* Params are pointed to by u_arg[0], offset is in pages */ +int +sys_old_mmap_pgoff(struct tcb *tcp) +{ + long u_arg[5]; + int i; + unsigned narrow_arg[6]; + unsigned long long offset; + if (umoven(tcp, tcp->u_arg[0], sizeof(narrow_arg), (char *) narrow_arg) == -1) + return 0; + for (i = 0; i < 5; i++) + u_arg[i] = (unsigned long) narrow_arg[i]; + offset = narrow_arg[5]; + offset *= get_pagesize(); + return print_mmap(tcp, u_arg, offset); } +#endif +/* Params are passed directly, offset is in bytes */ int sys_mmap(struct tcb *tcp) { - long long offset = tcp->u_arg[5]; - - /* FIXME: why only SH64? i386 mmap2 syscall ends up - * in this function, but does not convert offset - * from pages to bytes. See test/mmap_offset_decode.c - * Why SH64 and i386 are handled differently? - */ -#if defined(SH64) - /* - * Old mmap differs from new mmap in specifying the - * offset in units of bytes rather than pages. We - * pretend it's in byte units so the user only ever - * sees bytes in the printout. - */ - offset <<= PAGE_SHIFT; -#endif -#if defined(LINUX_MIPSN32) + unsigned long long offset = (unsigned long) tcp->u_arg[5]; +#if defined(LINUX_MIPSN32) || defined(X32) + /* Try test/x32_mmap.c */ offset = tcp->ext_arg[5]; #endif + /* Example of kernel-side handling of this variety of mmap: + * arch/x86/kernel/sys_x86_64.c::SYSCALL_DEFINE6(mmap, ...) calls + * sys_mmap_pgoff(..., off >> PAGE_SHIFT); i.e. off is in bytes, + * since the above code converts off to pages. + */ return print_mmap(tcp, tcp->u_arg, offset); } -#endif /* !HAVE_LONG_LONG_OFF_T */ -#if _LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T -# if defined(X32) -int sys_old_mmap(struct tcb *tcp) +/* Params are passed directly, offset is in pages */ +int +sys_mmap_pgoff(struct tcb *tcp) { - long u_arg[6]; - if (umoven(tcp, tcp->u_arg[0], sizeof(u_arg), (char *) u_arg) == -1) - return 0; - if (entering(tcp)) { - /* addr */ - if (!u_arg[0]) - tprints("NULL, "); - else - tprintf("%#lx, ", u_arg[0]); - /* len */ - tprintf("%lu, ", u_arg[1]); - /* prot */ - printflags(mmap_prot, u_arg[2], "PROT_???"); - tprints(", "); - /* flags */ -# ifdef MAP_TYPE - printxval(mmap_flags, u_arg[3] & MAP_TYPE, "MAP_???"); - addflags(mmap_flags, u_arg[3] & ~MAP_TYPE); -# else - printflags(mmap_flags, u_arg[3], "MAP_???"); -# endif - /* fd */ - tprints(", "); - printfd(tcp, u_arg[4]); - /* offset */ - tprintf(", %#lx", u_arg[5]); - } - return RVAL_HEX; + /* Try test/mmap_offset_decode.c */ + unsigned long long offset; + offset = (unsigned long) tcp->u_arg[5]; + offset *= get_pagesize(); + return print_mmap(tcp, tcp->u_arg, offset); } -# endif -/* TODO: comment which arches use this routine. - * For one, does ALPHA on Linux use this?? - * From code it seems that it might use 7 or 8 registers, - * which is strange - Linux syscalls can pass maximum of 6 parameters! - */ +/* Params are passed directly, offset is in 4k units */ int -sys_mmap64(struct tcb *tcp) +sys_mmap_4koff(struct tcb *tcp) { - if (entering(tcp)) { -#if defined(ALPHA) || defined(X32) - long *u_arg = tcp->u_arg; -#else - long u_arg[7]; - if (umoven(tcp, tcp->u_arg[0], sizeof u_arg, - (char *) u_arg) == -1) - return 0; -#endif - /* addr */ - if (!u_arg[0]) - tprints("NULL, "); - else - tprintf("%#lx, ", u_arg[0]); - /* len */ - tprintf("%lu, ", u_arg[1]); - /* prot */ - printflags(mmap_prot, u_arg[2], "PROT_???"); - tprints(", "); - /* flags */ -#ifdef MAP_TYPE - printxval(mmap_flags, u_arg[3] & MAP_TYPE, "MAP_???"); - addflags(mmap_flags, u_arg[3] & ~MAP_TYPE); -#else - printflags(mmap_flags, u_arg[3], "MAP_???"); -#endif - /* fd */ - tprints(", "); - printfd(tcp, u_arg[4]); - /* offset */ -#if defined(ALPHA) || defined(X32) - printllval(tcp, ", %#llx", 5); -#else - /* NOTE: not verified that [5] and [6] should be used. - * It's possible that long long is 64-bit aligned in memory - * and we need to use [6] and [7] here instead: - */ - tprintf(", %#llx", LONG_LONG(u_arg[5], u_arg[6])); -#endif - } - return RVAL_HEX; + unsigned long long offset; + offset = (unsigned long) tcp->u_arg[5]; + offset <<= 12; + return print_mmap(tcp, tcp->u_arg, offset); } -#endif /* _LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T */ int sys_munmap(struct tcb *tcp) @@ -457,6 +357,39 @@ static const struct xlat madvise_cmds[] = { #endif #ifdef MADV_DONTNEED { MADV_DONTNEED, "MADV_DONTNEED" }, +#endif +#ifdef MADV_REMOVE + { MADV_REMOVE, "MADV_REMOVE" }, +#endif +#ifdef MADV_DONTFORK + { MADV_DONTFORK, "MADV_DONTFORK" }, +#endif +#ifdef MADV_DOFORK + { MADV_DOFORK, "MADV_DOFORK" }, +#endif +#ifdef MADV_HWPOISON + { MADV_HWPOISON, "MADV_HWPOISON" }, +#endif +#ifdef MADV_SOFT_OFFLINE + { MADV_SOFT_OFFLINE, "MADV_SOFT_OFFLINE" }, +#endif +#ifdef MADV_MERGEABLE + { MADV_MERGEABLE, "MADV_MERGEABLE" }, +#endif +#ifdef MADV_UNMERGEABLE + { MADV_UNMERGEABLE, "MADV_UNMERGEABLE" }, +#endif +#ifdef MADV_HUGEPAGE + { MADV_HUGEPAGE, "MADV_HUGEPAGE" }, +#endif +#ifdef MADV_NOHUGEPAGE + { MADV_NOHUGEPAGE, "MADV_NOHUGEPAGE" }, +#endif +#ifdef MADV_DONTDUMP + { MADV_DONTDUMP, "MADV_DONTDUMP" }, +#endif +#ifdef MADV_DODUMP + { MADV_DODUMP, "MADV_DODUMP" }, #endif { 0, NULL }, }; diff --git a/mtd.c b/mtd.c index 976024ef..5385147f 100644 --- a/mtd.c +++ b/mtd.c @@ -35,6 +35,11 @@ #else # include #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 7, 0) +# include "ubi-user.h" +#else +# include +#endif static const struct xlat mtd_mode_options[] = { { MTD_OPS_PLACE_OOB, "MTD_OPS_PLACE_OOB" }, @@ -267,7 +272,7 @@ int mtd_ioctl(struct tcb *tcp, long code, long arg) if (!verbose(tcp) || umove(tcp, arg, &i) < 0) return 0; - tprintf(", [%i]", i); + tprintf(", [%d]", i); return 1; case MTDFILEMODE: @@ -280,3 +285,124 @@ int mtd_ioctl(struct tcb *tcp, long code, long arg) return 0; } } + +static const struct xlat ubi_volume_types[] = { + { UBI_DYNAMIC_VOLUME, "UBI_DYNAMIC_VOLUME" }, + { UBI_STATIC_VOLUME, "UBI_STATIC_VOLUME" }, + { 0, NULL }, +}; + +static const struct xlat ubi_volume_props[] = { + { UBI_VOL_PROP_DIRECT_WRITE, "UBI_VOL_PROP_DIRECT_WRITE" }, + { 0, NULL }, +}; + +int ubi_ioctl(struct tcb *tcp, long code, long arg) +{ + struct ubi_mkvol_req mkvol; + struct ubi_rsvol_req rsvol; + struct ubi_rnvol_req rnvol; + struct ubi_attach_req attach; + struct ubi_map_req map; + struct ubi_set_vol_prop_req prop; + /* 4*(n-1) + 3 for quotes and NUL */ + char vol_name[(UBI_MAX_VOLUME_NAME + 1) * 4]; + int ret; + + if (entering(tcp)) + return 0; + + switch (code) { + case UBI_IOCMKVOL: + if (!verbose(tcp) || umove(tcp, arg, &mkvol) < 0) + return 0; + + tprintf(", {vol_id=%" PRIi32 ", alignment=%" PRIi32 + ", bytes=%" PRIi64 ", vol_type=", mkvol.vol_id, + mkvol.alignment, (int64_t)mkvol.bytes); + printxval(ubi_volume_types, mkvol.vol_type, "UBI_???_VOLUME"); + ret = string_quote(mkvol.name, vol_name, -1, + CLAMP(mkvol.name_len, 0, UBI_MAX_VOLUME_NAME)); + tprintf(", name_len=%" PRIi16 ", name=%s%s", + mkvol.name_len, vol_name, ret ? "..." : ""); + tprints("}"); + return 1; + + case UBI_IOCRSVOL: + if (!verbose(tcp) || umove(tcp, arg, &rsvol) < 0) + return 0; + + tprintf(", {vol_id=%" PRIi32 ", bytes=%" PRIi64 "}", + rsvol.vol_id, (int64_t)rsvol.bytes); + return 1; + + case UBI_IOCRNVOL: { + __s32 c; + + if (!verbose(tcp) || umove(tcp, arg, &rnvol) < 0) + return 0; + + tprintf(", {count=%" PRIi32 ", ents=[", rnvol.count); + for (c = 0; c < CLAMP(rnvol.count, 0, UBI_MAX_RNVOL); ++c) { + if (c) + tprints(", "); + ret = string_quote(rnvol.ents[c].name, vol_name, -1, + CLAMP(rnvol.ents[c].name_len, 0, UBI_MAX_VOLUME_NAME)); + tprintf("{vol_id=%" PRIi32 ", name_len=%" PRIi16 + ", name=%s%s}", rnvol.ents[c].vol_id, + rnvol.ents[c].name_len, vol_name, ret ? "..." : ""); + } + tprints("]}"); + return 1; + } + + case UBI_IOCVOLUP: { + __s64 bytes; + + if (!verbose(tcp) || umove(tcp, arg, &bytes) < 0) + return 0; + + tprintf(", %" PRIi64, (int64_t)bytes); + return 1; + } + + case UBI_IOCATT: + if (!verbose(tcp) || umove(tcp, arg, &attach) < 0) + return 0; + + tprintf(", {ubi_num=%" PRIi32 ", mtd_num=%" PRIi32 + ", vid_hdr_offset=%" PRIi32 + ", max_beb_per1024=%" PRIi16 "}", + attach.ubi_num, attach.mtd_num, + attach.vid_hdr_offset, attach.max_beb_per1024); + return 1; + + case UBI_IOCEBMAP: + if (!verbose(tcp) || umove(tcp, arg, &map) < 0) + return 0; + + tprintf(", {lnum=%" PRIi32 ", dtype=%" PRIi8 "}", + map.lnum, map.dtype); + return 1; + + case UBI_IOCSETVOLPROP: + if (!verbose(tcp) || umove(tcp, arg, &prop) < 0) + return 0; + + tprints(", {property="); + printxval(ubi_volume_props, prop.property, "UBI_VOL_PROP_???"); + tprintf(", value=%#" PRIx64 "}", (uint64_t)prop.value); + return 1; + + case UBI_IOCRMVOL: + case UBI_IOCDET: + case UBI_IOCEBER: + case UBI_IOCEBCH: + case UBI_IOCEBUNMAP: + case UBI_IOCEBISMAP: + /* These ones take simple args, so let default printer handle it */ + + default: + return 0; + } +} diff --git a/net.c b/net.c index 2911c73d..9ae783a9 100644 --- a/net.c +++ b/net.c @@ -50,13 +50,13 @@ #include #include #include -#if defined(__GLIBC__) && (__GLIBC__ >= 2) && (__GLIBC__ + __GLIBC_MINOR__ >= 3) +#if defined(__GLIBC__) # include #else # include #endif -#if defined(__GLIBC__) && (((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1)) || defined(HAVE_SIN6_SCOPE_ID_LINUX)) +#if defined(__GLIBC__) && defined(HAVE_SIN6_SCOPE_ID_LINUX) # if defined(HAVE_LINUX_IN6_H) # if defined(HAVE_SIN6_SCOPE_ID_LINUX) # undef in6_addr @@ -103,200 +103,254 @@ #define IPPROTO_MAX IPPROTO_MAX static const struct xlat domains[] = { -#ifdef PF_AAL5 - { PF_AAL5, "PF_AAL5" }, -#endif -#ifdef PF_APPLETALK - { PF_APPLETALK, "PF_APPLETALK" }, +#ifdef PF_UNSPEC + { PF_UNSPEC, "PF_UNSPEC" }, #endif -#ifdef PF_ASH - { PF_ASH, "PF_ASH" }, +#ifdef PF_LOCAL + { PF_LOCAL, "PF_LOCAL" }, #endif -#ifdef PF_ATMPVC - { PF_ATMPVC, "PF_ATMPVC" }, +#ifdef PF_UNIX + { PF_UNIX, "PF_UNIX" }, #endif -#ifdef PF_ATMSVC - { PF_ATMSVC, "PF_ATMSVC" }, +#ifdef PF_INET + { PF_INET, "PF_INET" }, #endif #ifdef PF_AX25 { PF_AX25, "PF_AX25" }, #endif -#ifdef PF_BLUETOOTH - { PF_BLUETOOTH, "PF_BLUETOOTH" }, -#endif -#ifdef PF_BRIDGE - { PF_BRIDGE, "PF_BRIDGE" }, -#endif -#ifdef PF_DECnet - { PF_DECnet, "PF_DECnet" }, +#ifdef PF_IPX + { PF_IPX, "PF_IPX" }, #endif -#ifdef PF_DECNET - { PF_DECNET, "PF_DECNET" }, +#ifdef PF_APPLETALK + { PF_APPLETALK, "PF_APPLETALK" }, #endif -#ifdef PF_ECONET - { PF_ECONET, "PF_ECONET" }, +#ifdef PF_NETROM + { PF_NETROM, "PF_NETROM" }, #endif -#ifdef PF_FILE - { PF_FILE, "PF_FILE" }, +#ifdef PF_BRIDGE + { PF_BRIDGE, "PF_BRIDGE" }, #endif -#ifdef PF_IMPLINK - { PF_IMPLINK, "PF_IMPLINK" }, +#ifdef PF_ATMPVC + { PF_ATMPVC, "PF_ATMPVC" }, #endif -#ifdef PF_INET - { PF_INET, "PF_INET" }, +#ifdef PF_X25 + { PF_X25, "PF_X25" }, #endif #ifdef PF_INET6 { PF_INET6, "PF_INET6" }, #endif -#ifdef PF_IPX - { PF_IPX, "PF_IPX" }, +#ifdef PF_ROSE + { PF_ROSE, "PF_ROSE" }, #endif -#ifdef PF_IRDA - { PF_IRDA, "PF_IRDA" }, +#ifdef PF_DECnet + { PF_DECnet, "PF_DECnet" }, #endif -#ifdef PF_ISO - { PF_ISO, "PF_ISO" }, +#ifdef PF_NETBEUI + { PF_NETBEUI, "PF_NETBEUI" }, +#endif +#ifdef PF_SECURITY + { PF_SECURITY, "PF_SECURITY" }, #endif #ifdef PF_KEY { PF_KEY, "PF_KEY" }, #endif -#ifdef PF_UNIX - { PF_UNIX, "PF_UNIX" }, -#endif -#ifdef PF_LOCAL - { PF_LOCAL, "PF_LOCAL" }, -#endif -#ifdef PF_NETBEUI - { PF_NETBEUI, "PF_NETBEUI" }, -#endif #ifdef PF_NETLINK { PF_NETLINK, "PF_NETLINK" }, #endif -#ifdef PF_NETROM - { PF_NETROM, "PF_NETROM" }, +#ifdef PF_ROUTE + { PF_ROUTE, "PF_ROUTE" }, #endif #ifdef PF_PACKET { PF_PACKET, "PF_PACKET" }, #endif -#ifdef PF_PPPOX - { PF_PPPOX, "PF_PPPOX" }, +#ifdef PF_ASH + { PF_ASH, "PF_ASH" }, #endif -#ifdef PF_ROSE - { PF_ROSE, "PF_ROSE" }, +#ifdef PF_ECONET + { PF_ECONET, "PF_ECONET" }, #endif -#ifdef PF_ROUTE - { PF_ROUTE, "PF_ROUTE" }, +#ifdef PF_ATMSVC + { PF_ATMSVC, "PF_ATMSVC" }, #endif -#ifdef PF_SECURITY - { PF_SECURITY, "PF_SECURITY" }, +#ifdef PF_RDS + { PF_RDS, "PF_RDS" }, #endif #ifdef PF_SNA { PF_SNA, "PF_SNA" }, #endif -#ifdef PF_UNSPEC - { PF_UNSPEC, "PF_UNSPEC" }, +#ifdef PF_IRDA + { PF_IRDA, "PF_IRDA" }, +#endif +#ifdef PF_PPPOX + { PF_PPPOX, "PF_PPPOX" }, #endif #ifdef PF_WANPIPE { PF_WANPIPE, "PF_WANPIPE" }, #endif -#ifdef PF_X25 - { PF_X25, "PF_X25" }, +#ifdef PF_LLC + { PF_LLC, "PF_LLC" }, #endif - { 0, NULL }, -}; -const struct xlat addrfams[] = { -#ifdef AF_APPLETALK - { AF_APPLETALK, "AF_APPLETALK" }, +#ifdef PF_CAN + { PF_CAN, "PF_CAN" }, #endif -#ifdef AF_ASH - { AF_ASH, "AF_ASH" }, +#ifdef PF_TIPC + { PF_TIPC, "PF_TIPC" }, #endif -#ifdef AF_ATMPVC - { AF_ATMPVC, "AF_ATMPVC" }, +#ifdef PF_BLUETOOTH + { PF_BLUETOOTH, "PF_BLUETOOTH" }, #endif -#ifdef AF_ATMSVC - { AF_ATMSVC, "AF_ATMSVC" }, +#ifdef PF_IUCV + { PF_IUCV, "PF_IUCV" }, #endif -#ifdef AF_AX25 - { AF_AX25, "AF_AX25" }, +#ifdef PF_RXRPC + { PF_RXRPC, "PF_RXRPC" }, #endif -#ifdef AF_BLUETOOTH - { AF_BLUETOOTH, "AF_BLUETOOTH" }, +#ifdef PF_ISDN + { PF_ISDN, "PF_ISDN" }, #endif -#ifdef AF_BRIDGE - { AF_BRIDGE, "AF_BRIDGE" }, +#ifdef PF_PHONET + { PF_PHONET, "PF_PHONET" }, #endif -#ifdef AF_DECnet - { AF_DECnet, "AF_DECnet" }, +#ifdef PF_IEEE802154 + { PF_IEEE802154,"PF_IEEE802154" }, #endif -#ifdef AF_ECONET - { AF_ECONET, "AF_ECONET" }, +#ifdef PF_CAIF + { PF_CAIF, "PF_CAIF" }, +#endif +#ifdef PF_ALG + { PF_ALG, "PF_ALG" }, #endif -#ifdef AF_FILE - { AF_FILE, "AF_FILE" }, +#ifdef PF_NFC + { PF_NFC, "PF_NFC" }, #endif -#ifdef AF_IMPLINK - { AF_IMPLINK, "AF_IMPLINK" }, +#ifdef PF_VSOCK + { PF_VSOCK, "PF_VSOCK" }, +#endif + { 0, NULL }, +}; +const struct xlat addrfams[] = { +#ifdef AF_UNSPEC + { AF_UNSPEC, "AF_UNSPEC" }, +#endif +#ifdef AF_LOCAL + { AF_LOCAL, "AF_LOCAL" }, +#endif +#ifdef AF_UNIX + { AF_UNIX, "AF_UNIX" }, #endif #ifdef AF_INET { AF_INET, "AF_INET" }, #endif -#ifdef AF_INET6 - { AF_INET6, "AF_INET6" }, +#ifdef AF_AX25 + { AF_AX25, "AF_AX25" }, #endif #ifdef AF_IPX { AF_IPX, "AF_IPX" }, #endif -#ifdef AF_IRDA - { AF_IRDA, "AF_IRDA" }, +#ifdef AF_APPLETALK + { AF_APPLETALK, "AF_APPLETALK" }, #endif -#ifdef AF_ISO - { AF_ISO, "AF_ISO" }, +#ifdef AF_NETROM + { AF_NETROM, "AF_NETROM" }, #endif -#ifdef AF_KEY - { AF_KEY, "AF_KEY" }, +#ifdef AF_BRIDGE + { AF_BRIDGE, "AF_BRIDGE" }, #endif -#ifdef AF_UNIX - { AF_UNIX, "AF_UNIX" }, +#ifdef AF_ATMPVC + { AF_ATMPVC, "AF_ATMPVC" }, #endif -#ifdef AF_LOCAL - { AF_LOCAL, "AF_LOCAL" }, +#ifdef AF_X25 + { AF_X25, "AF_X25" }, +#endif +#ifdef AF_INET6 + { AF_INET6, "AF_INET6" }, +#endif +#ifdef AF_ROSE + { AF_ROSE, "AF_ROSE" }, +#endif +#ifdef AF_DECnet + { AF_DECnet, "AF_DECnet" }, #endif #ifdef AF_NETBEUI { AF_NETBEUI, "AF_NETBEUI" }, #endif +#ifdef AF_SECURITY + { AF_SECURITY, "AF_SECURITY" }, +#endif +#ifdef AF_KEY + { AF_KEY, "AF_KEY" }, +#endif #ifdef AF_NETLINK { AF_NETLINK, "AF_NETLINK" }, #endif -#ifdef AF_NETROM - { AF_NETROM, "AF_NETROM" }, +#ifdef AF_ROUTE + { AF_ROUTE, "AF_ROUTE" }, #endif #ifdef AF_PACKET { AF_PACKET, "AF_PACKET" }, #endif -#ifdef AF_PPPOX - { AF_PPPOX, "AF_PPPOX" }, +#ifdef AF_ASH + { AF_ASH, "AF_ASH" }, #endif -#ifdef AF_ROSE - { AF_ROSE, "AF_ROSE" }, +#ifdef AF_ECONET + { AF_ECONET, "AF_ECONET" }, #endif -#ifdef AF_ROUTE - { AF_ROUTE, "AF_ROUTE" }, +#ifdef AF_ATMSVC + { AF_ATMSVC, "AF_ATMSVC" }, #endif -#ifdef AF_SECURITY - { AF_SECURITY, "AF_SECURITY" }, +#ifdef AF_RDS + { AF_RDS, "AF_RDS" }, #endif #ifdef AF_SNA { AF_SNA, "AF_SNA" }, #endif -#ifdef AF_UNSPEC - { AF_UNSPEC, "AF_UNSPEC" }, +#ifdef AF_IRDA + { AF_IRDA, "AF_IRDA" }, +#endif +#ifdef AF_PPPOX + { AF_PPPOX, "AF_PPPOX" }, #endif #ifdef AF_WANPIPE { AF_WANPIPE, "AF_WANPIPE" }, #endif -#ifdef AF_X25 - { AF_X25, "AF_X25" }, +#ifdef AF_LLC + { AF_LLC, "AF_LLC" }, +#endif +#ifdef AF_CAN + { AF_CAN, "AF_CAN" }, +#endif +#ifdef AF_TIPC + { AF_TIPC, "AF_TIPC" }, +#endif +#ifdef AF_BLUETOOTH + { AF_BLUETOOTH, "AF_BLUETOOTH" }, +#endif +#ifdef AF_IUCV + { AF_IUCV, "AF_IUCV" }, +#endif +#ifdef AF_RXRPC + { AF_RXRPC, "AF_RXRPC" }, +#endif +#ifdef AF_ISDN + { AF_ISDN, "AF_ISDN" }, +#endif +#ifdef AF_PHONET + { AF_PHONET, "AF_PHONET" }, +#endif +#ifdef AF_IEEE802154 + { AF_IEEE802154,"AF_IEEE802154" }, +#endif +#ifdef AF_CAIF + { AF_CAIF, "AF_CAIF" }, +#endif +#ifdef AF_ALG + { AF_ALG, "AF_ALG" }, +#endif +#ifdef AF_NFC + { AF_NFC, "AF_NFC" }, +#endif +#ifdef AF_VSOCK + { AF_VSOCK, "AF_VSOCK" }, #endif { 0, NULL }, }; @@ -527,41 +581,29 @@ static const struct xlat protocols[] = { }; static const struct xlat msg_flags[] = { { MSG_OOB, "MSG_OOB" }, -#ifdef MSG_DONTROUTE - { MSG_DONTROUTE, "MSG_DONTROUTE" }, -#endif #ifdef MSG_PEEK { MSG_PEEK, "MSG_PEEK" }, #endif +#ifdef MSG_DONTROUTE + { MSG_DONTROUTE, "MSG_DONTROUTE" }, +#endif #ifdef MSG_CTRUNC { MSG_CTRUNC, "MSG_CTRUNC" }, #endif -#ifdef MSG_PROXY - { MSG_PROXY, "MSG_PROXY" }, -#endif -#ifdef MSG_EOR - { MSG_EOR, "MSG_EOR" }, -#endif -#ifdef MSG_WAITALL - { MSG_WAITALL, "MSG_WAITALL" }, +#ifdef MSG_PROBE + { MSG_PROBE, "MSG_PROBE" }, #endif #ifdef MSG_TRUNC { MSG_TRUNC, "MSG_TRUNC" }, #endif -#ifdef MSG_CTRUNC - { MSG_CTRUNC, "MSG_CTRUNC" }, -#endif -#ifdef MSG_ERRQUEUE - { MSG_ERRQUEUE, "MSG_ERRQUEUE" }, -#endif #ifdef MSG_DONTWAIT { MSG_DONTWAIT, "MSG_DONTWAIT" }, #endif -#ifdef MSG_CONFIRM - { MSG_CONFIRM, "MSG_CONFIRM" }, +#ifdef MSG_EOR + { MSG_EOR, "MSG_EOR" }, #endif -#ifdef MSG_PROBE - { MSG_PROBE, "MSG_PROBE" }, +#ifdef MSG_WAITALL + { MSG_WAITALL, "MSG_WAITALL" }, #endif #ifdef MSG_FIN { MSG_FIN, "MSG_FIN" }, @@ -569,9 +611,15 @@ static const struct xlat msg_flags[] = { #ifdef MSG_SYN { MSG_SYN, "MSG_SYN" }, #endif +#ifdef MSG_CONFIRM + { MSG_CONFIRM, "MSG_CONFIRM" }, +#endif #ifdef MSG_RST { MSG_RST, "MSG_RST" }, #endif +#ifdef MSG_ERRQUEUE + { MSG_ERRQUEUE, "MSG_ERRQUEUE" }, +#endif #ifdef MSG_NOSIGNAL { MSG_NOSIGNAL, "MSG_NOSIGNAL" }, #endif @@ -581,6 +629,12 @@ static const struct xlat msg_flags[] = { #ifdef MSG_WAITFORONE { MSG_WAITFORONE, "MSG_WAITFORONE" }, #endif +#ifdef MSG_EOF + { MSG_EOF, "MSG_EOF" }, +#endif +#ifdef MSG_FASTOPEN + { MSG_FASTOPEN, "MSG_FASTOPEN" }, +#endif #ifdef MSG_CMSG_CLOEXEC { MSG_CMSG_CLOEXEC, "MSG_CMSG_CLOEXEC" }, #endif @@ -1072,56 +1126,71 @@ static const struct xlat socksctpoptions[] = { static const struct xlat socktcpoptions[] = { { TCP_NODELAY, "TCP_NODELAY" }, { TCP_MAXSEG, "TCP_MAXSEG" }, -#if defined(TCP_CORK) +#ifdef TCP_CORK { TCP_CORK, "TCP_CORK" }, #endif -#if defined(TCP_KEEPIDLE) - { TCP_KEEPIDLE, "TCP_KEEPIDLE" }, +#ifdef TCP_KEEPIDLE + { TCP_KEEPIDLE, "TCP_KEEPIDLE" }, +#endif +#ifdef TCP_KEEPINTVL + { TCP_KEEPINTVL, "TCP_KEEPINTVL" }, +#endif +#ifdef TCP_KEEPCNT + { TCP_KEEPCNT, "TCP_KEEPCNT" }, +#endif +#ifdef TCP_SYNCNT + { TCP_SYNCNT, "TCP_SYNCNT" }, #endif -#if defined(TCP_KEEPINTVL) - { TCP_KEEPINTVL, "TCP_KEEPINTVL" }, +#ifdef TCP_LINGER2 + { TCP_LINGER2, "TCP_LINGER2" }, #endif -#if defined(TCP_KEEPCNT) - { TCP_KEEPCNT, "TCP_KEEPCNT" }, +#ifdef TCP_DEFER_ACCEPT + { TCP_DEFER_ACCEPT, "TCP_DEFER_ACCEPT" }, #endif -#if defined(TCP_NKEEP) - { TCP_NKEEP, "TCP_NKEEP" }, +#ifdef TCP_WINDOW_CLAMP + { TCP_WINDOW_CLAMP, "TCP_WINDOW_CLAMP" }, #endif -#if defined(TCP_SYNCNT) - { TCP_SYNCNT, "TCP_SYNCNT" }, +#ifdef TCP_INFO + { TCP_INFO, "TCP_INFO" }, #endif -#if defined(TCP_LINGER2) - { TCP_LINGER2, "TCP_LINGER2" }, +#ifdef TCP_QUICKACK + { TCP_QUICKACK, "TCP_QUICKACK" }, #endif -#if defined(TCP_DEFER_ACCEPT) - { TCP_DEFER_ACCEPT, "TCP_DEFER_ACCEPT" }, +#ifdef TCP_CONGESTION + { TCP_CONGESTION, "TCP_CONGESTION" }, #endif -#if defined(TCP_WINDOW_CLAMP) - { TCP_WINDOW_CLAMP, "TCP_WINDOW_CLAMP" }, +#ifdef TCP_MD5SIG + { TCP_MD5SIG, "TCP_MD5SIG" }, #endif -#if defined(TCP_INFO) - { TCP_INFO, "TCP_INFO" }, +#ifdef TCP_COOKIE_TRANSACTIONS + { TCP_COOKIE_TRANSACTIONS, "TCP_COOKIE_TRANSACTIONS" }, #endif -#if defined(TCP_QUICKACK) - { TCP_QUICKACK, "TCP_QUICKACK" }, +#ifdef TCP_THIN_LINEAR_TIMEOUTS + { TCP_THIN_LINEAR_TIMEOUTS, "TCP_THIN_LINEAR_TIMEOUTS" }, #endif -#if defined(TCP_CONGESTION) - { TCP_CONGESTION, "TCP_CONGESTION" }, +#ifdef TCP_THIN_DUPACK + { TCP_THIN_DUPACK, "TCP_THIN_DUPACK" }, #endif -#if defined(TCP_MD5SIG) - { TCP_MD5SIG, "TCP_MD5SIG" }, +#ifdef TCP_USER_TIMEOUT + { TCP_USER_TIMEOUT, "TCP_USER_TIMEOUT" }, #endif -#if defined(TCP_COOKIE_TRANSACTIONS) - { TCP_COOKIE_TRANSACTIONS, "TCP_COOKIE_TRANSACTIONS" }, +#ifdef TCP_REPAIR + { TCP_REPAIR, "TCP_REPAIR" }, #endif -#if defined(TCP_THIN_LINEAR_TIMEOUTS) - { TCP_THIN_LINEAR_TIMEOUTS, "TCP_THIN_LINEAR_TIMEOUTS" }, +#ifdef TCP_REPAIR_QUEUE + { TCP_REPAIR_QUEUE, "TCP_REPAIR_QUEUE" }, #endif -#if defined(TCP_THIN_DUPACK) - { TCP_THIN_DUPACK, "TCP_THIN_DUPACK" }, +#ifdef TCP_QUEUE_SEQ + { TCP_QUEUE_SEQ, "TCP_QUEUE_SEQ" }, #endif -#if defined(TCP_USER_TIMEOUT) - { TCP_USER_TIMEOUT, "TCP_USER_TIMEOUT" }, +#ifdef TCP_REPAIR_OPTIONS + { TCP_REPAIR_OPTIONS, "TCP_REPAIR_OPTIONS" }, +#endif +#ifdef TCP_FASTOPEN + { TCP_FASTOPEN, "TCP_FASTOPEN" }, +#endif +#ifdef TCP_TIMESTAMP + { TCP_TIMESTAMP, "TCP_TIMESTAMP" }, #endif { 0, NULL }, }; @@ -1428,11 +1497,42 @@ do_msghdr(struct tcb *tcp, struct msghdr *msg, unsigned long data_size) tprints("}"); } +struct msghdr32 { + uint32_t /* void* */ msg_name; + uint32_t /* socklen_t */msg_namelen; + uint32_t /* iovec* */ msg_iov; + uint32_t /* size_t */ msg_iovlen; + uint32_t /* void* */ msg_control; + uint32_t /* size_t */ msg_controllen; + uint32_t /* int */ msg_flags; +}; +struct mmsghdr32 { + struct msghdr32 msg_hdr; + uint32_t /* unsigned */ msg_len; +}; + static void printmsghdr(struct tcb *tcp, long addr, unsigned long data_size) { struct msghdr msg; +#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4 + if (current_wordsize == 4) { + struct msghdr32 msg32; + + if (umove(tcp, addr, &msg32) < 0) { + tprintf("%#lx", addr); + return; + } + msg.msg_name = (void*)(long)msg32.msg_name; + msg.msg_namelen = msg32.msg_namelen; + msg.msg_iov = (void*)(long)msg32.msg_iov; + msg.msg_iovlen = msg32.msg_iovlen; + msg.msg_control = (void*)(long)msg32.msg_control; + msg.msg_controllen = msg32.msg_controllen; + msg.msg_flags = msg32.msg_flags; + } else +#endif if (umove(tcp, addr, &msg) < 0) { tprintf("%#lx", addr); return; @@ -1448,10 +1548,31 @@ printmmsghdr(struct tcb *tcp, long addr, unsigned int idx, unsigned long msg_len unsigned msg_len; } mmsg; - addr += sizeof(mmsg) * idx; - if (umove(tcp, addr, &mmsg) < 0) { - tprintf("%#lx", addr); - return; +#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4 + if (current_wordsize == 4) { + struct mmsghdr32 mmsg32; + + addr += sizeof(mmsg32) * idx; + if (umove(tcp, addr, &mmsg32) < 0) { + tprintf("%#lx", addr); + return; + } + mmsg.msg_hdr.msg_name = (void*)(long)mmsg32.msg_hdr.msg_name; + mmsg.msg_hdr.msg_namelen = mmsg32.msg_hdr.msg_namelen; + mmsg.msg_hdr.msg_iov = (void*)(long)mmsg32.msg_hdr.msg_iov; + mmsg.msg_hdr.msg_iovlen = mmsg32.msg_hdr.msg_iovlen; + mmsg.msg_hdr.msg_control = (void*)(long)mmsg32.msg_hdr.msg_control; + mmsg.msg_hdr.msg_controllen = mmsg32.msg_hdr.msg_controllen; + mmsg.msg_hdr.msg_flags = mmsg32.msg_hdr.msg_flags; + mmsg.msg_len = mmsg32.msg_len; + } else +#endif + { + addr += sizeof(mmsg) * idx; + if (umove(tcp, addr, &mmsg) < 0) { + tprintf("%#lx", addr); + return; + } } tprints("{"); do_msghdr(tcp, &mmsg.msg_hdr, msg_len ? msg_len : mmsg.msg_len); diff --git a/pathtrace.c b/pathtrace.c index c000c835..d4c2dc43 100644 --- a/pathtrace.c +++ b/pathtrace.c @@ -37,8 +37,8 @@ #include "syscall.h" -#define MAXSELECTED 256 /* max number of "selected" paths */ -static const char *selected[MAXSELECTED]; /* paths selected for tracing */ +const char **paths_selected = NULL; +static unsigned num_selected = 0; /* * Return true if specified path matches one that we're tracing. @@ -46,12 +46,10 @@ static const char *selected[MAXSELECTED]; /* paths selected for tracing */ static int pathmatch(const char *path) { - unsigned int i; + unsigned i; - for (i = 0; i < ARRAY_SIZE(selected); ++i) { - if (selected[i] == NULL) - return 0; - if (strcmp(path, selected[i]) == 0) + for (i = 0; i < num_selected; ++i) { + if (strcmp(path, paths_selected[i]) == 0) return 1; } return 0; @@ -65,7 +63,7 @@ upathmatch(struct tcb *tcp, unsigned long upath) { char path[PATH_MAX + 1]; - return umovestr(tcp, upath, sizeof path, path) >= 0 && + return umovestr(tcp, upath, sizeof path, path) > 0 && pathmatch(path); } @@ -75,79 +73,79 @@ upathmatch(struct tcb *tcp, unsigned long upath) static int fdmatch(struct tcb *tcp, int fd) { - const char *path = getfdpath(tcp, fd); + char path[PATH_MAX + 1]; + int n = getfdpath(tcp, fd, path, sizeof(path)); - return path && pathmatch(path); + return n >= 0 && pathmatch(path); } /* * Add a path to the set we're tracing. * Secifying NULL will delete all paths. */ -static int +static void storepath(const char *path) { - unsigned int i; + unsigned i; - for (i = 0; i < ARRAY_SIZE(selected); ++i) { - if (!selected[i]) { - selected[i] = path; - return 0; - } - } + if (pathmatch(path)) + return; /* already in table */ - fprintf(stderr, "Max trace paths exceeded, only using first %u\n", - (unsigned int) ARRAY_SIZE(selected)); - return -1; + i = num_selected++; + paths_selected = realloc(paths_selected, num_selected * sizeof(paths_selected[0])); + if (!paths_selected) + die_out_of_memory(); + paths_selected[i] = path; } /* * Get path associated with fd. */ -const char * -getfdpath(struct tcb *tcp, int fd) +int +getfdpath(struct tcb *tcp, int fd, char *buf, unsigned bufsize) { - static char path[PATH_MAX+1]; char linkpath[sizeof("/proc/%u/fd/%u") + 2 * sizeof(int)*3]; ssize_t n; if (fd < 0) - return NULL; + return -1; sprintf(linkpath, "/proc/%u/fd/%u", tcp->pid, fd); - n = readlink(linkpath, path, (sizeof path) - 1); - if (n <= 0) - return NULL; - path[n] = '\0'; - return path; + n = readlink(linkpath, buf, bufsize - 1); + /* + * NB: if buf is too small, readlink doesn't fail, + * it returns truncated result (IOW: n == bufsize - 1). + */ + if (n >= 0) + buf[n] = '\0'; + return n; } /* * Add a path to the set we're tracing. Also add the canonicalized * version of the path. Secifying NULL will delete all paths. */ -int +void pathtrace_select(const char *path) { char *rpath; - if (storepath(path)) - return -1; + storepath(path); rpath = realpath(path, NULL); if (rpath == NULL) - return 0; + return; /* if realpath and specified path are same, we're done */ if (strcmp(path, rpath) == 0) { free(rpath); - return 0; + return; } fprintf(stderr, "Requested path '%s' resolved into '%s'\n", path, rpath); - return storepath(rpath); + storepath(rpath); } /* @@ -157,15 +155,9 @@ pathtrace_select(const char *path) int pathtrace_match(struct tcb *tcp) { - const struct sysent *s; - - if (selected[0] == NULL) - return 1; - - if (!SCNO_IN_RANGE(tcp->scno)) - return 0; + const struct_sysent *s; - s = &sysent[tcp->scno]; + s = tcp->s_ent; if (!(s->sys_flags & (TRACE_FILE | TRACE_DESC))) return 0; @@ -213,6 +205,12 @@ pathtrace_match(struct tcb *tcp) upathmatch(tcp, tcp->u_arg[1]); } + if (s->sys_func == sys_quotactl) + { + /* x, path */ + return upathmatch(tcp, tcp->u_arg[1]); + } + if (s->sys_func == sys_renameat || s->sys_func == sys_linkat) { @@ -225,7 +223,13 @@ pathtrace_match(struct tcb *tcp) if ( s->sys_func == sys_old_mmap || - s->sys_func == sys_mmap) { +#if defined(S390) + s->sys_func == sys_old_mmap_pgoff || +#endif + s->sys_func == sys_mmap || + s->sys_func == sys_mmap_pgoff || + s->sys_func == sys_mmap_4koff + ) { /* x, x, x, x, fd */ return fdmatch(tcp, tcp->u_arg[4]); } diff --git a/process.c b/process.c index fa304e58..799a314d 100644 --- a/process.c +++ b/process.c @@ -41,6 +41,9 @@ #include #include #include +#ifdef HAVE_ELF_H +# include +#endif #ifdef HAVE_SYS_REG_H # include @@ -156,6 +159,7 @@ static const struct xlat prctl_options[] = { #ifdef PR_PTHREADEXIT { PR_PTHREADEXIT, "PR_PTHREADEXIT" }, #endif + #ifdef PR_SET_PDEATHSIG { PR_SET_PDEATHSIG, "PR_SET_PDEATHSIG" }, #endif @@ -216,6 +220,12 @@ static const struct xlat prctl_options[] = { #ifdef PR_SET_SECCOMP { PR_SET_SECCOMP, "PR_SET_SECCOMP" }, #endif +#ifdef PR_CAPBSET_READ + { PR_CAPBSET_READ, "PR_CAPBSET_READ" }, +#endif +#ifdef PR_CAPBSET_DROP + { PR_CAPBSET_DROP, "PR_CAPBSET_DROP" }, +#endif #ifdef PR_GET_TSC { PR_GET_TSC, "PR_GET_TSC" }, #endif @@ -227,6 +237,45 @@ static const struct xlat prctl_options[] = { #endif #ifdef PR_SET_SECUREBITS { PR_SET_SECUREBITS, "PR_SET_SECUREBITS" }, +#endif +#ifdef PR_SET_TIMERSLACK + { PR_SET_TIMERSLACK, "PR_SET_TIMERSLACK" }, +#endif +#ifdef PR_GET_TIMERSLACK + { PR_GET_TIMERSLACK, "PR_GET_TIMERSLACK" }, +#endif +#ifdef PR_TASK_PERF_EVENTS_DISABLE + { PR_TASK_PERF_EVENTS_DISABLE, "PR_TASK_PERF_EVENTS_DISABLE" }, +#endif +#ifdef PR_TASK_PERF_EVENTS_ENABLE + { PR_TASK_PERF_EVENTS_ENABLE, "PR_TASK_PERF_EVENTS_ENABLE" }, +#endif +#ifdef PR_MCE_KILL + { PR_MCE_KILL, "PR_MCE_KILL" }, +#endif +#ifdef PR_MCE_KILL_GET + { PR_MCE_KILL_GET, "PR_MCE_KILL_GET" }, +#endif +#ifdef PR_SET_MM + { PR_SET_MM, "PR_SET_MM" }, +#endif +#ifdef PR_SET_PTRACER + { PR_SET_PTRACER, "PR_SET_PTRACER" }, +#endif +#ifdef PR_SET_CHILD_SUBREAPER + { PR_SET_CHILD_SUBREAPER, "PR_SET_CHILD_SUBREAPER" }, +#endif +#ifdef PR_GET_CHILD_SUBREAPER + { PR_GET_CHILD_SUBREAPER, "PR_GET_CHILD_SUBREAPER" }, +#endif +#ifdef PR_SET_NO_NEW_PRIVS + { PR_SET_NO_NEW_PRIVS, "PR_SET_NO_NEW_PRIVS" }, +#endif +#ifdef PR_GET_NO_NEW_PRIVS + { PR_GET_NO_NEW_PRIVS, "PR_GET_NO_NEW_PRIVS" }, +#endif +#ifdef PR_GET_TID_ADDRESS + { PR_GET_TID_ADDRESS, "PR_GET_TID_ADDRESS" }, #endif { 0, NULL }, }; @@ -302,7 +351,7 @@ sys_prctl(struct tcb *tcp) break; #endif default: - for (i = 1; i < tcp->u_nargs; i++) + for (i = 1; i < tcp->s_ent->nargs; i++) tprintf(", %#lx", tcp->u_arg[i]); break; } @@ -465,7 +514,8 @@ extern void print_ldt_entry(); # define ARG_PTID 2 # define ARG_CTID 3 # define ARG_TLS 4 -#elif defined X86_64 || defined X32 || defined ALPHA +#elif defined X86_64 || defined X32 || defined ALPHA || defined TILE \ + || defined OR1K # define ARG_FLAGS 0 # define ARG_STACK 1 # define ARG_PTID 2 @@ -1126,26 +1176,17 @@ static const struct xlat waitid_types[] = { int sys_waitid(struct tcb *tcp) { - siginfo_t si; - if (entering(tcp)) { printxval(waitid_types, tcp->u_arg[0], "P_???"); tprintf(", %ld, ", tcp->u_arg[1]); } else { /* siginfo */ - if (!tcp->u_arg[2]) - tprints("NULL"); - else if (syserror(tcp)) - tprintf("%#lx", tcp->u_arg[2]); - else if (umove(tcp, tcp->u_arg[2], &si) < 0) - tprints("{???}"); - else - printsiginfo(&si, verbose(tcp)); + printsiginfo_at(tcp, tcp->u_arg[2]); /* options */ tprints(", "); printflags(wait4_options, tcp->u_arg[3], "W???"); - if (tcp->u_nargs > 4) { + if (tcp->s_ent->nargs > 4) { /* usage */ tprints(", "); if (!tcp->u_arg[4]) @@ -1281,11 +1322,90 @@ static const struct xlat ptrace_setoptions_flags[] = { # endif # ifdef PTRACE_O_TRACEEXIT { PTRACE_O_TRACEEXIT, "PTRACE_O_TRACEEXIT" }, +# endif +# ifdef PTRACE_O_TRACESECCOMP + { PTRACE_O_TRACESECCOMP,"PTRACE_O_TRACESECCOMP" }, +# endif +# ifdef PTRACE_O_EXITKILL + { PTRACE_O_EXITKILL, "PTRACE_O_EXITKILL" }, # endif { 0, NULL }, }; #endif /* PTRACE_SETOPTIONS */ +static const struct xlat nt_descriptor_types[] = { +#ifdef NT_PRSTATUS + { NT_PRSTATUS, "NT_PRSTATUS" }, +#endif +#ifdef NT_FPREGSET + { NT_FPREGSET, "NT_FPREGSET" }, +#endif +#ifdef NT_PRPSINFO + { NT_PRPSINFO, "NT_PRPSINFO" }, +#endif +#ifdef NT_PRXREG + { NT_PRXREG, "NT_PRXREG" }, +#endif +#ifdef NT_TASKSTRUCT + { NT_TASKSTRUCT, "NT_TASKSTRUCT" }, +#endif +#ifdef NT_PLATFORM + { NT_PLATFORM, "NT_PLATFORM" }, +#endif +#ifdef NT_AUXV + { NT_AUXV, "NT_AUXV" }, +#endif +#ifdef NT_GWINDOWS + { NT_GWINDOWS, "NT_GWINDOWS" }, +#endif +#ifdef NT_ASRS + { NT_ASRS, "NT_ASRS" }, +#endif +#ifdef NT_PSTATUS + { NT_PSTATUS, "NT_PSTATUS" }, +#endif +#ifdef NT_PSINFO + { NT_PSINFO, "NT_PSINFO" }, +#endif +#ifdef NT_PRCRED + { NT_PRCRED, "NT_PRCRED" }, +#endif +#ifdef NT_UTSNAME + { NT_UTSNAME, "NT_UTSNAME" }, +#endif +#ifdef NT_LWPSTATUS + { NT_LWPSTATUS, "NT_LWPSTATUS" }, +#endif +#ifdef NT_LWPSINFO + { NT_LWPSINFO, "NT_LWPSINFO" }, +#endif +#ifdef NT_PRFPXREG + { NT_PRFPXREG, "NT_PRFPXREG" }, +#endif +#ifdef NT_PRXFPREG + { NT_PRXFPREG, "NT_PRXFPREG" }, +#endif +#ifdef NT_PPC_VMX + { NT_PPC_VMX, "NT_PPC_VMX" }, +#endif +#ifdef NT_PPC_SPE + { NT_PPC_SPE, "NT_PPC_SPE" }, +#endif +#ifdef NT_PPC_VSX + { NT_PPC_VSX, "NT_PPC_VSX" }, +#endif +#ifdef NT_386_TLS + { NT_386_TLS, "NT_386_TLS" }, +#endif +#ifdef NT_386_IOPERM + { NT_386_IOPERM, "NT_386_IOPERM" }, +#endif +#ifdef NT_X86_XSTATE + { NT_X86_XSTATE, "NT_X86_XSTATE" }, +#endif + { 0, NULL }, +}; + #define uoff(member) offsetof(struct user, member) const struct xlat struct_user_offsets[] = { @@ -2116,50 +2236,271 @@ const struct xlat struct_user_offsets[] = { { PT_FSR, "rfsr", }, { PT_KERNEL_MODE, "kernel_mode", }, #endif - -#if !defined(SPARC) && !defined(HPPA) && !defined(POWERPC) \ - && !defined(ALPHA) && !defined(IA64) \ - && !defined(CRISV10) && !defined(CRISV32) && !defined(MICROBLAZE) -# if !defined(S390) && !defined(S390X) && !defined(MIPS) && !defined(SPARC64) && !defined(AVR32) && !defined(BFIN) && !defined(TILE) +#ifdef OR1K + { 4*0, "r0" }, + { 4*1, "r1" }, + { 4*2, "r2" }, + { 4*3, "r3" }, + { 4*4, "r4" }, + { 4*5, "r5" }, + { 4*6, "r6" }, + { 4*7, "r7" }, + { 4*8, "r8" }, + { 4*9, "r9" }, + { 4*10, "r10" }, + { 4*11, "r11" }, + { 4*12, "r12" }, + { 4*13, "r13" }, + { 4*14, "r14" }, + { 4*15, "r15" }, + { 4*16, "r16" }, + { 4*17, "r17" }, + { 4*18, "r18" }, + { 4*19, "r19" }, + { 4*20, "r20" }, + { 4*21, "r21" }, + { 4*22, "r22" }, + { 4*23, "r23" }, + { 4*24, "r24" }, + { 4*25, "r25" }, + { 4*26, "r26" }, + { 4*27, "r27" }, + { 4*28, "r28" }, + { 4*29, "r29" }, + { 4*30, "r30" }, + { 4*31, "r31" }, + { 4*32, "pc" }, + { 4*33, "sr" }, +#endif +#ifdef XTENSA + { SYSCALL_NR, "syscall_nr" }, + { REG_AR_BASE, "ar0" }, + { REG_AR_BASE+1, "ar1" }, + { REG_AR_BASE+2, "ar2" }, + { REG_AR_BASE+3, "ar3" }, + { REG_AR_BASE+4, "ar4" }, + { REG_AR_BASE+5, "ar5" }, + { REG_AR_BASE+6, "ar6" }, + { REG_AR_BASE+7, "ar7" }, + { REG_AR_BASE+8, "ar8" }, + { REG_AR_BASE+9, "ar9" }, + { REG_AR_BASE+10, "ar10" }, + { REG_AR_BASE+11, "ar11" }, + { REG_AR_BASE+12, "ar12" }, + { REG_AR_BASE+13, "ar13" }, + { REG_AR_BASE+14, "ar14" }, + { REG_AR_BASE+15, "ar15" }, + { REG_AR_BASE+16, "ar16" }, + { REG_AR_BASE+17, "ar17" }, + { REG_AR_BASE+18, "ar18" }, + { REG_AR_BASE+19, "ar19" }, + { REG_AR_BASE+20, "ar20" }, + { REG_AR_BASE+21, "ar21" }, + { REG_AR_BASE+22, "ar22" }, + { REG_AR_BASE+23, "ar23" }, + { REG_AR_BASE+24, "ar24" }, + { REG_AR_BASE+25, "ar25" }, + { REG_AR_BASE+26, "ar26" }, + { REG_AR_BASE+27, "ar27" }, + { REG_AR_BASE+28, "ar28" }, + { REG_AR_BASE+29, "ar29" }, + { REG_AR_BASE+30, "ar30" }, + { REG_AR_BASE+31, "ar31" }, + { REG_AR_BASE+32, "ar32" }, + { REG_AR_BASE+33, "ar33" }, + { REG_AR_BASE+34, "ar34" }, + { REG_AR_BASE+35, "ar35" }, + { REG_AR_BASE+36, "ar36" }, + { REG_AR_BASE+37, "ar37" }, + { REG_AR_BASE+38, "ar38" }, + { REG_AR_BASE+39, "ar39" }, + { REG_AR_BASE+40, "ar40" }, + { REG_AR_BASE+41, "ar41" }, + { REG_AR_BASE+42, "ar42" }, + { REG_AR_BASE+43, "ar43" }, + { REG_AR_BASE+44, "ar44" }, + { REG_AR_BASE+45, "ar45" }, + { REG_AR_BASE+46, "ar46" }, + { REG_AR_BASE+47, "ar47" }, + { REG_AR_BASE+48, "ar48" }, + { REG_AR_BASE+49, "ar49" }, + { REG_AR_BASE+50, "ar50" }, + { REG_AR_BASE+51, "ar51" }, + { REG_AR_BASE+52, "ar52" }, + { REG_AR_BASE+53, "ar53" }, + { REG_AR_BASE+54, "ar54" }, + { REG_AR_BASE+55, "ar55" }, + { REG_AR_BASE+56, "ar56" }, + { REG_AR_BASE+57, "ar57" }, + { REG_AR_BASE+58, "ar58" }, + { REG_AR_BASE+59, "ar59" }, + { REG_AR_BASE+60, "ar60" }, + { REG_AR_BASE+61, "ar61" }, + { REG_AR_BASE+62, "ar62" }, + { REG_AR_BASE+63, "ar63" }, + { REG_LBEG, "lbeg" }, + { REG_LEND, "lend" }, + { REG_LCOUNT, "lcount" }, + { REG_SAR, "sar" }, + { REG_WB, "wb" }, + { REG_WS, "ws" }, + { REG_PS, "ps" }, + { REG_PC, "pc" }, + { REG_A_BASE, "a0" }, + { REG_A_BASE+1, "a1" }, + { REG_A_BASE+2, "a2" }, + { REG_A_BASE+3, "a3" }, + { REG_A_BASE+4, "a4" }, + { REG_A_BASE+5, "a5" }, + { REG_A_BASE+6, "a6" }, + { REG_A_BASE+7, "a7" }, + { REG_A_BASE+8, "a8" }, + { REG_A_BASE+9, "a9" }, + { REG_A_BASE+10, "a10" }, + { REG_A_BASE+11, "a11" }, + { REG_A_BASE+12, "a12" }, + { REG_A_BASE+13, "a13" }, + { REG_A_BASE+14, "a14" }, + { REG_A_BASE+15, "a15" }, +#endif + + /* Other fields in "struct user" */ +#if defined(S390) || defined(S390X) + { uoff(u_tsize), "offsetof(struct user, u_tsize)" }, + { uoff(u_dsize), "offsetof(struct user, u_dsize)" }, + { uoff(u_ssize), "offsetof(struct user, u_ssize)" }, + { uoff(start_code), "offsetof(struct user, start_code)" }, + /* S390[X] has no start_data */ + { uoff(start_stack), "offsetof(struct user, start_stack)" }, + { uoff(signal), "offsetof(struct user, signal)" }, + { uoff(u_ar0), "offsetof(struct user, u_ar0)" }, + { uoff(magic), "offsetof(struct user, magic)" }, + { uoff(u_comm), "offsetof(struct user, u_comm)" }, + { sizeof(struct user), "sizeof(struct user)" }, +#elif defined(POWERPC) + { sizeof(struct user), "sizeof(struct user)" }, +#elif defined(I386) || defined(X86_64) || defined(X32) { uoff(u_fpvalid), "offsetof(struct user, u_fpvalid)" }, -# endif -# if defined(I386) || defined(X86_64) || defined(X32) { uoff(i387), "offsetof(struct user, i387)" }, -# endif -# if defined(M68K) - { uoff(m68kfp), "offsetof(struct user, m68kfp)" }, -# endif { uoff(u_tsize), "offsetof(struct user, u_tsize)" }, { uoff(u_dsize), "offsetof(struct user, u_dsize)" }, { uoff(u_ssize), "offsetof(struct user, u_ssize)" }, -# if !defined(SPARC64) { uoff(start_code), "offsetof(struct user, start_code)" }, -# endif -# if defined(AVR32) || defined(SH64) - { uoff(start_data), "offsetof(struct user, start_data)" }, -# endif -# if !defined(SPARC64) { uoff(start_stack), "offsetof(struct user, start_stack)" }, -# endif { uoff(signal), "offsetof(struct user, signal)" }, -# if !defined(AVR32) && !defined(S390) && !defined(S390X) && !defined(MIPS) && !defined(SH) && !defined(SH64) && !defined(SPARC64) && !defined(TILE) { uoff(reserved), "offsetof(struct user, reserved)" }, -# endif -# if !defined(SPARC64) { uoff(u_ar0), "offsetof(struct user, u_ar0)" }, -# endif -# if !defined(ARM) && !defined(AVR32) && !defined(MIPS) && !defined(S390) && !defined(S390X) && !defined(SPARC64) && !defined(BFIN) && !defined(TILE) { uoff(u_fpstate), "offsetof(struct user, u_fpstate)" }, -# endif { uoff(magic), "offsetof(struct user, magic)" }, { uoff(u_comm), "offsetof(struct user, u_comm)" }, -# if defined(I386) || defined(X86_64) || defined(X32) { uoff(u_debugreg), "offsetof(struct user, u_debugreg)" }, -# endif -#endif /* !defined(many arches) */ - -#ifndef HPPA { sizeof(struct user), "sizeof(struct user)" }, +#elif defined(IA64) + { sizeof(struct user), "sizeof(struct user)" }, +#elif defined(ARM) + { uoff(u_fpvalid), "offsetof(struct user, u_fpvalid)" }, + { uoff(u_tsize), "offsetof(struct user, u_tsize)" }, + { uoff(u_dsize), "offsetof(struct user, u_dsize)" }, + { uoff(u_ssize), "offsetof(struct user, u_ssize)" }, + { uoff(start_code), "offsetof(struct user, start_code)" }, + { uoff(start_stack), "offsetof(struct user, start_stack)" }, + { uoff(signal), "offsetof(struct user, signal)" }, + { uoff(reserved), "offsetof(struct user, reserved)" }, + { uoff(u_ar0), "offsetof(struct user, u_ar0)" }, + { uoff(magic), "offsetof(struct user, magic)" }, + { uoff(u_comm), "offsetof(struct user, u_comm)" }, + { sizeof(struct user), "sizeof(struct user)" }, +#elif defined(AARCH64) + /* nothing */ +#elif defined(M68K) + { uoff(u_fpvalid), "offsetof(struct user, u_fpvalid)" }, + { uoff(m68kfp), "offsetof(struct user, m68kfp)" }, + { uoff(u_tsize), "offsetof(struct user, u_tsize)" }, + { uoff(u_dsize), "offsetof(struct user, u_dsize)" }, + { uoff(u_ssize), "offsetof(struct user, u_ssize)" }, + { uoff(start_code), "offsetof(struct user, start_code)" }, + { uoff(start_stack), "offsetof(struct user, start_stack)" }, + { uoff(signal), "offsetof(struct user, signal)" }, + { uoff(reserved), "offsetof(struct user, reserved)" }, + { uoff(u_ar0), "offsetof(struct user, u_ar0)" }, + { uoff(u_fpstate), "offsetof(struct user, u_fpstate)" }, + { uoff(magic), "offsetof(struct user, magic)" }, + { uoff(u_comm), "offsetof(struct user, u_comm)" }, + { sizeof(struct user), "sizeof(struct user)" }, +#elif defined(MIPS) || defined(LINUX_MIPSN32) + { uoff(u_tsize), "offsetof(struct user, u_tsize)" }, + { uoff(u_dsize), "offsetof(struct user, u_dsize)" }, + { uoff(u_ssize), "offsetof(struct user, u_ssize)" }, + { uoff(start_code), "offsetof(struct user, start_code)" }, + { uoff(start_data), "offsetof(struct user, start_data)" }, + { uoff(start_stack), "offsetof(struct user, start_stack)" }, + { uoff(signal), "offsetof(struct user, signal)" }, + { uoff(u_ar0), "offsetof(struct user, u_ar0)" }, + { uoff(magic), "offsetof(struct user, magic)" }, + { uoff(u_comm), "offsetof(struct user, u_comm)" }, + { sizeof(struct user), "sizeof(struct user)" }, +#elif defined(ALPHA) + { sizeof(struct user), "sizeof(struct user)" }, +#elif defined(SPARC) + { sizeof(struct user), "sizeof(struct user)" }, +#elif defined(SPARC64) + { uoff(u_tsize), "offsetof(struct user, u_tsize)" }, + { uoff(u_dsize), "offsetof(struct user, u_dsize)" }, + { uoff(u_ssize), "offsetof(struct user, u_ssize)" }, + { uoff(signal), "offsetof(struct user, signal)" }, + { uoff(magic), "offsetof(struct user, magic)" }, + { uoff(u_comm), "offsetof(struct user, u_comm)" }, + { sizeof(struct user), "sizeof(struct user)" }, +#elif defined(HPPA) + /* nothing */ +#elif defined(SH) || defined(SH64) + { uoff(u_fpvalid), "offsetof(struct user, u_fpvalid)" }, + { uoff(u_tsize), "offsetof(struct user, u_tsize)" }, + { uoff(u_dsize), "offsetof(struct user, u_dsize)" }, + { uoff(u_ssize), "offsetof(struct user, u_ssize)" }, + { uoff(start_code), "offsetof(struct user, start_code)" }, + { uoff(start_data), "offsetof(struct user, start_data)" }, + { uoff(start_stack), "offsetof(struct user, start_stack)" }, + { uoff(signal), "offsetof(struct user, signal)" }, + { uoff(u_ar0), "offsetof(struct user, u_ar0)" }, + { uoff(u_fpstate), "offsetof(struct user, u_fpstate)" }, + { uoff(magic), "offsetof(struct user, magic)" }, + { uoff(u_comm), "offsetof(struct user, u_comm)" }, + { sizeof(struct user), "sizeof(struct user)" }, +#elif defined(CRISV10) || defined(CRISV32) + { sizeof(struct user), "sizeof(struct user)" }, +#elif defined(TILE) + /* nothing */ +#elif defined(MICROBLAZE) + { sizeof(struct user), "sizeof(struct user)" }, +#elif defined(AVR32) + { uoff(u_tsize), "offsetof(struct user, u_tsize)" }, + { uoff(u_dsize), "offsetof(struct user, u_dsize)" }, + { uoff(u_ssize), "offsetof(struct user, u_ssize)" }, + { uoff(start_code), "offsetof(struct user, start_code)" }, + { uoff(start_data), "offsetof(struct user, start_data)" }, + { uoff(start_stack), "offsetof(struct user, start_stack)" }, + { uoff(signal), "offsetof(struct user, signal)" }, + { uoff(u_ar0), "offsetof(struct user, u_ar0)" }, + { uoff(magic), "offsetof(struct user, magic)" }, + { uoff(u_comm), "offsetof(struct user, u_comm)" }, + { sizeof(struct user), "sizeof(struct user)" }, +#elif defined(BFIN) + { uoff(u_tsize), "offsetof(struct user, u_tsize)" }, + { uoff(u_dsize), "offsetof(struct user, u_dsize)" }, + { uoff(u_ssize), "offsetof(struct user, u_ssize)" }, + { uoff(start_code), "offsetof(struct user, start_code)" }, + { uoff(signal), "offsetof(struct user, signal)" }, + { uoff(u_ar0), "offsetof(struct user, u_ar0)" }, + { uoff(magic), "offsetof(struct user, magic)" }, + { uoff(u_comm), "offsetof(struct user, u_comm)" }, + { sizeof(struct user), "sizeof(struct user)" }, +#elif defined(OR1K) + /* nothing */ +#elif defined(METAG) + /* nothing */ +#elif defined(XTENSA) + /* nothing */ #endif { 0, NULL }, }; @@ -2173,9 +2514,11 @@ sys_ptrace(struct tcb *tcp) if (entering(tcp)) { printxval(ptrace_cmds, tcp->u_arg[0], "PTRACE_???"); tprintf(", %lu, ", tcp->u_arg[1]); + addr = tcp->u_arg[2]; if (tcp->u_arg[0] == PTRACE_PEEKUSER - || tcp->u_arg[0] == PTRACE_POKEUSER) { + || tcp->u_arg[0] == PTRACE_POKEUSER + ) { for (x = struct_user_offsets; x->str; x++) { if (x->val >= addr) break; @@ -2188,9 +2531,18 @@ sys_ptrace(struct tcb *tcp) } else tprintf("%s, ", x->str); - } - else - tprintf("%#lx, ", tcp->u_arg[2]); + } else +#ifdef PTRACE_GETREGSET + if (tcp->u_arg[0] == PTRACE_GETREGSET + || tcp->u_arg[0] == PTRACE_SETREGSET + ) { + printxval(nt_descriptor_types, tcp->u_arg[2], "NT_???"); + tprints(", "); + } else +#endif + tprintf("%#lx, ", addr); + + switch (tcp->u_arg[0]) { #ifndef IA64 case PTRACE_PEEKDATA: @@ -2211,15 +2563,7 @@ sys_ptrace(struct tcb *tcp) #endif #ifdef PTRACE_SETSIGINFO case PTRACE_SETSIGINFO: { - siginfo_t si; - if (!tcp->u_arg[3]) - tprints("NULL"); - else if (syserror(tcp)) - tprintf("%#lx", tcp->u_arg[3]); - else if (umove(tcp, tcp->u_arg[3], &si) < 0) - tprints("{???}"); - else - printsiginfo(&si, verbose(tcp)); + printsiginfo_at(tcp, tcp->u_arg[3]); break; } #endif @@ -2227,6 +2571,13 @@ sys_ptrace(struct tcb *tcp) case PTRACE_GETSIGINFO: /* Don't print anything, do it at syscall return. */ break; +#endif +#ifdef PTRACE_GETREGSET + case PTRACE_GETREGSET: + break; + case PTRACE_SETREGSET: + tprint_iov(tcp, /*len:*/ 1, tcp->u_arg[3], /*as string:*/ 0); + break; #endif default: tprintf("%#lx", tcp->u_arg[3]); @@ -2245,17 +2596,14 @@ sys_ptrace(struct tcb *tcp) #endif #ifdef PTRACE_GETSIGINFO case PTRACE_GETSIGINFO: { - siginfo_t si; - if (!tcp->u_arg[3]) - tprints("NULL"); - else if (syserror(tcp)) - tprintf("%#lx", tcp->u_arg[3]); - else if (umove(tcp, tcp->u_arg[3], &si) < 0) - tprints("{???}"); - else - printsiginfo(&si, verbose(tcp)); + printsiginfo_at(tcp, tcp->u_arg[3]); break; } +#endif +#ifdef PTRACE_GETREGSET + case PTRACE_GETREGSET: + tprint_iov(tcp, /*len:*/ 1, tcp->u_arg[3], /*as string:*/ 0); + break; #endif } } diff --git a/quota.c b/quota.c index a1fd92d3..780abf96 100644 --- a/quota.c +++ b/quota.c @@ -617,7 +617,7 @@ sys_quotactl(struct tcb *tcp) tprints("|"); printxval(quotatypes, type, "???QUOTA"); tprints(", "); - printstr(tcp, tcp->u_arg[1], -1); + printpath(tcp, tcp->u_arg[1]); tprints(", "); switch (cmd) { case Q_V1_QUOTAON: diff --git a/resource.c b/resource.c index 5a51d8cb..657e63de 100644 --- a/resource.c +++ b/resource.c @@ -173,8 +173,7 @@ decode_rlimit(struct tcb *tcp, unsigned long addr) { if (!addr) tprints("NULL"); - else if (!verbose(tcp) || - (exiting(tcp) && syserror(tcp))) + else if (!verbose(tcp) || (exiting(tcp) && syserror(tcp))) tprintf("%#lx", addr); else { # if SIZEOF_RLIM_T == 4 diff --git a/signal.c b/signal.c index 6dd01c1f..55815aa0 100644 --- a/signal.c +++ b/signal.c @@ -60,13 +60,6 @@ # include #endif -#if defined(SPARC64) -# undef PTRACE_GETREGS -# define PTRACE_GETREGS PTRACE_GETREGS64 -# undef PTRACE_SETREGS -# define PTRACE_SETREGS PTRACE_SETREGS64 -#endif - #if defined(SPARC) || defined(SPARC64) || defined(MIPS) typedef struct { struct pt_regs si_regs; @@ -419,88 +412,6 @@ print_sigset(struct tcb *tcp, long addr, int rt) # define SI_FROMUSER(sip) ((sip)->si_code <= 0) #endif -#if __GLIBC_MINOR__ < 1 -/* Type for data associated with a signal. */ -typedef union sigval -{ - int sival_int; - void *sival_ptr; -} sigval_t; - -# define __SI_MAX_SIZE 128 -# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof(int)) - 3) - -typedef struct siginfo -{ - int si_signo; /* Signal number. */ - int si_errno; /* If non-zero, an errno value associated with - this signal, as defined in . */ - int si_code; /* Signal code. */ - - union - { - int _pad[__SI_PAD_SIZE]; - - /* kill(). */ - struct - { - __pid_t si_pid; /* Sending process ID. */ - __uid_t si_uid; /* Real user ID of sending process. */ - } _kill; - - /* POSIX.1b timers. */ - struct - { - unsigned int _timer1; - unsigned int _timer2; - } _timer; - - /* POSIX.1b signals. */ - struct - { - __pid_t si_pid; /* Sending process ID. */ - __uid_t si_uid; /* Real user ID of sending process. */ - sigval_t si_sigval; /* Signal value. */ - } _rt; - - /* SIGCHLD. */ - struct - { - __pid_t si_pid; /* Which child. */ - int si_status; /* Exit value or signal. */ - __clock_t si_utime; - __clock_t si_stime; - } _sigchld; - - /* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */ - struct - { - void *si_addr; /* Faulting insn/memory ref. */ - } _sigfault; - - /* SIGPOLL. */ - struct - { - int si_band; /* Band event for SIGPOLL. */ - int si_fd; - } _sigpoll; - } _sifields; -} siginfo_t; - -#define si_pid _sifields._kill.si_pid -#define si_uid _sifields._kill.si_uid -#define si_status _sifields._sigchld.si_status -#define si_utime _sifields._sigchld.si_utime -#define si_stime _sifields._sigchld.si_stime -#define si_value _sifields._rt.si_sigval -#define si_int _sifields._rt.si_sigval.sival_int -#define si_ptr _sifields._rt.si_sigval.sival_ptr -#define si_addr _sifields._sigfault.si_addr -#define si_band _sifields._sigpoll.si_band -#define si_fd _sifields._sigpoll.si_fd - -#endif - static const struct xlat siginfo_codes[] = { #ifdef SI_KERNEL { SI_KERNEL, "SI_KERNEL" }, @@ -760,6 +671,25 @@ printsiginfo(siginfo_t *sip, int verbose) tprints("}"); } +void +printsiginfo_at(struct tcb *tcp, long addr) +{ + siginfo_t si; + if (!addr) { + tprints("NULL"); + return; + } + if (syserror(tcp)) { + tprintf("%#lx", addr); + return; + } + if (umove(tcp, addr, &si) < 0) { + tprints("{???}"); + return; + } + printsiginfo(&si, verbose(tcp)); +} + int sys_sigsetmask(struct tcb *tcp) { @@ -781,16 +711,12 @@ sys_sigsetmask(struct tcb *tcp) #ifdef HAVE_SIGACTION struct old_sigaction { - __sighandler_t __sa_handler; + /* sa_handler may be a libc #define, need to use other name: */ + void (*__sa_handler)(int); unsigned long sa_mask; unsigned long sa_flags; void (*sa_restorer)(void); }; -#define SA_HANDLER __sa_handler - -#ifndef SA_HANDLER -#define SA_HANDLER sa_handler -#endif int sys_sigaction(struct tcb *tcp) @@ -815,19 +741,19 @@ sys_sigaction(struct tcb *tcp) /* Architectures using function pointers, like * hppa, may need to manipulate the function pointer * to compute the result of a comparison. However, - * the SA_HANDLER function pointer exists only in + * the __sa_handler function pointer exists only in * the address space of the traced process, and can't * be manipulated by strace. In order to prevent the * compiler from generating code to manipulate - * SA_HANDLER we cast the function pointers to long. */ - if ((long)sa.SA_HANDLER == (long)SIG_ERR) + * __sa_handler we cast the function pointers to long. */ + if ((long)sa.__sa_handler == (long)SIG_ERR) tprints("{SIG_ERR, "); - else if ((long)sa.SA_HANDLER == (long)SIG_DFL) + else if ((long)sa.__sa_handler == (long)SIG_DFL) tprints("{SIG_DFL, "); - else if ((long)sa.SA_HANDLER == (long)SIG_IGN) + else if ((long)sa.__sa_handler == (long)SIG_IGN) tprints("{SIG_IGN, "); else - tprintf("{%#lx, ", (long) sa.SA_HANDLER); + tprintf("{%#lx, ", (long) sa.__sa_handler); long_to_sigset(sa.sa_mask, &sigset); printsigmask(&sigset, 0); tprints(", "); @@ -889,17 +815,13 @@ sys_sigreturn(struct tcb *tcp) { #if defined(ARM) if (entering(tcp)) { - struct pt_regs regs; struct sigcontext_struct sc; sigset_t sigm; - if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, (void *)®s) == -1) - return 0; - if (umove(tcp, regs.ARM_sp, &sc) < 0) + if (umove(tcp, arm_regs.ARM_sp, &sc) < 0) return 0; long_to_sigset(sc.oldmask, &sigm); tprints(sprintsigmask(") (mask ", &sigm, 0)); } - return 0; #elif defined(S390) || defined(S390X) if (entering(tcp)) { long usp; @@ -910,7 +832,6 @@ sys_sigreturn(struct tcb *tcp) return 0; tprints(sprintsigmask(") (mask ", (sigset_t *)&sc.oldmask[0], 0)); } - return 0; #elif defined(I386) if (entering(tcp)) { struct sigcontext_struct sc; @@ -925,7 +846,6 @@ sys_sigreturn(struct tcb *tcp) long_to_sigset(sc.oldmask, &sigm); tprints(sprintsigmask(") (mask ", &sigm, 0)); } - return 0; #elif defined(IA64) if (entering(tcp)) { struct sigcontext sc; @@ -941,7 +861,6 @@ sys_sigreturn(struct tcb *tcp) memcpy(&sigm, &sc.sc_mask, NSIG / 8); tprints(sprintsigmask(") (mask ", &sigm, 0)); } - return 0; #elif defined(POWERPC) if (entering(tcp)) { long esp; @@ -963,7 +882,6 @@ sys_sigreturn(struct tcb *tcp) long_to_sigset(sc.oldmask, &sigm); tprints(sprintsigmask(") (mask ", &sigm, 0)); } - return 0; #elif defined(M68K) if (entering(tcp)) { long usp; @@ -976,7 +894,6 @@ sys_sigreturn(struct tcb *tcp) long_to_sigset(sc.sc_mask, &sigm); tprints(sprintsigmask(") (mask ", &sigm, 0)); } - return 0; #elif defined(ALPHA) if (entering(tcp)) { long fp; @@ -989,26 +906,19 @@ sys_sigreturn(struct tcb *tcp) long_to_sigset(sc.sc_mask, &sigm); tprints(sprintsigmask(") (mask ", &sigm, 0)); } - return 0; #elif defined(SPARC) || defined(SPARC64) if (entering(tcp)) { long i1; - struct pt_regs regs; m_siginfo_t si; sigset_t sigm; - if (ptrace(PTRACE_GETREGS, tcp->pid, (char *)®s, 0) < 0) { - perror("sigreturn: PTRACE_GETREGS"); - return 0; - } - i1 = regs.u_regs[U_REG_O1]; + i1 = sparc_regs.u_regs[U_REG_O1]; if (umove(tcp, i1, &si) < 0) { - perror("sigreturn: umove"); + perror_msg("sigreturn: umove"); return 0; } long_to_sigset(si.si_mask, &sigm); tprints(sprintsigmask(") (mask ", &sigm, 0)); } - return 0; #elif defined(LINUX_MIPSN32) || defined(LINUX_MIPSN64) /* This decodes rt_sigreturn. The 64-bit ABIs do not have sigreturn. */ @@ -1025,7 +935,6 @@ sys_sigreturn(struct tcb *tcp) long_to_sigset(*(long *) &uc.uc_sigmask, &sigm); tprints(sprintsigmask(") (mask ", &sigm, 0)); } - return 0; #elif defined(MIPS) if (entering(tcp)) { long sp; @@ -1033,7 +942,7 @@ sys_sigreturn(struct tcb *tcp) m_siginfo_t si; sigset_t sigm; if (ptrace(PTRACE_GETREGS, tcp->pid, (char *)®s, 0) < 0) { - perror("sigreturn: PTRACE_GETREGS"); + perror_msg("sigreturn: PTRACE_GETREGS"); return 0; } sp = regs.regs[29]; @@ -1042,14 +951,13 @@ sys_sigreturn(struct tcb *tcp) long_to_sigset(si.si_mask, &sigm); tprints(sprintsigmask(") (mask ", &sigm, 0)); } - return 0; #elif defined(CRISV10) || defined(CRISV32) if (entering(tcp)) { struct sigcontext sc; long regs[PT_MAX+1]; sigset_t sigm; if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, (long)regs) < 0) { - perror("sigreturn: PTRACE_GETREGS"); + perror_msg("sigreturn: PTRACE_GETREGS"); return 0; } if (umove(tcp, regs[PT_USP], &sc) < 0) @@ -1057,24 +965,19 @@ sys_sigreturn(struct tcb *tcp) long_to_sigset(sc.oldmask, &sigm); tprints(sprintsigmask(") (mask ", &sigm, 0)); } - return 0; #elif defined(TILE) if (entering(tcp)) { struct ucontext uc; - long sp; sigset_t sigm; /* offset of ucontext in the kernel's sigframe structure */ -# define SIGFRAME_UC_OFFSET C_ABI_SAVE_AREA_SIZE + sizeof(struct siginfo) - if (upeek(tcp, PTREGS_OFFSET_SP, &sp) < 0) - return 0; - if (umove(tcp, sp + SIGFRAME_UC_OFFSET, &uc) < 0) +# define SIGFRAME_UC_OFFSET C_ABI_SAVE_AREA_SIZE + sizeof(siginfo_t) + if (umove(tcp, tile_regs.sp + SIGFRAME_UC_OFFSET, &uc) < 0) return 0; sigemptyset(&sigm); memcpy(&sigm, &uc.uc_sigmask, NSIG / 8); tprints(sprintsigmask(") (mask ", &sigm, 0)); } - return 0; #elif defined(MICROBLAZE) /* TODO: Verify that this is correct... */ if (entering(tcp)) { @@ -1089,12 +992,15 @@ sys_sigreturn(struct tcb *tcp) long_to_sigset(sc.oldmask, &sigm); tprints(sprintsigmask(") (mask ", &sigm, 0)); } - return 0; +#elif defined(X86_64) + /* no need to remind */ +#elif defined(XTENSA) + /* Xtensa only has rt_sys_sigreturn */ #else -#warning No sys_sigreturn() for this architecture -#warning (no problem, just a reminder :-) - return 0; +# warning No sys_sigreturn() for this architecture +# warning (no problem, just a reminder :-) #endif + return 0; } int @@ -1122,14 +1028,6 @@ sys_sigsuspend(struct tcb *tcp) #if !defined SS_ONSTACK #define SS_ONSTACK 1 #define SS_DISABLE 2 -#if __GLIBC_MINOR__ == 0 -typedef struct -{ - __ptr_t ss_sp; - int ss_flags; - size_t ss_size; -} stack_t; -#endif #endif static const struct xlat sigaltstack_flags[] = { @@ -1138,33 +1036,31 @@ static const struct xlat sigaltstack_flags[] = { { 0, NULL }, }; -static int +static void print_stack_t(struct tcb *tcp, unsigned long addr) { stack_t ss; - if (umove(tcp, addr, &ss) < 0) - return -1; - tprintf("{ss_sp=%#lx, ss_flags=", (unsigned long) ss.ss_sp); - printflags(sigaltstack_flags, ss.ss_flags, "SS_???"); - tprintf(", ss_size=%lu}", (unsigned long) ss.ss_size); - return 0; + + if (!addr) { + tprints("NULL"); + } else if (umove(tcp, addr, &ss) < 0) { + tprintf("%#lx", addr); + } else { + tprintf("{ss_sp=%#lx, ss_flags=", (unsigned long) ss.ss_sp); + printflags(sigaltstack_flags, ss.ss_flags, "SS_???"); + tprintf(", ss_size=%lu}", (unsigned long) ss.ss_size); + } } int sys_sigaltstack(struct tcb *tcp) { if (entering(tcp)) { - if (tcp->u_arg[0] == 0) - tprints("NULL"); - else if (print_stack_t(tcp, tcp->u_arg[0]) < 0) - return -1; + print_stack_t(tcp, tcp->u_arg[0]); } else { tprints(", "); - if (tcp->u_arg[1] == 0) - tprints("NULL"); - else if (print_stack_t(tcp, tcp->u_arg[1]) < 0) - return -1; + print_stack_t(tcp, tcp->u_arg[1]); } return 0; } @@ -1223,13 +1119,10 @@ int sys_kill(struct tcb *tcp) { if (entering(tcp)) { - long pid = tcp->u_arg[0]; -#if SUPPORTED_PERSONALITIES > 1 - /* Sign-extend a 32-bit value when that's what it is. */ - if (current_wordsize < sizeof pid) - pid = (long) (int) pid; -#endif - tprintf("%ld, %s", pid, signame(tcp->u_arg[1])); + tprintf("%ld, %s", + widen_to_long(tcp->u_arg[0]), + signame(tcp->u_arg[1]) + ); } return 0; } @@ -1239,7 +1132,10 @@ sys_tgkill(struct tcb *tcp) { if (entering(tcp)) { tprintf("%ld, %ld, %s", - tcp->u_arg[0], tcp->u_arg[1], signame(tcp->u_arg[2])); + widen_to_long(tcp->u_arg[0]), + widen_to_long(tcp->u_arg[1]), + signame(tcp->u_arg[2]) + ); } return 0; } @@ -1295,9 +1191,10 @@ sys_rt_sigprocmask(struct tcb *tcp) /* Structure describing the action to be taken when a signal arrives. */ struct new_sigaction { - __sighandler_t __sa_handler; + /* sa_handler may be a libc #define, need to use other name: */ + void (*__sa_handler)(int); unsigned long sa_flags; - void (*sa_restorer) (void); + void (*sa_restorer)(void); /* Kernel treats sa_mask as an array of longs. */ unsigned long sa_mask[NSIG / sizeof(long) ? NSIG / sizeof(long) : 1]; }; @@ -1333,8 +1230,7 @@ sys_rt_sigaction(struct tcb *tcp) tprintf("%#lx", addr); goto after_sa; } -#if SUPPORTED_PERSONALITIES > 1 -#if SIZEOF_LONG > 4 +#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4 if (current_wordsize != sizeof(sa.sa_flags) && current_wordsize == 4) { struct new_sigaction32 sa32; r = umove(tcp, addr, &sa32); @@ -1354,7 +1250,6 @@ sys_rt_sigaction(struct tcb *tcp) sa.sa_mask[0] = sa32.sa_mask[0] + ((long)(sa32.sa_mask[1]) << 32); } } else -#endif #endif { r = umove(tcp, addr, &sa); @@ -1366,11 +1261,11 @@ sys_rt_sigaction(struct tcb *tcp) /* Architectures using function pointers, like * hppa, may need to manipulate the function pointer * to compute the result of a comparison. However, - * the SA_HANDLER function pointer exists only in + * the __sa_handler function pointer exists only in * the address space of the traced process, and can't * be manipulated by strace. In order to prevent the * compiler from generating code to manipulate - * SA_HANDLER we cast the function pointers to long. */ + * __sa_handler we cast the function pointers to long. */ if ((long)sa.__sa_handler == (long)SIG_ERR) tprints("{SIG_ERR, "); else if ((long)sa.__sa_handler == (long)SIG_DFL) @@ -1385,7 +1280,7 @@ sys_rt_sigaction(struct tcb *tcp) * therefore tcp->u_arg[3(4)] _must_ be NSIG / 8 here, * and we always use smaller memcpy. */ sigemptyset(&sigset); -#ifdef LINUXSPARC +#if defined(SPARC) || defined(SPARC64) if (tcp->u_arg[4] <= sizeof(sigset)) memcpy(&sigset, &sa.sa_mask, tcp->u_arg[4]); #else @@ -1407,7 +1302,7 @@ sys_rt_sigaction(struct tcb *tcp) if (entering(tcp)) tprints(", "); else -#ifdef LINUXSPARC +#if defined(SPARC) || defined(SPARC64) tprintf(", %#lx, %lu", tcp->u_arg[3], tcp->u_arg[4]); #elif defined(ALPHA) tprintf(", %lu, %#lx", tcp->u_arg[3], tcp->u_arg[4]); @@ -1450,14 +1345,9 @@ sys_rt_sigsuspend(struct tcb *tcp) static void print_sigqueueinfo(struct tcb *tcp, int sig, unsigned long uinfo) { - siginfo_t si; - printsignal(sig); tprints(", "); - if (umove(tcp, uinfo, &si) < 0) - tprintf("%#lx", uinfo); - else - printsiginfo(&si, verbose(tcp)); + printsiginfo_at(tcp, uinfo); } int @@ -1499,17 +1389,8 @@ int sys_rt_sigtimedwait(struct tcb *tcp) } else if (tcp->u_arg[1] != 0) { /* syscall exit, and u_arg[1] wasn't NULL */ - if (syserror(tcp)) - tprintf("%#lx, ", tcp->u_arg[1]); - else { - siginfo_t si; - if (umove(tcp, tcp->u_arg[1], &si) < 0) - tprintf("%#lx, ", tcp->u_arg[1]); - else { - printsiginfo(&si, verbose(tcp)); - tprints(", "); - } - } + printsiginfo_at(tcp, tcp->u_arg[1]); + tprints(", "); } else { /* syscall exit, and u_arg[1] was NULL */ diff --git a/strace.1 b/strace.1 index faf4d45c..5f287d78 100644 --- a/strace.1 +++ b/strace.1 @@ -41,7 +41,9 @@ strace \- trace system calls and signals .B strace [\fB-CdffhiqrtttTvVxxy\fR] [\fB-I\fIn\fR] -[\fB-e\fIexpr\fR]... [\fB-a\fIcolumn\fR] +[\fB-b\fIexecve\fR] +[\fB-e\fIexpr\fR]... +[\fB-a\fIcolumn\fR] [\fB-o\fIfile\fR] [\fB-s\fIstrsize\fR] [\fB-P\fIpath\fR]... \fB-p\fIpid\fR... / @@ -52,7 +54,9 @@ strace \- trace system calls and signals .B strace \fB-c\fR[\fBdf\fR] [\fB-I\fIn\fR] -[\fB-e\fIexpr\fR]... [\fB-O\fIoverhead\fR] +[\fB-b\fIexecve\fR] +[\fB-e\fIexpr\fR]... +[\fB-O\fIoverhead\fR] [\fB-S\fIsortby\fR] \fB-p\fIpid\fR... / [\fB-D\fR] [\fB-E\fIvar\fR[=\fIval\fR]]... [\fB-u\fIusername\fR] @@ -226,24 +230,16 @@ itself on the standard error. .B \-f Trace child processes as they are created by currently traced processes as a result of the -.BR fork (2) -system call. -.IP -On non-Linux platforms the new process is -attached to as soon as its pid is known (through the return value of -.BR fork (2) -in the parent process). This means that such children may run -uncontrolled for a while (especially in the case of a -.BR vfork (2)), -until the parent is scheduled again to complete its -.RB ( v ) fork (2) -call. On Linux the child is traced from its first instruction with no delay. -If the parent process decides to -.BR wait (2) -for a child that is currently -being traced, it is suspended until an appropriate child process either -terminates or incurs a signal that would cause it to terminate (as -determined from the child's current signal disposition). +.BR fork (2), +.BR vfork (2) +and +.BR clone (2) +system calls. Note that +.B \-p +.I PID +.B \-f +will attach all threads of process PID if it is multi-threaded, +not only thread with thread_id = PID. .TP .B \-ff If the @@ -271,6 +267,9 @@ Suppress messages about attaching, detaching etc. This happens automatically when output is redirected to a file and the command is run directly instead of attaching. .TP +.B \-qq +If given twice, suppress messages about process exit status. +.TP .B \-r Print a relative timestamp upon entry to each system call. This records the time difference between the beginning of successive @@ -313,6 +312,14 @@ Print paths associated with file descriptor arguments. .BI "\-a " column Align return values in a specific column (default column 40). .TP +.BI "\-b " syscall +If specified syscall is reached, detach from traced process. +Currently, only +.I execve +syscall is supported. This option is useful if you want to trace +multi-threaded process and therefore require -f, but don't want +to trace its (potentially very complex) children. +.TP .BI "\-e " expr A qualifying expression which modifies which events to trace or how to trace them. The format of the expression is: @@ -395,6 +402,9 @@ Trace all IPC related system calls. .BR "\-e\ trace" = desc Trace all file descriptor related system calls. .TP +.BR "\-e\ trace" = memory +Trace all memory mapping related system calls. +.TP \fB\-e\ abbrev\fR=\fIset\fR Abbreviate the output from printing each member of large structures. The default is @@ -510,7 +520,7 @@ Trace only system calls accessing .I path. Multiple .B \-P -options can be used to specify up to 256 paths. +options can be used to specify several paths. .TP .BI "\-s " strsize Specify the maximum string size to print (the default is 32). Note diff --git a/strace.c b/strace.c index 857136d5..6eab600f 100644 --- a/strace.c +++ b/strace.c @@ -39,6 +39,9 @@ #include #include #include +#ifdef HAVE_PRCTL +# include +#endif #if defined(IA64) # include #endif @@ -54,20 +57,27 @@ extern char *optarg; /* kill() may choose arbitrarily the target task of the process group while we later wait on a that specific TID. PID process waits become TID task specific waits for a process under ptrace(2). */ -# warning "Neither tkill(2) nor tgkill(2) available, risk of strace hangs!" +# warning "tkill(2) not available, risk of strace hangs!" # define my_tkill(tid, sig) kill((tid), (sig)) #endif -#undef KERNEL_VERSION -#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) +/* Glue for systems without a MMU that cannot provide fork() */ +#if !defined(HAVE_FORK) +# undef NOMMU_SYSTEM +# define NOMMU_SYSTEM 1 +#endif +#if NOMMU_SYSTEM +# define fork() vfork() +#endif cflag_t cflag = CFLAG_NONE; unsigned int followfork = 0; unsigned int ptrace_setoptions = 0; unsigned int xflag = 0; +bool need_fork_exec_workarounds = 0; bool debug_flag = 0; bool Tflag = 0; -bool qflag = 0; +unsigned int qflag = 0; /* Which WSTOPSIG(status) value marks syscall traps? */ static unsigned int syscall_trap_sig = SIGTRAP; static unsigned int tflag = 0; @@ -102,7 +112,7 @@ static int opt_intr; */ static bool daemonized_tracer = 0; -#ifdef USE_SEIZE +#if USE_SEIZE static int post_attach_sigstop = TCB_IGNORE_ONE_SIGSTOP; # define use_seize (post_attach_sigstop == 0) #else @@ -116,11 +126,11 @@ bool not_failing_only = 0; /* Show path associated with fd arguments */ bool show_fd_path = 0; -/* are we filtering traces based on paths? */ -bool tracing_paths = 0; - static bool detach_on_execve = 0; -static bool skip_startup_execve = 0; +/* Are we "strace PROG" and need to skip detach on first execve? */ +static bool skip_one_b_execve = 0; +/* Are we "strace PROG" and need to hide everything until execve? */ +bool hide_log_until_execve = 0; static int exit_code = 0; static int strace_child = 0; @@ -145,7 +155,7 @@ static struct tcb **tcbtab; static unsigned int nprocs, tcbtabsize; static const char *progname; -static unsigned os_release; /* generated from uname()'s u.release */ +unsigned os_release; /* generated from uname()'s u.release */ static int detach(struct tcb *tcp); static int trace(void); @@ -194,7 +204,6 @@ usage: strace [-CdffhiqrtttTvVxxy] [-I n] [-e expr]...\n\ -d -- enable debug output to stderr\n\ -D -- run tracer process as a detached grandchild, not as parent\n\ -f -- follow forks, -ff -- with output into separate files\n\ --F -- attempt to follow vforks (deprecated, use -f)\n\ -i -- print instruction pointer at time of syscall\n\ -q -- suppress messages about attaching, detaching, etc.\n\ -r -- print relative timestamp, -t -- absolute timestamp, -tt -- with usecs\n\ @@ -204,8 +213,9 @@ usage: strace [-CdffhiqrtttTvVxxy] [-I n] [-e expr]...\n\ -y -- print paths associated with file descriptor arguments\n\ -h -- print help message, -V -- print version\n\ -a column -- alignment COLUMN for printing syscall results (default %d)\n\ +-b execve -- detach on this syscall\n\ -e expr -- a qualifying expression: option=[!]all or option=[!]val1[,val2]...\n\ - options: trace, abbrev, verbose, raw, signal, read, or write\n\ + options: trace, abbrev, verbose, raw, signal, read, write\n\ -I interruptible --\n\ 1: no signals are blocked\n\ 2: fatal signals are blocked while decoding syscall (default)\n\ @@ -222,12 +232,12 @@ usage: strace [-CdffhiqrtttTvVxxy] [-I n] [-e expr]...\n\ -E var -- remove var from the environment for command\n\ -P path -- trace accesses to path\n\ " +/* ancient, no one should use it +-F -- attempt to follow vforks (deprecated, use -f)\n\ + */ /* this is broken, so don't document it -z -- print only succeeding syscalls\n\ */ -/* experimental, don't document it yet (option letter may change in the future!) --b -- detach on successful execve\n\ - */ , DEFAULT_ACOLUMN, DEFAULT_STRLEN, DEFAULT_SORTBY); exit(exitval); } @@ -320,22 +330,14 @@ error_opt_arg(int opt, const char *arg) error_msg_and_die("Invalid -%c argument: '%s'", opt, arg); } -/* Glue for systems without a MMU that cannot provide fork() */ -#ifdef HAVE_FORK -# define strace_vforked 0 -#else -# define strace_vforked 1 -# define fork() vfork() -#endif - -#ifdef USE_SEIZE +#if USE_SEIZE static int ptrace_attach_or_seize(int pid) { int r; if (!use_seize) return ptrace(PTRACE_ATTACH, pid, 0, 0); - r = ptrace(PTRACE_SEIZE, pid, 0, PTRACE_SEIZE_DEVEL); + r = ptrace(PTRACE_SEIZE, pid, 0, 0); if (r) return r; r = ptrace(PTRACE_INTERRUPT, pid, 0, 0); @@ -439,8 +441,20 @@ swap_uid(void) #if _LFS64_LARGEFILE # define fopen_for_output fopen64 +# define struct_stat struct stat64 +# define stat_file stat64 +# define struct_dirent struct dirent64 +# define read_dir readdir64 +# define struct_rlimit struct rlimit64 +# define set_rlimit setrlimit64 #else # define fopen_for_output fopen +# define struct_stat struct stat +# define stat_file stat +# define struct_dirent struct dirent +# define read_dir readdir +# define struct_rlimit struct rlimit +# define set_rlimit setrlimit #endif static FILE * @@ -515,8 +529,7 @@ tprintf(const char *fmt, ...) int n = strace_vfprintf(current_tcp->outf, fmt, args); if (n < 0) { if (current_tcp->outf != stderr) - perror(outfname == NULL - ? "" : outfname); + perror_msg("%s", outfname); } else current_tcp->curcol += n; } @@ -533,7 +546,7 @@ tprints(const char *str) return; } if (current_tcp->outf != stderr) - perror(!outfname ? "" : outfname); + perror_msg("%s", outfname); } } @@ -731,8 +744,8 @@ detach(struct tcb *tcp) * to make a clean break of things. */ #if defined(SPARC) -#undef PTRACE_DETACH -#define PTRACE_DETACH PTRACE_SUNDETACH +# undef PTRACE_DETACH +# define PTRACE_DETACH PTRACE_SUNDETACH #endif error = 0; @@ -750,15 +763,15 @@ detach(struct tcb *tcp) } else if (errno != ESRCH) { /* Shouldn't happen. */ - perror("detach: ptrace(PTRACE_DETACH, ...)"); + perror_msg("detach: ptrace(PTRACE_DETACH, ...)"); } else if (my_tkill(tcp->pid, 0) < 0) { if (errno != ESRCH) - perror("detach: checking sanity"); + perror_msg("detach: checking sanity"); } else if (!sigstop_expected && my_tkill(tcp->pid, SIGSTOP) < 0) { if (errno != ESRCH) - perror("detach: stopping child"); + perror_msg("detach: stopping child"); } else sigstop_expected = 1; @@ -771,21 +784,21 @@ detach(struct tcb *tcp) if (errno == ECHILD) /* Already gone. */ break; if (errno != EINVAL) { - perror("detach: waiting"); + perror_msg("detach: waiting"); break; } #endif /* __WALL */ /* No __WALL here. */ if (waitpid(tcp->pid, &status, 0) < 0) { if (errno != ECHILD) { - perror("detach: waiting"); + perror_msg("detach: waiting"); break; } #ifdef __WCLONE /* If no processes, try clones. */ if (waitpid(tcp->pid, &status, __WCLONE) < 0) { if (errno != ECHILD) - perror("detach: waiting"); + perror_msg("detach: waiting"); break; } #endif /* __WCLONE */ @@ -898,9 +911,9 @@ startup_attach(void) dir = opendir(procdir); if (dir != NULL) { unsigned int ntid = 0, nerr = 0; - struct dirent *de; + struct_dirent *de; - while ((de = readdir(dir)) != NULL) { + while ((de = read_dir(dir)) != NULL) { struct tcb *cur_tcp; int tid; @@ -934,7 +947,7 @@ startup_attach(void) } ntid -= nerr; if (ntid == 0) { - perror("attach: ptrace(PTRACE_ATTACH, ...)"); + perror_msg("attach: ptrace(PTRACE_ATTACH, ...)"); droptcb(tcp); continue; } @@ -955,7 +968,7 @@ startup_attach(void) } /* if (opendir worked) */ } /* if (-f) */ if (ptrace_attach_or_seize(tcp->pid) < 0) { - perror("attach: ptrace(PTRACE_ATTACH, ...)"); + perror_msg("attach: ptrace(PTRACE_ATTACH, ...)"); droptcb(tcp); continue; } @@ -983,13 +996,79 @@ startup_attach(void) sigprocmask(SIG_SETMASK, &empty_set, NULL); } +/* Stack-o-phobic exec helper, in the hope to work around + * NOMMU + "daemonized tracer" difficulty. + */ +struct exec_params { + int fd_to_close; + uid_t run_euid; + gid_t run_egid; + char **argv; + char *pathname; +}; +static struct exec_params params_for_tracee; +static void __attribute__ ((noinline, noreturn)) +exec_or_die(void) +{ + struct exec_params *params = ¶ms_for_tracee; + + if (params->fd_to_close >= 0) + close(params->fd_to_close); + if (!daemonized_tracer && !use_seize) { + if (ptrace(PTRACE_TRACEME, 0L, 0L, 0L) < 0) { + perror_msg_and_die("ptrace(PTRACE_TRACEME, ...)"); + } + } + + if (username != NULL) { + /* + * It is important to set groups before we + * lose privileges on setuid. + */ + if (initgroups(username, run_gid) < 0) { + perror_msg_and_die("initgroups"); + } + if (setregid(run_gid, params->run_egid) < 0) { + perror_msg_and_die("setregid"); + } + if (setreuid(run_uid, params->run_euid) < 0) { + perror_msg_and_die("setreuid"); + } + } + else if (geteuid() != 0) + if (setreuid(run_uid, run_uid) < 0) { + perror_msg_and_die("setreuid"); + } + + if (!daemonized_tracer) { + /* + * Induce a ptrace stop. Tracer (our parent) + * will resume us with PTRACE_SYSCALL and display + * the immediately following execve syscall. + * Can't do this on NOMMU systems, we are after + * vfork: parent is blocked, stopping would deadlock. + */ + if (!NOMMU_SYSTEM) + kill(getpid(), SIGSTOP); + } else { + alarm(3); + /* we depend on SIGCHLD set to SIG_DFL by init code */ + /* if it happens to be SIG_IGN'ed, wait won't block */ + wait(NULL); + alarm(0); + } + + execv(params->pathname, params->argv); + perror_msg_and_die("exec"); +} + static void startup_child(char **argv) { - struct stat statbuf; + struct_stat statbuf; const char *filename; char pathname[MAXPATHLEN]; - int pid = 0; + int pid; struct tcb *tcp; filename = argv[0]; @@ -1006,7 +1085,7 @@ startup_child(char **argv) * first regardless of the path but doing that gives * security geeks a panic attack. */ - else if (stat(filename, &statbuf) == 0) + else if (stat_file(filename, &statbuf) == 0) strcpy(pathname, filename); #endif /* USE_DEBUGGING_EXEC */ else { @@ -1035,7 +1114,7 @@ startup_child(char **argv) if (len && pathname[len - 1] != '/') pathname[len++] = '/'; strcpy(pathname + len, filename); - if (stat(pathname, &statbuf) == 0 && + if (stat_file(pathname, &statbuf) == 0 && /* Accept only regular files with some execute bits set. XXX not perfect, might still fail */ @@ -1044,70 +1123,37 @@ startup_child(char **argv) break; } } - if (stat(pathname, &statbuf) < 0) { + if (stat_file(pathname, &statbuf) < 0) { perror_msg_and_die("Can't stat '%s'", filename); } + + params_for_tracee.fd_to_close = (shared_log != stderr) ? fileno(shared_log) : -1; + params_for_tracee.run_euid = (statbuf.st_mode & S_ISUID) ? statbuf.st_uid : run_uid; + params_for_tracee.run_egid = (statbuf.st_mode & S_ISGID) ? statbuf.st_gid : run_gid; + params_for_tracee.argv = argv; + /* + * On NOMMU, can be safely freed only after execve in tracee. + * It's hard to know when that happens, so we just leak it. + */ + params_for_tracee.pathname = NOMMU_SYSTEM ? strdup(pathname) : pathname; + +#if defined HAVE_PRCTL && defined PR_SET_PTRACER && defined PR_SET_PTRACER_ANY + if (daemonized_tracer) + prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY); +#endif + strace_child = pid = fork(); if (pid < 0) { perror_msg_and_die("fork"); } - if ((pid != 0 && daemonized_tracer) /* -D: parent to become a traced process */ - || (pid == 0 && !daemonized_tracer) /* not -D: child to become a traced process */ + if ((pid != 0 && daemonized_tracer) + || (pid == 0 && !daemonized_tracer) ) { - pid = getpid(); - if (shared_log != stderr) - close(fileno(shared_log)); - if (!daemonized_tracer && !use_seize) { - if (ptrace(PTRACE_TRACEME, 0L, 0L, 0L) < 0) { - perror_msg_and_die("ptrace(PTRACE_TRACEME, ...)"); - } - } - - if (username != NULL) { - uid_t run_euid = run_uid; - gid_t run_egid = run_gid; - - if (statbuf.st_mode & S_ISUID) - run_euid = statbuf.st_uid; - if (statbuf.st_mode & S_ISGID) - run_egid = statbuf.st_gid; - /* - * It is important to set groups before we - * lose privileges on setuid. - */ - if (initgroups(username, run_gid) < 0) { - perror_msg_and_die("initgroups"); - } - if (setregid(run_gid, run_egid) < 0) { - perror_msg_and_die("setregid"); - } - if (setreuid(run_uid, run_euid) < 0) { - perror_msg_and_die("setreuid"); - } - } - else if (geteuid() != 0) - setreuid(run_uid, run_uid); - - if (!daemonized_tracer) { - /* - * Induce a ptrace stop. Tracer (our parent) - * will resume us with PTRACE_SYSCALL and display - * the immediately following execve syscall. - * Can't do this on NOMMU systems, we are after - * vfork: parent is blocked, stopping would deadlock. - */ - if (!strace_vforked) - kill(pid, SIGSTOP); - } else { - alarm(3); - /* we depend on SIGCHLD set to SIG_DFL by init code */ - /* if it happens to be SIG_IGN'ed, wait won't block */ - wait(NULL); - alarm(0); - } - - execv(pathname, argv); - perror_msg_and_die("exec"); + /* We are to become the tracee. Two cases: + * -D: we are parent + * not -D: we are child + */ + exec_or_die(); } /* We are the tracer */ @@ -1116,7 +1162,7 @@ startup_child(char **argv) if (!use_seize) { /* child did PTRACE_TRACEME, nothing to do in parent */ } else { - if (!strace_vforked) { + if (!NOMMU_SYSTEM) { /* Wait until child stopped itself */ int status; while (waitpid(pid, &status, WSTOPPED) < 0) { @@ -1129,7 +1175,7 @@ startup_child(char **argv) perror_msg_and_die("Unexpected wait status %x", status); } } - /* Else: vforked case, we have no way to sync. + /* Else: NOMMU case, we have no way to sync. * Just attach to it as soon as possible. * This means that we may miss a few first syscalls... */ @@ -1138,24 +1184,45 @@ startup_child(char **argv) kill_save_errno(pid, SIGKILL); perror_msg_and_die("Can't attach to %d", pid); } - if (!strace_vforked) + if (!NOMMU_SYSTEM) kill(pid, SIGCONT); } tcp = alloctcb(pid); - if (!strace_vforked) + if (!NOMMU_SYSTEM) tcp->flags |= TCB_ATTACHED | TCB_STRACE_CHILD | TCB_STARTUP | post_attach_sigstop; else tcp->flags |= TCB_ATTACHED | TCB_STRACE_CHILD | TCB_STARTUP; newoutf(tcp); } else { - /* With -D, *we* are child here, IOW: different pid. Fetch it: */ + /* With -D, we are *child* here, IOW: different pid. Fetch it: */ strace_tracer_pid = getpid(); /* The tracee is our parent: */ pid = getppid(); alloctcb(pid); /* attaching will be done later, by startup_attach */ /* note: we don't do newoutf(tcp) here either! */ + + /* NOMMU BUG! -D mode is active, we (child) return, + * and we will scribble over parent's stack! + * When parent later unpauses, it segfaults. + * + * We work around it + * (1) by declaring exec_or_die() NORETURN, + * hopefully compiler will just jump to it + * instead of call (won't push anything to stack), + * (2) by trying very hard in exec_or_die() + * to not use any stack, + * (3) having a really big (MAXPATHLEN) stack object + * in this function, which creates a "buffer" between + * child's and parent's stack pointers. + * This may save us if (1) and (2) failed + * and compiler decided to use stack in exec_or_die() anyway + * (happens on i386 because of stack parameter passing). + * + * A cleaner solution is to use makecontext + setcontext + * to create a genuine separate stack and execute on it. + */ } } @@ -1164,7 +1231,7 @@ startup_child(char **argv) * First fork a new child, call ptrace with PTRACE_SETOPTIONS on it, * and then see which options are supported by the kernel. */ -static void +static int test_ptrace_setoptions_followfork(void) { int pid, expected_grandchild = 0, found_grandchild = 0; @@ -1172,6 +1239,10 @@ test_ptrace_setoptions_followfork(void) PTRACE_O_TRACEFORK | PTRACE_O_TRACEVFORK; + /* Need fork for test. NOMMU has no forks */ + if (NOMMU_SYSTEM) + goto worked; /* be bold, and pretend that test succeeded */ + pid = fork(); if (pid < 0) perror_msg_and_die("fork"); @@ -1253,14 +1324,16 @@ test_ptrace_setoptions_followfork(void) } } if (expected_grandchild && expected_grandchild == found_grandchild) { + worked: ptrace_setoptions |= test_options; if (debug_flag) fprintf(stderr, "ptrace_setoptions = %#x\n", ptrace_setoptions); - return; + return 0; } error_msg("Test for PTRACE_O_TRACECLONE failed, " "giving up using this feature."); + return 1; } /* @@ -1277,7 +1350,7 @@ test_ptrace_setoptions_followfork(void) * int $0x80 * (compile with: "gcc -nostartfiles -nostdlib -o int3 int3.S") */ -static void +static int test_ptrace_setoptions_for_all(void) { const unsigned int test_options = PTRACE_O_TRACESYSGOOD | @@ -1285,9 +1358,9 @@ test_ptrace_setoptions_for_all(void) int pid; int it_worked = 0; - /* this fork test doesn't work on no-mmu systems */ - if (strace_vforked) - return; + /* Need fork for test. NOMMU has no forks */ + if (NOMMU_SYSTEM) + goto worked; /* be bold, and pretend that test succeeded */ pid = fork(); if (pid < 0) @@ -1351,24 +1424,32 @@ test_ptrace_setoptions_for_all(void) } if (it_worked) { + worked: syscall_trap_sig = (SIGTRAP | 0x80); ptrace_setoptions |= test_options; if (debug_flag) fprintf(stderr, "ptrace_setoptions = %#x\n", ptrace_setoptions); - return; + return 0; } error_msg("Test for PTRACE_O_TRACESYSGOOD failed, " "giving up using this feature."); + return 1; } -# ifdef USE_SEIZE +#if USE_SEIZE static void test_ptrace_seize(void) { int pid; + /* Need fork for test. NOMMU has no forks */ + if (NOMMU_SYSTEM) { + post_attach_sigstop = 0; /* this sets use_seize to 1 */ + return; + } + pid = fork(); if (pid < 0) perror_msg_and_die("fork"); @@ -1382,7 +1463,7 @@ test_ptrace_seize(void) * attaching tracee continues to run unless a trap condition occurs. * PTRACE_SEIZE doesn't affect signal or group stop state. */ - if (ptrace(PTRACE_SEIZE, pid, 0, PTRACE_SEIZE_DEVEL) == 0) { + if (ptrace(PTRACE_SEIZE, pid, 0, 0) == 0) { post_attach_sigstop = 0; /* this sets use_seize to 1 */ } else if (debug_flag) { fprintf(stderr, "PTRACE_SEIZE doesn't work\n"); @@ -1408,9 +1489,9 @@ test_ptrace_seize(void) __func__, status); } } -# else /* !USE_SEIZE */ -# define test_ptrace_seize() ((void)0) -# endif +#else /* !USE_SEIZE */ +# define test_ptrace_seize() ((void)0) +#endif static unsigned get_os_release(void) @@ -1432,8 +1513,14 @@ get_os_release(void) break; while (*p >= '0' && *p <= '9') p++; - if (*p != '.') + if (*p != '.') { + if (rel >= KERNEL_VERSION(0,1,0)) { + /* "X.Y-something" means "X.Y.0" */ + rel <<= 8; + break; + } error_msg_and_die("Bad OS release string: '%s'", u.release); + } p++; } return rel; @@ -1485,13 +1572,19 @@ init(int argc, char *argv[]) qualify("trace=all"); qualify("abbrev=all"); qualify("verbose=all"); +#if DEFAULT_QUAL_FLAGS != (QUAL_TRACE | QUAL_ABBREV | QUAL_VERBOSE) +# error Bug in DEFAULT_QUAL_FLAGS +#endif qualify("signal=all"); while ((c = getopt(argc, argv, - "+bcCdfFhiqrtTvVxyz" + "+b:cCdfFhiqrtTvVxyz" "D" "a:e:o:O:p:s:S:u:E:P:I:")) != EOF) { switch (c) { case 'b': + if (strcmp(optarg, "execve") != 0) + error_msg_and_die("Syscall '%s' for -b isn't supported", + optarg); detach_on_execve = 1; break; case 'c': @@ -1525,7 +1618,7 @@ init(int argc, char *argv[]) iflag = 1; break; case 'q': - qflag = 1; + qflag++; break; case 'r': rflag = 1; @@ -1573,10 +1666,7 @@ init(int argc, char *argv[]) process_opt_p_list(optarg); break; case 'P': - tracing_paths = 1; - if (pathtrace_select(optarg)) { - error_msg_and_die("Failed to select path '%s'", optarg); - } + pathtrace_select(optarg); break; case 's': i = string_to_uint(optarg); @@ -1647,9 +1737,14 @@ init(int argc, char *argv[]) run_gid = getgid(); } + /* + * On any reasonably recent Linux kernel (circa about 2.5.46) + * need_fork_exec_workarounds should stay 0 after these tests: + */ + /*need_fork_exec_workarounds = 0; - already is */ if (followfork) - test_ptrace_setoptions_followfork(); - test_ptrace_setoptions_for_all(); + need_fork_exec_workarounds = test_ptrace_setoptions_followfork(); + need_fork_exec_workarounds |= test_ptrace_setoptions_for_all(); test_ptrace_seize(); /* Check if they want to redirect the output. */ @@ -1693,17 +1788,21 @@ init(int argc, char *argv[]) * no 1 1 INTR_WHILE_WAIT */ - /* STARTUP_CHILD must be called before the signal handlers get - installed below as they are inherited into the spawned process. - Also we do not need to be protected by them as during interruption - in the STARTUP_CHILD mode we kill the spawned process anyway. */ + sigemptyset(&empty_set); + sigemptyset(&blocked_set); + + /* startup_child() must be called before the signal handlers get + * installed below as they are inherited into the spawned process. + * Also we do not need to be protected by them as during interruption + * in the startup_child() mode we kill the spawned process anyway. + */ if (argv[0]) { - skip_startup_execve = 1; + if (!NOMMU_SYSTEM || daemonized_tracer) + hide_log_until_execve = 1; + skip_one_b_execve = 1; startup_child(argv); } - sigemptyset(&empty_set); - sigemptyset(&blocked_set); sa.sa_handler = SIG_IGN; sigemptyset(&sa.sa_mask); sa.sa_flags = 0; @@ -1801,9 +1900,9 @@ trace(void) { struct rusage ru; struct rusage *rup = cflag ? &ru : NULL; -# ifdef __WALL +#ifdef __WALL static int wait4_options = __WALL; -# endif +#endif while (nprocs != 0) { int pid; @@ -1817,7 +1916,7 @@ trace(void) return 0; if (interactive) sigprocmask(SIG_SETMASK, &empty_set, NULL); -# ifdef __WALL +#ifdef __WALL pid = wait4(-1, &status, wait4_options, rup); if (pid < 0 && (wait4_options & __WALL) && errno == EINVAL) { /* this kernel does not support __WALL */ @@ -1831,9 +1930,9 @@ trace(void) perror_msg("wait4(__WCLONE) failed"); } } -# else +#else pid = wait4(-1, &status, 0, rup); -# endif /* __WALL */ +#endif /* __WALL */ wait_errno = errno; if (interactive) sigprocmask(SIG_BLOCK, &blocked_set, NULL); @@ -1911,15 +2010,6 @@ trace(void) if (!tcp) { if (followfork) { - /* This is needed to go with the CLONE_PTRACE - changes in process.c/util.c: we might see - the child's initial trap before we see the - parent return from the clone syscall. - Leave the child suspended until the parent - returns from its system call. Only then - will we have the association of parent and - child so that we know how to do clearbpt - in the child. */ tcp = alloctcb(pid); tcp->flags |= TCB_ATTACHED | TCB_STARTUP | post_attach_sigstop; newoutf(tcp); @@ -1935,6 +2025,10 @@ trace(void) } } + clear_regs(); + if (WIFSTOPPED(status)) + get_regs(pid); + /* Under Linux, execve changes pid to thread leader's pid, * and we see this changed pid on EVENT_EXEC and later, * execve sysexit. Leader "disappears" without exit @@ -1992,11 +2086,10 @@ trace(void) } dont_switch_tcbs: - if (event == PTRACE_EVENT_EXEC && detach_on_execve) { - if (!skip_startup_execve) - detach(tcp); - /* This was initial execve for "strace PROG". Skip. */ - skip_startup_execve = 0; + if (event == PTRACE_EVENT_EXEC) { + if (detach_on_execve && !skip_one_b_execve) + detach(tcp); /* do "-b execve" thingy */ + skip_one_b_execve = 0; } /* Set current output file */ @@ -2011,7 +2104,8 @@ trace(void) if (pid == strace_child) exit_code = 0x100 | WTERMSIG(status); if (cflag != CFLAG_ONLY_STATS - && (qual_flags[WTERMSIG(status)] & QUAL_SIGNAL)) { + && (qual_flags[WTERMSIG(status)] & QUAL_SIGNAL) + ) { printleader(tcp); #ifdef WCOREDUMP tprintf("+++ killed by %s %s+++\n", @@ -2029,7 +2123,8 @@ trace(void) if (WIFEXITED(status)) { if (pid == strace_child) exit_code = WEXITSTATUS(status); - if (cflag != CFLAG_ONLY_STATS) { + if (cflag != CFLAG_ONLY_STATS && + qflag < 2) { printleader(tcp); tprintf("+++ exited with %d +++\n", WEXITSTATUS(status)); line_ended(); @@ -2076,8 +2171,8 @@ trace(void) if (event != 0) { /* Ptrace event */ -#ifdef USE_SEIZE - if (event == PTRACE_EVENT_STOP || event == PTRACE_EVENT_STOP1) { +#if USE_SEIZE + if (event == PTRACE_EVENT_STOP) { /* * PTRACE_INTERRUPT-stop or group-stop. * PTRACE_INTERRUPT-stop has sig == SIGTRAP here. @@ -2117,11 +2212,13 @@ trace(void) * We can get ESRCH instead, you know... */ stopped = (ptrace(PTRACE_GETSIGINFO, pid, 0, (long) &si) < 0); -#ifdef USE_SEIZE +#if USE_SEIZE show_stopsig: #endif if (cflag != CFLAG_ONLY_STATS - && (qual_flags[sig] & QUAL_SIGNAL)) { + && !hide_log_until_execve + && (qual_flags[sig] & QUAL_SIGNAL) + ) { #if defined(PT_CR_IPSR) && defined(PT_CR_IIP) long pc = 0; long psr = 0; @@ -2155,7 +2252,7 @@ trace(void) goto restart_tracee; /* It's group-stop */ -#ifdef USE_SEIZE +#if USE_SEIZE if (use_seize) { /* * This ends ptrace-stop, but does *not* end group-stop. @@ -2197,7 +2294,6 @@ trace(void) restart_tracee_with_sig_0: sig = 0; restart_tracee: - /* Remember current print column before continuing. */ if (ptrace_restart(PTRACE_SYSCALL, tcp, sig) < 0) { cleanup(); return -1; @@ -2217,10 +2313,16 @@ main(int argc, char *argv[]) cleanup(); fflush(NULL); + if (shared_log != stderr) + fclose(shared_log); + if (popen_pid) { + while (waitpid(popen_pid, NULL, 0) < 0 && errno == EINTR) + ; + } if (exit_code > 0xff) { /* Avoid potential core file clobbering. */ - struct rlimit rlim = {0, 0}; - setrlimit(RLIMIT_CORE, &rlim); + struct_rlimit rlim = {0, 0}; + set_rlimit(RLIMIT_CORE, &rlim); /* Child was killed by a signal, mimic that. */ exit_code &= 0xff; diff --git a/strace.spec b/strace.spec index 1bb7d3b8..817f1ae7 100644 --- a/strace.spec +++ b/strace.spec @@ -1,6 +1,6 @@ Summary: Tracks and displays system calls associated with a running process Name: strace -Version: 4.7 +Version: 4.8 Release: 1%{?dist} License: BSD Group: Development/Debuggers @@ -74,7 +74,7 @@ rm -rf %{buildroot} %files %defattr(-,root,root) -%doc CREDITS ChangeLog ChangeLog-CVS COPYRIGHT NEWS README +%doc CREDITS ChangeLog ChangeLog-CVS COPYING NEWS README %{_bindir}/strace %{_bindir}/strace-log-merge %{_mandir}/man1/* @@ -86,6 +86,19 @@ rm -rf %{buildroot} %endif %changelog +* Mon Jun 03 2013 Dmitry V. Levin - 4.8-1 +- New upstream release: + + fixed ERESTARTNOINTR leaking to userspace on ancient kernels (#659382); + + fixed decoding of *xattr syscalls (#885233); + + fixed handling of files with 64-bit inode numbers by 32-bit strace (#912790); + + added aarch64 support (#969858). + +* Fri Feb 15 2013 Fedora Release Engineering - 4.7-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Sat Jul 21 2012 Fedora Release Engineering - 4.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + * Wed May 02 2012 Dmitry V. Levin 4.7-1 - New upstream release. + implemented proper handling of real SIGTRAPs (#162774). diff --git a/stream.c b/stream.c index 8656fc03..8c908382 100644 --- a/stream.c +++ b/stream.c @@ -33,23 +33,28 @@ #ifdef HAVE_SYS_POLL_H # include #endif -#ifdef HAVE_STROPTS_H -# include -#endif #ifdef HAVE_SYS_CONF_H # include #endif -#ifndef HAVE_STROPTS_H -#define RS_HIPRI 1 +/* Who has STREAMS syscalls? + * Linux hasn't. Solaris has (had?). + * Just in case I miss something, retain in for Sparc... + */ +#if defined(SPARC) || defined(SPARC64) + +# ifdef HAVE_STROPTS_H +# include +# else +# define RS_HIPRI 1 struct strbuf { int maxlen; /* no. of bytes in buffer */ int len; /* no. of bytes returned */ const char *buf; /* pointer to data */ }; -#define MORECTL 1 -#define MOREDATA 2 -#endif /* !HAVE_STROPTS_H */ +# define MORECTL 1 +# define MOREDATA 2 +# endif static const struct xlat msgflags[] = { { RS_HIPRI, "RS_HIPRI" }, @@ -72,7 +77,7 @@ printstrbuf(struct tcb *tcp, struct strbuf *sbp, int getting) } static void -printstrbufarg(struct tcb *tcp, int arg, int getting) +printstrbufarg(struct tcb *tcp, long arg, int getting) { struct strbuf buf; @@ -102,7 +107,6 @@ sys_putmsg(struct tcb *tcp) return 0; } -#if defined(SPARC) || defined(SPARC64) int sys_getmsg(struct tcb *tcp) { @@ -148,24 +152,21 @@ sys_getmsg(struct tcb *tcp) } return RVAL_HEX | RVAL_STR; } -#endif -#if defined SYS_putpmsg || defined SYS_getpmsg +# if defined SYS_putpmsg || defined SYS_getpmsg static const struct xlat pmsgflags[] = { -#ifdef MSG_HIPRI +# ifdef MSG_HIPRI { MSG_HIPRI, "MSG_HIPRI" }, -#endif -#ifdef MSG_AND +# endif +# ifdef MSG_AND { MSG_ANY, "MSG_ANY" }, -#endif -#ifdef MSG_BAND +# endif +# ifdef MSG_BAND { MSG_BAND, "MSG_BAND" }, -#endif +# endif { 0, NULL }, }; -#endif - -#ifdef SYS_putpmsg +# ifdef SYS_putpmsg int sys_putpmsg(struct tcb *tcp) { @@ -184,9 +185,8 @@ sys_putpmsg(struct tcb *tcp) } return 0; } -#endif /* SYS_putpmsg */ - -#ifdef SYS_getpmsg +# endif +# ifdef SYS_getpmsg int sys_getpmsg(struct tcb *tcp) { @@ -235,31 +235,35 @@ sys_getpmsg(struct tcb *tcp) } return RVAL_HEX | RVAL_STR; } -#endif /* SYS_getpmsg */ +# endif +# endif /* getpmsg/putpmsg */ + +#endif /* STREAMS syscalls support */ + #ifdef HAVE_SYS_POLL_H static const struct xlat pollflags[] = { -#ifdef POLLIN +# ifdef POLLIN { POLLIN, "POLLIN" }, { POLLPRI, "POLLPRI" }, { POLLOUT, "POLLOUT" }, -#ifdef POLLRDNORM +# ifdef POLLRDNORM { POLLRDNORM, "POLLRDNORM" }, -#endif -#ifdef POLLWRNORM +# endif +# ifdef POLLWRNORM { POLLWRNORM, "POLLWRNORM" }, -#endif -#ifdef POLLRDBAND +# endif +# ifdef POLLRDBAND { POLLRDBAND, "POLLRDBAND" }, -#endif -#ifdef POLLWRBAND +# endif +# ifdef POLLWRBAND { POLLWRBAND, "POLLWRBAND" }, -#endif +# endif { POLLERR, "POLLERR" }, { POLLHUP, "POLLHUP" }, { POLLNVAL, "POLLNVAL" }, -#endif +# endif { 0, NULL }, }; @@ -401,11 +405,11 @@ sys_poll(struct tcb *tcp) { int rc = decode_poll(tcp, 0); if (entering(tcp)) { -#ifdef INFTIM +# ifdef INFTIM if (tcp->u_arg[2] == INFTIM) tprints("INFTIM"); else -#endif +# endif tprintf("%ld", tcp->u_arg[2]); } return rc; diff --git a/syscall.c b/syscall.c index 52d742f7..7efee0e4 100644 --- a/syscall.c +++ b/syscall.c @@ -65,6 +65,21 @@ # include #endif +/* for struct iovec */ +#include +/* for NT_PRSTATUS */ +#ifdef HAVE_ELF_H +# include +#endif + +#if defined(AARCH64) +# include +#endif + +#if defined(XTENSA) +# include +#endif + #ifndef ERESTARTSYS # define ERESTARTSYS 512 #endif @@ -97,21 +112,22 @@ #define TN TRACE_NETWORK #define TP TRACE_PROCESS #define TS TRACE_SIGNAL +#define TM TRACE_MEMORY #define NF SYSCALL_NEVER_FAILS #define MA MAX_ARGS -static const struct sysent sysent0[] = { +const struct_sysent sysent0[] = { #include "syscallent.h" }; -#if SUPPORTED_PERSONALITIES >= 2 -static const struct sysent sysent1[] = { +#if SUPPORTED_PERSONALITIES > 1 +static const struct_sysent sysent1[] = { # include "syscallent1.h" }; #endif -#if SUPPORTED_PERSONALITIES >= 3 -static const struct sysent sysent2[] = { +#if SUPPORTED_PERSONALITIES > 2 +static const struct_sysent sysent2[] = { # include "syscallent2.h" }; #endif @@ -123,6 +139,7 @@ static const struct sysent sysent2[] = { #undef TN #undef TP #undef TS +#undef TM #undef NF #undef MA @@ -134,120 +151,188 @@ static const struct sysent sysent2[] = { * in "/usr/include". */ -static const char *const errnoent0[] = { +const char *const errnoent0[] = { #include "errnoent.h" }; -static const char *const signalent0[] = { +const char *const signalent0[] = { #include "signalent.h" }; -static const struct ioctlent ioctlent0[] = { +const struct_ioctlent ioctlent0[] = { #include "ioctlent.h" }; -enum { nsyscalls0 = ARRAY_SIZE(sysent0) }; -enum { nerrnos0 = ARRAY_SIZE(errnoent0) }; -enum { nsignals0 = ARRAY_SIZE(signalent0) }; -enum { nioctlents0 = ARRAY_SIZE(ioctlent0) }; -int qual_flags0[MAX_QUALS]; -#if SUPPORTED_PERSONALITIES >= 2 +#if SUPPORTED_PERSONALITIES > 1 static const char *const errnoent1[] = { # include "errnoent1.h" }; static const char *const signalent1[] = { # include "signalent1.h" }; -static const struct ioctlent ioctlent1[] = { +static const struct_ioctlent ioctlent1[] = { # include "ioctlent1.h" }; -enum { nsyscalls1 = ARRAY_SIZE(sysent1) }; -enum { nerrnos1 = ARRAY_SIZE(errnoent1) }; -enum { nsignals1 = ARRAY_SIZE(signalent1) }; -enum { nioctlents1 = ARRAY_SIZE(ioctlent1) }; -int qual_flags1[MAX_QUALS]; #endif -#if SUPPORTED_PERSONALITIES >= 3 +#if SUPPORTED_PERSONALITIES > 2 static const char *const errnoent2[] = { # include "errnoent2.h" }; static const char *const signalent2[] = { # include "signalent2.h" }; -static const struct ioctlent ioctlent2[] = { +static const struct_ioctlent ioctlent2[] = { # include "ioctlent2.h" }; -enum { nsyscalls2 = ARRAY_SIZE(sysent2) }; -enum { nerrnos2 = ARRAY_SIZE(errnoent2) }; -enum { nsignals2 = ARRAY_SIZE(signalent2) }; -enum { nioctlents2 = ARRAY_SIZE(ioctlent2) }; -int qual_flags2[MAX_QUALS]; #endif -const struct sysent *sysent = sysent0; +enum { + nsyscalls0 = ARRAY_SIZE(sysent0) +#if SUPPORTED_PERSONALITIES > 1 + , nsyscalls1 = ARRAY_SIZE(sysent1) +# if SUPPORTED_PERSONALITIES > 2 + , nsyscalls2 = ARRAY_SIZE(sysent2) +# endif +#endif +}; + +enum { + nerrnos0 = ARRAY_SIZE(errnoent0) +#if SUPPORTED_PERSONALITIES > 1 + , nerrnos1 = ARRAY_SIZE(errnoent1) +# if SUPPORTED_PERSONALITIES > 2 + , nerrnos2 = ARRAY_SIZE(errnoent2) +# endif +#endif +}; + +enum { + nsignals0 = ARRAY_SIZE(signalent0) +#if SUPPORTED_PERSONALITIES > 1 + , nsignals1 = ARRAY_SIZE(signalent1) +# if SUPPORTED_PERSONALITIES > 2 + , nsignals2 = ARRAY_SIZE(signalent2) +# endif +#endif +}; + +enum { + nioctlents0 = ARRAY_SIZE(ioctlent0) +#if SUPPORTED_PERSONALITIES > 1 + , nioctlents1 = ARRAY_SIZE(ioctlent1) +# if SUPPORTED_PERSONALITIES > 2 + , nioctlents2 = ARRAY_SIZE(ioctlent2) +# endif +#endif +}; + +#if SUPPORTED_PERSONALITIES > 1 +const struct_sysent *sysent = sysent0; const char *const *errnoent = errnoent0; const char *const *signalent = signalent0; -const struct ioctlent *ioctlent = ioctlent0; +const struct_ioctlent *ioctlent = ioctlent0; +#endif unsigned nsyscalls = nsyscalls0; unsigned nerrnos = nerrnos0; unsigned nsignals = nsignals0; unsigned nioctlents = nioctlents0; -int *qual_flags = qual_flags0; + +unsigned num_quals; +qualbits_t *qual_vec[SUPPORTED_PERSONALITIES]; + +static const unsigned nsyscall_vec[SUPPORTED_PERSONALITIES] = { + nsyscalls0, +#if SUPPORTED_PERSONALITIES > 1 + nsyscalls1, +#endif +#if SUPPORTED_PERSONALITIES > 2 + nsyscalls2, +#endif +}; +static const struct_sysent *const sysent_vec[SUPPORTED_PERSONALITIES] = { + sysent0, +#if SUPPORTED_PERSONALITIES > 1 + sysent1, +#endif +#if SUPPORTED_PERSONALITIES > 2 + sysent2, +#endif +}; + +enum { + MAX_NSYSCALLS1 = (nsyscalls0 +#if SUPPORTED_PERSONALITIES > 1 + > nsyscalls1 ? nsyscalls0 : nsyscalls1 +#endif + ), + MAX_NSYSCALLS2 = (MAX_NSYSCALLS1 +#if SUPPORTED_PERSONALITIES > 2 + > nsyscalls2 ? MAX_NSYSCALLS1 : nsyscalls2 +#endif + ), + MAX_NSYSCALLS = MAX_NSYSCALLS2, + /* We are ready for arches with up to 255 signals, + * even though the largest known signo is on MIPS and it is 128. + * The number of existing syscalls on all arches is + * larger that 255 anyway, so it is just a pedantic matter. + */ + MIN_QUALS = MAX_NSYSCALLS > 255 ? MAX_NSYSCALLS : 255 +}; #if SUPPORTED_PERSONALITIES > 1 -int current_personality; +unsigned current_personality; -const int personality_wordsize[SUPPORTED_PERSONALITIES] = { +# ifndef current_wordsize +unsigned current_wordsize; +static const int personality_wordsize[SUPPORTED_PERSONALITIES] = { PERSONALITY0_WORDSIZE, PERSONALITY1_WORDSIZE, # if SUPPORTED_PERSONALITIES > 2 PERSONALITY2_WORDSIZE, # endif }; +# endif void set_personality(int personality) { + nsyscalls = nsyscall_vec[personality]; + sysent = sysent_vec[personality]; + switch (personality) { case 0: errnoent = errnoent0; nerrnos = nerrnos0; - sysent = sysent0; - nsyscalls = nsyscalls0; ioctlent = ioctlent0; nioctlents = nioctlents0; signalent = signalent0; nsignals = nsignals0; - qual_flags = qual_flags0; break; case 1: errnoent = errnoent1; nerrnos = nerrnos1; - sysent = sysent1; - nsyscalls = nsyscalls1; ioctlent = ioctlent1; nioctlents = nioctlents1; signalent = signalent1; nsignals = nsignals1; - qual_flags = qual_flags1; break; -# if SUPPORTED_PERSONALITIES >= 3 +# if SUPPORTED_PERSONALITIES > 2 case 2: errnoent = errnoent2; nerrnos = nerrnos2; - sysent = sysent2; - nsyscalls = nsyscalls2; ioctlent = ioctlent2; nioctlents = nioctlents2; signalent = signalent2; nsignals = nsignals2; - qual_flags = qual_flags2; break; # endif } current_personality = personality; +# ifndef current_wordsize + current_wordsize = personality_wordsize[personality]; +# endif } static void @@ -279,11 +364,23 @@ update_personality(struct tcb *tcp, int personality) fprintf(stderr, "[ Process PID=%d runs in %s mode. ]\n", tcp->pid, names[personality]); } +# elif defined(AARCH64) + if (!qflag) { + static const char *const names[] = {"32-bit", "AArch64"}; + fprintf(stderr, "[ Process PID=%d runs in %s mode. ]\n", + tcp->pid, names[personality]); + } +# elif defined(TILE) + if (!qflag) { + static const char *const names[] = {"64-bit", "32-bit"}; + fprintf(stderr, "[ Process PID=%d runs in %s mode. ]\n", + tcp->pid, names[personality]); + } # endif } #endif -static int qual_syscall(), qual_signal(), qual_fault(), qual_desc(); +static int qual_syscall(), qual_signal(), qual_desc(); static const struct qual_options { int bitflag; @@ -302,9 +399,6 @@ static const struct qual_options { { QUAL_SIGNAL, "signal", qual_signal, "signal" }, { QUAL_SIGNAL, "signals", qual_signal, "signal" }, { QUAL_SIGNAL, "s", qual_signal, "signal" }, - { QUAL_FAULT, "fault", qual_fault, "fault" }, - { QUAL_FAULT, "faults", qual_fault, "fault" }, - { QUAL_FAULT, "m", qual_fault, "fault" }, { QUAL_READ, "read", qual_desc, "descriptor" }, { QUAL_READ, "reads", qual_desc, "descriptor" }, { QUAL_READ, "r", qual_desc, "descriptor" }, @@ -314,72 +408,63 @@ static const struct qual_options { { 0, NULL, NULL, NULL }, }; +static void +reallocate_qual(int n) +{ + unsigned p; + qualbits_t *qp; + for (p = 0; p < SUPPORTED_PERSONALITIES; p++) { + qp = qual_vec[p] = realloc(qual_vec[p], n * sizeof(qualbits_t)); + if (!qp) + die_out_of_memory(); + memset(&qp[num_quals], 0, (n - num_quals) * sizeof(qualbits_t)); + } + num_quals = n; +} + static void qualify_one(int n, int bitflag, int not, int pers) { - if (pers == 0 || pers < 0) { - if (not) - qual_flags0[n] &= ~bitflag; - else - qual_flags0[n] |= bitflag; - } + unsigned p; -#if SUPPORTED_PERSONALITIES >= 2 - if (pers == 1 || pers < 0) { - if (not) - qual_flags1[n] &= ~bitflag; - else - qual_flags1[n] |= bitflag; - } -#endif + if (num_quals <= n) + reallocate_qual(n + 1); -#if SUPPORTED_PERSONALITIES >= 3 - if (pers == 2 || pers < 0) { - if (not) - qual_flags2[n] &= ~bitflag; - else - qual_flags2[n] |= bitflag; + for (p = 0; p < SUPPORTED_PERSONALITIES; p++) { + if (pers == p || pers < 0) { + if (not) + qual_vec[p][n] &= ~bitflag; + else + qual_vec[p][n] |= bitflag; + } } -#endif } static int qual_syscall(const char *s, int bitflag, int not) { - int i; + unsigned p; + unsigned i; int rc = -1; if (*s >= '0' && *s <= '9') { - int i = string_to_uint(s); - if (i < 0 || i >= MAX_QUALS) + i = string_to_uint(s); + if (i >= MAX_NSYSCALLS) return -1; qualify_one(i, bitflag, not, -1); return 0; } - for (i = 0; i < nsyscalls0; i++) - if (sysent0[i].sys_name && - strcmp(s, sysent0[i].sys_name) == 0) { - qualify_one(i, bitflag, not, 0); - rc = 0; - } - -#if SUPPORTED_PERSONALITIES >= 2 - for (i = 0; i < nsyscalls1; i++) - if (sysent1[i].sys_name && - strcmp(s, sysent1[i].sys_name) == 0) { - qualify_one(i, bitflag, not, 1); - rc = 0; - } -#endif -#if SUPPORTED_PERSONALITIES >= 3 - for (i = 0; i < nsyscalls2; i++) - if (sysent2[i].sys_name && - strcmp(s, sysent2[i].sys_name) == 0) { - qualify_one(i, bitflag, not, 2); - rc = 0; + for (p = 0; p < SUPPORTED_PERSONALITIES; p++) { + for (i = 0; i < nsyscall_vec[p]; i++) { + if (sysent_vec[p][i].sys_name + && strcmp(s, sysent_vec[p][i].sys_name) == 0 + ) { + qualify_one(i, bitflag, not, p); + rc = 0; + } } -#endif + } return rc; } @@ -391,7 +476,7 @@ qual_signal(const char *s, int bitflag, int not) if (*s >= '0' && *s <= '9') { int signo = string_to_uint(s); - if (signo < 0 || signo >= MAX_QUALS) + if (signo < 0 || signo > 255) return -1; qualify_one(signo, bitflag, not, -1); return 0; @@ -407,18 +492,12 @@ qual_signal(const char *s, int bitflag, int not) return -1; } -static int -qual_fault(const char *s, int bitflag, int not) -{ - return -1; -} - static int qual_desc(const char *s, int bitflag, int not) { if (*s >= '0' && *s <= '9') { int desc = string_to_uint(s); - if (desc < 0 || desc >= MAX_QUALS) + if (desc < 0 || desc > 0x7fff) /* paranoia */ return -1; qualify_one(desc, bitflag, not, -1); return 0; @@ -441,6 +520,8 @@ lookup_class(const char *s) return TRACE_SIGNAL; if (strcmp(s, "desc") == 0) return TRACE_DESC; + if (strcmp(s, "memory") == 0) + return TRACE_MEMORY; return -1; } @@ -453,6 +534,9 @@ qualify(const char *s) const char *p; int i, n; + if (num_quals == 0) + reallocate_qual(MIN_QUALS); + opt = &qual_options[0]; for (i = 0; (p = qual_options[i].option_name); i++) { n = strlen(p); @@ -472,12 +556,12 @@ qualify(const char *s) s = "all"; } if (strcmp(s, "all") == 0) { - for (i = 0; i < MAX_QUALS; i++) { + for (i = 0; i < num_quals; i++) { qualify_one(i, opt->bitflag, not, -1); } return; } - for (i = 0; i < MAX_QUALS; i++) { + for (i = 0; i < num_quals; i++) { qualify_one(i, opt->bitflag, !not, -1); } copy = strdup(s); @@ -485,22 +569,12 @@ qualify(const char *s) die_out_of_memory(); for (p = strtok(copy, ","); p; p = strtok(NULL, ",")) { if (opt->bitflag == QUAL_TRACE && (n = lookup_class(p)) > 0) { - for (i = 0; i < nsyscalls0; i++) - if (sysent0[i].sys_flags & n) - qualify_one(i, opt->bitflag, not, 0); - -#if SUPPORTED_PERSONALITIES >= 2 - for (i = 0; i < nsyscalls1; i++) - if (sysent1[i].sys_flags & n) - qualify_one(i, opt->bitflag, not, 1); -#endif - -#if SUPPORTED_PERSONALITIES >= 3 - for (i = 0; i < nsyscalls2; i++) - if (sysent2[i].sys_flags & n) - qualify_one(i, opt->bitflag, not, 2); -#endif - + unsigned pers; + for (pers = 0; pers < SUPPORTED_PERSONALITIES; pers++) { + for (i = 0; i < nsyscall_vec[pers]; i++) + if (sysent_vec[pers][i].sys_flags & n) + qualify_one(i, opt->bitflag, not, pers); + } continue; } if (opt->qualify(p, opt->bitflag, not)) { @@ -517,16 +591,18 @@ static void decode_socket_subcall(struct tcb *tcp) { unsigned long addr; - unsigned int i, size; + unsigned int i, n, size; if (tcp->u_arg[0] < 0 || tcp->u_arg[0] >= SYS_socket_nsubcalls) return; tcp->scno = SYS_socket_subcall + tcp->u_arg[0]; + tcp->qual_flg = qual_flags[tcp->scno]; + tcp->s_ent = &sysent[tcp->scno]; addr = tcp->u_arg[1]; - tcp->u_nargs = sysent[tcp->scno].nargs; size = current_wordsize; - for (i = 0; i < tcp->u_nargs; ++i) { + n = tcp->s_ent->nargs; + for (i = 0; i < n; ++i) { if (size == sizeof(int)) { unsigned int arg; if (umove(tcp, addr, &arg) < 0) @@ -548,14 +624,16 @@ decode_socket_subcall(struct tcb *tcp) static void decode_ipc_subcall(struct tcb *tcp) { - unsigned int i; + unsigned int i, n; if (tcp->u_arg[0] < 0 || tcp->u_arg[0] >= SYS_ipc_nsubcalls) return; tcp->scno = SYS_ipc_subcall + tcp->u_arg[0]; - tcp->u_nargs = sysent[tcp->scno].nargs; - for (i = 0; i < tcp->u_nargs; i++) + tcp->qual_flg = qual_flags[tcp->scno]; + tcp->s_ent = &sysent[tcp->scno]; + n = tcp->s_ent->nargs; + for (i = 0; i < n; i++) tcp->u_arg[i] = tcp->u_arg[i + 1]; } #endif @@ -565,8 +643,8 @@ printargs(struct tcb *tcp) { if (entering(tcp)) { int i; - - for (i = 0; i < tcp->u_nargs; i++) + int n = tcp->s_ent->nargs; + for (i = 0; i < n; i++) tprintf("%s%#lx", i ? ", " : "", tcp->u_arg[i]); } return 0; @@ -577,8 +655,8 @@ printargs_lu(struct tcb *tcp) { if (entering(tcp)) { int i; - - for (i = 0; i < tcp->u_nargs; i++) + int n = tcp->s_ent->nargs; + for (i = 0; i < n; i++) tprintf("%s%lu", i ? ", " : "", tcp->u_arg[i]); } return 0; @@ -589,33 +667,32 @@ printargs_ld(struct tcb *tcp) { if (entering(tcp)) { int i; - - for (i = 0; i < tcp->u_nargs; i++) + int n = tcp->s_ent->nargs; + for (i = 0; i < n; i++) tprintf("%s%ld", i ? ", " : "", tcp->u_arg[i]); } return 0; } +#if defined(SPARC) || defined(SPARC64) || defined(IA64) || defined(SH) long getrval2(struct tcb *tcp) { - long val = -1; + long val; -#if defined(SPARC) || defined(SPARC64) - struct pt_regs regs; - if (ptrace(PTRACE_GETREGS, tcp->pid, (char *)®s, 0) < 0) - return -1; - val = regs.u_regs[U_REG_O1]; -#elif defined(SH) +# if defined(SPARC) || defined(SPARC64) + val = sparc_regs.u_regs[U_REG_O1]; +# elif defined(SH) if (upeek(tcp, 4*(REG_REG0+1), &val) < 0) return -1; -#elif defined(IA64) +# elif defined(IA64) if (upeek(tcp, PT_R9, &val) < 0) return -1; -#endif +# endif return val; } +#endif int is_restart_error(struct tcb *tcp) @@ -633,56 +710,397 @@ is_restart_error(struct tcb *tcp) } #if defined(I386) -struct pt_regs i386_regs; +struct user_regs_struct i386_regs; +# define ARCH_REGS_FOR_GETREGSET i386_regs #elif defined(X86_64) || defined(X32) /* - * On 32 bits, pt_regs and user_regs_struct are the same, - * but on 64 bits, user_regs_struct has six more fields: + * On i386, pt_regs and user_regs_struct are the same, + * but on 64 bit x86, user_regs_struct has six more fields: * fs_base, gs_base, ds, es, fs, gs. * PTRACE_GETREGS fills them too, so struct pt_regs would overflow. */ -static struct user_regs_struct x86_64_regs; +struct i386_user_regs_struct { + uint32_t ebx; + uint32_t ecx; + uint32_t edx; + uint32_t esi; + uint32_t edi; + uint32_t ebp; + uint32_t eax; + uint32_t xds; + uint32_t xes; + uint32_t xfs; + uint32_t xgs; + uint32_t orig_eax; + uint32_t eip; + uint32_t xcs; + uint32_t eflags; + uint32_t esp; + uint32_t xss; +}; +static union { + struct user_regs_struct x86_64_r; + struct i386_user_regs_struct i386_r; +} x86_regs_union; +# define x86_64_regs x86_regs_union.x86_64_r +# define i386_regs x86_regs_union.i386_r +static struct iovec x86_io = { + .iov_base = &x86_regs_union +}; #elif defined(IA64) -long r8, r10, psr; /* TODO: make static? */ long ia32 = 0; /* not static */ +static long ia64_r8, ia64_r10; #elif defined(POWERPC) static long ppc_result; #elif defined(M68K) -static long d0; +static long m68k_d0; #elif defined(BFIN) -static long r0; +static long bfin_r0; #elif defined(ARM) -static struct pt_regs regs; +struct pt_regs arm_regs; /* not static */ +# define ARCH_REGS_FOR_GETREGSET arm_regs +#elif defined(AARCH64) +static union { + struct user_pt_regs aarch64_r; + struct arm_pt_regs arm_r; +} arm_regs_union; +# define aarch64_regs arm_regs_union.aarch64_r +# define arm_regs arm_regs_union.arm_r +static struct iovec aarch64_io = { + .iov_base = &arm_regs_union +}; #elif defined(ALPHA) -static long r0; -static long a3; +static long alpha_r0; +static long alpha_a3; #elif defined(AVR32) -static struct pt_regs regs; +static struct pt_regs avr32_regs; #elif defined(SPARC) || defined(SPARC64) -static struct pt_regs regs; -static unsigned long trap; +struct pt_regs sparc_regs; /* not static */ #elif defined(LINUX_MIPSN32) -static long long a3; -static long long r2; +static long long mips_a3; +static long long mips_r2; #elif defined(MIPS) -static long a3; -static long r2; +static long mips_a3; +static long mips_r2; #elif defined(S390) || defined(S390X) static long gpr2; -static long pc; static long syscall_mode; #elif defined(HPPA) -static long r28; +static long hppa_r28; #elif defined(SH) -static long r0; +static long sh_r0; #elif defined(SH64) -static long r9; +static long sh64_r9; #elif defined(CRISV10) || defined(CRISV32) -static long r10; +static long cris_r10; +#elif defined(TILE) +struct pt_regs tile_regs; #elif defined(MICROBLAZE) -static long r3; +static long microblaze_r3; +#elif defined(OR1K) +static struct user_regs_struct or1k_regs; +# define ARCH_REGS_FOR_GETREGSET or1k_regs +#elif defined(METAG) +static struct user_gp_regs metag_regs; +# define ARCH_REGS_FOR_GETREGSET metag_regs +#elif defined(XTENSA) +static long xtensa_a2; +#endif + +void +printcall(struct tcb *tcp) +{ +#define PRINTBADPC tprintf(sizeof(long) == 4 ? "[????????] " : \ + sizeof(long) == 8 ? "[????????????????] " : \ + NULL /* crash */) + if (get_regs_error) { + PRINTBADPC; + return; + } +#if defined(I386) + tprintf("[%08lx] ", i386_regs.eip); +#elif defined(S390) || defined(S390X) + long psw; + if (upeek(tcp, PT_PSWADDR, &psw) < 0) { + PRINTBADPC; + return; + } +# ifdef S390 + tprintf("[%08lx] ", psw); +# elif S390X + tprintf("[%016lx] ", psw); +# endif +#elif defined(X86_64) || defined(X32) + if (x86_io.iov_len == sizeof(i386_regs)) { + tprintf("[%08x] ", (unsigned) i386_regs.eip); + } else { +# if defined(X86_64) + tprintf("[%016lx] ", (unsigned long) x86_64_regs.rip); +# elif defined(X32) + /* Note: this truncates 64-bit rip to 32 bits */ + tprintf("[%08lx] ", (unsigned long) x86_64_regs.rip); +# endif + } +#elif defined(IA64) + long ip; + if (upeek(tcp, PT_B0, &ip) < 0) { + PRINTBADPC; + return; + } + tprintf("[%08lx] ", ip); +#elif defined(POWERPC) + long pc; + if (upeek(tcp, sizeof(unsigned long)*PT_NIP, &pc) < 0) { + PRINTBADPC; + return; + } +# ifdef POWERPC64 + tprintf("[%016lx] ", pc); +# else + tprintf("[%08lx] ", pc); +# endif +#elif defined(M68K) + long pc; + if (upeek(tcp, 4*PT_PC, &pc) < 0) { + tprints("[????????] "); + return; + } + tprintf("[%08lx] ", pc); +#elif defined(ALPHA) + long pc; + if (upeek(tcp, REG_PC, &pc) < 0) { + tprints("[????????????????] "); + return; + } + tprintf("[%08lx] ", pc); +#elif defined(SPARC) + tprintf("[%08lx] ", sparc_regs.pc); +#elif defined(SPARC64) + tprintf("[%08lx] ", sparc_regs.tpc); +#elif defined(HPPA) + long pc; + if (upeek(tcp, PT_IAOQ0, &pc) < 0) { + tprints("[????????] "); + return; + } + tprintf("[%08lx] ", pc); +#elif defined(MIPS) + long pc; + if (upeek(tcp, REG_EPC, &pc) < 0) { + tprints("[????????] "); + return; + } + tprintf("[%08lx] ", pc); +#elif defined(SH) + long pc; + if (upeek(tcp, 4*REG_PC, &pc) < 0) { + tprints("[????????] "); + return; + } + tprintf("[%08lx] ", pc); +#elif defined(SH64) + long pc; + if (upeek(tcp, REG_PC, &pc) < 0) { + tprints("[????????????????] "); + return; + } + tprintf("[%08lx] ", pc); +#elif defined(ARM) + tprintf("[%08lx] ", arm_regs.ARM_pc); +#elif defined(AARCH64) + /* tprintf("[%016lx] ", aarch64_regs.regs[???]); */ +#elif defined(AVR32) + tprintf("[%08lx] ", avr32_regs.pc); +#elif defined(BFIN) + long pc; + if (upeek(tcp, PT_PC, &pc) < 0) { + PRINTBADPC; + return; + } + tprintf("[%08lx] ", pc); +#elif defined(CRISV10) + long pc; + if (upeek(tcp, 4*PT_IRP, &pc) < 0) { + PRINTBADPC; + return; + } + tprintf("[%08lx] ", pc); +#elif defined(CRISV32) + long pc; + if (upeek(tcp, 4*PT_ERP, &pc) < 0) { + PRINTBADPC; + return; + } + tprintf("[%08lx] ", pc); +#elif defined(TILE) +# ifdef _LP64 + tprintf("[%016lx] ", (unsigned long) tile_regs.pc); +# else + tprintf("[%08lx] ", (unsigned long) tile_regs.pc); +# endif +#elif defined(OR1K) + tprintf("[%08lx] ", or1k_regs.pc); +#elif defined(METAG) + tprintf("[%08lx] ", metag_regs.pc); +#elif defined(XTENSA) + long pc; + if (upeek(tcp, REG_PC, &pc) < 0) { + PRINTBADPC; + return; + } + tprintf("[%08lx] ", pc); +#endif /* architecture */ +} + +/* Shuffle syscall numbers so that we don't have huge gaps in syscall table. + * The shuffling should be reversible: shuffle_scno(shuffle_scno(n)) == n. + */ +#if defined(ARM) /* So far only ARM needs this */ +static long +shuffle_scno(unsigned long scno) +{ + if (scno <= ARM_LAST_ORDINARY_SYSCALL) + return scno; + + /* __ARM_NR_cmpxchg? Swap with LAST_ORDINARY+1 */ + if (scno == 0x000ffff0) + return ARM_LAST_ORDINARY_SYSCALL+1; + if (scno == ARM_LAST_ORDINARY_SYSCALL+1) + return 0x000ffff0; + + /* Is it ARM specific syscall? + * Swap with [LAST_ORDINARY+2, LAST_ORDINARY+2 + LAST_SPECIAL] range. + */ + if (scno >= 0x000f0000 + && scno <= 0x000f0000 + ARM_LAST_SPECIAL_SYSCALL + ) { + return scno - 0x000f0000 + (ARM_LAST_ORDINARY_SYSCALL+2); + } + if (/* scno >= ARM_LAST_ORDINARY_SYSCALL+2 - always true */ 1 + && scno <= (ARM_LAST_ORDINARY_SYSCALL+2) + ARM_LAST_SPECIAL_SYSCALL + ) { + return scno + 0x000f0000 - (ARM_LAST_ORDINARY_SYSCALL+2); + } + + return scno; +} +#else +# define shuffle_scno(scno) ((long)(scno)) #endif +static char* +undefined_scno_name(struct tcb *tcp) +{ + static char buf[sizeof("syscall_%lu") + sizeof(long)*3]; + + sprintf(buf, "syscall_%lu", shuffle_scno(tcp->scno)); + return buf; +} + +#ifndef get_regs +long get_regs_error; + +#if defined(PTRACE_GETREGSET) && defined(NT_PRSTATUS) +static void get_regset(pid_t pid) +{ +/* constant iovec */ +# if defined(ARM) \ + || defined(I386) \ + || defined(METAG) \ + || defined(OR1K) + static struct iovec io = { + .iov_base = &ARCH_REGS_FOR_GETREGSET, + .iov_len = sizeof(ARCH_REGS_FOR_GETREGSET) + }; + get_regs_error = ptrace(PTRACE_GETREGSET, pid, NT_PRSTATUS, &io); + +/* variable iovec */ +# elif defined(X86_64) || defined(X32) + /* x86_io.iov_base = &x86_regs_union; - already is */ + x86_io.iov_len = sizeof(x86_regs_union); + get_regs_error = ptrace(PTRACE_GETREGSET, pid, NT_PRSTATUS, &x86_io); +# elif defined(AARCH64) + /* aarch64_io.iov_base = &arm_regs_union; - already is */ + aarch64_io.iov_len = sizeof(arm_regs_union); + get_regs_error = ptrace(PTRACE_GETREGSET, pid, NT_PRSTATUS, &aarch64_io); +# else +# warning both PTRACE_GETREGSET and NT_PRSTATUS are available but not yet used +# endif +} +#endif /* PTRACE_GETREGSET && NT_PRSTATUS */ + +void +get_regs(pid_t pid) +{ +/* PTRACE_GETREGSET only */ +# if defined(METAG) || defined(OR1K) || defined(X32) || defined(AARCH64) + get_regset(pid); + +/* PTRACE_GETREGS only */ +# elif defined(AVR32) + get_regs_error = ptrace(PTRACE_GETREGS, pid, NULL, &avr32_regs); +# elif defined(TILE) + get_regs_error = ptrace(PTRACE_GETREGS, pid, NULL, &tile_regs); +# elif defined(SPARC) || defined(SPARC64) + get_regs_error = ptrace(PTRACE_GETREGS, pid, (char *)&sparc_regs, 0); + +/* try PTRACE_GETREGSET first, fallback to PTRACE_GETREGS */ +# else +# if defined(PTRACE_GETREGSET) && defined(NT_PRSTATUS) + static int getregset_support; + + if (getregset_support >= 0) { + get_regset(pid); + if (getregset_support > 0) + return; + if (get_regs_error >= 0) { + getregset_support = 1; + return; + } + if (errno == EPERM || errno == ESRCH) + return; + getregset_support = -1; + } +# endif /* PTRACE_GETREGSET && NT_PRSTATUS */ +# if defined(ARM) + get_regs_error = ptrace(PTRACE_GETREGS, pid, NULL, &arm_regs); +# elif defined(I386) + get_regs_error = ptrace(PTRACE_GETREGS, pid, NULL, &i386_regs); +# elif defined(X86_64) + /* Use old method, with unreliable heuristical detection of 32-bitness. */ + x86_io.iov_len = sizeof(x86_64_regs); + get_regs_error = ptrace(PTRACE_GETREGS, pid, NULL, &x86_64_regs); + if (!get_regs_error && x86_64_regs.cs == 0x23) { + x86_io.iov_len = sizeof(i386_regs); + /* + * The order is important: i386_regs and x86_64_regs + * are overlaid in memory! + */ + i386_regs.ebx = x86_64_regs.rbx; + i386_regs.ecx = x86_64_regs.rcx; + i386_regs.edx = x86_64_regs.rdx; + i386_regs.esi = x86_64_regs.rsi; + i386_regs.edi = x86_64_regs.rdi; + i386_regs.ebp = x86_64_regs.rbp; + i386_regs.eax = x86_64_regs.rax; + /* i386_regs.xds = x86_64_regs.ds; unused by strace */ + /* i386_regs.xes = x86_64_regs.es; ditto... */ + /* i386_regs.xfs = x86_64_regs.fs; */ + /* i386_regs.xgs = x86_64_regs.gs; */ + i386_regs.orig_eax = x86_64_regs.orig_rax; + i386_regs.eip = x86_64_regs.rip; + /* i386_regs.xcs = x86_64_regs.cs; */ + /* i386_regs.eflags = x86_64_regs.eflags; */ + i386_regs.esp = x86_64_regs.rsp; + /* i386_regs.xss = x86_64_regs.ss; */ + } +# else +# error unhandled architecture +# endif /* ARM || I386 || X86_64 */ +# endif +} +#endif /* !get_regs */ + /* Returns: * 0: "ignore this ptrace stop", bail out of trace_syscall_entering() silently. * 1: ok, continue in trace_syscall_entering(). @@ -707,6 +1125,7 @@ get_scno(struct tcb *tcp) /* * Old style of "passing" the scno via the SVC instruction. */ + long psw; long opcode, offset_reg, tmp; void *svc_addr; static const int gpr_offset[16] = { @@ -716,12 +1135,12 @@ get_scno(struct tcb *tcp) PT_GPR12, PT_GPR13, PT_GPR14, PT_GPR15 }; - if (upeek(tcp, PT_PSWADDR, &pc) < 0) + if (upeek(tcp, PT_PSWADDR, &psw) < 0) return -1; errno = 0; - opcode = ptrace(PTRACE_PEEKTEXT, tcp->pid, (char *)(pc-sizeof(long)), 0); + opcode = ptrace(PTRACE_PEEKTEXT, tcp->pid, (char *)(psw - sizeof(long)), 0); if (errno) { - perror("peektext(pc-oneword)"); + perror_msg("peektext(psw-oneword)"); return -1; } @@ -796,42 +1215,50 @@ get_scno(struct tcb *tcp) update_personality(tcp, currpers); # endif #elif defined(AVR32) - /* Read complete register set in one go. */ - if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, ®s) < 0) - return -1; - scno = regs.r8; + scno = avr32_regs.r8; #elif defined(BFIN) if (upeek(tcp, PT_ORIG_P0, &scno)) return -1; #elif defined(I386) - if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, (long) &i386_regs) < 0) - return -1; scno = i386_regs.orig_eax; #elif defined(X86_64) || defined(X32) # ifndef __X32_SYSCALL_BIT # define __X32_SYSCALL_BIT 0x40000000 # endif -# ifndef __X32_SYSCALL_MASK -# define __X32_SYSCALL_MASK __X32_SYSCALL_BIT -# endif - int currpers; - if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, (long) &x86_64_regs) < 0) - return -1; - scno = x86_64_regs.orig_rax; - - /* Check CS register value. On x86-64 linux it is: - * 0x33 for long mode (64 bit) - * 0x23 for compatibility mode (32 bit) - * Check DS register value. On x86-64 linux it is: - * 0x2b for x32 mode (x86-64 in 32 bit) +# if 1 + /* GETREGSET of NT_PRSTATUS tells us regset size, + * which unambiguously detects i386. + * + * Linux kernel distinguishes x86-64 and x32 processes + * solely by looking at __X32_SYSCALL_BIT: + * arch/x86/include/asm/compat.h::is_x32_task(): + * if (task_pt_regs(current)->orig_ax & __X32_SYSCALL_BIT) + * return true; + */ + if (x86_io.iov_len == sizeof(i386_regs)) { + scno = i386_regs.orig_eax; + currpers = 1; + } else { + scno = x86_64_regs.orig_rax; + currpers = 0; + if (scno & __X32_SYSCALL_BIT) { + scno -= __X32_SYSCALL_BIT; + currpers = 2; + } + } +# elif 0 + /* cs = 0x33 for long mode (native 64 bit and x32) + * cs = 0x23 for compatibility mode (32 bit) + * ds = 0x2b for x32 mode (x86-64 in 32 bit) */ + scno = x86_64_regs.orig_rax; switch (x86_64_regs.cs) { case 0x23: currpers = 1; break; case 0x33: if (x86_64_regs.ds == 0x2b) { currpers = 2; - scno &= ~__X32_SYSCALL_MASK; + scno &= ~__X32_SYSCALL_BIT; } else currpers = 0; break; @@ -842,19 +1269,15 @@ get_scno(struct tcb *tcp) currpers = current_personality; break; } -# if 0 +# elif 0 /* This version analyzes the opcode of a syscall instruction. * (int 0x80 on i386 vs. syscall on x86-64) - * It works, but is too complicated. + * It works, but is too complicated, and strictly speaking, unreliable. */ - unsigned long val, rip, i; - - rip = x86_64_regs.rip; - + unsigned long call, rip = x86_64_regs.rip; /* sizeof(syscall) == sizeof(int 0x80) == 2 */ rip -= 2; errno = 0; - call = ptrace(PTRACE_PEEKTEXT, tcp->pid, (char *)rip, (char *)0); if (errno) fprintf(stderr, "ptrace_peektext failed: %s\n", @@ -873,28 +1296,24 @@ get_scno(struct tcb *tcp) break; } # endif + # ifdef X32 - /* Value of currpers: - * 0: 64 bit - * 1: 32 bit - * 2: X32 - * Value of current_personality: - * 0: X32 - * 1: 32 bit + /* If we are built for a x32 system, then personality 0 is x32 + * (not x86_64), and stracing of x86_64 apps is not supported. + * Stracing of i386 apps is still supported. */ - switch (currpers) { - case 0: - fprintf(stderr, "syscall_%lu (...) in unsupported " - "64-bit mode of process PID=%d\n", - scno, tcp->pid); - return 0; - case 2: - currpers = 0; + if (currpers == 0) { + fprintf(stderr, "syscall_%lu(...) in unsupported " + "64-bit mode of process PID=%d\n", + scno, tcp->pid); + return 0; } + currpers &= ~2; /* map 2,1 to 0,1 */ # endif update_personality(tcp, currpers); #elif defined(IA64) # define IA64_PSR_IS ((long)1 << 34) + long psr; if (upeek(tcp, PT_CR_IPSR, &psr) >= 0) ia32 = (psr & IA64_PSR_IS) != 0; if (ia32) { @@ -904,65 +1323,53 @@ get_scno(struct tcb *tcp) if (upeek(tcp, PT_R15, &scno) < 0) return -1; } +#elif defined(AARCH64) + switch (aarch64_io.iov_len) { + case sizeof(aarch64_regs): + /* We are in 64-bit mode */ + scno = aarch64_regs.regs[8]; + update_personality(tcp, 1); + break; + case sizeof(arm_regs): + /* We are in 32-bit mode */ + scno = arm_regs.ARM_r7; + update_personality(tcp, 0); + break; + } #elif defined(ARM) - /* Read complete register set in one go. */ - if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, (void *)®s) == -1) - return -1; + if (arm_regs.ARM_ip != 0) { + /* It is not a syscall entry */ + fprintf(stderr, "pid %d stray syscall exit\n", tcp->pid); + tcp->flags |= TCB_INSYSCALL; + return 0; + } + /* Note: we support only 32-bit CPUs, not 26-bit */ - /* - * We only need to grab the syscall number on syscall entry. - */ - if (regs.ARM_ip == 0) { - /* - * Note: we only deal with only 32-bit CPUs here. - */ - if (regs.ARM_cpsr & 0x20) { - /* - * Get the Thumb-mode system call number - */ - scno = regs.ARM_r7; + if (arm_regs.ARM_cpsr & 0x20) { + /* Thumb mode */ + scno = arm_regs.ARM_r7; + } else { + /* ARM mode */ + errno = 0; + scno = ptrace(PTRACE_PEEKTEXT, tcp->pid, (void *)(arm_regs.ARM_pc - 4), NULL); + if (errno) + return -1; + + /* EABI syscall convention? */ + if (scno == 0xef000000) { + scno = arm_regs.ARM_r7; /* yes */ } else { - /* - * Get the ARM-mode system call number - */ - errno = 0; - scno = ptrace(PTRACE_PEEKTEXT, tcp->pid, (void *)(regs.ARM_pc - 4), NULL); - if (errno) + if ((scno & 0x0ff00000) != 0x0f900000) { + fprintf(stderr, "pid %d unknown syscall trap 0x%08lx\n", + tcp->pid, scno); return -1; - - /* Handle the EABI syscall convention. We do not - bother converting structures between the two - ABIs, but basic functionality should work even - if strace and the traced program have different - ABIs. */ - if (scno == 0xef000000) { - scno = regs.ARM_r7; - } else { - if ((scno & 0x0ff00000) != 0x0f900000) { - fprintf(stderr, "syscall: unknown syscall trap 0x%08lx\n", - scno); - return -1; - } - - /* - * Fixup the syscall number - */ - scno &= 0x000fffff; } + /* Fixup the syscall number */ + scno &= 0x000fffff; } - if (scno & 0x0f0000) { - /* - * Handle ARM specific syscall - */ - update_personality(tcp, 1); - scno &= 0x0000ffff; - } else - update_personality(tcp, 0); - - } else { - fprintf(stderr, "pid %d stray syscall entry\n", tcp->pid); - tcp->flags |= TCB_INSYSCALL; } + + scno = shuffle_scno(scno); #elif defined(M68K) if (upeek(tcp, 4*PT_ORIG_D0, &scno) < 0) return -1; @@ -971,32 +1378,32 @@ get_scno(struct tcb *tcp) if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, (long) ®s) < 0) return -1; - a3 = regs[REG_A3]; - r2 = regs[REG_V0]; + mips_a3 = regs[REG_A3]; + mips_r2 = regs[REG_V0]; - scno = r2; + scno = mips_r2; if (!SCNO_IN_RANGE(scno)) { - if (a3 == 0 || a3 == -1) { + if (mips_a3 == 0 || mips_a3 == -1) { if (debug_flag) fprintf(stderr, "stray syscall exit: v0 = %ld\n", scno); return 0; } } #elif defined(MIPS) - if (upeek(tcp, REG_A3, &a3) < 0) + if (upeek(tcp, REG_A3, &mips_a3) < 0) return -1; if (upeek(tcp, REG_V0, &scno) < 0) return -1; if (!SCNO_IN_RANGE(scno)) { - if (a3 == 0 || a3 == -1) { + if (mips_a3 == 0 || mips_a3 == -1) { if (debug_flag) fprintf(stderr, "stray syscall exit: v0 = %ld\n", scno); return 0; } } #elif defined(ALPHA) - if (upeek(tcp, REG_A3, &a3) < 0) + if (upeek(tcp, REG_A3, &alpha_a3) < 0) return -1; if (upeek(tcp, REG_R0, &scno) < 0) return -1; @@ -1006,25 +1413,22 @@ get_scno(struct tcb *tcp) * really a syscall entry */ if (!SCNO_IN_RANGE(scno)) { - if (a3 == 0 || a3 == -1) { + if (alpha_a3 == 0 || alpha_a3 == -1) { if (debug_flag) fprintf(stderr, "stray syscall exit: r0 = %ld\n", scno); return 0; } } #elif defined(SPARC) || defined(SPARC64) - /* Everything we need is in the current register set. */ - if (ptrace(PTRACE_GETREGS, tcp->pid, (char *)®s, 0) < 0) - return -1; - /* Disassemble the syscall trap. */ /* Retrieve the syscall trap instruction. */ + unsigned long trap; errno = 0; # if defined(SPARC64) - trap = ptrace(PTRACE_PEEKTEXT, tcp->pid, (char *)regs.tpc, 0); + trap = ptrace(PTRACE_PEEKTEXT, tcp->pid, (char *)sparc_regs.tpc, 0); trap >>= 32; # else - trap = ptrace(PTRACE_PEEKTEXT, tcp->pid, (char *)regs.pc, 0); + trap = ptrace(PTRACE_PEEKTEXT, tcp->pid, (char *)sparc_regs.pc, 0); # endif if (errno) return -1; @@ -1057,9 +1461,9 @@ get_scno(struct tcb *tcp) break; default: # if defined(SPARC64) - fprintf(stderr, "syscall: unknown syscall trap %08lx %016lx\n", trap, regs.tpc); + fprintf(stderr, "syscall: unknown syscall trap %08lx %016lx\n", trap, sparc_regs.tpc); # else - fprintf(stderr, "syscall: unknown syscall trap %08lx %08lx\n", trap, regs.pc); + fprintf(stderr, "syscall: unknown syscall trap %08lx %08lx\n", trap, sparc_regs.pc); # endif return -1; } @@ -1068,10 +1472,10 @@ get_scno(struct tcb *tcp) if (trap == 0x91d02027) scno = 156; else - scno = regs.u_regs[U_REG_G1]; + scno = sparc_regs.u_regs[U_REG_G1]; if (scno == 0) { - scno = regs.u_regs[U_REG_O0]; - memmove(®s.u_regs[U_REG_O0], ®s.u_regs[U_REG_O1], 7*sizeof(regs.u_regs[0])); + scno = sparc_regs.u_regs[U_REG_O0]; + memmove(&sparc_regs.u_regs[U_REG_O0], &sparc_regs.u_regs[U_REG_O1], 7*sizeof(sparc_regs.u_regs[0])); } #elif defined(HPPA) if (upeek(tcp, PT_GR20, &scno) < 0) @@ -1104,24 +1508,46 @@ get_scno(struct tcb *tcp) if (upeek(tcp, 4*PT_R9, &scno) < 0) return -1; #elif defined(TILE) - if (upeek(tcp, PTREGS_OFFSET_REG(10), &scno) < 0) - return -1; + int currpers; + scno = tile_regs.regs[10]; +# ifdef __tilepro__ + currpers = 1; +# else +# ifndef PT_FLAGS_COMPAT +# define PT_FLAGS_COMPAT 0x10000 /* from Linux 3.8 on */ +# endif + if (tile_regs.flags & PT_FLAGS_COMPAT) + currpers = 1; + else + currpers = 0; +# endif + update_personality(tcp, currpers); #elif defined(MICROBLAZE) if (upeek(tcp, 0, &scno) < 0) return -1; -#endif - -#if defined(SH) - /* new syscall ABI returns result in R0 */ - if (upeek(tcp, 4*REG_REG0, (long *)&r0) < 0) - return -1; -#elif defined(SH64) - /* ABI defines result returned in r9 */ - if (upeek(tcp, REG_GENERAL(9), (long *)&r9) < 0) +#elif defined(OR1K) + scno = or1k_regs.gpr[11]; +#elif defined(METAG) + scno = metag_regs.dx[0][1]; /* syscall number in D1Re0 (D1.0) */ +#elif defined(XTENSA) + if (upeek(tcp, SYSCALL_NR, &scno) < 0) return -1; #endif tcp->scno = scno; + if (SCNO_IS_VALID(tcp->scno)) { + tcp->s_ent = &sysent[scno]; + tcp->qual_flg = qual_flags[scno]; + } else { + static const struct_sysent unknown = { + .nargs = MAX_ARGS, + .sys_flags = 0, + .sys_func = printargs, + .sys_name = "unknown", /* not used */ + }; + tcp->s_ent = &unknown; + tcp->qual_flg = UNDEFINED_SCNO | QUAL_RAW | DEFAULT_QUAL_FLAGS; + } return 1; } @@ -1144,9 +1570,14 @@ syscall_fixup_on_sysenter(struct tcb *tcp) } #elif defined(X86_64) || defined(X32) { - long rax = x86_64_regs.rax; - if (current_personality == 1) - rax = (int)rax; /* sign extend from 32 bits */ + long rax; + if (x86_io.iov_len == sizeof(i386_regs)) { + /* Sign extend from 32 bits */ + rax = (int32_t)i386_regs.eax; + } else { + /* Note: in X32 build, this truncates 64 to 32 bits */ + rax = x86_64_regs.rax; + } if (rax != -ENOSYS) { if (debug_flag) fprintf(stderr, "not a syscall entry (rax = %ld)\n", rax); @@ -1169,37 +1600,37 @@ syscall_fixup_on_sysenter(struct tcb *tcp) } #elif defined(M68K) /* TODO? Eliminate upeek's in arches below like we did in x86 */ - if (upeek(tcp, 4*PT_D0, &d0) < 0) + if (upeek(tcp, 4*PT_D0, &m68k_d0) < 0) return -1; - if (d0 != -ENOSYS) { + if (m68k_d0 != -ENOSYS) { if (debug_flag) - fprintf(stderr, "not a syscall entry (d0 = %ld)\n", d0); + fprintf(stderr, "not a syscall entry (d0 = %ld)\n", m68k_d0); return 0; } #elif defined(IA64) - if (upeek(tcp, PT_R10, &r10) < 0) + if (upeek(tcp, PT_R10, &ia64_r10) < 0) return -1; - if (upeek(tcp, PT_R8, &r8) < 0) + if (upeek(tcp, PT_R8, &ia64_r8) < 0) return -1; - if (ia32 && r8 != -ENOSYS) { + if (ia32 && ia64_r8 != -ENOSYS) { if (debug_flag) - fprintf(stderr, "not a syscall entry (r8 = %ld)\n", r8); + fprintf(stderr, "not a syscall entry (r8 = %ld)\n", ia64_r8); return 0; } #elif defined(CRISV10) || defined(CRISV32) - if (upeek(tcp, 4*PT_R10, &r10) < 0) + if (upeek(tcp, 4*PT_R10, &cris_r10) < 0) return -1; - if (r10 != -ENOSYS) { + if (cris_r10 != -ENOSYS) { if (debug_flag) - fprintf(stderr, "not a syscall entry (r10 = %ld)\n", r10); + fprintf(stderr, "not a syscall entry (r10 = %ld)\n", cris_r10); return 0; } #elif defined(MICROBLAZE) - if (upeek(tcp, 3 * 4, &r3) < 0) + if (upeek(tcp, 3 * 4, µblaze_r3) < 0) return -1; - if (r3 != -ENOSYS) { + if (microblaze_r3 != -ENOSYS) { if (debug_flag) - fprintf(stderr, "not a syscall entry (r3 = %ld)\n", r3); + fprintf(stderr, "not a syscall entry (r3 = %ld)\n", microblaze_r3); return 0; } #endif @@ -1231,8 +1662,9 @@ internal_fork(struct tcb *tcp) * CLONE_UNTRACED, so we keep the same logic with that option * and don't trace it. */ - if ((sysent[tcp->scno].sys_func == sys_clone) && - (tcp->u_arg[ARG_FLAGS] & CLONE_UNTRACED)) + if ((tcp->s_ent->sys_func == sys_clone) + && (tcp->u_arg[ARG_FLAGS] & CLONE_UNTRACED) + ) return; setbpt(tcp); } else { @@ -1258,7 +1690,7 @@ internal_exec(struct tcb *tcp) #endif static void -internal_syscall(struct tcb *tcp) +syscall_fixup_for_fork_exec(struct tcb *tcp) { /* * We must always trace a few critical system calls in order to @@ -1267,10 +1699,7 @@ internal_syscall(struct tcb *tcp) */ int (*func)(); - if (!SCNO_IN_RANGE(tcp->scno)) - return; - - func = sysent[tcp->scno].sys_func; + func = tcp->s_ent->sys_func; if ( sys_fork == func || sys_vfork == func @@ -1298,10 +1727,7 @@ get_syscall_args(struct tcb *tcp) { int i, nargs; - if (SCNO_IN_RANGE(tcp->scno)) - nargs = tcp->u_nargs = sysent[tcp->scno].nargs; - else - nargs = tcp->u_nargs = MAX_ARGS; + nargs = tcp->s_ent->nargs; #if defined(S390) || defined(S390X) for (i = 0; i < nargs; ++i) @@ -1391,23 +1817,29 @@ get_syscall_args(struct tcb *tcp) } #elif defined(SPARC) || defined(SPARC64) for (i = 0; i < nargs; ++i) - tcp->u_arg[i] = regs.u_regs[U_REG_O0 + i]; + tcp->u_arg[i] = sparc_regs.u_regs[U_REG_O0 + i]; #elif defined(HPPA) for (i = 0; i < nargs; ++i) if (upeek(tcp, PT_GR26-4*i, &tcp->u_arg[i]) < 0) return -1; -#elif defined(ARM) +#elif defined(ARM) || defined(AARCH64) +# if defined(AARCH64) + if (tcp->currpers == 1) + for (i = 0; i < nargs; ++i) + tcp->u_arg[i] = aarch64_regs.regs[i]; + else +# endif for (i = 0; i < nargs; ++i) - tcp->u_arg[i] = regs.uregs[i]; + tcp->u_arg[i] = arm_regs.uregs[i]; #elif defined(AVR32) (void)i; (void)nargs; - tcp->u_arg[0] = regs.r12; - tcp->u_arg[1] = regs.r11; - tcp->u_arg[2] = regs.r10; - tcp->u_arg[3] = regs.r9; - tcp->u_arg[4] = regs.r5; - tcp->u_arg[5] = regs.r3; + tcp->u_arg[0] = avr32_regs.r12; + tcp->u_arg[1] = avr32_regs.r11; + tcp->u_arg[2] = avr32_regs.r10; + tcp->u_arg[3] = avr32_regs.r9; + tcp->u_arg[4] = avr32_regs.r5; + tcp->u_arg[5] = avr32_regs.r3; #elif defined(BFIN) static const int argreg[MAX_ARGS] = { PT_R0, PT_R1, PT_R2, PT_R3, PT_R4, PT_R5 }; @@ -1431,10 +1863,20 @@ get_syscall_args(struct tcb *tcp) for (i = 0; i < nargs; ++i) if (upeek(tcp, REG_GENERAL(syscall_regs[i]), &tcp->u_arg[i]) < 0) return -1; +#elif defined(I386) + (void)i; + (void)nargs; + tcp->u_arg[0] = i386_regs.ebx; + tcp->u_arg[1] = i386_regs.ecx; + tcp->u_arg[2] = i386_regs.edx; + tcp->u_arg[3] = i386_regs.esi; + tcp->u_arg[4] = i386_regs.edi; + tcp->u_arg[5] = i386_regs.ebp; #elif defined(X86_64) || defined(X32) (void)i; (void)nargs; - if (current_personality != 1) { /* x86-64 or x32 ABI */ + if (x86_io.iov_len != sizeof(i386_regs)) { + /* x86-64 or x32 ABI */ tcp->u_arg[0] = x86_64_regs.rdi; tcp->u_arg[1] = x86_64_regs.rsi; tcp->u_arg[2] = x86_64_regs.rdx; @@ -1449,14 +1891,18 @@ get_syscall_args(struct tcb *tcp) tcp->ext_arg[4] = x86_64_regs.r8; tcp->ext_arg[5] = x86_64_regs.r9; # endif - } else { /* i386 ABI */ - /* Sign-extend lower 32 bits */ - tcp->u_arg[0] = (long)(int)x86_64_regs.rbx; - tcp->u_arg[1] = (long)(int)x86_64_regs.rcx; - tcp->u_arg[2] = (long)(int)x86_64_regs.rdx; - tcp->u_arg[3] = (long)(int)x86_64_regs.rsi; - tcp->u_arg[4] = (long)(int)x86_64_regs.rdi; - tcp->u_arg[5] = (long)(int)x86_64_regs.rbp; + } else { + /* i386 ABI */ + /* Zero-extend from 32 bits */ + /* Use widen_to_long(tcp->u_arg[N]) in syscall handlers + * if you need to use *sign-extended* parameter. + */ + tcp->u_arg[0] = (long)(uint32_t)i386_regs.ebx; + tcp->u_arg[1] = (long)(uint32_t)i386_regs.ecx; + tcp->u_arg[2] = (long)(uint32_t)i386_regs.edx; + tcp->u_arg[3] = (long)(uint32_t)i386_regs.esi; + tcp->u_arg[4] = (long)(uint32_t)i386_regs.edi; + tcp->u_arg[5] = (long)(uint32_t)i386_regs.ebp; } #elif defined(MICROBLAZE) for (i = 0; i < nargs; ++i) @@ -1473,21 +1919,25 @@ get_syscall_args(struct tcb *tcp) return -1; #elif defined(TILE) for (i = 0; i < nargs; ++i) - if (upeek(tcp, PTREGS_OFFSET_REG(i), &tcp->u_arg[i]) < 0) - return -1; + tcp->u_arg[i] = tile_regs.regs[i]; #elif defined(M68K) for (i = 0; i < nargs; ++i) if (upeek(tcp, (i < 5 ? i : i + 2)*4, &tcp->u_arg[i]) < 0) return -1; -#elif defined(I386) - (void)i; +#elif defined(OR1K) (void)nargs; - tcp->u_arg[0] = i386_regs.ebx; - tcp->u_arg[1] = i386_regs.ecx; - tcp->u_arg[2] = i386_regs.edx; - tcp->u_arg[3] = i386_regs.esi; - tcp->u_arg[4] = i386_regs.edi; - tcp->u_arg[5] = i386_regs.ebp; + for (i = 0; i < 6; ++i) + tcp->u_arg[i] = or1k_regs.gpr[3 + i]; +#elif defined(METAG) + for (i = 0; i < nargs; i++) + /* arguments go backwards from D1Ar1 (D1.3) */ + tcp->u_arg[i] = ((unsigned long *)&metag_regs.dx[3][1])[-i]; +#elif defined(XTENSA) + /* arg0: a6, arg1: a3, arg2: a4, arg3: a5, arg4: a8, arg5: a9 */ + static const int xtensaregs[MAX_ARGS] = { 6, 3, 4, 5, 8, 9 }; + for (i = 0; i < nargs; ++i) + if (upeek(tcp, REG_A_BASE + xtensaregs[i], &tcp->u_arg[i]) < 0) + return -1; #else /* Other architecture (32bits specific) */ for (i = 0; i < nargs; ++i) if (upeek(tcp, i*4, &tcp->u_arg[i]) < 0) @@ -1509,7 +1959,7 @@ trace_syscall_entering(struct tcb *tcp) } #endif - scno_good = res = get_scno(tcp); + scno_good = res = (get_regs_error ? -1 : get_scno(tcp)); if (res == 0) return res; if (res == 1) { @@ -1524,10 +1974,10 @@ trace_syscall_entering(struct tcb *tcp) printleader(tcp); if (scno_good != 1) tprints("????" /* anti-trigraph gap */ "("); - else if (!SCNO_IN_RANGE(tcp->scno)) - tprintf("syscall_%lu(", tcp->scno); + else if (tcp->qual_flg & UNDEFINED_SCNO) + tprintf("%s(", undefined_scno_name(tcp)); else - tprintf("%s(", sysent[tcp->scno].sys_name); + tprintf("%s(", tcp->s_ent->sys_name); /* * " " will be added later by the code which * detects ptrace errors. @@ -1535,54 +1985,60 @@ trace_syscall_entering(struct tcb *tcp) goto ret; } + if ( sys_execve == tcp->s_ent->sys_func +# if defined(SPARC) || defined(SPARC64) + || sys_execv == tcp->s_ent->sys_func +# endif + ) { + hide_log_until_execve = 0; + } + #if defined(SYS_socket_subcall) || defined(SYS_ipc_subcall) - while (SCNO_IN_RANGE(tcp->scno)) { + while (1) { # ifdef SYS_socket_subcall - if (sysent[tcp->scno].sys_func == sys_socketcall) { + if (tcp->s_ent->sys_func == sys_socketcall) { decode_socket_subcall(tcp); break; } # endif # ifdef SYS_ipc_subcall - if (sysent[tcp->scno].sys_func == sys_ipc) { + if (tcp->s_ent->sys_func == sys_ipc) { decode_ipc_subcall(tcp); break; } # endif break; } -#endif /* SYS_socket_subcall || SYS_ipc_subcall */ +#endif - internal_syscall(tcp); + if (need_fork_exec_workarounds) + syscall_fixup_for_fork_exec(tcp); - if ((SCNO_IN_RANGE(tcp->scno) && - !(qual_flags[tcp->scno] & QUAL_TRACE)) || - (tracing_paths && !pathtrace_match(tcp))) { + if (!(tcp->qual_flg & QUAL_TRACE) + || (tracing_paths && !pathtrace_match(tcp)) + ) { tcp->flags |= TCB_INSYSCALL | TCB_FILTERED; return 0; } tcp->flags &= ~TCB_FILTERED; - if (cflag == CFLAG_ONLY_STATS) { + if (cflag == CFLAG_ONLY_STATS || hide_log_until_execve) { res = 0; goto ret; } printleader(tcp); - if (!SCNO_IN_RANGE(tcp->scno)) - tprintf("syscall_%lu(", tcp->scno); + if (tcp->qual_flg & UNDEFINED_SCNO) + tprintf("%s(", undefined_scno_name(tcp)); else - tprintf("%s(", sysent[tcp->scno].sys_name); - if (!SCNO_IN_RANGE(tcp->scno) || - ((qual_flags[tcp->scno] & QUAL_RAW) && - sysent[tcp->scno].sys_func != sys_exit)) + tprintf("%s(", tcp->s_ent->sys_name); + if ((tcp->qual_flg & QUAL_RAW) && tcp->s_ent->sys_func != sys_exit) res = printargs(tcp); else - res = (*sysent[tcp->scno].sys_func)(tcp); + res = tcp->s_ent->sys_func(tcp); - if (fflush(tcp->outf) == EOF) - return -1; + fflush(tcp->outf); ret: tcp->flags |= TCB_INSYSCALL; /* Measure the entrance time as late as possible to avoid errors. */ @@ -1614,78 +2070,82 @@ get_syscall_result(struct tcb *tcp) ppc_result = -ppc_result; } #elif defined(AVR32) - /* Read complete register set in one go. */ - if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, ®s) < 0) - return -1; + /* already done by get_regs */ #elif defined(BFIN) - if (upeek(tcp, PT_R0, &r0) < 0) + if (upeek(tcp, PT_R0, &bfin_r0) < 0) return -1; #elif defined(I386) - if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, (long) &i386_regs) < 0) - return -1; + /* already done by get_regs */ #elif defined(X86_64) || defined(X32) - if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, (long) &x86_64_regs) < 0) - return -1; + /* already done by get_regs */ #elif defined(IA64) # define IA64_PSR_IS ((long)1 << 34) + long psr; if (upeek(tcp, PT_CR_IPSR, &psr) >= 0) ia32 = (psr & IA64_PSR_IS) != 0; - if (upeek(tcp, PT_R8, &r8) < 0) + if (upeek(tcp, PT_R8, &ia64_r8) < 0) return -1; - if (upeek(tcp, PT_R10, &r10) < 0) + if (upeek(tcp, PT_R10, &ia64_r10) < 0) return -1; #elif defined(ARM) - /* Read complete register set in one go. */ - if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, (void *)®s) == -1) - return -1; + /* already done by get_regs */ +#elif defined(AARCH64) + /* register reading already done by get_regs */ + + /* Used to do this, but we did it on syscall entry already: */ + /* We are in 64-bit mode (personality 1) if register struct is aarch64_regs, + * else it's personality 0. + */ + /*update_personality(tcp, aarch64_io.iov_len == sizeof(aarch64_regs));*/ #elif defined(M68K) - if (upeek(tcp, 4*PT_D0, &d0) < 0) + if (upeek(tcp, 4*PT_D0, &m68k_d0) < 0) return -1; #elif defined(LINUX_MIPSN32) unsigned long long regs[38]; if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, (long) ®s) < 0) return -1; - a3 = regs[REG_A3]; - r2 = regs[REG_V0]; + mips_a3 = regs[REG_A3]; + mips_r2 = regs[REG_V0]; #elif defined(MIPS) - if (upeek(tcp, REG_A3, &a3) < 0) + if (upeek(tcp, REG_A3, &mips_a3) < 0) return -1; - if (upeek(tcp, REG_V0, &r2) < 0) + if (upeek(tcp, REG_V0, &mips_r2) < 0) return -1; #elif defined(ALPHA) - if (upeek(tcp, REG_A3, &a3) < 0) + if (upeek(tcp, REG_A3, &alpha_a3) < 0) return -1; - if (upeek(tcp, REG_R0, &r0) < 0) + if (upeek(tcp, REG_R0, &alpha_r0) < 0) return -1; #elif defined(SPARC) || defined(SPARC64) - /* Everything we need is in the current register set. */ - if (ptrace(PTRACE_GETREGS, tcp->pid, (char *)®s, 0) < 0) - return -1; + /* already done by get_regs */ #elif defined(HPPA) - if (upeek(tcp, PT_GR28, &r28) < 0) + if (upeek(tcp, PT_GR28, &hppa_r28) < 0) return -1; #elif defined(SH) + /* new syscall ABI returns result in R0 */ + if (upeek(tcp, 4*REG_REG0, (long *)&sh_r0) < 0) + return -1; #elif defined(SH64) + /* ABI defines result returned in r9 */ + if (upeek(tcp, REG_GENERAL(9), (long *)&sh64_r9) < 0) + return -1; #elif defined(CRISV10) || defined(CRISV32) - if (upeek(tcp, 4*PT_R10, &r10) < 0) + if (upeek(tcp, 4*PT_R10, &cris_r10) < 0) return -1; #elif defined(TILE) + /* already done by get_regs */ #elif defined(MICROBLAZE) - if (upeek(tcp, 3 * 4, &r3) < 0) + if (upeek(tcp, 3 * 4, µblaze_r3) < 0) return -1; -#endif - -#if defined(SH) - /* new syscall ABI returns result in R0 */ - if (upeek(tcp, 4*REG_REG0, (long *)&r0) < 0) - return -1; -#elif defined(SH64) - /* ABI defines result returned in r9 */ - if (upeek(tcp, REG_GENERAL(9), (long *)&r9) < 0) +#elif defined(OR1K) + /* already done by get_regs */ +#elif defined(METAG) + /* already done by get_regs */ +#elif defined(XTENSA) + if (upeek(tcp, REG_A_BASE + 2, &xtensa_a2) < 0) return -1; #endif - return 1; } @@ -1716,7 +2176,7 @@ static inline int is_negated_errno(unsigned long int val) { unsigned long int max = -(long int) nerrnos; -#if SUPPORTED_PERSONALITIES > 1 +#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4 if (current_wordsize < sizeof(val)) { val = (unsigned int) val; max = (unsigned int) max; @@ -1725,18 +2185,35 @@ is_negated_errno(unsigned long int val) return val > max; } +#if defined(X32) +static inline int +is_negated_errno_x32(unsigned long long val) +{ + unsigned long long max = -(long long) nerrnos; + /* + * current_wordsize is 4 even in personality 0 (native X32) + * but truncation _must not_ be done in it. + * can't check current_wordsize here! + */ + if (current_personality != 0) { + val = (uint32_t) val; + max = (uint32_t) max; + } + return val > max; +} +#endif + /* Returns: * 1: ok, continue in trace_syscall_exiting(). * -1: error, trace_syscall_exiting() should print error indicator * ("????" etc) and bail out. */ -static int +static void get_error(struct tcb *tcp) { int u_error = 0; int check_errno = 1; - if (SCNO_IN_RANGE(tcp->scno) && - sysent[tcp->scno].sys_flags & SYSCALL_NEVER_FAILS) { + if (tcp->s_ent->sys_flags & SYSCALL_NEVER_FAILS) { check_errno = 0; } #if defined(S390) || defined(S390X) @@ -1755,22 +2232,46 @@ get_error(struct tcb *tcp) else { tcp->u_rval = i386_regs.eax; } -#elif defined(X86_64) || defined(X32) - if (check_errno && is_negated_errno(x86_64_regs.rax)) { +#elif defined(X86_64) + long rax; + if (x86_io.iov_len == sizeof(i386_regs)) { + /* Sign extend from 32 bits */ + rax = (int32_t)i386_regs.eax; + } else { + rax = x86_64_regs.rax; + } + if (check_errno && is_negated_errno(rax)) { tcp->u_rval = -1; - u_error = -x86_64_regs.rax; + u_error = -rax; } else { - tcp->u_rval = x86_64_regs.rax; -# if defined(X32) - tcp->u_lrval = x86_64_regs.rax; -# endif + tcp->u_rval = rax; + } +#elif defined(X32) + /* In X32, return value is 64-bit (llseek uses one). + * Using merely "long rax" would not work. + */ + long long rax; + if (x86_io.iov_len == sizeof(i386_regs)) { + /* Sign extend from 32 bits */ + rax = (int32_t)i386_regs.eax; + } else { + rax = x86_64_regs.rax; + } + /* Careful: is_negated_errno() works only on longs */ + if (check_errno && is_negated_errno_x32(rax)) { + tcp->u_rval = -1; + u_error = -rax; + } + else { + tcp->u_rval = rax; /* truncating */ + tcp->u_lrval = rax; } #elif defined(IA64) if (ia32) { int err; - err = (int)r8; + err = (int)ia64_r8; if (check_errno && is_negated_errno(err)) { tcp->u_rval = -1; u_error = -err; @@ -1779,21 +2280,21 @@ get_error(struct tcb *tcp) tcp->u_rval = err; } } else { - if (check_errno && r10) { + if (check_errno && ia64_r10) { tcp->u_rval = -1; - u_error = r8; + u_error = ia64_r8; } else { - tcp->u_rval = r8; + tcp->u_rval = ia64_r8; } } #elif defined(MIPS) - if (check_errno && a3) { + if (check_errno && mips_a3) { tcp->u_rval = -1; - u_error = r2; + u_error = mips_r2; } else { - tcp->u_rval = r2; + tcp->u_rval = mips_r2; # if defined(LINUX_MIPSN32) - tcp->u_lrval = r2; + tcp->u_lrval = mips_r2; # endif } #elif defined(POWERPC) @@ -1805,144 +2306,185 @@ get_error(struct tcb *tcp) tcp->u_rval = ppc_result; } #elif defined(M68K) - if (check_errno && is_negated_errno(d0)) { + if (check_errno && is_negated_errno(m68k_d0)) { tcp->u_rval = -1; - u_error = -d0; + u_error = -m68k_d0; } else { - tcp->u_rval = d0; + tcp->u_rval = m68k_d0; } -#elif defined(ARM) - if (check_errno && is_negated_errno(regs.ARM_r0)) { - tcp->u_rval = -1; - u_error = -regs.ARM_r0; +#elif defined(ARM) || defined(AARCH64) +# if defined(AARCH64) + if (tcp->currpers == 1) { + if (check_errno && is_negated_errno(aarch64_regs.regs[0])) { + tcp->u_rval = -1; + u_error = -aarch64_regs.regs[0]; + } + else { + tcp->u_rval = aarch64_regs.regs[0]; + } } - else { - tcp->u_rval = regs.ARM_r0; + else +# endif + { + if (check_errno && is_negated_errno(arm_regs.ARM_r0)) { + tcp->u_rval = -1; + u_error = -arm_regs.ARM_r0; + } + else { + tcp->u_rval = arm_regs.ARM_r0; + } } #elif defined(AVR32) - if (check_errno && regs.r12 && (unsigned) -regs.r12 < nerrnos) { + if (check_errno && avr32_regs.r12 && (unsigned) -avr32_regs.r12 < nerrnos) { tcp->u_rval = -1; - u_error = -regs.r12; + u_error = -avr32_regs.r12; } else { - tcp->u_rval = regs.r12; + tcp->u_rval = avr32_regs.r12; } #elif defined(BFIN) - if (check_errno && is_negated_errno(r0)) { + if (check_errno && is_negated_errno(bfin_r0)) { tcp->u_rval = -1; - u_error = -r0; + u_error = -bfin_r0; } else { - tcp->u_rval = r0; + tcp->u_rval = bfin_r0; } #elif defined(ALPHA) - if (check_errno && a3) { + if (check_errno && alpha_a3) { tcp->u_rval = -1; - u_error = r0; + u_error = alpha_r0; } else { - tcp->u_rval = r0; + tcp->u_rval = alpha_r0; } #elif defined(SPARC) - if (check_errno && regs.psr & PSR_C) { + if (check_errno && sparc_regs.psr & PSR_C) { tcp->u_rval = -1; - u_error = regs.u_regs[U_REG_O0]; + u_error = sparc_regs.u_regs[U_REG_O0]; } else { - tcp->u_rval = regs.u_regs[U_REG_O0]; + tcp->u_rval = sparc_regs.u_regs[U_REG_O0]; } #elif defined(SPARC64) - if (check_errno && regs.tstate & 0x1100000000UL) { + if (check_errno && sparc_regs.tstate & 0x1100000000UL) { tcp->u_rval = -1; - u_error = regs.u_regs[U_REG_O0]; + u_error = sparc_regs.u_regs[U_REG_O0]; } else { - tcp->u_rval = regs.u_regs[U_REG_O0]; + tcp->u_rval = sparc_regs.u_regs[U_REG_O0]; } #elif defined(HPPA) - if (check_errno && is_negated_errno(r28)) { + if (check_errno && is_negated_errno(hppa_r28)) { tcp->u_rval = -1; - u_error = -r28; + u_error = -hppa_r28; } else { - tcp->u_rval = r28; + tcp->u_rval = hppa_r28; } #elif defined(SH) - if (check_errno && is_negated_errno(r0)) { + if (check_errno && is_negated_errno(sh_r0)) { tcp->u_rval = -1; - u_error = -r0; + u_error = -sh_r0; } else { - tcp->u_rval = r0; + tcp->u_rval = sh_r0; } #elif defined(SH64) - if (check_errno && is_negated_errno(r9)) { + if (check_errno && is_negated_errno(sh64_r9)) { + tcp->u_rval = -1; + u_error = -sh64_r9; + } + else { + tcp->u_rval = sh64_r9; + } +#elif defined(METAG) + /* result pointer in D0Re0 (D0.0) */ + if (check_errno && is_negated_errno(metag_regs.dx[0][0])) { tcp->u_rval = -1; - u_error = -r9; + u_error = -metag_regs.dx[0][0]; } else { - tcp->u_rval = r9; + tcp->u_rval = metag_regs.dx[0][0]; } #elif defined(CRISV10) || defined(CRISV32) - if (check_errno && r10 && (unsigned) -r10 < nerrnos) { + if (check_errno && cris_r10 && (unsigned) -cris_r10 < nerrnos) { tcp->u_rval = -1; - u_error = -r10; + u_error = -cris_r10; } else { - tcp->u_rval = r10; + tcp->u_rval = cris_r10; } #elif defined(TILE) - long rval; - if (upeek(tcp, PTREGS_OFFSET_REG(0), &rval) < 0) - return -1; - if (check_errno && rval < 0 && rval > -nerrnos) { + /* + * The standard tile calling convention returns the value (or negative + * errno) in r0, and zero (or positive errno) in r1. + * Until at least kernel 3.8, however, the r1 value is not reflected + * in ptregs at this point, so we use r0 here. + */ + if (check_errno && is_negated_errno(tile_regs.regs[0])) { + tcp->u_rval = -1; + u_error = -tile_regs.regs[0]; + } else { + tcp->u_rval = tile_regs.regs[0]; + } +#elif defined(MICROBLAZE) + if (check_errno && is_negated_errno(microblaze_r3)) { tcp->u_rval = -1; - u_error = -rval; + u_error = -microblaze_r3; } else { - tcp->u_rval = rval; + tcp->u_rval = microblaze_r3; } -#elif defined(MICROBLAZE) - if (check_errno && is_negated_errno(r3)) { +#elif defined(OR1K) + if (check_errno && is_negated_errno(or1k_regs.gpr[11])) { + tcp->u_rval = -1; + u_error = -or1k_regs.gpr[11]; + } + else { + tcp->u_rval = or1k_regs.gpr[11]; + } +#elif defined(XTENSA) + if (check_errno && is_negated_errno(xtensa_a2)) { tcp->u_rval = -1; - u_error = -r3; + u_error = -xtensa_a2; } else { - tcp->u_rval = r3; + tcp->u_rval = xtensa_a2; } #endif tcp->u_error = u_error; - return 1; } static void dumpio(struct tcb *tcp) { + int (*func)(); + if (syserror(tcp)) return; - if (tcp->u_arg[0] < 0 || tcp->u_arg[0] >= MAX_QUALS) - return; - if (!SCNO_IN_RANGE(tcp->scno)) + if ((unsigned long) tcp->u_arg[0] >= num_quals) return; - if (sysent[tcp->scno].sys_func == printargs) + func = tcp->s_ent->sys_func; + if (func == printargs) return; if (qual_flags[tcp->u_arg[0]] & QUAL_READ) { - if (sysent[tcp->scno].sys_func == sys_read || - sysent[tcp->scno].sys_func == sys_pread || - sysent[tcp->scno].sys_func == sys_recv || - sysent[tcp->scno].sys_func == sys_recvfrom) + if (func == sys_read || + func == sys_pread || + func == sys_recv || + func == sys_recvfrom) dumpstr(tcp, tcp->u_arg[1], tcp->u_rval); - else if (sysent[tcp->scno].sys_func == sys_readv) + else if (func == sys_readv) dumpiov(tcp, tcp->u_arg[2], tcp->u_arg[1]); return; } if (qual_flags[tcp->u_arg[0]] & QUAL_WRITE) { - if (sysent[tcp->scno].sys_func == sys_write || - sysent[tcp->scno].sys_func == sys_pwrite || - sysent[tcp->scno].sys_func == sys_send || - sysent[tcp->scno].sys_func == sys_sendto) + if (func == sys_write || + func == sys_pwrite || + func == sys_send || + func == sys_sendto) dumpstr(tcp, tcp->u_arg[1], tcp->u_arg[2]); - else if (sysent[tcp->scno].sys_func == sys_writev) + else if (func == sys_writev) dumpiov(tcp, tcp->u_arg[2], tcp->u_arg[1]); return; } @@ -1963,16 +2505,14 @@ trace_syscall_exiting(struct tcb *tcp) #if SUPPORTED_PERSONALITIES > 1 update_personality(tcp, tcp->currpers); #endif - res = get_syscall_result(tcp); + res = (get_regs_error ? -1 : get_syscall_result(tcp)); if (res == 1) { syscall_fixup_on_sysexit(tcp); /* never fails */ - res = get_error(tcp); /* returns 1 or -1 */ - if (res == 1) { - internal_syscall(tcp); - if (filtered(tcp)) { - goto ret; - } - } + get_error(tcp); /* never fails */ + if (need_fork_exec_workarounds) + syscall_fixup_for_fork_exec(tcp); + if (filtered(tcp) || hide_log_until_execve) + goto ret; } if (cflag) { @@ -1995,10 +2535,10 @@ trace_syscall_exiting(struct tcb *tcp) if ((followfork < 2 && printing_tcp != tcp) || (tcp->flags & TCB_REPRINT)) { tcp->flags &= ~TCB_REPRINT; printleader(tcp); - if (!SCNO_IN_RANGE(tcp->scno)) - tprintf("<... syscall_%lu resumed> ", tcp->scno); + if (tcp->qual_flg & UNDEFINED_SCNO) + tprintf("<... %s resumed> ", undefined_scno_name(tcp)); else - tprintf("<... %s resumed> ", sysent[tcp->scno].sys_name); + tprintf("<... %s resumed> ", tcp->s_ent->sys_name); } printing_tcp = tcp; @@ -2013,8 +2553,7 @@ trace_syscall_exiting(struct tcb *tcp) } sys_res = 0; - if (!SCNO_IN_RANGE(tcp->scno) - || (qual_flags[tcp->scno] & QUAL_RAW)) { + if (tcp->qual_flg & QUAL_RAW) { /* sys_res = printargs(tcp); - but it's nop on sysexit */ } else { /* FIXME: not_failing_only (IOW, option -z) is broken: @@ -2027,14 +2566,13 @@ trace_syscall_exiting(struct tcb *tcp) */ if (not_failing_only && tcp->u_error) goto ret; /* ignore failed syscalls */ - sys_res = (*sysent[tcp->scno].sys_func)(tcp); + sys_res = tcp->s_ent->sys_func(tcp); } tprints(") "); tabto(); u_error = tcp->u_error; - if (!SCNO_IN_RANGE(tcp->scno) || - qual_flags[tcp->scno] & QUAL_RAW) { + if (tcp->qual_flg & QUAL_RAW) { if (u_error) tprintf("= -1 (errno %ld)", u_error); else @@ -2075,10 +2613,11 @@ trace_syscall_exiting(struct tcb *tcp) /* pause(), rt_sigsuspend() etc use this code. * SA_RESTART is ignored (assumed not set): * syscall won't restart (will return EINTR instead) - * even after signal with SA_RESTART set. - * However, after SIG_IGN or SIG_DFL signal it will. + * even after signal with SA_RESTART set. However, + * after SIG_IGN or SIG_DFL signal it will restart + * (thus the name "restart only if has no handler"). */ - tprints("= ? ERESTARTNOHAND (Interrupted by signal)"); + tprints("= ? ERESTARTNOHAND (To be restarted if no handler)"); break; case ERESTART_RESTARTBLOCK: /* Syscalls like nanosleep(), poll() which can't be diff --git a/system.c b/system.c index a7764927..26d0d7fd 100644 --- a/system.c +++ b/system.c @@ -56,6 +56,7 @@ #define MS_KERNMOUNT (1<<22) #define MS_I_VERSION (1<<23) #define MS_STRICTATIME (1<<24) +#define MS_NOSEC (1<<28) #define MS_BORN (1<<29) #define MS_ACTIVE (1<<30) #define MS_NOUSER (1<<31) @@ -91,6 +92,7 @@ static const struct xlat mount_flags[] = { { MS_KERNMOUNT, "MS_KERNMOUNT" }, { MS_I_VERSION, "MS_I_VERSION" }, { MS_STRICTATIME,"MS_STRICTATIME"}, + { MS_NOSEC, "MS_NOSEC" }, { MS_BORN, "MS_BORN" }, { MS_MANDLOCK, "MS_MANDLOCK" }, { MS_NOATIME, "MS_NOATIME" }, @@ -376,7 +378,7 @@ sys_sram_alloc(struct tcb *tcp) /* size */ tprintf("%lu, ", tcp->u_arg[0]); /* flags */ - printxval(sram_alloc_flags, tcp->u_arg[1], "???_SRAM"); + printflags(sram_alloc_flags, tcp->u_arg[1], "???_SRAM"); } return 1; } @@ -845,9 +847,9 @@ sys_sysctl(struct tcb *tcp) umoven(tcp, (unsigned long) info.name, size, (char *) name) < 0) { free(name); if (entering(tcp)) - tprintf("{%p, %d, %p, %p, %p, %Zu}", + tprintf("{%p, %d, %p, %p, %p, %lu}", info.name, info.nlen, info.oldval, - info.oldlenp, info.newval, info.newlen); + info.oldlenp, info.newval, (unsigned long)info.newlen); return 0; } @@ -951,33 +953,33 @@ sys_sysctl(struct tcb *tcp) tprints(", ..."); tprintf("}, %d, ", info.nlen); } else { - size_t oldlen; - if (umove(tcp, (size_t)info.oldlenp, &oldlen) >= 0 - && info.nlen >= 2 - && ((name[0] == CTL_KERN - && (name[1] == KERN_OSRELEASE - || name[1] == KERN_OSTYPE + size_t oldlen = 0; + if (info.oldval == NULL) { + tprints("NULL"); + } else if (umove(tcp, (long)info.oldlenp, &oldlen) >= 0 + && info.nlen >= 2 + && ((name[0] == CTL_KERN + && (name[1] == KERN_OSRELEASE + || name[1] == KERN_OSTYPE #ifdef KERN_JAVA_INTERPRETER - || name[1] == KERN_JAVA_INTERPRETER + || name[1] == KERN_JAVA_INTERPRETER #endif #ifdef KERN_JAVA_APPLETVIEWER - || name[1] == KERN_JAVA_APPLETVIEWER + || name[1] == KERN_JAVA_APPLETVIEWER #endif - )))) { + )))) { printpath(tcp, (size_t)info.oldval); - tprintf(", %Zu, ", oldlen); - if (info.newval == 0) - tprints("NULL"); - else if (syserror(tcp)) - tprintf("%p", info.newval); - else - printpath(tcp, (size_t)info.newval); - tprintf(", %Zd", info.newlen); } else { - tprintf("%p, %Zd, %p, %Zd", info.oldval, oldlen, - info.newval, info.newlen); + tprintf("%p", info.oldval); } - tprints("}"); + tprintf(", %lu, ", (unsigned long)oldlen); + if (info.newval == NULL) + tprints("NULL"); + else if (syserror(tcp)) + tprintf("%p", info.newval); + else + printpath(tcp, (size_t)info.newval); + tprintf(", %lu", (unsigned long)info.newlen); } free(name); @@ -1024,3 +1026,63 @@ int sys_sysmips(struct tcb *tcp) } #endif /* MIPS */ + +#ifdef OR1K +#define OR1K_ATOMIC_SWAP 1 +#define OR1K_ATOMIC_CMPXCHG 2 +#define OR1K_ATOMIC_XCHG 3 +#define OR1K_ATOMIC_ADD 4 +#define OR1K_ATOMIC_DECPOS 5 +#define OR1K_ATOMIC_AND 6 +#define OR1K_ATOMIC_OR 7 +#define OR1K_ATOMIC_UMAX 8 +#define OR1K_ATOMIC_UMIN 9 + +static const struct xlat atomic_ops[] = { + { OR1K_ATOMIC_SWAP, "SWAP" }, + { OR1K_ATOMIC_CMPXCHG, "CMPXCHG" }, + { OR1K_ATOMIC_XCHG, "XCHG" }, + { OR1K_ATOMIC_ADD, "ADD" }, + { OR1K_ATOMIC_DECPOS, "DECPOS" }, + { OR1K_ATOMIC_AND, "AND" }, + { OR1K_ATOMIC_OR, "OR" }, + { OR1K_ATOMIC_UMAX, "UMAX" }, + { OR1K_ATOMIC_UMIN, "UMIN" }, + { 0, NULL } +}; + +int sys_or1k_atomic(struct tcb *tcp) +{ + if (entering(tcp)) { + printxval(atomic_ops, tcp->u_arg[0], "???"); + switch(tcp->u_arg[0]) { + case OR1K_ATOMIC_SWAP: + tprintf(", 0x%lx, 0x%lx", tcp->u_arg[1], tcp->u_arg[2]); + break; + case OR1K_ATOMIC_CMPXCHG: + tprintf(", 0x%lx, %#lx, %#lx", tcp->u_arg[1], tcp->u_arg[2], + tcp->u_arg[3]); + break; + + case OR1K_ATOMIC_XCHG: + case OR1K_ATOMIC_ADD: + case OR1K_ATOMIC_AND: + case OR1K_ATOMIC_OR: + case OR1K_ATOMIC_UMAX: + case OR1K_ATOMIC_UMIN: + tprintf(", 0x%lx, %#lx", tcp->u_arg[1], tcp->u_arg[2]); + break; + + case OR1K_ATOMIC_DECPOS: + tprintf(", 0x%lx", tcp->u_arg[1]); + break; + + default: + break; + } + } + + return RVAL_HEX; +} + +#endif /* OR1K */ diff --git a/tests/Makefile.am b/tests/Makefile.am index 93636ca8..a7f584d3 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,6 +1,10 @@ # Automake input for strace tests. -TESTS = ptrace_setoptions strace-f +AM_CFLAGS = $(WARN_CFLAGS) + +check_PROGRAMS = net-accept-connect + +TESTS = ptrace_setoptions strace-f qual_syscall stat net EXTRA_DIST = init.sh $(TESTS) diff --git a/tests/Makefile.in b/tests/Makefile.in index 56f6834f..abf81962 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.5 from Makefile.am. +# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -52,6 +52,7 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ +check_PROGRAMS = net-accept-connect$(EXEEXT) subdir = tests DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -65,19 +66,38 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; +net_accept_connect_SOURCES = net-accept-connect.c +net_accept_connect_OBJECTS = net-accept-connect.$(OBJEXT) +net_accept_connect_LDADD = $(LDADD) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ -SOURCES = -DIST_SOURCES = +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = net-accept-connect.c +DIST_SOURCES = net-accept-connect.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +ETAGS = etags +CTAGS = ctags am__tty_colors = \ red=; grn=; lgn=; blu=; std= DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -180,12 +200,14 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -TESTS = ptrace_setoptions strace-f +AM_CFLAGS = $(WARN_CFLAGS) +TESTS = ptrace_setoptions strace-f qual_syscall stat net EXTRA_DIST = init.sh $(TESTS) CLEANFILES = check.log all: all-am .SUFFIXES: +.SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ @@ -216,12 +238,86 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): + +clean-checkPROGRAMS: + -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) +net-accept-connect$(EXEEXT): $(net_accept_connect_OBJECTS) $(net_accept_connect_DEPENDENCIES) $(EXTRA_net_accept_connect_DEPENDENCIES) + @rm -f net-accept-connect$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(net_accept_connect_OBJECTS) $(net_accept_connect_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-accept-connect.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique tags: TAGS -TAGS: +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi ctags: CTAGS -CTAGS: - +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; \ @@ -347,6 +443,7 @@ distdir: $(DISTFILES) fi; \ done check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile @@ -384,11 +481,13 @@ maintainer-clean-generic: @echo "it deletes files that may require special tools to rebuild." clean: clean-am -clean-am: clean-generic mostlyclean-am +clean-am: clean-checkPROGRAMS clean-generic mostlyclean-am distclean: distclean-am + -rm -rf ./$(DEPDIR) -rm -f Makefile -distclean-am: clean-am distclean-generic +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags dvi: dvi-am @@ -431,12 +530,13 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am -mostlyclean-am: mostlyclean-generic +mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am @@ -450,15 +550,17 @@ uninstall-am: .MAKE: check-am install-am install-strip -.PHONY: all all-am check check-TESTS check-am clean clean-generic \ - distclean distclean-generic distdir dvi dvi-am html html-am \ - info info-am install install-am install-data install-data-am \ - install-dvi install-dvi-am install-exec install-exec-am \ - install-html install-html-am install-info install-info-am \ - install-man install-pdf install-pdf-am install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ +.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic ctags distclean \ + distclean-compile distclean-generic distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am diff --git a/tests/init.sh b/tests/init.sh index f860b0b0..db7f1025 100644 --- a/tests/init.sh +++ b/tests/init.sh @@ -2,8 +2,6 @@ ME_="${0##*/}" -check_timeout=60 - warn_() { printf >&2 '%s\n' "$*"; } fail_() { warn_ "$ME_: failed test: $*"; exit 1; } skip_() { warn_ "$ME_: skipped test: $*"; exit 77; } @@ -12,7 +10,7 @@ framework_skip_() { warn_ "$ME_: framework skip: $*"; exit 77; } check_prog() { - "$@" --version > /dev/null 2>&1 || + type "$@" > /dev/null 2>&1 || framework_skip_ "$* is not available" } @@ -22,3 +20,11 @@ check_strace() $STRACE -V > /dev/null || framework_failure_ "$STRACE is not available" } + +timeout_duration=60 +check_timeout() +{ + TIMEOUT="timeout -s 9 $timeout_duration" + $TIMEOUT true > /dev/null 2>&1 || + TIMEOUT= +} diff --git a/tests/net b/tests/net new file mode 100755 index 00000000..64bcc772 --- /dev/null +++ b/tests/net @@ -0,0 +1,47 @@ +#!/bin/sh + +# Check how network syscalls are traced. + +. "${srcdir=.}/init.sh" + +check_strace +check_timeout +check_prog grep +check_prog rm + +rm -f check.log.* + +$TIMEOUT ./net-accept-connect || + fail_ 'net-accept-connect failed' + +args='-tt -ff -o check.log -enetwork ./net-accept-connect' +$TIMEOUT $STRACE $args || + fail_ "strace $args failed" + +"$srcdir"/../strace-log-merge check.log > check.log || { + cat check.log + fail_ 'strace-log-merge failed' +} + +rm -f check.log.* + +grep_log() +{ + local syscall="$1"; shift + local prefix='[1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +' + + LC_ALL=C grep -E -x "$prefix$syscall$@" check.log > /dev/null || { + cat check.log + fail_ "strace -enetwork failed to trace \"$syscall\" properly" + } +} + +grep_log socket '\(PF_(LOCAL|UNIX|FILE), SOCK_STREAM, 0\) += 0' +grep_log socket '\(PF_(LOCAL|UNIX|FILE), SOCK_STREAM, 0\) += 1' +grep_log bind '\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, 15\) += 0' +grep_log listen '\(0, 5\) += 0' +grep_log getsockname '\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, \[15\]\) += 0' +grep_log accept '\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), NULL\}, \[2\]\) += 1' +grep_log connect '\(1, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="local-stream"\}, 15\) += 0' + +exit 0 diff --git a/tests/net-accept-connect.c b/tests/net-accept-connect.c new file mode 100644 index 00000000..5af7d81b --- /dev/null +++ b/tests/net-accept-connect.c @@ -0,0 +1,49 @@ +#include +#include +#include +#include +#include +#include +#include + +#define SUN_PATH "local-stream" +int main(void) +{ + struct sockaddr_un addr = { + .sun_family = AF_UNIX, + .sun_path = SUN_PATH + }; + socklen_t len = offsetof(struct sockaddr_un, sun_path) + sizeof SUN_PATH; + + unlink(SUN_PATH); + close(0); + close(1); + + assert(socket(PF_LOCAL, SOCK_STREAM, 0) == 0); + assert(bind(0, (struct sockaddr *) &addr, len) == 0); + assert(listen(0, 5) == 0); + + memset(&addr, 0, sizeof addr); + assert(getsockname(0, (struct sockaddr *) &addr, &len) == 0); + + pid_t pid = fork(); + assert(pid >= 0); + + if (pid) { + assert(accept(0, (struct sockaddr *) &addr, &len) == 1); + assert(close(0) == 0); + int status; + assert(waitpid(pid, &status, 0) == pid); + assert(status == 0); + assert(close(1) == 0); + } else { + assert(socket(PF_LOCAL, SOCK_STREAM, 0) == 1); + assert(close(0) == 0); + assert(connect(1, (struct sockaddr *) &addr, len) == 0); + assert(close(1) == 0); + return 0; + } + + unlink(SUN_PATH); + return 0; +} diff --git a/tests/ptrace_setoptions b/tests/ptrace_setoptions index 7511047c..38a2a023 100755 --- a/tests/ptrace_setoptions +++ b/tests/ptrace_setoptions @@ -13,19 +13,16 @@ case "$(uname -r)" in esac check_strace -check_prog timeout +check_timeout -timeout -s 9 $check_timeout \ -$STRACE -df -enone / 2>&1 | +$TIMEOUT $STRACE -df -enone / 2>&1 | grep -F -x 'ptrace_setoptions = 0xe' > /dev/null || fail_ 'strace -f failed to recognize proper kernel PTRACE_O_TRACECLONE support' -timeout -s 9 $check_timeout \ -$STRACE -df -enone / 2>&1 | +$TIMEOUT $STRACE -df -enone / 2>&1 | grep -F -x 'ptrace_setoptions = 0x1f' > /dev/null || fail_ 'strace -f failed to recognize proper kernel PTRACE_O_TRACESYSGOOD support' -timeout -s 9 $check_timeout \ -$STRACE -d -enone / 2>&1 | +$TIMEOUT $STRACE -d -enone / 2>&1 | grep -F -x 'ptrace_setoptions = 0x11' > /dev/null || fail_ 'strace failed to recognize proper kernel PTRACE_O_TRACESYSGOOD support' diff --git a/tests/qual_syscall b/tests/qual_syscall new file mode 100755 index 00000000..f382f1ab --- /dev/null +++ b/tests/qual_syscall @@ -0,0 +1,27 @@ +#!/bin/sh + +# Ensure that strace -e trace=set works. + +. "${srcdir=.}/init.sh" + +check_strace +check_timeout +check_prog ls +check_prog grep + +$TIMEOUT $STRACE -e execve ls > /dev/null 2> check.log && +grep '^execve(' check.log > /dev/null || + { cat check.log; fail_ 'strace -e execve does not work'; } + +grep -v '^execve(' check.log | +LC_ALL=C grep '^[[:alnum:]_]*(' > /dev/null && + { cat check.log; fail_ 'strace -e execve does not work properly'; } + +$TIMEOUT $STRACE -e trace=process ls > /dev/null 2> check.log && +grep '^execve(' check.log > /dev/null || + { cat check.log; fail_ 'strace -e trace=process does not work'; } + +grep '^open' check.log > /dev/null && + { cat check.log; fail_ 'strace -e trace=process does not work properly'; } + +exit 0 diff --git a/tests/stat b/tests/stat new file mode 100755 index 00000000..e0fc3799 --- /dev/null +++ b/tests/stat @@ -0,0 +1,37 @@ +#!/bin/sh + +# Check how ftruncate, lseek and stat family syscalls are traced. + +. "${srcdir=.}/init.sh" + +check_strace +check_timeout +check_prog dd +check_prog find +check_prog grep +check_prog rm + +umask 022 +truncate_cmd='dd seek=46118400000 obs=1 count=0 if=/dev/null of=sample' +$truncate_cmd > check.log 2>&1 || + { cat check.log; framework_skip_ 'failed to create a large sparse file'; } +rm -f sample + +$TIMEOUT $STRACE -edesc $truncate_cmd 2>&1 > /dev/null 2> check.log && +LC_ALL=C grep -E -x 'ftruncate(64)?\(1, 46118400000\) += 0' check.log > /dev/null || + { cat check.log; fail_ 'strace -edesc failed to trace ftruncate/ftruncate64 properly'; } + +LC_ALL=C grep -E -x 'lseek\(1, 46118400000, SEEK_CUR\) += 46118400000|_llseek\(1, 46118400000, \[46118400000\], SEEK_CUR\) += 0' check.log > /dev/null || + { cat check.log; fail_ 'strace -edesc failed to trace lseek/_llseek properly'; } + +$TIMEOUT $STRACE -efile find -L sample > /dev/null 2> check.log && +LC_ALL=C grep -E -x 'stat(64)?\("sample", \{st_mode=S_IFREG\|0644, st_size=46118400000, \.\.\.\}\) += 0|(new)?fstatat(64)?\(AT_FDCWD, "sample", \{st_mode=S_IFREG\|0644, st_size=46118400000, \.\.\.\}, 0\) += 0' check.log > /dev/null || + { cat check.log; fail_ 'strace -efile failed to trace stat/stat64 properly'; } + +$TIMEOUT $STRACE -efile find sample > /dev/null 2> check.log && +LC_ALL=C grep -E -x 'lstat(64)?\("sample", \{st_mode=S_IFREG\|0644, st_size=46118400000, \.\.\.\}\) += 0|(new)?fstatat(64)?\(AT_FDCWD, "sample", \{st_mode=S_IFREG\|0644, st_size=46118400000, \.\.\.\}, AT_SYMLINK_NOFOLLOW\) += 0' check.log > /dev/null || + { cat check.log; fail_ 'strace -efile failed to trace fstatat/fstatat64 properly'; } + +rm -f sample + +exit 0 diff --git a/tests/strace-f b/tests/strace-f index 7b395526..0f76afc1 100755 --- a/tests/strace-f +++ b/tests/strace-f @@ -5,10 +5,9 @@ . "${srcdir=.}/init.sh" check_strace -check_prog timeout +check_timeout time=/usr/bin/time check_prog $time -timeout -s 9 $check_timeout \ -$STRACE -f $time /bin/ls > check.log 2>&1 || +$TIMEOUT $STRACE -f $time /bin/ls > check.log 2>&1 || { cat check.log; fail_ 'strace -f does not work'; } diff --git a/util.c b/util.c index d347bd86..6acdbc29 100644 --- a/util.c +++ b/util.c @@ -39,10 +39,6 @@ # include #endif -#if __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1) -# include -#endif - #if defined(IA64) # include # include @@ -64,21 +60,6 @@ # undef pt_all_user_regs #endif -#if defined(SPARC64) -# undef PTRACE_GETREGS -# define PTRACE_GETREGS PTRACE_GETREGS64 -# undef PTRACE_SETREGS -# define PTRACE_SETREGS PTRACE_SETREGS64 -#endif - -/* macros */ -#ifndef MAX -# define MAX(a,b) (((a) > (b)) ? (a) : (b)) -#endif -#ifndef MIN -# define MIN(a,b) (((a) < (b)) ? (a) : (b)) -#endif - int string_to_uint(const char *str) { @@ -189,40 +170,57 @@ printxval(const struct xlat *xlat, int val, const char *dflt) tprintf("%#x /* %s */", val, dflt); } -#if HAVE_LONG_LONG /* - * Print 64bit argument at position llarg and return the index of the next + * Print 64bit argument at position arg_no and return the index of the next * argument. */ int -printllval(struct tcb *tcp, const char *format, int llarg) +printllval(struct tcb *tcp, const char *format, int arg_no) { -# if defined(X86_64) || defined(POWERPC64) - if (current_personality == 0) { - tprintf(format, tcp->u_arg[llarg]); - llarg++; +#if SIZEOF_LONG > 4 && SIZEOF_LONG == SIZEOF_LONG_LONG +# if SUPPORTED_PERSONALITIES > 1 + if (current_wordsize > 4) { +# endif + tprintf(format, tcp->u_arg[arg_no]); + arg_no++; +# if SUPPORTED_PERSONALITIES > 1 } else { -# ifdef POWERPC64 - /* Align 64bit argument to 64bit boundary. */ - llarg = (llarg + 1) & 0x1e; +# if defined(AARCH64) || defined(POWERPC64) + /* Align arg_no to the next even number. */ + arg_no = (arg_no + 1) & 0xe; # endif - tprintf(format, LONG_LONG(tcp->u_arg[llarg], tcp->u_arg[llarg + 1])); - llarg += 2; + tprintf(format, LONG_LONG(tcp->u_arg[arg_no], tcp->u_arg[arg_no + 1])); + arg_no += 2; } -# elif defined IA64 || defined ALPHA - tprintf(format, tcp->u_arg[llarg]); - llarg++; -# elif defined LINUX_MIPSN32 || defined X32 - tprintf(format, tcp->ext_arg[llarg]); - llarg++; -# else - tprintf(format, LONG_LONG(tcp->u_arg[llarg], tcp->u_arg[llarg + 1])); - llarg += 2; +# endif /* SUPPORTED_PERSONALITIES */ +#elif SIZEOF_LONG > 4 +# error Unsupported configuration: SIZEOF_LONG > 4 && SIZEOF_LONG_LONG > SIZEOF_LONG +#elif defined LINUX_MIPSN32 + tprintf(format, tcp->ext_arg[arg_no]); + arg_no++; +#elif defined X32 + if (current_personality == 0) { + tprintf(format, tcp->ext_arg[arg_no]); + arg_no++; + } else { + tprintf(format, LONG_LONG(tcp->u_arg[arg_no], tcp->u_arg[arg_no + 1])); + arg_no += 2; + } +#else +# if defined __ARM_EABI__ || \ + defined LINUX_MIPSO32 || \ + defined POWERPC || \ + defined XTENSA + /* Align arg_no to the next even number. */ + arg_no = (arg_no + 1) & 0xe; # endif - return llarg; -} + tprintf(format, LONG_LONG(tcp->u_arg[arg_no], tcp->u_arg[arg_no + 1])); + arg_no += 2; #endif + return arg_no; +} + /* * Interpret `xlat' as an array of flags * print the entries whose bits are on in `flags' @@ -355,10 +353,10 @@ printnum_int(struct tcb *tcp, long addr, const char *fmt) void printfd(struct tcb *tcp, int fd) { - const char *p; + char path[PATH_MAX + 1]; - if (show_fd_path && (p = getfdpath(tcp, fd))) - tprintf("%d<%s>", fd, p); + if (show_fd_path && getfdpath(tcp, fd, path, sizeof(path)) >= 0) + tprintf("%d<%s>", fd, path); else tprintf("%d", fd); } @@ -402,7 +400,16 @@ string_quote(const char *instr, char *outstr, long len, int size) /* Check for NUL-terminated string. */ if (c == eol) break; - if (!isprint(c) && !isspace(c)) { + + /* Force hex unless c is printable or whitespace */ + if (c > 0x7e) { + usehex = 1; + break; + } + /* In ASCII isspace is only these chars: "\t\n\v\f\r". + * They happen to have ASCII codes 9,10,11,12,13. + */ + if (c < ' ' && (unsigned)(c - 9) >= 5) { usehex = 1; break; } @@ -455,7 +462,7 @@ string_quote(const char *instr, char *outstr, long len, int size) *s++ = 'v'; break; default: - if (isprint(c)) + if (c >= ' ' && c <= 0x7e) *s++ = c; else { /* Print \octal */ @@ -663,54 +670,70 @@ dumpstr(struct tcb *tcp, long addr, int len) { static int strsize = -1; static unsigned char *str; - char *s; - int i, j; - if (strsize < len) { + char outbuf[ + ( + (sizeof( + "xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx " + "1234567890123456") + /*in case I'm off by few:*/ 4) + /*align to 8 to make memset easier:*/ + 7) & -8 + ]; + const unsigned char *src; + int i; + + memset(outbuf, ' ', sizeof(outbuf)); + + if (strsize < len + 16) { free(str); - str = malloc(len); + str = malloc(len + 16); if (!str) { strsize = -1; fprintf(stderr, "Out of memory\n"); return; } - strsize = len; + strsize = len + 16; } if (umoven(tcp, addr, len, (char *) str) < 0) return; - for (i = 0; i < len; i += 16) { - char outstr[80]; - - s = outstr; - sprintf(s, " | %05x ", i); - s += 9; - for (j = 0; j < 16; j++) { - if (j == 8) - *s++ = ' '; - if (i + j < len) { - sprintf(s, " %02x", str[i + j]); - s += 3; + /* Space-pad to 16 bytes */ + i = len; + while (i & 0xf) + str[i++] = ' '; + + i = 0; + src = str; + while (i < len) { + char *dst = outbuf; + /* Hex dump */ + do { + if (i < len) { + *dst++ = "0123456789abcdef"[*src >> 4]; + *dst++ = "0123456789abcdef"[*src & 0xf]; } else { - *s++ = ' '; *s++ = ' '; *s++ = ' '; - } - } - *s++ = ' '; *s++ = ' '; - for (j = 0; j < 16; j++) { - if (j == 8) - *s++ = ' '; - if (i + j < len) { - if (isprint(str[i + j])) - *s++ = str[i + j]; - else - *s++ = '.'; + *dst++ = ' '; + *dst++ = ' '; } + dst++; /* space is there by memset */ + i++; + if ((i & 7) == 0) + dst++; /* space is there by memset */ + src++; + } while (i & 0xf); + /* ASCII dump */ + i -= 16; + src -= 16; + do { + if (*src >= ' ' && *src < 0x7f) + *dst++ = *src; else - *s++ = ' '; - } - tprintf("%s |\n", outstr); + *dst++ = '.'; + src++; + } while (++i & 0xf); + *dst = '\0'; + tprintf(" | %05x %s |\n", i - 16, outbuf); } } @@ -735,7 +758,8 @@ static bool process_vm_readv_not_supported = 0; #if defined(__NR_process_vm_readv) static bool process_vm_readv_not_supported = 0; -static ssize_t process_vm_readv(pid_t pid, +/* Have to avoid duplicating with the C library headers. */ +static ssize_t strace_process_vm_readv(pid_t pid, const struct iovec *lvec, unsigned long liovcnt, const struct iovec *rvec, @@ -744,6 +768,7 @@ static ssize_t process_vm_readv(pid_t pid, { return syscall(__NR_process_vm_readv, (long)pid, lvec, liovcnt, rvec, riovcnt, flags); } +#define process_vm_readv strace_process_vm_readv #else static bool process_vm_readv_not_supported = 1; # define process_vm_readv(...) (errno = ENOSYS, -1) @@ -760,14 +785,13 @@ int umoven(struct tcb *tcp, long addr, int len, char *laddr) { int pid = tcp->pid; - int n, m; - int started; + int n, m, nread; union { long val; char x[sizeof(long)]; } u; -#if SUPPORTED_PERSONALITIES > 1 +#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4 if (current_wordsize < sizeof(addr)) addr &= (1ul << 8 * current_wordsize) - 1; #endif @@ -779,57 +803,88 @@ umoven(struct tcb *tcp, long addr, int len, char *laddr) local[0].iov_base = laddr; remote[0].iov_base = (void*)addr; local[0].iov_len = remote[0].iov_len = len; - r = process_vm_readv(pid, - local, 1, - remote, 1, - /*flags:*/ 0 - ); - if (r < 0) { - if (errno == ENOSYS) + r = process_vm_readv(pid, local, 1, remote, 1, 0); + if (r == len) + return 0; + if (r >= 0) { + error_msg("umoven: short read (%d < %d) @0x%lx", + r, len, addr); + return -1; + } + switch (errno) { + case ENOSYS: process_vm_readv_not_supported = 1; - else if (errno != EINVAL) /* EINVAL is seen if process is gone */ - /* strange... */ - perror("process_vm_readv"); - goto vm_readv_didnt_work; + break; + case ESRCH: + /* the process is gone */ + return -1; + case EFAULT: case EIO: case EPERM: + /* address space is inaccessible */ + return -1; + default: + /* all the rest is strange and should be reported */ + perror_msg("process_vm_readv"); + return -1; } - return r; } - vm_readv_didnt_work: - started = 0; + nread = 0; if (addr & (sizeof(long) - 1)) { /* addr not a multiple of sizeof(long) */ n = addr - (addr & -sizeof(long)); /* residue */ addr &= -sizeof(long); /* residue */ errno = 0; u.val = ptrace(PTRACE_PEEKDATA, pid, (char *) addr, 0); - if (errno) { - /* But if not started, we had a bogus address. */ - if (addr != 0 && errno != EIO && errno != ESRCH) - perror_msg("umoven: PTRACE_PEEKDATA pid:%d @0x%lx", pid, addr); - return -1; + switch (errno) { + case 0: + break; + case ESRCH: case EINVAL: + /* these could be seen if the process is gone */ + return -1; + case EFAULT: case EIO: case EPERM: + /* address space is inaccessible */ + return -1; + default: + /* all the rest is strange and should be reported */ + perror_msg("umoven: PTRACE_PEEKDATA pid:%d @0x%lx", + pid, addr); + return -1; } - started = 1; m = MIN(sizeof(long) - n, len); memcpy(laddr, &u.x[n], m); - addr += sizeof(long), laddr += m, len -= m; + addr += sizeof(long); + laddr += m; + nread += m; + len -= m; } while (len) { errno = 0; u.val = ptrace(PTRACE_PEEKDATA, pid, (char *) addr, 0); - if (errno) { - if (started && (errno==EPERM || errno==EIO)) { - /* Ran into 'end of memory' - stupid "printpath" */ - return 0; - } - if (addr != 0 && errno != EIO && errno != ESRCH) - perror_msg("umoven: PTRACE_PEEKDATA pid:%d @0x%lx", pid, addr); - return -1; + switch (errno) { + case 0: + break; + case ESRCH: case EINVAL: + /* these could be seen if the process is gone */ + return -1; + case EFAULT: case EIO: case EPERM: + /* address space is inaccessible */ + if (nread) { + perror_msg("umoven: short read (%d < %d) @0x%lx", + nread, nread + len, addr - nread); + } + return -1; + default: + /* all the rest is strange and should be reported */ + perror_msg("umoven: PTRACE_PEEKDATA pid:%d @0x%lx", + pid, addr); + return -1; } - started = 1; m = MIN(sizeof(long), len); memcpy(laddr, u.x, m); - addr += sizeof(long), laddr += m, len -= m; + addr += sizeof(long); + laddr += m; + nread += m; + len -= m; } return 0; @@ -850,19 +905,29 @@ umoven(struct tcb *tcp, long addr, int len, char *laddr) int umovestr(struct tcb *tcp, long addr, int len, char *laddr) { - int started; +#if SIZEOF_LONG == 4 + const unsigned long x01010101 = 0x01010101ul; + const unsigned long x80808080 = 0x80808080ul; +#elif SIZEOF_LONG == 8 + const unsigned long x01010101 = 0x0101010101010101ul; + const unsigned long x80808080 = 0x8080808080808080ul; +#else +# error SIZEOF_LONG > 8 +#endif + int pid = tcp->pid; - int i, n, m; + int n, m, nread; union { - long val; + unsigned long val; char x[sizeof(long)]; } u; -#if SUPPORTED_PERSONALITIES > 1 +#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4 if (current_wordsize < sizeof(addr)) addr &= (1ul << 8 * current_wordsize) - 1; #endif + nread = 0; if (!process_vm_readv_not_supported) { struct iovec local[1], remote[1]; @@ -889,68 +954,103 @@ umovestr(struct tcb *tcp, long addr, int len, char *laddr) chunk_len = r; /* chunk_len -= end_in_page */ local[0].iov_len = remote[0].iov_len = chunk_len; - r = process_vm_readv(pid, - local, 1, - remote, 1, - /*flags:*/ 0 - ); - if (r < 0) { - if (errno == ENOSYS) + r = process_vm_readv(pid, local, 1, remote, 1, 0); + if (r > 0) { + if (memchr(local[0].iov_base, '\0', r)) + return 1; + local[0].iov_base += r; + remote[0].iov_base += r; + len -= r; + nread += r; + continue; + } + switch (errno) { + case ENOSYS: process_vm_readv_not_supported = 1; - else if (errno != EINVAL) /* EINVAL is seen if process is gone */ - /* strange... */ - perror("process_vm_readv"); - goto vm_readv_didnt_work; + goto vm_readv_didnt_work; + case ESRCH: + /* the process is gone */ + return -1; + case EFAULT: case EIO: case EPERM: + /* address space is inaccessible */ + if (nread) { + perror_msg("umovestr: short read (%d < %d) @0x%lx", + nread, nread + len, addr); + } + return -1; + default: + /* all the rest is strange and should be reported */ + perror_msg("process_vm_readv"); + return -1; } - if (memchr(local[0].iov_base, '\0', r)) - return 1; - local[0].iov_base += r; - remote[0].iov_base += r; - len -= r; } return 0; } vm_readv_didnt_work: - started = 0; if (addr & (sizeof(long) - 1)) { /* addr not a multiple of sizeof(long) */ n = addr - (addr & -sizeof(long)); /* residue */ addr &= -sizeof(long); /* residue */ errno = 0; u.val = ptrace(PTRACE_PEEKDATA, pid, (char *)addr, 0); - if (errno) { - if (addr != 0 && errno != EIO && errno != ESRCH) - perror_msg("umovestr: PTRACE_PEEKDATA pid:%d @0x%lx", pid, addr); - return -1; + switch (errno) { + case 0: + break; + case ESRCH: case EINVAL: + /* these could be seen if the process is gone */ + return -1; + case EFAULT: case EIO: case EPERM: + /* address space is inaccessible */ + return -1; + default: + /* all the rest is strange and should be reported */ + perror_msg("umovestr: PTRACE_PEEKDATA pid:%d @0x%lx", + pid, addr); + return -1; } - started = 1; m = MIN(sizeof(long) - n, len); memcpy(laddr, &u.x[n], m); while (n & (sizeof(long) - 1)) if (u.x[n++] == '\0') return 1; - addr += sizeof(long), laddr += m, len -= m; + addr += sizeof(long); + laddr += m; + nread += m; + len -= m; } + while (len) { errno = 0; u.val = ptrace(PTRACE_PEEKDATA, pid, (char *)addr, 0); - if (errno) { - if (started && (errno==EPERM || errno==EIO)) { - /* Ran into 'end of memory' - stupid "printpath" */ - return 0; - } - if (addr != 0 && errno != EIO && errno != ESRCH) - perror_msg("umovestr: PTRACE_PEEKDATA pid:%d @0x%lx", pid, addr); - return -1; + switch (errno) { + case 0: + break; + case ESRCH: case EINVAL: + /* these could be seen if the process is gone */ + return -1; + case EFAULT: case EIO: case EPERM: + /* address space is inaccessible */ + if (nread) { + perror_msg("umovestr: short read (%d < %d) @0x%lx", + nread, nread + len, addr - nread); + } + return -1; + default: + /* all the rest is strange and should be reported */ + perror_msg("umovestr: PTRACE_PEEKDATA pid:%d @0x%lx", + pid, addr); + return -1; } - started = 1; m = MIN(sizeof(long), len); memcpy(laddr, u.x, m); - for (i = 0; i < sizeof(long); i++) - if (u.x[i] == '\0') - return 1; - addr += sizeof(long), laddr += m, len -= m; + /* "If a NUL char exists in this word" */ + if ((u.val - x01010101) & ~u.val & x80808080) + return 1; + addr += sizeof(long); + laddr += m; + nread += m; + len -= m; } return 0; } @@ -972,162 +1072,12 @@ upeek(struct tcb *tcp, long off, long *res) return 0; } -void -printcall(struct tcb *tcp) -{ -#define PRINTBADPC tprintf(sizeof(long) == 4 ? "[????????] " : \ - sizeof(long) == 8 ? "[????????????????] " : \ - NULL /* crash */) - -#if defined(I386) - long eip; - - if (upeek(tcp, 4*EIP, &eip) < 0) { - PRINTBADPC; - return; - } - tprintf("[%08lx] ", eip); -#elif defined(S390) || defined(S390X) - long psw; - if (upeek(tcp, PT_PSWADDR, &psw) < 0) { - PRINTBADPC; - return; - } -# ifdef S390 - tprintf("[%08lx] ", psw); -# elif S390X - tprintf("[%16lx] ", psw); -# endif - -#elif defined(X86_64) || defined(X32) - long rip; - - if (upeek(tcp, 8*RIP, &rip) < 0) { - PRINTBADPC; - return; - } - tprintf("[%16lx] ", rip); -#elif defined(IA64) - long ip; - - if (upeek(tcp, PT_B0, &ip) < 0) { - PRINTBADPC; - return; - } - tprintf("[%08lx] ", ip); -#elif defined(POWERPC) - long pc; - - if (upeek(tcp, sizeof(unsigned long)*PT_NIP, &pc) < 0) { - PRINTBADPC; - return; - } -# ifdef POWERPC64 - tprintf("[%016lx] ", pc); -# else - tprintf("[%08lx] ", pc); -# endif -#elif defined(M68K) - long pc; - - if (upeek(tcp, 4*PT_PC, &pc) < 0) { - tprints("[????????] "); - return; - } - tprintf("[%08lx] ", pc); -#elif defined(ALPHA) - long pc; - - if (upeek(tcp, REG_PC, &pc) < 0) { - tprints("[????????????????] "); - return; - } - tprintf("[%08lx] ", pc); -#elif defined(SPARC) || defined(SPARC64) - struct pt_regs regs; - if (ptrace(PTRACE_GETREGS, tcp->pid, (char *)®s, 0) < 0) { - PRINTBADPC; - return; - } -# if defined(SPARC64) - tprintf("[%08lx] ", regs.tpc); -# else - tprintf("[%08lx] ", regs.pc); -# endif -#elif defined(HPPA) - long pc; - - if (upeek(tcp, PT_IAOQ0, &pc) < 0) { - tprints("[????????] "); - return; - } - tprintf("[%08lx] ", pc); -#elif defined(MIPS) - long pc; - - if (upeek(tcp, REG_EPC, &pc) < 0) { - tprints("[????????] "); - return; - } - tprintf("[%08lx] ", pc); -#elif defined(SH) - long pc; - - if (upeek(tcp, 4*REG_PC, &pc) < 0) { - tprints("[????????] "); - return; - } - tprintf("[%08lx] ", pc); -#elif defined(SH64) - long pc; - - if (upeek(tcp, REG_PC, &pc) < 0) { - tprints("[????????????????] "); - return; - } - tprintf("[%08lx] ", pc); -#elif defined(ARM) - long pc; - - if (upeek(tcp, 4*15, &pc) < 0) { - PRINTBADPC; - return; - } - tprintf("[%08lx] ", pc); -#elif defined(AVR32) - long pc; - - if (upeek(tcp, REG_PC, &pc) < 0) { - tprints("[????????] "); - return; - } - tprintf("[%08lx] ", pc); -#elif defined(BFIN) - long pc; - - if (upeek(tcp, PT_PC, &pc) < 0) { - PRINTBADPC; - return; - } - tprintf("[%08lx] ", pc); -#elif defined(CRISV10) - long pc; - - if (upeek(tcp, 4*PT_IRP, &pc) < 0) { - PRINTBADPC; - return; - } - tprintf("[%08lx] ", pc); -#elif defined(CRISV32) - long pc; - - if (upeek(tcp, 4*PT_ERP, &pc) < 0) { - PRINTBADPC; - return; - } - tprintf("[%08lx] ", pc); -#endif /* architecture */ -} +/* Note! On new kernels (about 2.5.46+), we use PTRACE_O_TRACECLONE + * and PTRACE_O_TRACE[V]FORK for tracing children. + * If you are adding a new arch which is only supported by newer kernels, + * you most likely don't need to add any code below + * beside a dummy "return 0" block in change_syscall(). + */ /* * These #if's are huge, please indent them correctly. @@ -1146,116 +1096,6 @@ printcall(struct tcb *tcp) # define CLONE_VM 0x00000100 #endif -static int -change_syscall(struct tcb *tcp, int new) -{ -#if defined(I386) - if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(ORIG_EAX * 4), new) < 0) - return -1; - return 0; -#elif defined(X86_64) || defined(X32) - if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(ORIG_RAX * 8), new) < 0) - return -1; - return 0; -#elif defined(POWERPC) - if (ptrace(PTRACE_POKEUSER, tcp->pid, - (char*)(sizeof(unsigned long)*PT_R0), new) < 0) - return -1; - return 0; -#elif defined(S390) || defined(S390X) - /* s390 linux after 2.4.7 has a hook in entry.S to allow this */ - if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(PT_GPR2), new) < 0) - return -1; - return 0; -#elif defined(M68K) - if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(4*PT_ORIG_D0), new) < 0) - return -1; - return 0; -#elif defined(SPARC) || defined(SPARC64) - struct pt_regs regs; - if (ptrace(PTRACE_GETREGS, tcp->pid, (char*)®s, 0) < 0) - return -1; - regs.u_regs[U_REG_G1] = new; - if (ptrace(PTRACE_SETREGS, tcp->pid, (char*)®s, 0) < 0) - return -1; - return 0; -#elif defined(MIPS) - if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(REG_V0), new) < 0) - return -1; - return 0; -#elif defined(ALPHA) - if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(REG_A3), new) < 0) - return -1; - return 0; -#elif defined(AVR32) - if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(REG_R8), new) < 0) - return -1; - return 0; -#elif defined(BFIN) - if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(REG_P0), new) < 0) - return -1; - return 0; -#elif defined(IA64) - if (ia32) { - switch (new) { - case 2: - break; /* x86 SYS_fork */ - case SYS_clone: - new = 120; - break; - default: - fprintf(stderr, "%s: unexpected syscall %d\n", - __FUNCTION__, new); - return -1; - } - if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(PT_R1), new) < 0) - return -1; - } else if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(PT_R15), new) < 0) - return -1; - return 0; -#elif defined(HPPA) - if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(PT_GR20), new) < 0) - return -1; - return 0; -#elif defined(SH) - if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(4*(REG_REG0+3)), new) < 0) - return -1; - return 0; -#elif defined(SH64) - /* Top half of reg encodes the no. of args n as 0x1n. - Assume 0 args as kernel never actually checks... */ - if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(REG_SYSCALL), - 0x100000 | new) < 0) - return -1; - return 0; -#elif defined(CRISV10) || defined(CRISV32) - if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(4*PT_R9), new) < 0) - return -1; - return 0; -#elif defined(ARM) - /* Some kernels support this, some (pre-2.6.16 or so) don't. */ -# ifndef PTRACE_SET_SYSCALL -# define PTRACE_SET_SYSCALL 23 -# endif - if (ptrace(PTRACE_SET_SYSCALL, tcp->pid, 0, new & 0xffff) != 0) - return -1; - return 0; -#elif defined(TILE) - if (ptrace(PTRACE_POKEUSER, tcp->pid, - (char*)PTREGS_OFFSET_REG(0), - new) != 0) - return -1; - return 0; -#elif defined(MICROBLAZE) - if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(PT_GPR(0)), new) < 0) - return -1; - return 0; -#else -#warning Do not know how to handle change_syscall for this architecture -#endif /* architecture */ - return -1; -} - #ifdef IA64 typedef unsigned long *arg_setup_state; @@ -1355,6 +1195,13 @@ set_arg1(struct tcb *tcp, arg_setup_state *state, long val) #elif defined(SPARC) || defined(SPARC64) +# if defined(SPARC64) +# undef PTRACE_GETREGS +# define PTRACE_GETREGS PTRACE_GETREGS64 +# undef PTRACE_SETREGS +# define PTRACE_SETREGS PTRACE_SETREGS64 +# endif + typedef struct pt_regs arg_setup_state; # define arg_setup(tcp, state) \ @@ -1384,9 +1231,6 @@ typedef struct pt_regs arg_setup_state; # elif defined(ALPHA) || defined(MIPS) # define arg0_offset REG_A0 # define arg1_offset (REG_A0+1) -# elif defined(AVR32) -# define arg0_offset (REG_R12) -# define arg1_offset (REG_R11) # elif defined(POWERPC) # define arg0_offset (sizeof(unsigned long)*PT_R3) # define arg1_offset (sizeof(unsigned long)*PT_R4) @@ -1453,6 +1297,119 @@ set_arg1(struct tcb *tcp, void *cookie, long val) # define arg1_index 1 #endif +static int +change_syscall(struct tcb *tcp, arg_setup_state *state, int new) +{ +#if defined(I386) + if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(ORIG_EAX * 4), new) < 0) + return -1; + return 0; +#elif defined(X86_64) + if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(ORIG_RAX * 8), new) < 0) + return -1; + return 0; +#elif defined(X32) + /* setbpt/clearbpt never used: */ + /* X32 is only supported since about linux-3.0.30 */ +#elif defined(POWERPC) + if (ptrace(PTRACE_POKEUSER, tcp->pid, + (char*)(sizeof(unsigned long)*PT_R0), new) < 0) + return -1; + return 0; +#elif defined(S390) || defined(S390X) + /* s390 linux after 2.4.7 has a hook in entry.S to allow this */ + if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(PT_GPR2), new) < 0) + return -1; + return 0; +#elif defined(M68K) + if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(4*PT_ORIG_D0), new) < 0) + return -1; + return 0; +#elif defined(SPARC) || defined(SPARC64) + state->u_regs[U_REG_G1] = new; + return 0; +#elif defined(MIPS) + if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(REG_V0), new) < 0) + return -1; + return 0; +#elif defined(ALPHA) + if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(REG_A3), new) < 0) + return -1; + return 0; +#elif defined(AVR32) + /* setbpt/clearbpt never used: */ + /* AVR32 is only supported since about linux-2.6.19 */ +#elif defined(BFIN) + /* setbpt/clearbpt never used: */ + /* Blackfin is only supported since about linux-2.6.23 */ +#elif defined(IA64) + if (ia32) { + switch (new) { + case 2: + break; /* x86 SYS_fork */ + case SYS_clone: + new = 120; + break; + default: + fprintf(stderr, "%s: unexpected syscall %d\n", + __FUNCTION__, new); + return -1; + } + if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(PT_R1), new) < 0) + return -1; + } else if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(PT_R15), new) < 0) + return -1; + return 0; +#elif defined(HPPA) + if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(PT_GR20), new) < 0) + return -1; + return 0; +#elif defined(SH) + if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(4*(REG_REG0+3)), new) < 0) + return -1; + return 0; +#elif defined(SH64) + /* Top half of reg encodes the no. of args n as 0x1n. + Assume 0 args as kernel never actually checks... */ + if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(REG_SYSCALL), + 0x100000 | new) < 0) + return -1; + return 0; +#elif defined(CRISV10) || defined(CRISV32) + if (ptrace(PTRACE_POKEUSER, tcp->pid, (char*)(4*PT_R9), new) < 0) + return -1; + return 0; +#elif defined(ARM) + /* Some kernels support this, some (pre-2.6.16 or so) don't. */ +# ifndef PTRACE_SET_SYSCALL +# define PTRACE_SET_SYSCALL 23 +# endif + if (ptrace(PTRACE_SET_SYSCALL, tcp->pid, 0, new & 0xffff) != 0) + return -1; + return 0; +#elif defined(AARCH64) + /* setbpt/clearbpt never used: */ + /* AARCH64 is only supported since about linux-3.0.31 */ +#elif defined(TILE) + /* setbpt/clearbpt never used: */ + /* Tilera CPUs are only supported since about linux-2.6.34 */ +#elif defined(MICROBLAZE) + /* setbpt/clearbpt never used: */ + /* microblaze is only supported since about linux-2.6.30 */ +#elif defined(OR1K) + /* never reached; OR1K is only supported by kernels since 3.1.0. */ +#elif defined(METAG) + /* setbpt/clearbpt never used: */ + /* Meta is only supported since linux-3.7 */ +#elif defined(XTENSA) + /* setbpt/clearbpt never used: */ + /* Xtensa is only supported since linux 2.6.13 */ +#else +#warning Do not know how to handle change_syscall for this architecture +#endif /* architecture */ + return -1; +} + int setbpt(struct tcb *tcp) { @@ -1478,12 +1435,13 @@ setbpt(struct tcb *tcp) } } - if (sysent[tcp->scno].sys_func == sys_fork || - sysent[tcp->scno].sys_func == sys_vfork) { + if (tcp->s_ent->sys_func == sys_fork || + tcp->s_ent->sys_func == sys_vfork) { if (arg_setup(tcp, &state) < 0 || get_arg0(tcp, &state, &tcp->inst[0]) < 0 || get_arg1(tcp, &state, &tcp->inst[1]) < 0 - || change_syscall(tcp, clone_scno[current_personality]) < 0 + || change_syscall(tcp, &state, + clone_scno[current_personality]) < 0 || set_arg0(tcp, &state, CLONE_PTRACE|SIGCHLD) < 0 || set_arg1(tcp, &state, 0) < 0 || arg_finish_change(tcp, &state) < 0) @@ -1494,7 +1452,7 @@ setbpt(struct tcb *tcp) return 0; } - if (sysent[tcp->scno].sys_func == sys_clone) { + if (tcp->s_ent->sys_func == sys_clone) { /* ia64 calls directly `clone (CLONE_VFORK | CLONE_VM)' contrary to x86 vfork above. Even on x86 we turn the vfork semantics into plain fork - each application must not @@ -1510,9 +1468,9 @@ setbpt(struct tcb *tcp) || set_arg0(tcp, &state, new_arg0) < 0 || arg_finish_change(tcp, &state) < 0) return -1; - tcp->flags |= TCB_BPTSET; tcp->inst[0] = tcp->u_arg[arg0_index]; tcp->inst[1] = tcp->u_arg[arg1_index]; + tcp->flags |= TCB_BPTSET; return 0; } @@ -1526,6 +1484,7 @@ clearbpt(struct tcb *tcp) { arg_setup_state state; if (arg_setup(tcp, &state) < 0 + || change_syscall(tcp, &state, tcp->scno) < 0 || restore_arg0(tcp, &state, tcp->inst[0]) < 0 || restore_arg1(tcp, &state, tcp->inst[1]) < 0 || arg_finish_change(tcp, &state)) diff --git a/vsprintf.c b/vsprintf.c index b66609ac..f6019f0e 100644 --- a/vsprintf.c +++ b/vsprintf.c @@ -759,8 +759,8 @@ int kernel_vsnprintf(char *buf, size_t size, const char *fmt, va_list args) int strace_vfprintf(FILE *fp, const char *fmt, va_list args) { - static char *buf; - static unsigned buflen; + static char *buf = NULL; + static unsigned buflen = 0; int r; va_list a1; @@ -773,6 +773,8 @@ int strace_vfprintf(FILE *fp, const char *fmt, va_list args) buflen = len + 256; free(buf); buf = malloc(buflen); + if (!buf) + die_out_of_memory(); /*len =*/ kernel_vsnprintf(buf, buflen, fmt, args); } -- 2.34.1