Imported Upstream version 4.8 sandbox/pcoval/previous/upstream upstream/4.8
authorAnas Nashif <anas.nashif@intel.com>
Wed, 28 Aug 2013 11:46:56 +0000 (07:46 -0400)
committerAnas Nashif <anas.nashif@intel.com>
Wed, 28 Aug 2013 11:46:56 +0000 (07:46 -0400)
124 files changed:
.tarball-version [new file with mode: 0644]
.version [new file with mode: 0644]
COPYING [new file with mode: 0644]
COPYRIGHT [deleted file]
CREDITS
ChangeLog
Makefile.am
Makefile.in
NEWS
README
aclocal.m4
bjm.c
block.c
config.guess
config.h.in
config.sub
configure
configure.ac
count.c
debian/changelog
debian/strace.docs
defs.h
desc.c
file.c
io.c
ioctl.c
ipc.c
linux/aarch64/errnoent1.h [new file with mode: 0644]
linux/aarch64/ioctlent.h.in [new file with mode: 0644]
linux/aarch64/ioctlent1.h [new file with mode: 0644]
linux/aarch64/signalent1.h [new file with mode: 0644]
linux/aarch64/syscallent.h [new file with mode: 0644]
linux/aarch64/syscallent1.h [new file with mode: 0644]
linux/alpha/syscallent.h
linux/arm/errnoent1.h [deleted file]
linux/arm/ioctlent1.h [deleted file]
linux/arm/signalent1.h [deleted file]
linux/arm/syscallent.h
linux/arm/syscallent1.h [deleted file]
linux/avr32/syscallent.h
linux/bfin/ioctlent.h.in
linux/bfin/syscallent.h
linux/dummy.h
linux/errnoent.h
linux/hppa/syscallent.h
linux/i386/ioctlent.h.in
linux/i386/syscallent.h
linux/ia64/syscallent.h
linux/ioctlent-filter.awk [new file with mode: 0644]
linux/ioctlent.h.in
linux/ioctlent.sh
linux/m68k/syscallent.h
linux/metag/ioctlent.h.in [new file with mode: 0644]
linux/metag/syscallent.h [new file with mode: 0644]
linux/microblaze/syscallent.h
linux/mips/syscallent-compat.h [new file with mode: 0644]
linux/mips/syscallent-n32.h [new file with mode: 0644]
linux/mips/syscallent-n64.h [new file with mode: 0644]
linux/mips/syscallent-o32.h [new file with mode: 0644]
linux/mips/syscallent.h
linux/mtd-abi.h
linux/or1k/ioctlent.h.in [new file with mode: 0644]
linux/or1k/syscallent.h [new file with mode: 0644]
linux/powerpc/ioctlent.h.in
linux/powerpc/ioctlent1.h
linux/powerpc/syscallent.h
linux/s390/ioctlent.h.in
linux/s390/syscallent.h
linux/s390x/syscallent.h
linux/sh/syscallent.h
linux/sh64/syscallent.h
linux/sparc/ioctlent.h.in
linux/sparc/syscallent.h
linux/sparc/syscallent1.h
linux/subcall.h [new file with mode: 0644]
linux/syscall.h
linux/tile/errnoent1.h [new file with mode: 0644]
linux/tile/ioctlent1.h [new file with mode: 0644]
linux/tile/signalent1.h [new file with mode: 0644]
linux/tile/syscallent.h
linux/tile/syscallent1.h [new file with mode: 0644]
linux/ubi-user.h [new file with mode: 0644]
linux/x32/errnoent1.h
linux/x32/ioctlent1.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/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 [new file with mode: 0644]
linux/xtensa/syscallent.h [new file with mode: 0644]
loop.c
mem.c
mtd.c
net.c
pathtrace.c
process.c
quota.c
resource.c
signal.c
strace.1
strace.c
strace.spec
stream.c
syscall.c
system.c
tests/Makefile.am
tests/Makefile.in
tests/init.sh
tests/net [new file with mode: 0755]
tests/net-accept-connect.c [new file with mode: 0644]
tests/ptrace_setoptions
tests/qual_syscall [new file with mode: 0755]
tests/stat [new file with mode: 0755]
tests/strace-f
util.c
vsprintf.c

diff --git a/.tarball-version b/.tarball-version
new file mode 100644 (file)
index 0000000..ef216a5
--- /dev/null
@@ -0,0 +1 @@
+4.8
diff --git a/.version b/.version
new file mode 100644 (file)
index 0000000..ef216a5
--- /dev/null
+++ b/.version
@@ -0,0 +1 @@
+4.8
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..e9078d3
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,29 @@
+Copyright (c) 1991, 1992 Paul Kranenburg <pk@cs.few.eur.nl>
+Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
+Copyright (c) 1993 Ulrich Pegelow <pegelow@moorea.uni-muenster.de>
+Copyright (c) 1995, 1996 Michael Elizabeth Chastain <mec@duracef.shout.net>
+Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
+Copyright (C) 1998-2001 Wichert Akkerman <wakkerma@deephackmode.org>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/COPYRIGHT b/COPYRIGHT
deleted file mode 100644 (file)
index e9078d3..0000000
--- a/COPYRIGHT
+++ /dev/null
@@ -1,29 +0,0 @@
-Copyright (c) 1991, 1992 Paul Kranenburg <pk@cs.few.eur.nl>
-Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
-Copyright (c) 1993 Ulrich Pegelow <pegelow@moorea.uni-muenster.de>
-Copyright (c) 1995, 1996 Michael Elizabeth Chastain <mec@duracef.shout.net>
-Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
-Copyright (C) 1998-2001 Wichert Akkerman <wakkerma@deephackmode.org>
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-3. The name of the author may not be used to endorse or promote products
-   derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/CREDITS b/CREDITS
index 98eb532319e0904be7e185f1dfca18d8e05da766..399bcafdb407e797c13c71cd623e981112d3c074 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -19,14 +19,18 @@ strace-devel@lists.sourceforge.net mailing list.
        Anton Blanchard <anton@samba.org>
        Arkadiusz Miskiewicz <misiek@pld.org.pl>
        Bai Weidong <baiwd@cn.fujitsu.com>
