[PATCH] Add tilegx support to strace

Chris Metcalf cmetcalf at tilera.com
Tue Feb 5 16:16:31 UTC 2013


Ping?

Would it make sense for me to be able to directly commit tile-specific changes to strace?  The previous tile support for strace was committed by an strace maintainer on my behalf (commit c8c6698ef7cde in Dec 2009).

Thanks!

On 12/20/2012 3:04 PM, Chris Metcalf wrote:
> 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_scno) [TILE]: Set personality; use PTRACE_GETREGS to
> set tile_regs rather than using upeek.
> (get_syscall_args) [TILE]: Use tile_regs.
> (get_syscall_result) [TILE]: Update tile_regs.
> (get_error) [TILE]: Use tile_regs.
> * util.c (printcall) [TILE]: Print pc.
> (arg0_offset, arg1_offset, restore_arg0, restore_arg1) [TILE]:
> Properly handle tile call semantics and support tilegx.
> ---
>  defs.h                   |   16 ++-
>  linux/tile/errnoent1.h   |    2 +
>  linux/tile/ioctlent1.h   |    2 +
>  linux/tile/signalent1.h  |    2 +
>  linux/tile/syscallent.h  |  572 ++++++++++++++++++++++------------------------
>  linux/tile/syscallent1.h |  274 ++++++++++++++++++++++
>  mem.c                    |    2 +-
>  process.c                |   14 +-
>  signal.c                 |    5 +-
>  syscall.c                |   60 ++++-
>  util.c                   |   16 ++
>  11 files changed, 639 insertions(+), 326 deletions(-)
>  create mode 100644 linux/tile/errnoent1.h
>  create mode 100644 linux/tile/ioctlent1.h
>  create mode 100644 linux/tile/signalent1.h
>  create mode 100644 linux/tile/syscallent1.h
>
> diff --git a/defs.h b/defs.h
> index 0e05c6e..d291a13 100644
> --- a/defs.h
> +++ b/defs.h
> @@ -153,7 +153,7 @@ extern long ptrace(int, int, char *, long);
>  # define PTRACE_PEEKUSER PTRACE_PEEKUSR
>  # define PTRACE_POKEUSER PTRACE_POKEUSR
>  #endif
> -#if defined(X86_64) || defined(X32) || defined(I386)
> +#if defined(X86_64) || defined(X32) || defined(I386) || defined(TILE)
>  /* For struct pt_regs. x86 strace uses PTRACE_GETREGS.
>   * PTRACE_GETREGS returns registers in the layout of this struct.
>   */
> @@ -282,6 +282,17 @@ struct arm_pt_regs {
>  # define PERSONALITY1_WORDSIZE 4
>  #endif
>  
> +#ifdef TILE
> +# undef SUPPORTED_PERSONALITIES
> +# define SUPPORTED_PERSONALITIES 2
> +# define PERSONALITY0_WORDSIZE 8
> +# define PERSONALITY1_WORDSIZE 4
> +# ifdef __tilepro__
> +#  undef DEFAULT_PERSONALITY
> +#  define DEFAULT_PERSONALITY 1
> +# endif
> +#endif
> +
>  #ifndef PERSONALITY0_WORDSIZE
>  # define PERSONALITY0_WORDSIZE (int)(sizeof(long))
>  #endif
> @@ -356,6 +367,9 @@ extern struct pt_regs i386_regs;
>  #if defined(IA64)
>  extern long ia32;
>  #endif
> +#if defined(TILE)
> +extern struct pt_regs tile_regs;
> +#endif
>  
>  /* Trace Control Block */
>  struct tcb {
> diff --git a/linux/tile/errnoent1.h b/linux/tile/errnoent1.h
> new file mode 100644
> index 0000000..4e7d7f5
> --- /dev/null
> +++ b/linux/tile/errnoent1.h
> @@ -0,0 +1,2 @@
> +/* tilegx32/tilepro */
> +#include "linux/errnoent.h"
> diff --git a/linux/tile/ioctlent1.h b/linux/tile/ioctlent1.h
> new file mode 100644
> index 0000000..b9cfa95
> --- /dev/null
> +++ b/linux/tile/ioctlent1.h
> @@ -0,0 +1,2 @@
> +/* tilegx32/tilepro */
> +#include "linux/ioctlent.h"
> diff --git a/linux/tile/signalent1.h b/linux/tile/signalent1.h
> new file mode 100644
> index 0000000..72438de
> --- /dev/null
> +++ b/linux/tile/signalent1.h
> @@ -0,0 +1,2 @@
> +/* tilegx32/tilepro */
> +#include "linux/signalent.h"
> diff --git a/linux/tile/syscallent.h b/linux/tile/syscallent.h
> index 3bf59ae..ae1d97a 100644
> --- a/linux/tile/syscallent.h
> +++ b/linux/tile/syscallent.h
> @@ -1,302 +1,270 @@
> -	{ 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,	TM,	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|TM,	sys_mmap,		"mmap2" }, /* 77 */
> -	{ 2,	TM,	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,	TM,	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,	TF,	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,	TM,	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,	TM,	sys_mlock,		"mlock" }, /* 151 */
> -	{ 2,	TM,	sys_munlock,		"munlock" }, /* 152 */
> -	{ 1,	TM,	sys_mlockall,		"mlockall" }, /* 153 */
> -	{ 0,	TM,	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,	TM,	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,	TM,	sys_mincore,		"mincore" }, /* 196 */
> -	{ 3,	TM,	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,	TM,	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,	TM,	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,	TM,	sys_mbind,		"mbind" }, /* 247 */
> -	{ 5,	TM,	sys_get_mempolicy,	"get_mempolicy" }, /* 248 */
> -	{ 3,	TM,	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,	TM,	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 */
> +	{ 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 */
> +	{ 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 */
> +	{ 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_sendfile,			"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 */
> +	{ 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 */
> +	{ 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 */
> +	{ 5,	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,			"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 */
> diff --git a/linux/tile/syscallent1.h b/linux/tile/syscallent1.h
> new file mode 100644
> index 0000000..50481f8
> --- /dev/null
> +++ b/linux/tile/syscallent1.h
> @@ -0,0 +1,274 @@
> +	{ 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_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 */
> +	{ 5,	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,			"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 */
> diff --git a/mem.c b/mem.c
> index 0279030..3139904 100644
> --- a/mem.c
> +++ b/mem.c
> @@ -197,7 +197,7 @@ addtileflags(long flags)
>  	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)",
> +		tprintf("|MAP_CACHE_HOME(%ld)",
>  			(home >> _MAP_CACHE_HOME_SHIFT) );
>  		break;
>  	}
> diff --git a/process.c b/process.c
> index 467c096..6cf296c 100644
> --- a/process.c
> +++ b/process.c
> @@ -465,7 +465,7 @@ 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
>  # define ARG_FLAGS	0
>  # define ARG_STACK	1
>  # define ARG_PTID	2
> @@ -2119,9 +2119,9 @@ const struct xlat struct_user_offsets[] = {
>  
>  #if !defined(SPARC) && !defined(HPPA) && !defined(POWERPC) \
>  		&& !defined(ALPHA) && !defined(IA64) \
> -		&& !defined(CRISV10) && !defined(CRISV32) && !defined(MICROBLAZE) \
> -		&& !defined(AARCH64)
> -# if !defined(S390) && !defined(S390X) && !defined(MIPS) && !defined(SPARC64) && !defined(AVR32) && !defined(BFIN) && !defined(TILE)
> +		&& !defined(CRISV10) && !defined(CRISV32) \
> +		&& !defined(MICROBLAZE) && !defined(AARCH64) && !defined(TILE)
> +# if !defined(S390) && !defined(S390X) && !defined(MIPS) && !defined(SPARC64) && !defined(AVR32) && !defined(BFIN)
>  	{ uoff(u_fpvalid),	"offsetof(struct user, u_fpvalid)"	},
>  # endif
>  # if defined(I386) || defined(X86_64) || defined(X32)
> @@ -2143,13 +2143,13 @@ const struct xlat struct_user_offsets[] = {
>  	{ 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)
> +# if !defined(AVR32) && !defined(S390) && !defined(S390X) && !defined(MIPS) && !defined(SH) && !defined(SH64) && !defined(SPARC64)
>  	{ uoff(reserved),	"offsetof(struct user, reserved)"	},
>  # endif
>  # if !defined(SPARC64)
>  	{ uoff(u_ar0),		"offsetof(struct user, u_ar0)"		},
>  # endif
> -# if !defined(ARM) && !defined(AARCH64) && !defined(AVR32) && !defined(MIPS) && !defined(S390) && !defined(S390X) && !defined(SPARC64) && !defined(BFIN) && !defined(TILE)
> +# if !defined(ARM) && !defined(AARCH64) && !defined(AVR32) && !defined(MIPS) && !defined(S390) && !defined(S390X) && !defined(SPARC64) && !defined(BFIN)
>  	{ uoff(u_fpstate),	"offsetof(struct user, u_fpstate)"	},
>  # endif
>  	{ uoff(magic),		"offsetof(struct user, magic)"		},
> @@ -2159,7 +2159,7 @@ const struct xlat struct_user_offsets[] = {
>  # endif
>  #endif /* !defined(many arches) */
>  
> -#if !defined(HPPA) && !defined(AARCH64)
> +#if !defined(HPPA) && !defined(AARCH64) && !defined(TILE)
>  	{ sizeof(struct user),	"sizeof(struct user)"			},
>  #endif
>  	{ 0,			NULL					},
> diff --git a/signal.c b/signal.c
> index c77758f..566c2cb 100644
> --- a/signal.c
> +++ b/signal.c
> @@ -1050,14 +1050,11 @@ sys_sigreturn(struct tcb *tcp)
>  #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)
> +		if (umove(tcp, tile_regs.sp + SIGFRAME_UC_OFFSET, &uc) < 0)
>  			return 0;
>  		sigemptyset(&sigm);
>  		memcpy(&sigm, &uc.uc_sigmask, NSIG / 8);
> diff --git a/syscall.c b/syscall.c
> index 69eceed..0ebac0e 100644
> --- a/syscall.c
> +++ b/syscall.c
> @@ -71,6 +71,12 @@
>  # include <elf.h>
>  #endif
>  
> +#if defined(TILE)
> +# ifndef PT_FLAGS_COMPAT
> +#  define PT_FLAGS_COMPAT 0x10000  /* from Linux 3.8 on */
> +# endif
> +#endif
> +
>  #ifndef ERESTARTSYS
>  # define ERESTARTSYS	512
>  #endif
> @@ -293,6 +299,12 @@ update_personality(struct tcb *tcp, int personality)
>  		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
> @@ -698,6 +710,8 @@ static long r0;
>  static long r9;
>  #elif defined(CRISV10) || defined(CRISV32)
>  static long r10;
> +#elif defined(TILE)
> +struct pt_regs tile_regs;
>  #elif defined(MICROBLAZE)
>  static long r3;
>  #endif
> @@ -1146,8 +1160,29 @@ 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)
> +	int currpers;
> +
> +	if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, (long) &tile_regs) < 0)
>  		return -1;
> +
> +	scno = tile_regs.regs[10];
> +# ifdef __tilepro__
> +	currpers = 1;
> +# else
> +	if (tile_regs.flags & PT_FLAGS_COMPAT)
> +		currpers = 1;
> +	else
> +		currpers = 0;
> +# endif
> +	update_personality(tcp, currpers);
> +
> +	if (!(tcp->flags & TCB_INSYSCALL)) {
> +		/* Check if we return from execve. */
> +		if (tcp->flags & TCB_WAITEXECVE) {
> +			tcp->flags &= ~TCB_WAITEXECVE;
> +			return 0;
> +		}
> +	}
>  #elif defined(MICROBLAZE)
>  	if (upeek(tcp, 0, &scno) < 0)
>  		return -1;
> @@ -1521,8 +1556,7 @@ 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)
> @@ -1739,6 +1773,8 @@ get_syscall_result(struct tcb *tcp)
>  	if (upeek(tcp, 4*PT_R10, &r10) < 0)
>  		return -1;
>  #elif defined(TILE)
> +	if (ptrace(PTRACE_GETREGS, tcp->pid, NULL, (long) &tile_regs) < 0)
> +		return -1;
>  #elif defined(MICROBLAZE)
>  	if (upeek(tcp, 3 * 4, &r3) < 0)
>  		return -1;
> @@ -1974,15 +2010,17 @@ get_error(struct tcb *tcp)
>  		tcp->u_rval = 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 = -rval;
> -	}
> -	else {
> -		tcp->u_rval = rval;
> +		u_error = -tile_regs.regs[0];
> +	} else {
> +		tcp->u_rval = tile_regs.regs[0];
>  	}
>  #elif defined(MICROBLAZE)
>  	if (check_errno && is_negated_errno(r3)) {
> diff --git a/util.c b/util.c
> index f42024d..e7dac18 100644
> --- a/util.c
> +++ b/util.c
> @@ -1131,6 +1131,17 @@ printcall(struct tcb *tcp)
>  		return;
>  	}
>  	tprintf("[%08lx] ", pc);
> +#elif defined(TILE)
> +	long pc;
> +	if (upeek(tcp, PTREGS_OFFSET_PC, &pc) < 0) {
> +		PRINTBADPC;
> +		return;
> +	}
> +# ifdef _LP64
> +	tprintf("[%16lx] ", pc);
> +# else
> +	tprintf("[%08lx] ", pc);
> +# endif
>  #endif /* architecture */
>  }
>  
> @@ -1307,6 +1318,11 @@ typedef struct pt_regs arg_setup_state;
>  #  define restore_arg1(tcp, state, val) 0
>  #  define arg0_index	1
>  #  define arg1_index	0
> +# elif defined TILE
> +#  define arg0_offset   PTREGS_OFFSET_REG(0)
> +#  define arg1_offset   PTREGS_OFFSET_REG(1)
> +#  define restore_arg0(tcp, state, val) 0
> +#  define restore_arg1(tcp, state, val) 0
>  # else
>  #  define arg0_offset	0
>  #  define arg1_offset	4

-- 
Chris Metcalf, Tilera Corp.
http://www.tilera.com





More information about the Strace-devel mailing list