+       Ben Noordhuis <info@bnoordhuis.nl>
        Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
        Bo Kullmar <bk@kullmar.se>
        Cai Fei <caifei@cn.fujitsu.com>
        Carlos O'Donell <carlos@systemhalted.org>
        Carmelo AMOROSO <carmelo.amoroso@st.com>
        Chris Metcalf <cmetcalf@tilera.com>
+       Chris Zankel <chris@zankel.net>
+       Christian Svensson <blue@cmd.nu>
        D.J. Barrow <djbarrow@de.ibm.com>
        Damir Shayhutdinov <damir@altlinux.ru>
+       Daniel P. Berrange <berrange@redhat.com>
        David Daney <ddaney@caviumnetworks.com>
        David Mosberger-Tang <davidm@hpl.hp.com>
        David S. Miller <davem@caip.rutgers.edu>
@@ -50,11 +54,13 @@ strace-devel@lists.sourceforge.net mailing list.
        Holger Hans Peter Freyther <holger@freyther.de>
        Jakub Bogusz <qboosh@pld-linux.org>
        Jakub Jelinek <jj@ultra.linux.cz>
+       James Hogan <james.hogan@imgtec.com>
        Jan Kratochvil <jan.kratochvil@redhat.com>
        Jeff Mahoney <jeffm@suse.com>
        Joe Ilacqua <spike@world.std.com>
        Johannes Stezenbach <js@sig21.net>
        John Hughes <john@Calva.COM>
+       John Spencer <maillist-strace@barfooze.de>
        Ju"rgen Fluk <louis@marco.de>
        Juergen Weigert <jnweiger@immd4.informatik.uni-erlangen.de>
        Keith Thompson <kst@alsys.com>
@@ -69,6 +75,7 @@ strace-devel@lists.sourceforge.net mailing list.
        Matt Day <mday@artisoft.com>
        Matthias Pfaller <leo@dachau.marco.de>
        Maxim Shchetynin <maxim@de.ibm.com>
+       Maxin B. John <maxin.john@enea.com>
        Michael E Chastain <mec@duracef.shout.net>
        Michael Holzheu <holzheu@de.ibm.com>
        Michail Litvak <mci@owl.openwall.com>
@@ -76,6 +83,7 @@ strace-devel@lists.sourceforge.net mailing list.
        Mike Frysinger <vapier@gentoo.org>
        Mike Stroyan <mike.stroyan@hp.com>
        Muttley Meen <muttley.meen@gmail.com>
+       Namhyung Kim <namhyung.kim@lge.com>
        Nate Eldredge <nate@cartsys.com>
        Nate Sammons <nate@users.sourceforge.net>
        Neil Campbell <lists@thebatcave.org.uk>
@@ -100,7 +108,9 @@ strace-devel@lists.sourceforge.net mailing list.
        Simon Murray <simon@transitive.com>
        Solar Designer <solar@openwall.com>
        Srinivasa Ds <srinivasa@in.ibm.com>
+       Stanislav Brabec <sbrabec@suse.cz>
        Steve Bennett <steveb@workware.net.au>
+       Steve McIntyre <steve.mcintyre@linaro.org>
        Thanh Ma <tma@encore.com>
        Thiemo Seufer <ths@networkno.de>
        Thomas Bogendoerfer <tsbogend@bigbug.franken.de>
@@ -115,5 +125,6 @@ strace-devel@lists.sourceforge.net mailing list.
        Xiaoning Ding <dingxn@gmail.com>
        Yang Zhiguo <yzgcsu@cn.fujitsu.com>
        Zach Brown <zach.brown@oracle.com>
+       Zev Weiss <zev@bewilderbeest.net>
        Zhang Le <zhilg@users.sourceforge.net>
        Марк Коренберг <socketpair@gmail.com>
index 408a554164e645dbe1f92eefb5858a389adf4cc5..c135d85881555fea776c1eb484f738df4f1d319d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2013-06-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <cmetcalf@tilera.com>
+
+       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  <vapier@gentoo.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <dvlasenk@redhat.com>
+
+       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  <berrange@redhat.com>
+
+       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  <ldv@altlinux.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <vapier@gentoo.org>
+
+       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  <james.hogan@imgtec.com>
+
+       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  <ldv@altlinux.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <chris@zankel.net>
+
+       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  <ldv@altlinux.org>
+
+       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  <cmetcalf@tilera.com>
+
+       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  <ldv@altlinux.org>
+
+       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  <vapier@gentoo.org>
+
+       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  <cmetcalf@tilera.com>
+
+       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  <vapier@gentoo.org>
+
+       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  <vapier@gentoo.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <vapier@gentoo.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <vapier@gentoo.org>
+
+       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  <ldv@altlinux.org>
+
+       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 <vapier@gentoo.org>
+
+2013-05-02  Mike Frysinger  <vapier@gentoo.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <james.hogan@imgtec.com>
+
+       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  <vapier@gentoo.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <vapier@gentoo.org>
+
+       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  <zev@bewilderbeest.net>
+
+       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  <schwab@suse.de>
+
+       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  <ldv@altlinux.org>
+
+       Update PR_* constants.
+       * process.c (prctl_options): Add more PR_* constants from linux/prctl.h.
+
+2013-03-25  Chris Zankel  <chris@zankel.net>
+
+       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  <vda.linux@googlemail.com>
+
+       Add example script which builds static (possibly cross-compiled) strace.
+
+2013-03-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <maxin.john@enea.com>
+
+       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  <ldv@altlinux.org>
+
+       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 <sys/uio.h> and <elf.h> on all architectures.
+       * syscall.c: Include <sys/uio.h> and <elf.h> 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  <ldv@altlinux.org>
+
+       Update MADV_* constants.
+       * mem.c (madvise_cmds): Add more MADV_* constants from
+       asm-generic/mman-common.h
+
+       Reported-by: Robin Hack <hack.robin@gmail.com>
+
+2013-03-07  Denys Vlasenko  <vda.linux@googlemail.com>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <vda.linux@googlemail.com>
+
+       Fix wrongly indented closing curly brace. No code changes.
+
+       strace_vfprintf: if malloc fails, exit gracefully.
+
+2013-03-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       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 <sys/user.h>.
+       [SH64] Do not include <asm/page.h>.
+       (get_pagesize): New function.
+       (sys_mmap_pgoff, sys_old_mmap_pgoff): Use it.
+
+2013-03-05  Denys Vlasenko  <vda.linux@googlemail.com>
+
+       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  <james.hogan@imgtec.com>
+
+       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 <blue@cmd.nu>
+
+2013-03-01  Denys Vlasenko  <vda.linux@googlemail.com>
+
+       umovestr: speed up check for NUL byte in the fetched word.
+
+2013-03-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+       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  <cmetcalf@tilera.com>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <ldv@altlinux.org>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <info@bnoordhuis.nl>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <vda.linux@googlemail.com>
+
+       Merge adjacent tprint's.
+
+       Correct i > MAX_NSYSCALLS commparison: should be i >= MAX_NSYSCALLS.
+
+2013-02-22  Denys Vlasenko  <vda.linux@googlemail.com>
+
+       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 <foo>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  <vda.linux@googlemail.com>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <vda.linux@googlemail.com>
+
+       Use the same type for i386_regs on 32-bit and 64-bit x86.
+       * defs.h: Stop including <asm/ptrace.h> 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  <vda.linux@googlemail.com>
+
+       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  <blue@cmd.nu>
+
+       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  <vda.linux@googlemail.com>
+
+       [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  <vda.linux@googlemail.com>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <ldv@altlinux.org>
+
+       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  <vapier@gentoo.org>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <info@bnoordhuis.nl>
+
+       Improve perf_event_open argument decoding.
+       * configure.ac (AC_CHECK_HEADERS): Add linux/perf_event.h.
+       * desc.c [HAVE_LINUX_PERF_EVENT_H]: Include <linux/perf_event.h>.
+       (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  <cmetcalf@tilera.com>
+
+       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  <rep.dot.nop@gmail.com>
+
+       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  <ldv@altlinux.org>
+
+       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  <vda.linux@googlemail.com>
+
+       Simple bug fix for x86_86.
+       * syscall.c (printcall): Use x86_64_regs.rip, not x86_64_regs.ip.
+
+2013-02-05  Chris Metcalf  <cmetcalf@tilera.com>
+
+       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
+       <asm/unistd.h> numbering space for system calls.
+
+       * defs.h [TILE]: Include <asm/ptrace.h> 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 <asm-generic/unistd.h>.
+       * 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  <vda.linux@googlemail.com>
+
+       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  <sbrabec@suse.cz>
+
+       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  <ldv@altlinux.org>
+
+       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  <sbrabec@suse.cz>
+
+       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  <maillist-strace@barfooze.de>
+
+       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  <james.hogan@imgtec.com>
+
+       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  <steve.mcintyre@linaro.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <steve.mcintyre@linaro.org>
+
+       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 <sys/ptrace.h>, define TCB_WAITEXECVE.
+       * ipc.c (indirect_ipccall): Support AArch64.
+       * process.c (struct_user_offsets): Likewise.
+       * syscall.c [AARCH64]: Include <asm/ptrace.h>,  <sys/uio.h>, and
+       <elf.h>.  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  <namhyung.kim@lge.com>
+
+       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  <vapier@gentoo.org>
+
+       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  <ldv@altlinux.org>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <ldv@altlinux.org>
+
+       Always check setreuid return code.
+       * strace.c (startup_child): Check setreuid return code.
+
+2012-08-24  Mike Frysinger  <vapier@gentoo.org>
+
+       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  <ldv@altlinux.org>
+
+       Decode file type returned by getdents system call.
+       * file.c (sys_getdents): Decode d_type in unabbreviated mode.
+
+2012-07-12  Dmitry V. Levin  <ldv@altlinux.org>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <vapier@gentoo.org>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <vda.linux@googlemail.com>
+
+       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  <ldv@altlinux.org>
+
+       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  <ldv@altlinux.org>
+
+       Fix kernel release string parsing.
+       * strace.c (get_os_release): Handle "X.Y-something" utsname.release
+       strings properly.
+
+       Reported-by: Bryce Gibson <bryce@gibson-consulting.com.au>
+
+2012-05-14  Denys Vlasenko  <vda.linux@googlemail.com>
+
+       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  <vapier@gentoo.org>
+
+       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  <ldv@altlinux.org>
+
+       doc: describe documentation policy.
+       * README-hacking: Describe documentation policy.
+
 2012-05-02  Dmitry V. Levin  <ldv@altlinux.org>
 
+       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.
index 3e8c81023c8ca2cc8598c9c69bb28ea78c27a839..9d611f396537620ab86775e1e2d694ad75d6c8ff 100644 (file)
@@ -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
        $(<D)/$(<F) > $@
 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 > $@
index fd04f2e1e8db560a6211b53e95959e0caed439b6..5bd50a8ba5063283ec9503e719c59c72ec61db9b 100644 (file)
@@ -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@ $(<D)/$(<F) > $@
 @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 1f3de086bd0d25447d0fc82ecbe96445848e3f22..1ec49f7d1747c3bb6ca97888d4585806c2b0d36c 100644 (file)
--- 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 244a5c3f6e023e181ab24e158ea5e72dfcb7fbda..4ef0834a1b0e05e5a0d50acb508ce1e4b037596f 100644 (file)
--- 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.
 
index 095818803220d2727ff9cc12fb8dbe4bd5b87491..69994aefe67e9707c609c69df789762357f15079 100644 (file)
@@ -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 6ae37587187ea8db7c58459d61a22d9897286d39..cd7dc13f8061396108f12b60869a986fe5c4aa5b 100644 (file)
--- 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 ea571b6df245f68312ec288ee0500ddc514d14c5..374002ea5e274d0bd42540061db5c3a3bcf259ac 100644 (file)
--- 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
index d622a44e551f209d5e8c5462b3fe53a162f7b330..120cc0d239ebf31c1cb9c344fcaf5d630edf2da3 100755 (executable)
@@ -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 <config-patches@gnu.org> 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 <features.h>
+       #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 <<EOF
 #ifdef _SEQUENT_
index a7ba6ce5810c30875c4c43d76d23c697a9a8dd22..3cd5fd8d093e5002d8fce7fbf7234f3dfc508780 100644 (file)
@@ -1,5 +1,8 @@
 /* config.h.in.  Generated from configure.ac by autoheader.  */
 
+/* Define for the AArch64 architecture. */
+#undef AARCH64
+
 /* Define if building universal (internal helper macro) */
 #undef AC_APPLE_UNIVERSAL_BUILD
 
 /* Define to 1 if you have BLKGETSIZE64. */
 #undef HAVE_BLKGETSIZE64
 
+/* Define to 1 if you have the declaration of `IO_CMD_PWRITE', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IO_CMD_PWRITE
+
+/* Define to 1 if you have the declaration of `IO_CMD_PWRITEV', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IO_CMD_PWRITEV
+
 /* Define to 1 if you have the declaration of `LO_FLAGS_AUTOCLEAR', and to 0
    if you don't. */
 #undef HAVE_DECL_LO_FLAGS_AUTOCLEAR
    */
 #undef HAVE_DIRENT_H
 
+/* Define to 1 if you have the <elf.h> header file. */
+#undef HAVE_ELF_H
+
 /* Define to 1 if you have the `fork' function. */
 #undef HAVE_FORK
 
 /* Define to 1 if you have the <linux/netlink.h> header file. */
 #undef HAVE_LINUX_NETLINK_H
 
+/* Define to 1 if you have the <linux/perf_event.h> header file. */
+#undef HAVE_LINUX_PERF_EVENT_H
+
 /* Define to 1 if you have the <linux/ptrace.h> header file. */
 #undef HAVE_LINUX_PTRACE_H
 
 /* 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
 
    <sysmacros.h>. */
 #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
 
 /* 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
 
 /* 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
 
index c894da45500c4af1bf5688e713a8895622d18182..cd7c0f799a22e32b9c0b64db09b5b483c5c9d37a 100755 (executable)
@@ -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 <http://www.gnu.org/licenses/>.
@@ -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 <config-patches@gnu.org>.  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 <config-patches@gnu.org>."
 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
                ;;
index 253181b61f07fe00ffccb89a400735665b28daa9..a8fe965243d2aed2fa03c295eee18fe42adba3f2 100755 (executable)
--- 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 <strace-devel@lists.sourceforge.net>.
 #
 #
 # 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 <strace-devel@lists.sourceforge.net>.
 _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 <libaio.h>
+"
+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 <libaio.h>
+"
+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 <libaio.h>
+"
+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 <strace-devel@lists.sourceforge.net>."
 
 _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\\"
 
index 4107bfa0d36808c5dd009c0077107e531786eddc..c4896f3d06a0428a5725b5d19ebb56ed1a192b8c 100644 (file)
@@ -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 <sys/resource.h>])
 
+AC_CHECK_HEADERS([libaio.h], [
+       AC_CHECK_MEMBERS([struct iocb.u.c.flags],,, [#include <libaio.h>])
+       AC_CHECK_DECLS([IO_CMD_PWRITE, IO_CMD_PWRITEV],,, [#include <libaio.h>])
+])
+
 AC_PATH_PROG([PERL], [perl])
 
 AC_CONFIG_FILES([Makefile tests/Makefile])
diff --git a/count.c b/count.c
index 9496b0453c4e73ddc8ce34a5f2d76135a07aac99..83954661930411e9f4afde7dda47af209e25eb33 100644 (file)
--- 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);
        }
 
index 4f3286b9f56093b04f8550964f13b7e43a8d6e36..39bb56f27b09aa5e5c7db0c44870c02bdd15b99e 100644 (file)
@@ -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 <ldv@altlinux.org>  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 <ldv@altlinux.org>  Wed, 02 May 2012 12:34:56 +0000
+ -- Frederik Schüler <fs@debian.org>  Tue, 12 Feb 2013 10:35:22 +0100
 
 strace (4.6-1) unstable; urgency=low
 
index f62d06791b49c8f8e4378ce187804640df6e954d..edc00710471f58d7015469b1f7d9b1be59101cb6 100644 (file)
@@ -1,2 +1 @@
-TODO
 NEWS
diff --git a/defs.h b/defs.h
index 3ccd8d55432dd7807c96da72a2e3d0423fd9648d..3f07c4f38f7e858e39993ff2a4b057488aeae73e 100644 (file)
--- a/defs.h
+++ b/defs.h
 #  define _LFS64_LARGEFILE 1
 # endif
 #endif
+
 #ifdef MIPS
 # include <sgidefs.h>
+# 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 <features.h>
 #ifdef HAVE_STDBOOL_H
 # include <stdbool.h>
 #include <unistd.h>
 #include <stdlib.h>
 #include <stdio.h>
-#include <ctype.h>
+/* Open-coding isprint(ch) et al proved more efficient than calling
+ * generalized libc interface. We don't *want* to do non-ASCII anyway.
+ */
+/* #include <ctype.h> */
 #include <string.h>
 #include <errno.h>
 #include <signal.h>
@@ -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/<ARCH>/syscallent.h: all have nargs <= 6.
+ * linux/<ARCH>/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 <sys/ptrace.h>
 #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 <asm/ptrace.h>  /* 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 <asm/ptrace.h>
+
+#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 <asm/psrcompat.h>
 #  define SUPPORTED_PERSONALITIES 3
@@ -217,10 +315,9 @@ extern long ptrace(int, int, char *, long);
 #  include <asm/psr.h>
 #  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 f0c18903438f94a4624f5f54301763d797571cc8..a420febcdc01e766a6487908815686fb804b6e2d 100644 (file)
--- a/desc.c
+++ b/desc.c
 #ifdef HAVE_LIBAIO_H
 # include <libaio.h>
 #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  <linux/perf_event.h>
 #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("{ <decode error: unsupported wordsize %d> }",
+                       tprintf("<decode error: unsupported wordsize %d>",
                                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 0cda7e127b71342674c316d23c93eefd5437febb..9a832875b5993495753a4fae2bf48400256b025e 100644 (file)
--- a/file.c
+++ b/file.c
@@ -32,7 +32,7 @@
 #include <dirent.h>
 #include <sys/swap.h>
 
-#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 <sys/stat.h>
@@ -168,9 +180,6 @@ struct stat64 {
 #undef st_atime
 #undef st_mtime
 #undef st_ctime
-#ifdef HPPA
-# define stat64 hpux_stat64
-#endif
 
 #include <fcntl.h>
 #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 <sys/sysmacros.h>
 #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("<decode error: unsupported wordsize %d>",
+                               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 6b3f4b70d9f8c665198dd33a8690f5b1235c78d0..b7bf8327a5a32bef7d27a207235919a84259797a 100644 (file)
--- 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 323946d39474505ce661d3a2521e8d31a2a1971f..22804395627fecdc2bc8581e62fced1b9812e97c 100644 (file)
--- 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 f4ec522e60e2cc76c5b11c56b6c4f59464969a33..0b91a526ad9a05e039bb666b56acf6bc73bc5add 100644 (file)
--- 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 (file)
index 0000000..e1cbe33
--- /dev/null
@@ -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 (file)
index 0000000..83e6eb2
--- /dev/null
@@ -0,0 +1 @@
+#include "../arm/ioctlent.h.in"
diff --git a/linux/aarch64/ioctlent1.h b/linux/aarch64/ioctlent1.h
new file mode 100644 (file)
index 0000000..72eeaf1
--- /dev/null
@@ -0,0 +1 @@
+#include "ioctlent.h"
diff --git a/linux/aarch64/signalent1.h b/linux/aarch64/signalent1.h
new file mode 100644 (file)
index 0000000..d31e6a4
--- /dev/null
@@ -0,0 +1 @@
+#include "../signalent.h"
diff --git a/linux/aarch64/syscallent.h b/linux/aarch64/syscallent.h
new file mode 100644 (file)
index 0000000..1b892be
--- /dev/null
@@ -0,0 +1 @@
+#include "../arm/syscallent.h"
diff --git a/linux/aarch64/syscallent1.h b/linux/aarch64/syscallent1.h
new file mode 100644 (file)
index 0000000..e772a5e
--- /dev/null
@@ -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 */
index a2d048bf7bbe04f1ff25fdba2dd07257211ff09d..28e2eeb31a7df7c3691e6ffbd422f6ebbce85240 100644 (file)
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 (file)
index a894827..0000000
+++ /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 (file)
index 1f92feb..0000000
+++ /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 (file)
index 5c18d98..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Our second set comes from the i386 files.  */
-#include "../signalent.h"
index 550335e3b0c5ae6b9dac9e9a98acc61c2c39793f..132b22ad8aea66c434983e99426c8f6eaed5d114 100644 (file)
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
 
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 (file)
index 3b5397d..0000000
+++ /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 */
index 102b17d55332a9154aff6662db3d87a11fc6f14d..527d11a5cbeaf1e0d2848aeee1fb08886394a90a 100644 (file)
@@ -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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
index 377354469cae92f43fecb40d96855b95b45c06fc..791d8e3636a685d4aaaee3e2c9ec55bd6129f9a5 100644 (file)
@@ -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},
index 1ecab75b1fa90a2076accf8f5c6c4424e3f71ede..cc03eaf053aa485cdce790f1f8f4e6342d33c0b2 100644 (file)
@@ -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 */
        { 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 */
        { 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 */
        { 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 */
        { 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_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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
index ce340b9db92a3d8be608b9330da4a40de30bc8b3..9d33fe1837bce41b919cf51d7c30971c17eb10cb 100644 (file)
  * 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
 #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
 #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
index e43bff54ecc8a8e8668f75a11126c0290f59f167..c2ac683921cd1540301ab4aa52fa939106d2befb 100644 (file)
        "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 */
index c16eecb2aa7bc50862531f348bf4f2037478eee4..4ce2dc2091fca3d93953617ed3f999d22ededc33 100644 (file)
@@ -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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
index 9a90ec8ae38fc6bffc42fa35f3290f6b58aa7b6c..449ad401e36c83ede48a9b9685dc764588c97ae5 100644 (file)
        {"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},
index 4092f2e71f9832ad9303ceeb21d23b1987eb0eb4..480a28e61f8ffc687f4e53f58ca6759a4bb5bcea 100644 (file)
  */
 
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
 
index 0dd18f0ded4cebd473b32928bdaf3badce638b23..0242280ce5ff2d882516a5fa9565d155c02b45a3 100644 (file)
@@ -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
 #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
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 (file)
index 0000000..181c4bf
--- /dev/null
@@ -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
+}
index 98ebbcc4705df89a8154f15fd37fcc86191aec9b..78f1b541da4157e6f600e627394306f8f46ea4af 100644 (file)
@@ -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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
        {"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},
index 9bcff5f8fc746fee43a058d41b44bea870bb283a..c483ba88006a4588619e97b451b2e74d4fafb07e 100755 (executable)
@@ -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 <ioctls.h >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
 
index 5b8d8d156a8155aeb8e147ae1563b07d1ab6c283..d3eec794bf8a5fe2f46ff21b95455f44adc4bb99 100644 (file)
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 (file)
index 0000000..52ac99b
--- /dev/null
@@ -0,0 +1 @@
+#include "../i386/ioctlent.h.in"
diff --git a/linux/metag/syscallent.h b/linux/metag/syscallent.h
new file mode 100644 (file)
index 0000000..9401ca4
--- /dev/null
@@ -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 */
index f2da85aeb7b79a43f272b693a2b65aa0b5643750..22b69c48adc7ed75844cb5aa26b1a00699900da6 100644 (file)
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 (file)
index 0000000..696108f
--- /dev/null
@@ -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 (file)
index 0000000..69453b1
--- /dev/null
@@ -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 (file)
index 0000000..dd5da40
--- /dev/null
@@ -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 (file)
index 0000000..c23ac14
--- /dev/null
@@ -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 */
index ebb93f963314cb508c54f589c125aa1a589d703e..61430d215d65831de5c887d48b07414843fa9f38 100644 (file)
 #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"
index 576e8c95e8b9d88b739e412f03e2dabeced1ba17..b197861f3b458c9eec51a1afba650ac2da473485 100644 (file)
@@ -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 (file)
index 0000000..52ac99b
--- /dev/null
@@ -0,0 +1 @@
+#include "../i386/ioctlent.h.in"
diff --git a/linux/or1k/syscallent.h b/linux/or1k/syscallent.h
new file mode 100644 (file)
index 0000000..d112212
--- /dev/null
@@ -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 */
index 0870704f7c1d28c1212500e52c5a44de1c54fa86..510f5aa4ad46f9b1df5545911abccbc5e018ff56 100644 (file)
@@ -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},
        {"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},
index 18d31b544d6aee2ee1d3829c7a04c9e149994b46..72eeaf194bce48a6c173597e7b7a3166845e45f4 100644 (file)
@@ -1 +1 @@
-#include "linux/ioctlent.h"
+#include "ioctlent.h"
index 35f3b39186f75cfb900e5412b153ecbddc77c129..d84a8f4825df9081621da7bf933d0e16f0de6979 100644 (file)
@@ -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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
 
index 35cdd8158332e9fab52119cf29758fb647134598..1e93a0b58e0e2474ef88db8d6fc71094351d9ff8 100644 (file)
        {"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},
        {"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},
index ccd4b015ece2fc1e9dcfcb8a8379e0617dd669ba..719029f4e3afabe929e2204d5b60075f1b7d7a62 100644 (file)
@@ -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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
 
index b1264d1f01556a99da4ba88c8024bb9a5d8bd907..66face5f36f81fe2775e75e0882e5ace6f742681 100644 (file)
@@ -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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
 
index 3f3917ba6f10b0687cb27ce5f059dc77f160206b..b51fc6ff594e9a41e5ba1c18f7ff1315c1d76e88 100644 (file)
@@ -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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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,     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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
 
index 347ff0c731ac5e2c27ad7a151d7527cd64d529c7..e970147d20ec53641a81fbe89f4f860efa2439ff 100644 (file)
@@ -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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
 
index 25b7b4d53f76cee6d9384449941ea9e8ded2f39b..008aae09f3f9a45034891a6d05c4ec1b45d0d3df 100644 (file)
        {"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},
        {"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},
index 259eb4b2479698d277ec2df1f4a1682737c37873..804e8c36bfab993639e269cee48e5656b5041f4c 100644 (file)
@@ -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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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
index 5e9fe961e1d803d474005f98d564fe284faea556..9519e085ad3ea5871719e1505fa438b1a25376cb 100644 (file)
        { 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 (file)
index 0000000..54f7fca
--- /dev/null
@@ -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
index 7e0155ec50e512dd22e2ebe7a5f15b715fb52555..f6afcac049731bfa89c42bfe379d79b960f47cbf 100644 (file)
@@ -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 (file)
index 0000000..439ec5c
--- /dev/null
@@ -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 (file)
index 0000000..9057b32
--- /dev/null
@@ -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 (file)
index 0000000..27a3e48
--- /dev/null
@@ -0,0 +1,2 @@
+/* tilegx32/tilepro */
+#include "../signalent.h"
index c21a1e09486342ed1ec553acec2cc7170912e655..a06933426f8b6c4c9c488e949f7c761a158fe361 100644 (file)
-       { 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 (file)
index 0000000..9f20521
--- /dev/null
@@ -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 (file)
index 0000000..a12c884
--- /dev/null
@@ -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 <linux/types.h>
+
+/*
+ * 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__ */
index a894827605925cc9fce940955a4fb55b224f7c7c..de1136cd98aca766fcd5adec97be575a61ce6613 100644 (file)
@@ -1,2 +1,2 @@
-/* Our second set comes from the i386 files.  */
+/* i386 personality */
 #include "../errnoent.h"
index 1f92feb74b7a00653dda6c30bd750d1c80df885a..47506717563ccf56e36e4e6d73123e67b5e07de0 100644 (file)
@@ -1,2 +1,2 @@
-/* Our second set comes from the i386 files.  */
-#include "linux/ioctlent.h"
+/* i386 personality */
+#include "ioctlent.h"
index 5c18d98b4088143ff53889e11f2d2807b3594704..c927d7290e6c019c4ea74592c9d57d1fb2ebf0c1 100644 (file)
@@ -1,2 +1,2 @@
-/* Our second set comes from the i386 files.  */
+/* i386 personality */
 #include "../signalent.h"
index fcb6a232b2e8844b2d55b1660909fe528b815c2a..65df127192be6768aedb30f56553c6df40d30227 100644 (file)
@@ -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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
index 20c65292c6ad291af337597e03bd625f3b07756c..c9100de8af8a315ebfa04389a1a5c87fb5966c8a 100644 (file)
@@ -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"
index a894827605925cc9fce940955a4fb55b224f7c7c..de1136cd98aca766fcd5adec97be575a61ce6613 100644 (file)
@@ -1,2 +1,2 @@
-/* Our second set comes from the i386 files.  */
+/* i386 personality */
 #include "../errnoent.h"
index 00de57b6931d7bfeb112d417f6e0066cf7ba5c80..0630919d86903f0eb0e575324a7403e7dd1bfa3d 100644 (file)
@@ -1,2 +1,2 @@
-/* Our third set is for x32.  */
+/* x32 personality */
 #include "../errnoent.h"
index 1f92feb74b7a00653dda6c30bd750d1c80df885a..47506717563ccf56e36e4e6d73123e67b5e07de0 100644 (file)
@@ -1,2 +1,2 @@
-/* Our second set comes from the i386 files.  */
-#include "linux/ioctlent.h"
+/* i386 personality */
+#include "ioctlent.h"
index 060003b36bd8e5cf6644e1dda37da331e44b0502..fd4b94dd056c7ab0df09e6a75f700e7bce67fb8c 100644 (file)
@@ -1,2 +1,2 @@
-/* Our third set is for x32.  */
-#include "linux/ioctlent.h"
+/* x32 personality */
+#include "ioctlent.h"
index 5c18d98b4088143ff53889e11f2d2807b3594704..c927d7290e6c019c4ea74592c9d57d1fb2ebf0c1 100644 (file)
@@ -1,2 +1,2 @@
-/* Our second set comes from the i386 files.  */
+/* i386 personality */
 #include "../signalent.h"
index 6fbcab12cf63a49a53b14c1b3cd64fc26150078a..c8f6824f9aa3f3281b3c90e32d8208e4a08ad5d8 100644 (file)
@@ -1,2 +1,2 @@
-/* Our third set is for x32.  */
+/* x32 personality */
 #include "../signalent.h"
index 34ebc53bcdf0cd438d4afad46ed2c5d16d6d2590..8e3a2007ad7bda8fbc7318fd081c6fff3ed2a369 100644 (file)
@@ -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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
        { 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 */
index 909778513a3207e9b03f116c6e64daffef7f4f77..c9100de8af8a315ebfa04389a1a5c87fb5966c8a 100644 (file)
@@ -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"
index 1d35f536926f252bd7f329a73ec228b1ee32c979..5e0df5328b8ca8ba9ebd42492db7b0fbb5cf317d 100644 (file)
@@ -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 (file)
index 0000000..a9eae81
--- /dev/null
@@ -0,0 +1 @@
+/* intentionally empty */
diff --git a/linux/xtensa/syscallent.h b/linux/xtensa/syscallent.h
new file mode 100644 (file)
index 0000000..62cb40d
--- /dev/null
@@ -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 83d91527ea258a118054d2366d67e462b2ee7f45..a3f89e06f79d8f899774ba539f46510b50e5def5 100644 (file)
--- 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 027903051a1d3a35a1b06fdd418b6f2c7491e572..ef273c7e62b5a69bb5839e06ddb1baabd201e69f 100644 (file)
--- a/mem.c
+++ b/mem.c
 #  define modify_ldt_ldt_s user_desc
 # endif
 #endif
-#if defined(SH64)
-# include <asm/page.h>     /* 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 976024ef7473c590058c404e9c6c76cbd1de2b15..5385147ff461a7b34922dbeae612b270e3efc7e8 100644 (file)
--- a/mtd.c
+++ b/mtd.c
 #else
 # include <mtd/mtd-abi.h>
 #endif
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 7, 0)
+# include "ubi-user.h"
+#else
+# include <mtd/ubi-user.h>
+#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 2911c73da9303876d449ac3bfdc5b0588ddfe79b..9ae783a9345b518c296db0f2faba1ed42efd03d8 100644 (file)
--- a/net.c
+++ b/net.c
 #include <arpa/inet.h>
 #include <net/if.h>
 #include <asm/types.h>
-#if defined(__GLIBC__) && (__GLIBC__ >= 2) && (__GLIBC__ + __GLIBC_MINOR__ >= 3)
+#if defined(__GLIBC__)
 # include <netipx/ipx.h>
 #else
 # include <linux/ipx.h>
 #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
 #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);
index c000c835f9077d7e4e7c290245d5c7bd74c4ec5b..d4c2dc43cb519805c178f875a6b9c261bcb55617 100644 (file)
@@ -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]);
        }
index fa304e5886a6a6e6bb29af02b45787ca50696abd..799a314d69f939d6678ee69b3acef3cddad177ab 100644 (file)
--- a/process.c
+++ b/process.c
@@ -41,6 +41,9 @@
 #include <sys/resource.h>
 #include <sys/utsname.h>
 #include <sys/user.h>
+#ifdef HAVE_ELF_H
+# include <elf.h>
+#endif
 
 #ifdef HAVE_SYS_REG_H
 # include <sys/reg.h>
@@ -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 a1fd92d343d3ee5ef4d2cb220192a50d47044e6c..780abf9615d25ae0c8af7ef662eb022613d34d0a 100644 (file)
--- 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:
index 5a51d8cb3a84c2a721d5a61211e310ab44bf361d..657e63de4ad103c0ff49413e72739b69348e3b40 100644 (file)
@@ -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
index 6dd01c1f26afe5f8780da79f54fe22c2c4ecac1a..55815aa0a691002f646fa1656beeae7bfcf3aee6 100644 (file)
--- a/signal.c
+++ b/signal.c
 # include <asm/ptrace_offsets.h>
 #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 <errno.h>.  */
-       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 *)&regs) == -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 *)&regs, 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 *)&regs, 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 */
index faf4d45c1d1c55e10f8a845d16cc8dafa1ce2b95..5f287d78dd03b9e3e6145e390195c95a368cd0dc 100644 (file)
--- 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
index 857136d594f9cbb8a6d40dcd4bfc946e0979327e..6eab600fc9517ac081da4ec39521380c084d702e 100644 (file)
--- a/strace.c
+++ b/strace.c
@@ -39,6 +39,9 @@
 #include <grp.h>
 #include <dirent.h>
 #include <sys/utsname.h>
+#ifdef HAVE_PRCTL
+# include <sys/prctl.h>
+#endif
 #if defined(IA64)
 # include <asm/ptrace_offsets.h>
 #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
-                                      ? "<writing to pipe>" : 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 ? "<writing to pipe>" : 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 = &params_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;
index 1bb7d3b801866fca30cd58ac6fcaf5822f3f7d1f..817f1ae73e3b38dc8b8e5d097182650a2c11dea2 100644 (file)
@@ -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 <ldv@altlinux.org> - 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 <rel-eng@lists.fedoraproject.org> - 4.7-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
+* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.7-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
 * Wed May 02 2012 Dmitry V. Levin <ldv@altlinux.org> 4.7-1
 - New upstream release.
   + implemented proper handling of real SIGTRAPs (#162774).
index 8656fc031504fe6165429f8ae5fa1e23b73174ef..8c908382ccca4d4cd2821213a7ca06cd57d45c76 100644 (file)
--- a/stream.c
+++ b/stream.c
 #ifdef HAVE_SYS_POLL_H
 # include <sys/poll.h>
 #endif
-#ifdef HAVE_STROPTS_H
-# include <stropts.h>
-#endif
 #ifdef HAVE_SYS_CONF_H
 # include <sys/conf.h>
 #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 <stropts.h>
+# 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;
index 52d742f7e324f20bf82ee288a8c7fd13c0a5ebbf..7efee0e43e132c8827199c03f379ae3f636dfbab 100644 (file)
--- a/syscall.c
+++ b/syscall.c
 # include <asm/rse.h>
 #endif
 
+/* for struct iovec */
+#include <sys/uio.h>
+/* for NT_PRSTATUS */
+#ifdef HAVE_ELF_H
+# include <elf.h>
+#endif
+
+#if defined(AARCH64)
+# include <asm/ptrace.h>
+#endif
+
+#if defined(XTENSA)
+# include <asm/ptrace.h>
+#endif
+
 #ifndef ERESTARTSYS
 # define ERESTARTSYS   512
 #endif
 #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 *)&regs, 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, &regs) < 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 *)&regs) == -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) &regs) < 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 *)&regs, 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(&regs.u_regs[U_REG_O0], &regs.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, &microblaze_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);
                /*
                 * " <unavailable>" 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, &regs) < 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 *)&regs) == -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) &regs) < 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 *)&regs, 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, &microblaze_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
index a77649275f751139f779f6c15e5eaedf455c71f2..26d0d7fd2eb2d96f60f3840dbaabbcb2333bf90a 100644 (file)
--- 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 */
index 93636ca8fb857a8f12e4f30957252e1146763261..a7f584d362fc966b67cd97ce324f2be5cd2bc65c 100644 (file)
@@ -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)
 
index 56f6834fcc6973fb40cb44be318fa2d82fc6f057..abf819620730a25c579c9b5abf856e2d96b3d475 100644 (file)
@@ -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
 
 
index f860b0b079470934619f799e79586f80e6e59fc3..db7f1025952416d996053318de4d91fb331d584f 100644 (file)
@@ -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 (executable)
index 0000000..64bcc77
--- /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 (file)
index 0000000..5af7d81
--- /dev/null
@@ -0,0 +1,49 @@
+#include <assert.h>
+#include <stddef.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/wait.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+
+#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;
+}
index 7511047cf9f9d56ead252fc4da6214725d20e65e..38a2a0235f611d38482e38c12b9388521c4b8101 100755 (executable)
@@ -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 (executable)
index 0000000..f382f1a
--- /dev/null
@@ -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 (executable)
index 0000000..e0fc379
--- /dev/null
@@ -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
index 7b395526be19dba74c2faf8eff3279345a312677..0f76afc1ea4c2f4f042cdf50c90c3feab9dee52d 100755 (executable)
@@ -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 d347bd86e1841f479a8d56ea47eef5402dd7c3e7..6acdbc2946805629294e2c43586b12240ed670b3 100644 (file)
--- a/util.c
+++ b/util.c
 # include <sys/uio.h>
 #endif
 
-#if __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1)
-# include <linux/ptrace.h>
-#endif
-
 #if defined(IA64)
 # include <asm/ptrace_offsets.h>
 # include <asm/rse.h>
 # 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 *)&regs, 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*)&regs, 0) < 0)
-               return -1;
-       regs.u_regs[U_REG_G1] = new;
-       if (ptrace(PTRACE_SETREGS, tcp->pid, (char*)&regs, 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))
index b66609ac79beb5768421dcbdbdf301883ab1db0a..f6019f0e16ba271a25c7dcccfe92a1218228b331 100644 (file)
@@ -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);
        }