public inbox for systemtap@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 00/12] MIPS port
@ 2016-10-11  8:14 Marcin Nowakowski
  2016-10-11  8:15 ` [PATCH 10/12] Create debug_frame_hdr in target byte order Marcin Nowakowski
                   ` (13 more replies)
  0 siblings, 14 replies; 17+ messages in thread
From: Marcin Nowakowski @ 2016-10-11  8:14 UTC (permalink / raw)
  To: systemtap; +Cc: Marcin Nowakowski

This patch series attempts to bring MIPS support to systemtap. It is largely
based on an earlier work by Victor Kamensky and Crestez Dan Leonard who have
previously attempted to add MIPS support, but which has never been completed.

As of now (linux 4.8) upstream linux kernel for MIPS has [ku]probes support,
which makes the arch-specific effort much smaller in systemtap.

With the following patches I've been able to pass a large number of testsuite
tests and most of the failures observed have been related to either expected
parts of the kernel not enabled and/or testsuite incompatibilities with linux
4.8 or the userspace apps used in my test environment.

Some functions don't work properly due to incomplete support in elfutils
(Debian port of Elfutils has a reasonable MIPS support, but it's not complete),
and some have not been fully implemented in systemtap yet.

There is no good guide on how to add a new architecture to SystemTap, so there
might be things that I have missed or which are not done entirely correctly -
I hope that with some guidance from the maintainers I can get it all merged
into the tree. If possible, I would like to get the basic support as completed
now merged in and work on further fixes later, unless there are any blocking
issues that would have to be resolved immediately.

The patch series has been split into multiple smaller patches to make the
review easier, but they are generally not intended to be tested in isolation -
as they do not make too much sense until last patches are applied.

Marcin Nowakowski (12):
  tapset syscall-number database: add MIPS syscalls
  testsuite: add support for mips64 build flags
  mips: add TIF_32BIT definition
  mips: tapsets.cxx: add dwarf register definitions for SDT uprobes
  mips: add tapset register definitions
  mips: add a stub for stack unwind
  tapset: fix build if arch does not define SA_RESTORER
  mips: tapset: fix mips oddities in syscalls
  mips: add basic unwind support
  Create debug_frame_hdr in target byte order
  mips: add support in tapset
  mips: add runtime support

 runtime/compatdefs.h                     |    8 +
 runtime/linux/arith.c                    |   96 +-
 runtime/linux/regs.c                     |  131 ++
 runtime/linux/runtime.h                  |    2 +-
 runtime/loc2c-runtime.h                  |    9 +
 runtime/regs.h                           |    4 +
 runtime/stack-mips.c                     |    4 +
 runtime/stack.c                          |    2 +
 runtime/syscall.h                        |   67 +
 runtime/unwind/mips.h                    |   79 ++
 runtime/unwind/unwind.h                  |    2 +
 scripts/dump-syscalls.sh                 |    7 +
 tapset/errno.stp                         |    2 +
 tapset/linux/aux_syscalls.stp            |   16 +-
 tapset/linux/mips/aux_syscalls.stp       |   44 +
 tapset/linux/mips/syscall_num.stp        | 2027 ++++++++++++++++++++++++++++++
 tapset/linux/scheduler.stp               |    2 +-
 tapset/linux/syscalls2.stp               |   12 +
 tapset/mips/registers.stp                |  301 +++++
 tapsets.cxx                              |   79 +-
 testsuite/lib/compile_flags.exp          |    3 +-
 testsuite/lib/systemtap.exp              |    1 +
 testsuite/systemtap.context/num_args.stp |    1 +
 translate.cxx                            |   38 +-
 24 files changed, 2919 insertions(+), 18 deletions(-)
 create mode 100644 runtime/stack-mips.c
 create mode 100644 runtime/unwind/mips.h
 mode change 100644 => 100755 scripts/dump-syscalls.sh
 create mode 100644 tapset/linux/mips/aux_syscalls.stp
 create mode 100644 tapset/linux/mips/syscall_num.stp
 create mode 100644 tapset/mips/registers.stp

-- 
2.7.4

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 07/12] tapset: fix build if arch does not define SA_RESTORER
  2016-10-11  8:14 [PATCH 00/12] MIPS port Marcin Nowakowski
                   ` (4 preceding siblings ...)
  2016-10-11  8:15 ` [PATCH 11/12] mips: add support in tapset Marcin Nowakowski
@ 2016-10-11  8:15 ` Marcin Nowakowski
  2016-10-11  8:15 ` [PATCH 02/12] testsuite: add support for mips64 build flags Marcin Nowakowski
                   ` (7 subsequent siblings)
  13 siblings, 0 replies; 17+ messages in thread
From: Marcin Nowakowski @ 2016-10-11  8:15 UTC (permalink / raw)
  To: systemtap; +Cc: Marcin Nowakowski

Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
---
 tapset/linux/aux_syscalls.stp | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/tapset/linux/aux_syscalls.stp b/tapset/linux/aux_syscalls.stp
index c49e804..527b43b 100644
--- a/tapset/linux/aux_syscalls.stp
+++ b/tapset/linux/aux_syscalls.stp
@@ -3405,7 +3405,9 @@ static void _stp_sigaction_str(struct sigaction *act, char *ptr, int len)
     V(SA_RESTART),
     V(SA_NODEFER),
     V(SA_SIGINFO),
+#ifdef SA_RESTORER
     V(SA_RESTORER),
+#endif
     {0, NULL}
   };
   
@@ -3417,7 +3419,7 @@ static void _stp_sigaction_str(struct sigaction *act, char *ptr, int len)
       strlcat (ptr, ", ", len);
       _stp_lookup_or_str(_stp_sa_flags_list, act->sa_flags, ptr, len);
       strlcat (ptr, ", ", len);
-#if !defined (__ia64__)
+#if !defined (__ia64__) && !defined (__mips__)
       slen = strlen(ptr);
       _stp_snprintf(ptr + slen, len - slen,
 		    "0x%lx, ", (long)act->sa_restorer);
@@ -3487,8 +3489,9 @@ function _struct_sigaction32_u:string(uaddr:long)
 
 	  act.sa_handler = (void *)compat_ptr(act32.sa_handler);
 	  act.sa_flags = (unsigned long)act32.sa_flags;
+#ifdef SA_RESTORER
 	  act.sa_restorer = (void *)compat_ptr(act32.sa_restorer);
-
+#endif
 	  /* swap words around to get right endian order. */
 	  switch (_NSIG_WORDS)
 	    {
@@ -3541,7 +3544,9 @@ function _struct_old_sigaction32_u:string(uaddr:long)
 	  struct sigaction act;
 
 	  act.sa_handler = (void *)compat_ptr(act32.sa_handler);
+#ifdef SA_RESTORER
 	  act.sa_restorer = (void *)compat_ptr(act32.sa_restorer);
+#endif
 	  act.sa_flags = (unsigned long)act32.sa_flags;
 	  siginitset(&act.sa_mask, act32.sa_mask);
 	  _stp_sigaction_str(&act, STAP_RETVALUE, MAXSTRINGLEN);	  
-- 
2.7.4

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 12/12] mips: add runtime support
  2016-10-11  8:14 [PATCH 00/12] MIPS port Marcin Nowakowski
  2016-10-11  8:15 ` [PATCH 10/12] Create debug_frame_hdr in target byte order Marcin Nowakowski
  2016-10-11  8:15 ` [PATCH 03/12] mips: add TIF_32BIT definition Marcin Nowakowski
@ 2016-10-11  8:15 ` Marcin Nowakowski
  2016-10-11  8:15 ` [PATCH 08/12] mips: tapset: fix mips oddities in syscalls Marcin Nowakowski
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 17+ messages in thread
From: Marcin Nowakowski @ 2016-10-11  8:15 UTC (permalink / raw)
  To: systemtap; +Cc: Marcin Nowakowski

Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
---
 runtime/linux/arith.c   |  96 ++++++++++++++++++++++++++++++++++-
 runtime/linux/regs.c    | 131 ++++++++++++++++++++++++++++++++++++++++++++++++
 runtime/loc2c-runtime.h |   9 ++++
 runtime/regs.h          |   4 ++
 runtime/syscall.h       |  67 +++++++++++++++++++++++++
 5 files changed, 305 insertions(+), 2 deletions(-)

diff --git a/runtime/linux/arith.c b/runtime/linux/arith.c
index b64984a..4bb89d5 100644
--- a/runtime/linux/arith.c
+++ b/runtime/linux/arith.c
@@ -21,7 +21,8 @@
 /* Other 32-bit cpus will need to modify this file. */
 
 #if defined (__i386__) || defined(__arm__) || \
-	(defined(__powerpc__) && !defined(__powerpc64__))
+	(defined(__powerpc__) && !defined(__powerpc64__)) || \
+        (defined(__mips__) && !defined(__mips64))
 static long long _div64 (long long u, long long v);
 static long long _mod64 (long long u, long long v);
 #endif
@@ -116,7 +117,8 @@ static int _stp_random_pm (unsigned n)
 
 
 #if defined (__i386__) || defined (__arm__) || \
-	(defined(__powerpc__) && !defined(__powerpc64__))
+	(defined(__powerpc__) && !defined(__powerpc64__)) || \
+        (defined(__mips__) && !defined(__mips64))
 
 /* 64-bit division functions extracted from libgcc */
 typedef long long DWtype;
@@ -125,6 +127,7 @@ typedef unsigned long UWtype;
 typedef long Wtype;
 typedef unsigned int USItype;
 typedef unsigned int UQItype	__attribute__ ((mode (QI)));
+typedef unsigned int UDItype	__attribute__ ((mode (DI)));
 
 #ifdef _BIG_ENDIAN
 struct DWstruct {Wtype high, low;};
@@ -248,6 +251,95 @@ typedef union
 	   : "r" ((USItype) (a)),					\
 	     "r" ((USItype) (b)) __CLOBBER_CC );}
 
+#elif (defined(__mips) && __mips >= 3) && W_TYPE_SIZE == 64
+#if (__GNUC__ >= 5) || (__GNUC__ >= 4 && __GNUC_MINOR__ >= 4)
+#define umul_ppmm(w1, w0, u, v) \
+do {									\
+	typedef unsigned int __ll_UTItype __attribute__((mode(TI)));	\
+	__ll_UTItype __ll = (__ll_UTItype)(u) * (v);			\
+	w1 = __ll >> 64;						\
+	w0 = __ll;							\
+} while (0)
+#elif __GNUC__ > 2 || __GNUC_MINOR__ >= 7
+#define umul_ppmm(w1, w0, u, v) \
+	__asm__ ("dmultu %2,%3" \
+	: "=l" ((UDItype)(w0)), \
+	     "=h" ((UDItype)(w1)) \
+	: "d" ((UDItype)(u)), \
+	     "d" ((UDItype)(v)))
+#else
+#define umul_ppmm(w1, w0, u, v) \
+	__asm__ ("dmultu %2,%3\n" \
+	   "mflo %0\n" \
+	   "mfhi %1" \
+	: "=d" ((UDItype)(w0)), \
+	     "=d" ((UDItype)(w1)) \
+	: "d" ((UDItype)(u)), \
+	     "d" ((UDItype)(v)))
+#endif
+/* This comes from lib/mpi/longlong.h */
+#elif defined(__mips__) && W_TYPE_SIZE == 32
+#if (__GNUC__ >= 5) || (__GNUC__ >= 4 && __GNUC_MINOR__ >= 4)
+#define umul_ppmm(w1, w0, u, v)			\
+do {						\
+	UDItype __ll = (UDItype)(u) * (v);	\
+	w1 = __ll >> 32;			\
+	w0 = __ll;				\
+} while (0)
+#elif __GNUC__ > 2 || __GNUC_MINOR__ >= 7
+#define umul_ppmm(w1, w0, u, v) \
+	__asm__ ("multu %2,%3" \
+	: "=l" ((USItype)(w0)), \
+	     "=h" ((USItype)(w1)) \
+	: "d" ((USItype)(u)), \
+	     "d" ((USItype)(v)))
+#else
+#define umul_ppmm(w1, w0, u, v) \
+	__asm__ ("multu %2,%3\n" \
+	   "mflo %0\n" \
+	   "mfhi %1" \
+	: "=d" ((USItype)(w0)), \
+	     "=d" ((USItype)(w1)) \
+	: "d" ((USItype)(u)), \
+	     "d" ((USItype)(v)))
+#endif
+
+#if !defined (sub_ddmmss)
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+  do {                                                                 \
+    UWtype __x;                                                        \
+    __x = (al) - (bl);                                                 \
+    (sh) = (ah) - (bh) - (__x > (al));                                 \
+    (sl) = __x;                                                        \
+  } while (0)
+#endif
+
+#elif (defined(__mips) && __mips >= 3) && W_TYPE_SIZE == 64
+#if (__GNUC__ >= 5) || (__GNUC__ >= 4 && __GNUC_MINOR__ >= 4)
+#define umul_ppmm(w1, w0, u, v) \
+do {									\
+	typedef unsigned int __ll_UTItype __attribute__((mode(TI)));	\
+	__ll_UTItype __ll = (__ll_UTItype)(u) * (v);			\
+	w1 = __ll >> 64;						\
+	w0 = __ll;							\
+} while (0)
+#elif __GNUC__ > 2 || __GNUC_MINOR__ >= 7
+#define umul_ppmm(w1, w0, u, v) \
+	__asm__ ("dmultu %2,%3" \
+	: "=l" ((UDItype)(w0)), \
+	     "=h" ((UDItype)(w1)) \
+	: "d" ((UDItype)(u)), \
+	     "d" ((UDItype)(v)))
+#else
+#define umul_ppmm(w1, w0, u, v) \
+	__asm__ ("dmultu %2,%3\n" \
+	   "mflo %0\n" \
+	   "mfhi %1" \
+	: "=d" ((UDItype)(w0)), \
+	     "=d" ((UDItype)(w1)) \
+	: "d" ((UDItype)(u)), \
+	     "d" ((UDItype)(v)))
+#endif
 #endif
 
 #define __udiv_qrnnd_c(q, r, n1, n0, d) \
diff --git a/runtime/linux/regs.c b/runtime/linux/regs.c
index a7501dd..6573967 100644
--- a/runtime/linux/regs.c
+++ b/runtime/linux/regs.c
@@ -312,6 +312,137 @@ static void _stp_print_regs(struct pt_regs * regs)
 	_stp_printf("\n");
 }
 
+#elif defined (__mips__)
+/*
+ * MIPS_CPU_ISA_I was removed from the kernel (3.11) by
+ * Commit: 1990e5429c21 ("MIPS: Get rid of MIPS I flag and test macros.")
+ */
+#ifndef MIPS_CPU_ISA_I
+#define IS_CPU_ISA_MIPS_I(x) (!((x) & (MIPS_CPU_ISA_32BIT | MIPS_CPU_ISA_64BIT)))
+#else 
+#define IS_CPU_ISA_MIPS_I(x) ((x) == MIPS_CPU_ISA_I)
+#endif
+/*
+ * Only o32 application has 32bit registers. N32 and N64 both
+ * should use 64bit registers regardless of pointer size
+ */
+static int _stp_probing_app_with_32bit_regs(struct pt_regs *regs)
+{
+	if (!regs)
+		return 0;
+	return (user_mode(regs) &&
+			test_tsk_thread_flag(current, TIF_32BIT_REGS));
+}
+
+void _stp_print_regs(struct pt_regs * regs)
+{
+#ifdef MIPS_PRINT_REGS_SHOW_SYMBOLS
+	/* it is too much stack to do symbol translation by default */
+	char symbol_name[KSYM_SYMBOL_LEN];
+#endif /* MIPS_PRINT_REGS_SHOW_SYMBOLS */
+	const int field = 2 * sizeof(unsigned long);
+	unsigned int cause = regs->cp0_cause;
+	int i;
+
+#ifdef CONFIG_SMP
+	_stp_printf("Cpu %d\n", smp_processor_id());
+#endif
+
+	/*
+	 * Saved main processor registers
+	 */
+	for (i = 0; i < 32;) {
+		if ((i % 4) == 0)
+			_stp_printf("$%2d   :", i);
+		if (i == 0)
+			_stp_printf(" %0*lx", field, 0UL);
+		else if (i == 26 || i == 27)
+			_stp_printf(" %*s", field, "");
+		else
+			_stp_printf(" %0*lx", field, regs->regs[i]);
+
+		i++;
+		if ((i % 4) == 0)
+			_stp_printf("\n");
+	}
+
+	/* Hi and Lo don't exist for R6 */
+	if (current_cpu_data.isa_level != MIPS_CPU_ISA_M32R6
+		&& current_cpu_data.isa_level != MIPS_CPU_ISA_M64R6) {
+		_stp_printf("Hi    : %0*lx\n", field, regs->hi);
+		_stp_printf("Lo    : %0*lx\n", field, regs->lo);
+	}
+
+	/*
+	 * Saved cp0 registers
+	 */
+	_stp_printf("epc   : %0*lx ", field, regs->cp0_epc);
+#ifdef MIPS_PRINT_REGS_SHOW_SYMBOLSx
+	sprint_symbol(symbol_name, regs->cp0_epc);
+	_stp_printf("%s ", symbol_name);
+#endif /* MIPS_PRINT_REGS_SHOW_SYMBOLS */
+
+	_stp_printf("ra    : %0*lx ", field, regs->regs[31]);
+#ifdef MIPS_PRINT_REGS_SHOW_SYMBOLS
+	sprint_symbol(symbol_name, regs->regs[31]);
+	_stp_printf("%s", symbol_name);
+#endif /* MIPS_PRINT_REGS_SHOW_SYMBOLS */
+	_stp_printf("\n");
+
+	_stp_printf("Status: %08x    ", (uint32_t) regs->cp0_status);
+
+	if (IS_CPU_ISA_MIPS_I(current_cpu_data.isa_level)) {
+		if (regs->cp0_status & ST0_KUO)
+			_stp_printf("KUo ");
+		if (regs->cp0_status & ST0_IEO)
+			_stp_printf("IEo ");
+		if (regs->cp0_status & ST0_KUP)
+			_stp_printf("KUp ");
+		if (regs->cp0_status & ST0_IEP)
+			_stp_printf("IEp ");
+		if (regs->cp0_status & ST0_KUC)
+			_stp_printf("KUc ");
+		if (regs->cp0_status & ST0_IEC)
+			_stp_printf("IEc ");
+	} else {
+		if (regs->cp0_status & ST0_KX)
+			_stp_printf("KX ");
+		if (regs->cp0_status & ST0_SX)
+			_stp_printf("SX ");
+		if (regs->cp0_status & ST0_UX)
+			_stp_printf("UX ");
+		switch (regs->cp0_status & ST0_KSU) {
+		case KSU_USER:
+			_stp_printf("USER ");
+			break;
+		case KSU_SUPERVISOR:
+			_stp_printf("SUPERVISOR ");
+			break;
+		case KSU_KERNEL:
+			_stp_printf("KERNEL ");
+			break;
+		default:
+			_stp_printf("BAD_MODE ");
+			break;
+		}
+		if (regs->cp0_status & ST0_ERL)
+			_stp_printf("ERL ");
+		if (regs->cp0_status & ST0_EXL)
+			_stp_printf("EXL ");
+		if (regs->cp0_status & ST0_IE)
+			_stp_printf("IE ");
+	}
+
+	_stp_printf("\n");
+
+	_stp_printf("Cause : %08x\n", cause);
+
+	cause = (((cause) & CAUSEF_EXCCODE) >> CAUSEB_EXCCODE);
+	if (1 <= cause && cause <= 5)
+		_stp_printf("BadVA : %0*lx\n", field, regs->cp0_badvaddr);
+
+	_stp_printf("PrId  : %08x\n", read_c0_prid());
+}
 #endif
 
 
diff --git a/runtime/loc2c-runtime.h b/runtime/loc2c-runtime.h
index 69df205..09eb3f1 100644
--- a/runtime/loc2c-runtime.h
+++ b/runtime/loc2c-runtime.h
@@ -154,6 +154,15 @@
 #define pt_regs_store_register(pt_regs,regno,value) \
   (pt_regs->gpr[regno] = (value))
 
+#elif defined __mips__
+
+#undef pt_regs_fetch_register
+#undef pt_regs_store_register
+#define pt_regs_fetch_register(pt_regs,regno) \
+  ((intptr_t) pt_regs->regs[regno])
+#define pt_regs_store_register(pt_regs,regno,value) \
+  (pt_regs->regs[regno] = (value))
+
 #elif defined (__aarch64__)
 
 #define pt_dwarf_register_0(pt_regs)	pt_regs->regs[0]
diff --git a/runtime/regs.h b/runtime/regs.h
index 2f027ad..94680af 100644
--- a/runtime/regs.h
+++ b/runtime/regs.h
@@ -54,6 +54,10 @@
 #define REG_SP(regs) regs->ARM_sp
 #define REG_LINK(regs) regs->ARM_lr
 
+#elif defined (__mips__)
+#define REG_IP(regs_arg) ((regs_arg)->cp0_epc)
+#define REG_SP(regs_arg) ((regs_arg)->regs[29])
+
 #elif defined (__s390__) || defined (__s390x__)
 
 #ifndef __s390x__
diff --git a/runtime/syscall.h b/runtime/syscall.h
index b959d46..5ed0198 100644
--- a/runtime/syscall.h
+++ b/runtime/syscall.h
@@ -77,6 +77,55 @@
 #define MREMAP_SYSCALL_NO(tsk)		1156
 #endif
 
+#if defined(__mips__)
+/* n64 values: scall64-64.S */
+#define MMAP_SYSCALL_NO_MIPS_N64	5009
+#define MMAP2_SYSCALL_NO_MIPS_N64	((unsigned long)-1) /* does not exits */
+#define MPROTECT_SYSCALL_NO_MIPS_N64	5010
+#define MUNMAP_SYSCALL_NO_MIPS_N64	5011
+#define MREMAP_SYSCALL_NO_MIPS_N64	5024
+
+/* n32 values: scall64-n32.S */
+#define MMAP_SYSCALL_NO_MIPS_N32	6009
+#define MMAP2_SYSCALL_NO_MIPS_N32	((unsigned long)-1) /* does not exits */
+#define MPROTECT_SYSCALL_NO_MIPS_N32	6010
+#define MUNMAP_SYSCALL_NO_MIPS_N32	6011
+#define MREMAP_SYSCALL_NO_MIPS_N32	6024
+
+/* o32 values: scall32-o32.S */
+#define MMAP_SYSCALL_NO_MIPS_O32	4090
+#define MMAP2_SYSCALL_NO_MIPS_O32	4210
+#define MPROTECT_SYSCALL_NO_MIPS_O32	4125
+#define MUNMAP_SYSCALL_NO_MIPS_O32	4091
+#define MREMAP_SYSCALL_NO_MIPS_O32	4167
+
+#define MMAP_SYSCALL_NO(tsk) ((test_tsk_thread_flag((tsk), TIF_32BIT_ADDR)) ?	   \
+			      ((test_tsk_thread_flag((tsk), TIF_32BIT_REGS)) ?	   \
+			       (MMAP_SYSCALL_NO_MIPS_O32) :			   \
+			       (MMAP_SYSCALL_NO_MIPS_N32)) :			   \
+			      (MMAP_SYSCALL_NO_MIPS_N64))
+#define MMAP2_SYSCALL_NO(tsk) ((test_tsk_thread_flag((tsk), TIF_32BIT_ADDR)) ?	   \
+			      ((test_tsk_thread_flag((tsk), TIF_32BIT_REGS)) ?	   \
+			       (MMAP2_SYSCALL_NO_MIPS_O32) :			   \
+			       (MMAP2_SYSCALL_NO_MIPS_N32)) :			   \
+			      (MMAP2_SYSCALL_NO_MIPS_N64))
+#define MPROTECT_SYSCALL_NO(tsk) ((test_tsk_thread_flag((tsk), TIF_32BIT_ADDR)) ?  \
+			      ((test_tsk_thread_flag((tsk), TIF_32BIT_REGS)) ?	   \
+			       (MPROTECT_SYSCALL_NO_MIPS_O32) :			   \
+			       (MPROTECT_SYSCALL_NO_MIPS_N32)) :		   \
+			      (MPROTECT_SYSCALL_NO_MIPS_N64))
+#define MUNMAP_SYSCALL_NO(tsk) ((test_tsk_thread_flag((tsk), TIF_32BIT_ADDR)) ?	   \
+			      ((test_tsk_thread_flag((tsk), TIF_32BIT_REGS)) ?	   \
+			       (MUNMAP_SYSCALL_NO_MIPS_O32) :			   \
+			       (MUNMAP_SYSCALL_NO_MIPS_N32)) :			   \
+			      (MUNMAP_SYSCALL_NO_MIPS_N64))
+#define MREMAP_SYSCALL_NO(tsk) ((test_tsk_thread_flag((tsk), TIF_32BIT_ADDR)) ?	   \
+			      ((test_tsk_thread_flag((tsk), TIF_32BIT_REGS)) ?	   \
+			       (MREMAP_SYSCALL_NO_MIPS_O32) :			   \
+			       (MREMAP_SYSCALL_NO_MIPS_N32)) :			   \
+			      (MREMAP_SYSCALL_NO_MIPS_N64))
+#endif
+
 #if defined(__s390__) || defined(__s390x__)
 #define MMAP_SYSCALL_NO(tsk)		90
 #define MMAP2_SYSCALL_NO(tsk)		192
@@ -122,6 +171,16 @@ _stp_syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
 {
 	return regs->ARM_r7;
 }
+
+#elif defined(__mips__)
+/* Define our own function as syscall_get_nr always returns 0 unless
+ * ftrace syscall tracing has been enabled */
+static inline long
+_stp_syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
+{
+	return regs->regs[2];
+}
+
 #else
 #define _stp_syscall_get_nr syscall_get_nr
 #endif
@@ -151,6 +210,14 @@ _stp_syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
 }
 #endif
 
+#if defined(__mips__)
+static inline long
+_stp_syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
+{
+	return regs->regs[2];
+}
+#endif
+
 #if defined(__ia64__)
 static inline long
 _stp_syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 11/12] mips: add support in tapset
  2016-10-11  8:14 [PATCH 00/12] MIPS port Marcin Nowakowski
                   ` (3 preceding siblings ...)
  2016-10-11  8:15 ` [PATCH 08/12] mips: tapset: fix mips oddities in syscalls Marcin Nowakowski
@ 2016-10-11  8:15 ` Marcin Nowakowski
  2016-10-11  8:15 ` [PATCH 07/12] tapset: fix build if arch does not define SA_RESTORER Marcin Nowakowski
                   ` (8 subsequent siblings)
  13 siblings, 0 replies; 17+ messages in thread
From: Marcin Nowakowski @ 2016-10-11  8:15 UTC (permalink / raw)
  To: systemtap; +Cc: Marcin Nowakowski

This change adds
* return value extraction
* __is_user_regs() method
* basic support for ptrace

Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
---
 tapset/errno.stp                   |  2 ++
 tapset/linux/aux_syscalls.stp      |  7 ++++++
 tapset/linux/mips/aux_syscalls.stp | 44 ++++++++++++++++++++++++++++++++++++++
 tapsets.cxx                        |  1 +
 4 files changed, 54 insertions(+)
 create mode 100644 tapset/linux/mips/aux_syscalls.stp

diff --git a/tapset/errno.stp b/tapset/errno.stp
index d49fd3a..95e23c7 100644
--- a/tapset/errno.stp
+++ b/tapset/errno.stp
@@ -390,6 +390,8 @@ static long _stp_returnval(struct pt_regs *regs) {
 		return regs->regs[0];
 #elif defined (__arm__)
 		return regs->ARM_r0;
+#elif defined (__mips__)
+		return regs->regs[2];
 #else
 		_stp_error("returnval() not defined for this architecture");
 		return 0;
diff --git a/tapset/linux/aux_syscalls.stp b/tapset/linux/aux_syscalls.stp
index 527b43b..e6ca71d 100644
--- a/tapset/linux/aux_syscalls.stp
+++ b/tapset/linux/aux_syscalls.stp
@@ -3964,6 +3964,13 @@ function _swapon_flags_str:string(flags:long)
 #elif defined(__arm__)
 	long cpsr = kread(&regs->ARM_cpsr);
 	STAP_RETVALUE = ((cpsr & 0xf) == 0);
+#elif defined(__mips__)
+	unsigned long cp0 = kread(&regs->cp0_status);
+#if defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_TX39XX)
+	THIS->__retvalue = ((cp0 & 0x08) == 8);
+#else
+	THIS->__retvalue = ((cp0 & 0x18) == 0x10);
+#endif
 #elif defined(__s390__) || defined(__s390x__)
 	unsigned long mask = kread(&regs->psw.mask);
 	STAP_RETVALUE = ((mask & PSW_MASK_PSTATE) != 0);
diff --git a/tapset/linux/mips/aux_syscalls.stp b/tapset/linux/mips/aux_syscalls.stp
new file mode 100644
index 0000000..5de5485
--- /dev/null
+++ b/tapset/linux/mips/aux_syscalls.stp
@@ -0,0 +1,44 @@
+# arch-specific requests of ptrace ___________________________
+#
+function _arch_ptrace_argstr(request, pid, addr, data)
+{
+	if (request == %{ PTRACE_GETREGS %})
+		// TODO: Retrieve *data in .return
+		return sprintf ("PTRACE_GETREGS, %d, data=%p", pid, data)
+	if (request == %{ PTRACE_SETREGS %})
+		// TODO: Retrieve *data here
+		return sprintf ("PTRACE_SETREGS, %d, data=%p", pid, data)
+	if (request == %{ PTRACE_GETFPREGS %})
+		// TODO: Retrieve *data in .return
+		return sprintf ("PTRACE_GETFPREGS, %d, data=%p", pid, data)
+	if (request == %{ PTRACE_SETFPREGS %})
+		// TODO: Retrieve *data here
+		return sprintf ("PTRACE_SETFPREGS, %d, data=%p", pid, data)
+	if (request == %{ PTRACE_PEEKTEXT_3264 %})
+		// TODO: Retrieve *data in .return
+		return sprintf ("PTRACE_PEEKTEXT_3264, %d, *addr=%p, data=%p", pid, user_long(addr), data)
+	if (request == %{ PTRACE_PEEKDATA_3264 %})
+		// TODO: Retrieve *data in .return
+		return sprintf ("PTRACE_PEEKDATA_3264, %d, *addr=%p, data=%p", pid, user_long(addr), data)
+	if (request == %{ PTRACE_POKETEXT_3264 %})
+		return sprintf ("PTRACE_POKETEXT_3264, %d, *addr=%p, data=%p", pid, user_long(addr), data)
+	if (request == %{ PTRACE_POKEDATA_3264 %})
+		return sprintf ("PTRACE_POKEDATA_3264, %d, *addr=%p, data=%p", pid, user_long(addr), data)
+	if (request == %{ PTRACE_GET_THREAD_AREA %})
+		// TODO: Retrieve *data in .return
+		return sprintf ("PTRACE_GET_THREAD_AREA, %d, index=%d, data=%p", pid, addr, data)
+	if (request == %{ PTRACE_GET_THREAD_AREA_3264 %})
+		// TODO: Retrieve *data in .return
+		return sprintf ("PTRACE_GET_THREAD_AREA_3264, %d, index=%d, data=%p", pid, addr, data)
+	if (request == %{ PTRACE_GET_WATCH_REGS %})
+		// TODO: Retrieve *data in .return
+		return sprintf ("PTRACE_GET_WATCH_REGS, %d, data=%p", pid, data)
+	if (request == %{ PTRACE_SET_WATCH_REGS %})
+		// TODO: Retrieve *data here
+		return sprintf ("PTRACE_SET_WATCH_REGS, %d, data=%p", pid, data)
+}
+
+function _ptrace_return_arch_prctl_addr:long(request:long, addr:long, data:long)
+{
+	return 0
+}
diff --git a/tapsets.cxx b/tapsets.cxx
index 2193b7d..817b7d3 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -2500,6 +2500,7 @@ validate_module_elf (Dwfl_Module *mod, const char *name,  base_query *q)
     case EM_IA_64: expect_machine = "ia64"; break;
     case EM_ARM: expect_machine = "arm*"; break;
     case EM_AARCH64: expect_machine = "arm64"; break;
+    case EM_MIPS: expect_machine = "mips"; break;
       // XXX: fill in some more of these
     default: expect_machine = "?"; break;
     }
-- 
2.7.4

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 01/12] tapset syscall-number database: add MIPS syscalls
  2016-10-11  8:14 [PATCH 00/12] MIPS port Marcin Nowakowski
                   ` (6 preceding siblings ...)
  2016-10-11  8:15 ` [PATCH 02/12] testsuite: add support for mips64 build flags Marcin Nowakowski
@ 2016-10-11  8:15 ` Marcin Nowakowski
  2016-10-11  8:15 ` [PATCH 06/12] mips: add a stub for stack unwind Marcin Nowakowski
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 17+ messages in thread
From: Marcin Nowakowski @ 2016-10-11  8:15 UTC (permalink / raw)
  To: systemtap; +Cc: Marcin Nowakowski

This patch provides MIPS-specific syscall tables and extends
scripts/dump-syscall.sh to handle MIPS tables generation.

Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
---
 scripts/dump-syscalls.sh          |    7 +
 tapset/linux/mips/syscall_num.stp | 2027 +++++++++++++++++++++++++++++++++++++
 2 files changed, 2034 insertions(+)
 mode change 100644 => 100755 scripts/dump-syscalls.sh
 create mode 100644 tapset/linux/mips/syscall_num.stp

diff --git a/scripts/dump-syscalls.sh b/scripts/dump-syscalls.sh
old mode 100644
new mode 100755
index f197b7b..97385dc
--- a/scripts/dump-syscalls.sh
+++ b/scripts/dump-syscalls.sh
@@ -18,6 +18,7 @@ TAPSET_POWERPC=$TAPSET_SRC/linux/powerpc/syscall_num.stp
 TAPSET_S390=$TAPSET_SRC/linux/s390/syscall_num.stp
 TAPSET_ARM=$TAPSET_SRC/linux/arm/syscall_num.stp
 TAPSET_AARCH64=$TAPSET_SRC/linux/arm64/syscall_num.stp
+TAPSET_MIPS=$TAPSET_SRC/linux/mips/syscall_num.stp
 
 SYSCALLS_32=$(mktemp)
 SYSCALLS_64=$(mktemp)
@@ -103,5 +104,11 @@ __dump_syscalls $STRACE_SRC/linux/64/syscallent.h 64
 __dump_syscalls $STRACE_SRC/linux/aarch64/syscallent.h 64
 __generate_tapset $TAPSET_AARCH64
 
+# ======= mips =======
+__init
+__dump_syscalls $STRACE_SRC/linux/mips/syscallent-n64.h 64
+__dump_syscalls $STRACE_SRC/linux/mips/syscallent-o32.h 32
+__dump_syscalls $STRACE_SRC/linux/mips/syscallent-n32.h 32
+__generate_tapset $TAPSET_MIPS
 
 rm -f $SYSCALLS_32 $SYSCALLS_64
diff --git a/tapset/linux/mips/syscall_num.stp b/tapset/linux/mips/syscall_num.stp
new file mode 100644
index 0000000..6cbb432
--- /dev/null
+++ b/tapset/linux/mips/syscall_num.stp
@@ -0,0 +1,2027 @@
+# This is arch specific syscall table generated by scripts/dump-syscalls.sh
+
+global __syscall_32_num2name[687]
+global __syscall_32_name2num[687]
+global __syscall_64_num2name[322]
+global __syscall_64_name2num[322]
+
+probe init {
+__syscall_32_num2name[4000]="syscall"
+__syscall_32_name2num["syscall"]=4000
+__syscall_32_num2name[4001]="exit"
+__syscall_32_name2num["exit"]=4001
+__syscall_32_num2name[4002]="fork"
+__syscall_32_name2num["fork"]=4002
+__syscall_32_num2name[4003]="read"
+__syscall_32_name2num["read"]=4003
+__syscall_32_num2name[4004]="write"
+__syscall_32_name2num["write"]=4004
+__syscall_32_num2name[4005]="open"
+__syscall_32_name2num["open"]=4005
+__syscall_32_num2name[4006]="close"
+__syscall_32_name2num["close"]=4006
+__syscall_32_num2name[4007]="waitpid"
+__syscall_32_name2num["waitpid"]=4007
+__syscall_32_num2name[4008]="creat"
+__syscall_32_name2num["creat"]=4008
+__syscall_32_num2name[4009]="link"
+__syscall_32_name2num["link"]=4009
+__syscall_32_num2name[4010]="unlink"
+__syscall_32_name2num["unlink"]=4010
+__syscall_32_num2name[4011]="execve"
+__syscall_32_name2num["execve"]=4011
+__syscall_32_num2name[4012]="chdir"
+__syscall_32_name2num["chdir"]=4012
+__syscall_32_num2name[4013]="time"
+__syscall_32_name2num["time"]=4013
+__syscall_32_num2name[4014]="mknod"
+__syscall_32_name2num["mknod"]=4014
+__syscall_32_num2name[4015]="chmod"
+__syscall_32_name2num["chmod"]=4015
+__syscall_32_num2name[4016]="lchown"
+__syscall_32_name2num["lchown"]=4016
+__syscall_32_num2name[4017]="break"
+__syscall_32_name2num["break"]=4017
+__syscall_32_num2name[4018]="oldstat"
+__syscall_32_name2num["oldstat"]=4018
+__syscall_32_num2name[4019]="lseek"
+__syscall_32_name2num["lseek"]=4019
+__syscall_32_num2name[4020]="getpid"
+__syscall_32_name2num["getpid"]=4020
+__syscall_32_num2name[4021]="mount"
+__syscall_32_name2num["mount"]=4021
+__syscall_32_num2name[4022]="umount"
+__syscall_32_name2num["umount"]=4022
+__syscall_32_num2name[4023]="setuid"
+__syscall_32_name2num["setuid"]=4023
+__syscall_32_num2name[4024]="getuid"
+__syscall_32_name2num["getuid"]=4024
+__syscall_32_num2name[4025]="stime"
+__syscall_32_name2num["stime"]=4025
+__syscall_32_num2name[4026]="ptrace"
+__syscall_32_name2num["ptrace"]=4026
+__syscall_32_num2name[4027]="alarm"
+__syscall_32_name2num["alarm"]=4027
+__syscall_32_num2name[4028]="oldfstat"
+__syscall_32_name2num["oldfstat"]=4028
+__syscall_32_num2name[4029]="pause"
+__syscall_32_name2num["pause"]=4029
+__syscall_32_num2name[4030]="utime"
+__syscall_32_name2num["utime"]=4030
+__syscall_32_num2name[4031]="stty"
+__syscall_32_name2num["stty"]=4031
+__syscall_32_num2name[4032]="gtty"
+__syscall_32_name2num["gtty"]=4032
+__syscall_32_num2name[4033]="access"
+__syscall_32_name2num["access"]=4033
+__syscall_32_num2name[4034]="nice"
+__syscall_32_name2num["nice"]=4034
+__syscall_32_num2name[4035]="ftime"
+__syscall_32_name2num["ftime"]=4035
+__syscall_32_num2name[4036]="sync"
+__syscall_32_name2num["sync"]=4036
+__syscall_32_num2name[4037]="kill"
+__syscall_32_name2num["kill"]=4037
+__syscall_32_num2name[4038]="rename"
+__syscall_32_name2num["rename"]=4038
+__syscall_32_num2name[4039]="mkdir"
+__syscall_32_name2num["mkdir"]=4039
+__syscall_32_num2name[4040]="rmdir"
+__syscall_32_name2num["rmdir"]=4040
+__syscall_32_num2name[4041]="dup"
+__syscall_32_name2num["dup"]=4041
+__syscall_32_num2name[4042]="pipe"
+__syscall_32_name2num["pipe"]=4042
+__syscall_32_num2name[4043]="times"
+__syscall_32_name2num["times"]=4043
+__syscall_32_num2name[4044]="prof"
+__syscall_32_name2num["prof"]=4044
+__syscall_32_num2name[4045]="brk"
+__syscall_32_name2num["brk"]=4045
+__syscall_32_num2name[4046]="setgid"
+__syscall_32_name2num["setgid"]=4046
+__syscall_32_num2name[4047]="getgid"
+__syscall_32_name2num["getgid"]=4047
+__syscall_32_num2name[4048]="signal"
+__syscall_32_name2num["signal"]=4048
+__syscall_32_num2name[4049]="geteuid"
+__syscall_32_name2num["geteuid"]=4049
+__syscall_32_num2name[4050]="getegid"
+__syscall_32_name2num["getegid"]=4050
+__syscall_32_num2name[4051]="acct"
+__syscall_32_name2num["acct"]=4051
+__syscall_32_num2name[4052]="umount2"
+__syscall_32_name2num["umount2"]=4052
+__syscall_32_num2name[4053]="lock"
+__syscall_32_name2num["lock"]=4053
+__syscall_32_num2name[4054]="ioctl"
+__syscall_32_name2num["ioctl"]=4054
+__syscall_32_num2name[4055]="fcntl"
+__syscall_32_name2num["fcntl"]=4055
+__syscall_32_num2name[4056]="mpx"
+__syscall_32_name2num["mpx"]=4056
+__syscall_32_num2name[4057]="setpgid"
+__syscall_32_name2num["setpgid"]=4057
+__syscall_32_num2name[4058]="ulimit"
+__syscall_32_name2num["ulimit"]=4058
+__syscall_32_num2name[4059]="oldolduname"
+__syscall_32_name2num["oldolduname"]=4059
+__syscall_32_num2name[4060]="umask"
+__syscall_32_name2num["umask"]=4060
+__syscall_32_num2name[4061]="chroot"
+__syscall_32_name2num["chroot"]=4061
+__syscall_32_num2name[4062]="ustat"
+__syscall_32_name2num["ustat"]=4062
+__syscall_32_num2name[4063]="dup2"
+__syscall_32_name2num["dup2"]=4063
+__syscall_32_num2name[4064]="getppid"
+__syscall_32_name2num["getppid"]=4064
+__syscall_32_num2name[4065]="getpgrp"
+__syscall_32_name2num["getpgrp"]=4065
+__syscall_32_num2name[4066]="setsid"
+__syscall_32_name2num["setsid"]=4066
+__syscall_32_num2name[4067]="sigaction"
+__syscall_32_name2num["sigaction"]=4067
+__syscall_32_num2name[4068]="sgetmask"
+__syscall_32_name2num["sgetmask"]=4068
+__syscall_32_num2name[4069]="ssetmask"
+__syscall_32_name2num["ssetmask"]=4069
+__syscall_32_num2name[4070]="setreuid"
+__syscall_32_name2num["setreuid"]=4070
+__syscall_32_num2name[4071]="setregid"
+__syscall_32_name2num["setregid"]=4071
+__syscall_32_num2name[4072]="sigsuspend"
+__syscall_32_name2num["sigsuspend"]=4072
+__syscall_32_num2name[4073]="sigpending"
+__syscall_32_name2num["sigpending"]=4073
+__syscall_32_num2name[4074]="sethostname"
+__syscall_32_name2num["sethostname"]=4074
+__syscall_32_num2name[4075]="setrlimit"
+__syscall_32_name2num["setrlimit"]=4075
+__syscall_32_num2name[4076]="getrlimit"
+__syscall_32_name2num["getrlimit"]=4076
+__syscall_32_num2name[4077]="getrusage"
+__syscall_32_name2num["getrusage"]=4077
+__syscall_32_num2name[4078]="gettimeofday"
+__syscall_32_name2num["gettimeofday"]=4078
+__syscall_32_num2name[4079]="settimeofday"
+__syscall_32_name2num["settimeofday"]=4079
+__syscall_32_num2name[4080]="getgroups"
+__syscall_32_name2num["getgroups"]=4080
+__syscall_32_num2name[4081]="setgroups"
+__syscall_32_name2num["setgroups"]=4081
+__syscall_32_num2name[4082]="reserved82"
+__syscall_32_name2num["reserved82"]=4082
+__syscall_32_num2name[4083]="symlink"
+__syscall_32_name2num["symlink"]=4083
+__syscall_32_num2name[4084]="oldlstat"
+__syscall_32_name2num["oldlstat"]=4084
+__syscall_32_num2name[4085]="readlink"
+__syscall_32_name2num["readlink"]=4085
+__syscall_32_num2name[4086]="uselib"
+__syscall_32_name2num["uselib"]=4086
+__syscall_32_num2name[4087]="swapon"
+__syscall_32_name2num["swapon"]=4087
+__syscall_32_num2name[4088]="reboot"
+__syscall_32_name2num["reboot"]=4088
+__syscall_32_num2name[4089]="readdir"
+__syscall_32_name2num["readdir"]=4089
+__syscall_32_num2name[4090]="mmap"
+__syscall_32_name2num["mmap"]=4090
+__syscall_32_num2name[4091]="munmap"
+__syscall_32_name2num["munmap"]=4091
+__syscall_32_num2name[4092]="truncate"
+__syscall_32_name2num["truncate"]=4092
+__syscall_32_num2name[4093]="ftruncate"
+__syscall_32_name2num["ftruncate"]=4093
+__syscall_32_num2name[4094]="fchmod"
+__syscall_32_name2num["fchmod"]=4094
+__syscall_32_num2name[4095]="fchown"
+__syscall_32_name2num["fchown"]=4095
+__syscall_32_num2name[4096]="getpriority"
+__syscall_32_name2num["getpriority"]=4096
+__syscall_32_num2name[4097]="setpriority"
+__syscall_32_name2num["setpriority"]=4097
+__syscall_32_num2name[4098]="profil"
+__syscall_32_name2num["profil"]=4098
+__syscall_32_num2name[4099]="statfs"
+__syscall_32_name2num["statfs"]=4099
+__syscall_32_num2name[4100]="fstatfs"
+__syscall_32_name2num["fstatfs"]=4100
+__syscall_32_num2name[4101]="ioperm"
+__syscall_32_name2num["ioperm"]=4101
+__syscall_32_num2name[4102]="socketcall"
+__syscall_32_name2num["socketcall"]=4102
+__syscall_32_num2name[4103]="syslog"
+__syscall_32_name2num["syslog"]=4103
+__syscall_32_num2name[4104]="setitimer"
+__syscall_32_name2num["setitimer"]=4104
+__syscall_32_num2name[4105]="getitimer"
+__syscall_32_name2num["getitimer"]=4105
+__syscall_32_num2name[4106]="stat"
+__syscall_32_name2num["stat"]=4106
+__syscall_32_num2name[4107]="lstat"
+__syscall_32_name2num["lstat"]=4107
+__syscall_32_num2name[4108]="fstat"
+__syscall_32_name2num["fstat"]=4108
+__syscall_32_num2name[4109]="olduname"
+__syscall_32_name2num["olduname"]=4109
+__syscall_32_num2name[4110]="iopl"
+__syscall_32_name2num["iopl"]=4110
+__syscall_32_num2name[4111]="vhangup"
+__syscall_32_name2num["vhangup"]=4111
+__syscall_32_num2name[4112]="idle"
+__syscall_32_name2num["idle"]=4112
+__syscall_32_num2name[4113]="vm86"
+__syscall_32_name2num["vm86"]=4113
+__syscall_32_num2name[4114]="wait4"
+__syscall_32_name2num["wait4"]=4114
+__syscall_32_num2name[4115]="swapoff"
+__syscall_32_name2num["swapoff"]=4115
+__syscall_32_num2name[4116]="sysinfo"
+__syscall_32_name2num["sysinfo"]=4116
+__syscall_32_num2name[4117]="ipc"
+__syscall_32_name2num["ipc"]=4117
+__syscall_32_num2name[4118]="fsync"
+__syscall_32_name2num["fsync"]=4118
+__syscall_32_num2name[4119]="sigreturn"
+__syscall_32_name2num["sigreturn"]=4119
+__syscall_32_num2name[4120]="clone"
+__syscall_32_name2num["clone"]=4120
+__syscall_32_num2name[4121]="setdomainname"
+__syscall_32_name2num["setdomainname"]=4121
+__syscall_32_num2name[4122]="uname"
+__syscall_32_name2num["uname"]=4122
+__syscall_32_num2name[4123]="modify_ldt"
+__syscall_32_name2num["modify_ldt"]=4123
+__syscall_32_num2name[4124]="adjtimex"
+__syscall_32_name2num["adjtimex"]=4124
+__syscall_32_num2name[4125]="mprotect"
+__syscall_32_name2num["mprotect"]=4125
+__syscall_32_num2name[4126]="sigprocmask"
+__syscall_32_name2num["sigprocmask"]=4126
+__syscall_32_num2name[4127]="create_module"
+__syscall_32_name2num["create_module"]=4127
+__syscall_32_num2name[4128]="init_module"
+__syscall_32_name2num["init_module"]=4128
+__syscall_32_num2name[4129]="delete_module"
+__syscall_32_name2num["delete_module"]=4129
+__syscall_32_num2name[4130]="get_kernel_syms"
+__syscall_32_name2num["get_kernel_syms"]=4130
+__syscall_32_num2name[4131]="quotactl"
+__syscall_32_name2num["quotactl"]=4131
+__syscall_32_num2name[4132]="getpgid"
+__syscall_32_name2num["getpgid"]=4132
+__syscall_32_num2name[4133]="fchdir"
+__syscall_32_name2num["fchdir"]=4133
+__syscall_32_num2name[4134]="bdflush"
+__syscall_32_name2num["bdflush"]=4134
+__syscall_32_num2name[4135]="sysfs"
+__syscall_32_name2num["sysfs"]=4135
+__syscall_32_num2name[4136]="personality"
+__syscall_32_name2num["personality"]=4136
+__syscall_32_num2name[4137]="afs_syscall"
+__syscall_32_name2num["afs_syscall"]=4137
+__syscall_32_num2name[4138]="setfsuid"
+__syscall_32_name2num["setfsuid"]=4138
+__syscall_32_num2name[4139]="setfsgid"
+__syscall_32_name2num["setfsgid"]=4139
+__syscall_32_num2name[4140]="_llseek"
+__syscall_32_name2num["_llseek"]=4140
+__syscall_32_num2name[4141]="getdents"
+__syscall_32_name2num["getdents"]=4141
+__syscall_32_num2name[4142]="_newselect"
+__syscall_32_name2num["_newselect"]=4142
+__syscall_32_num2name[4143]="flock"
+__syscall_32_name2num["flock"]=4143
+__syscall_32_num2name[4144]="msync"
+__syscall_32_name2num["msync"]=4144
+__syscall_32_num2name[4145]="readv"
+__syscall_32_name2num["readv"]=4145
+__syscall_32_num2name[4146]="writev"
+__syscall_32_name2num["writev"]=4146
+__syscall_32_num2name[4147]="cacheflush"
+__syscall_32_name2num["cacheflush"]=4147
+__syscall_32_num2name[4148]="cachectl"
+__syscall_32_name2num["cachectl"]=4148
+__syscall_32_num2name[4149]="sysmips"
+__syscall_32_name2num["sysmips"]=4149
+__syscall_32_num2name[4150]="setup"
+__syscall_32_name2num["setup"]=4150
+__syscall_32_num2name[4151]="getsid"
+__syscall_32_name2num["getsid"]=4151
+__syscall_32_num2name[4152]="fdatasync"
+__syscall_32_name2num["fdatasync"]=4152
+__syscall_32_num2name[4153]="_sysctl"
+__syscall_32_name2num["_sysctl"]=4153
+__syscall_32_num2name[4154]="mlock"
+__syscall_32_name2num["mlock"]=4154
+__syscall_32_num2name[4155]="munlock"
+__syscall_32_name2num["munlock"]=4155
+__syscall_32_num2name[4156]="mlockall"
+__syscall_32_name2num["mlockall"]=4156
+__syscall_32_num2name[4157]="munlockall"
+__syscall_32_name2num["munlockall"]=4157
+__syscall_32_num2name[4158]="sched_setparam"
+__syscall_32_name2num["sched_setparam"]=4158
+__syscall_32_num2name[4159]="sched_getparam"
+__syscall_32_name2num["sched_getparam"]=4159
+__syscall_32_num2name[4160]="sched_setscheduler"
+__syscall_32_name2num["sched_setscheduler"]=4160
+__syscall_32_num2name[4161]="sched_getscheduler"
+__syscall_32_name2num["sched_getscheduler"]=4161
+__syscall_32_num2name[4162]="sched_yield"
+__syscall_32_name2num["sched_yield"]=4162
+__syscall_32_num2name[4163]="sched_get_priority_max"
+__syscall_32_name2num["sched_get_priority_max"]=4163
+__syscall_32_num2name[4164]="sched_get_priority_min"
+__syscall_32_name2num["sched_get_priority_min"]=4164
+__syscall_32_num2name[4165]="sched_rr_get_interval"
+__syscall_32_name2num["sched_rr_get_interval"]=4165
+__syscall_32_num2name[4166]="nanosleep"
+__syscall_32_name2num["nanosleep"]=4166
+__syscall_32_num2name[4167]="mremap"
+__syscall_32_name2num["mremap"]=4167
+__syscall_32_num2name[4168]="accept"
+__syscall_32_name2num["accept"]=4168
+__syscall_32_num2name[4169]="bind"
+__syscall_32_name2num["bind"]=4169
+__syscall_32_num2name[4170]="connect"
+__syscall_32_name2num["connect"]=4170
+__syscall_32_num2name[4171]="getpeername"
+__syscall_32_name2num["getpeername"]=4171
+__syscall_32_num2name[4172]="getsockname"
+__syscall_32_name2num["getsockname"]=4172
+__syscall_32_num2name[4173]="getsockopt"
+__syscall_32_name2num["getsockopt"]=4173
+__syscall_32_num2name[4174]="listen"
+__syscall_32_name2num["listen"]=4174
+__syscall_32_num2name[4175]="recv"
+__syscall_32_name2num["recv"]=4175
+__syscall_32_num2name[4176]="recvfrom"
+__syscall_32_name2num["recvfrom"]=4176
+__syscall_32_num2name[4177]="recvmsg"
+__syscall_32_name2num["recvmsg"]=4177
+__syscall_32_num2name[4178]="send"
+__syscall_32_name2num["send"]=4178
+__syscall_32_num2name[4179]="sendmsg"
+__syscall_32_name2num["sendmsg"]=4179
+__syscall_32_num2name[4180]="sendto"
+__syscall_32_name2num["sendto"]=4180
+__syscall_32_num2name[4181]="setsockopt"
+__syscall_32_name2num["setsockopt"]=4181
+__syscall_32_num2name[4182]="shutdown"
+__syscall_32_name2num["shutdown"]=4182
+__syscall_32_num2name[4183]="socket"
+__syscall_32_name2num["socket"]=4183
+__syscall_32_num2name[4184]="socketpair"
+__syscall_32_name2num["socketpair"]=4184
+__syscall_32_num2name[4185]="setresuid"
+__syscall_32_name2num["setresuid"]=4185
+__syscall_32_num2name[4186]="getresuid"
+__syscall_32_name2num["getresuid"]=4186
+__syscall_32_num2name[4187]="query_module"
+__syscall_32_name2num["query_module"]=4187
+__syscall_32_num2name[4188]="poll"
+__syscall_32_name2num["poll"]=4188
+__syscall_32_num2name[4189]="nfsservctl"
+__syscall_32_name2num["nfsservctl"]=4189
+__syscall_32_num2name[4190]="setresgid"
+__syscall_32_name2num["setresgid"]=4190
+__syscall_32_num2name[4191]="getresgid"
+__syscall_32_name2num["getresgid"]=4191
+__syscall_32_num2name[4192]="prctl"
+__syscall_32_name2num["prctl"]=4192
+__syscall_32_num2name[4193]="rt_sigreturn"
+__syscall_32_name2num["rt_sigreturn"]=4193
+__syscall_32_num2name[4194]="rt_sigaction"
+__syscall_32_name2num["rt_sigaction"]=4194
+__syscall_32_num2name[4195]="rt_sigprocmask"
+__syscall_32_name2num["rt_sigprocmask"]=4195
+__syscall_32_num2name[4196]="rt_sigpending"
+__syscall_32_name2num["rt_sigpending"]=4196
+__syscall_32_num2name[4197]="rt_sigtimedwait"
+__syscall_32_name2num["rt_sigtimedwait"]=4197
+__syscall_32_num2name[4198]="rt_sigqueueinfo"
+__syscall_32_name2num["rt_sigqueueinfo"]=4198
+__syscall_32_num2name[4199]="rt_sigsuspend"
+__syscall_32_name2num["rt_sigsuspend"]=4199
+__syscall_32_num2name[4200]="pread64"
+__syscall_32_name2num["pread64"]=4200
+__syscall_32_num2name[4201]="pwrite64"
+__syscall_32_name2num["pwrite64"]=4201
+__syscall_32_num2name[4202]="chown"
+__syscall_32_name2num["chown"]=4202
+__syscall_32_num2name[4203]="getcwd"
+__syscall_32_name2num["getcwd"]=4203
+__syscall_32_num2name[4204]="capget"
+__syscall_32_name2num["capget"]=4204
+__syscall_32_num2name[4205]="capset"
+__syscall_32_name2num["capset"]=4205
+__syscall_32_num2name[4206]="sigaltstack"
+__syscall_32_name2num["sigaltstack"]=4206
+__syscall_32_num2name[4207]="sendfile"
+__syscall_32_name2num["sendfile"]=4207
+__syscall_32_num2name[4208]="getpmsg"
+__syscall_32_name2num["getpmsg"]=4208
+__syscall_32_num2name[4209]="putpmsg"
+__syscall_32_name2num["putpmsg"]=4209
+__syscall_32_num2name[4210]="mmap2"
+__syscall_32_name2num["mmap2"]=4210
+__syscall_32_num2name[4211]="truncate64"
+__syscall_32_name2num["truncate64"]=4211
+__syscall_32_num2name[4212]="ftruncate64"
+__syscall_32_name2num["ftruncate64"]=4212
+__syscall_32_num2name[4213]="stat64"
+__syscall_32_name2num["stat64"]=4213
+__syscall_32_num2name[4214]="lstat64"
+__syscall_32_name2num["lstat64"]=4214
+__syscall_32_num2name[4215]="fstat64"
+__syscall_32_name2num["fstat64"]=4215
+__syscall_32_num2name[4216]="pivot_root"
+__syscall_32_name2num["pivot_root"]=4216
+__syscall_32_num2name[4217]="mincore"
+__syscall_32_name2num["mincore"]=4217
+__syscall_32_num2name[4218]="madvise"
+__syscall_32_name2num["madvise"]=4218
+__syscall_32_num2name[4219]="getdents64"
+__syscall_32_name2num["getdents64"]=4219
+__syscall_32_num2name[4220]="fcntl64"
+__syscall_32_name2num["fcntl64"]=4220
+__syscall_32_num2name[4222]="gettid"
+__syscall_32_name2num["gettid"]=4222
+__syscall_32_num2name[4223]="readahead"
+__syscall_32_name2num["readahead"]=4223
+__syscall_32_num2name[4224]="setxattr"
+__syscall_32_name2num["setxattr"]=4224
+__syscall_32_num2name[4225]="lsetxattr"
+__syscall_32_name2num["lsetxattr"]=4225
+__syscall_32_num2name[4226]="fsetxattr"
+__syscall_32_name2num["fsetxattr"]=4226
+__syscall_32_num2name[4227]="getxattr"
+__syscall_32_name2num["getxattr"]=4227
+__syscall_32_num2name[4228]="lgetxattr"
+__syscall_32_name2num["lgetxattr"]=4228
+__syscall_32_num2name[4229]="fgetxattr"
+__syscall_32_name2num["fgetxattr"]=4229
+__syscall_32_num2name[4230]="listxattr"
+__syscall_32_name2num["listxattr"]=4230
+__syscall_32_num2name[4231]="llistxattr"
+__syscall_32_name2num["llistxattr"]=4231
+__syscall_32_num2name[4232]="flistxattr"
+__syscall_32_name2num["flistxattr"]=4232
+__syscall_32_num2name[4233]="removexattr"
+__syscall_32_name2num["removexattr"]=4233
+__syscall_32_num2name[4234]="lremovexattr"
+__syscall_32_name2num["lremovexattr"]=4234
+__syscall_32_num2name[4235]="fremovexattr"
+__syscall_32_name2num["fremovexattr"]=4235
+__syscall_32_num2name[4236]="tkill"
+__syscall_32_name2num["tkill"]=4236
+__syscall_32_num2name[4237]="sendfile64"
+__syscall_32_name2num["sendfile64"]=4237
+__syscall_32_num2name[4238]="futex"
+__syscall_32_name2num["futex"]=4238
+__syscall_32_num2name[4239]="sched_setaffinity"
+__syscall_32_name2num["sched_setaffinity"]=4239
+__syscall_32_num2name[4240]="sched_getaffinity"
+__syscall_32_name2num["sched_getaffinity"]=4240
+__syscall_32_num2name[4241]="io_setup"
+__syscall_32_name2num["io_setup"]=4241
+__syscall_32_num2name[4242]="io_destroy"
+__syscall_32_name2num["io_destroy"]=4242
+__syscall_32_num2name[4243]="io_getevents"
+__syscall_32_name2num["io_getevents"]=4243
+__syscall_32_num2name[4244]="io_submit"
+__syscall_32_name2num["io_submit"]=4244
+__syscall_32_num2name[4245]="io_cancel"
+__syscall_32_name2num["io_cancel"]=4245
+__syscall_32_num2name[4246]="exit_group"
+__syscall_32_name2num["exit_group"]=4246
+__syscall_32_num2name[4247]="lookup_dcookie"
+__syscall_32_name2num["lookup_dcookie"]=4247
+__syscall_32_num2name[4248]="epoll_create"
+__syscall_32_name2num["epoll_create"]=4248
+__syscall_32_num2name[4249]="epoll_ctl"
+__syscall_32_name2num["epoll_ctl"]=4249
+__syscall_32_num2name[4250]="epoll_wait"
+__syscall_32_name2num["epoll_wait"]=4250
+__syscall_32_num2name[4251]="remap_file_pages"
+__syscall_32_name2num["remap_file_pages"]=4251
+__syscall_32_num2name[4252]="set_tid_address"
+__syscall_32_name2num["set_tid_address"]=4252
+__syscall_32_num2name[4253]="restart_syscall"
+__syscall_32_name2num["restart_syscall"]=4253
+__syscall_32_num2name[4254]="fadvise64"
+__syscall_32_name2num["fadvise64"]=4254
+__syscall_32_num2name[4255]="statfs64"
+__syscall_32_name2num["statfs64"]=4255
+__syscall_32_num2name[4256]="fstatfs64"
+__syscall_32_name2num["fstatfs64"]=4256
+__syscall_32_num2name[4257]="timer_create"
+__syscall_32_name2num["timer_create"]=4257
+__syscall_32_num2name[4258]="timer_settime"
+__syscall_32_name2num["timer_settime"]=4258
+__syscall_32_num2name[4259]="timer_gettime"
+__syscall_32_name2num["timer_gettime"]=4259
+__syscall_32_num2name[4260]="timer_getoverrun"
+__syscall_32_name2num["timer_getoverrun"]=4260
+__syscall_32_num2name[4261]="timer_delete"
+__syscall_32_name2num["timer_delete"]=4261
+__syscall_32_num2name[4262]="clock_settime"
+__syscall_32_name2num["clock_settime"]=4262
+__syscall_32_num2name[4263]="clock_gettime"
+__syscall_32_name2num["clock_gettime"]=4263
+__syscall_32_num2name[4264]="clock_getres"
+__syscall_32_name2num["clock_getres"]=4264
+__syscall_32_num2name[4265]="clock_nanosleep"
+__syscall_32_name2num["clock_nanosleep"]=4265
+__syscall_32_num2name[4266]="tgkill"
+__syscall_32_name2num["tgkill"]=4266
+__syscall_32_num2name[4267]="utimes"
+__syscall_32_name2num["utimes"]=4267
+__syscall_32_num2name[4268]="mbind"
+__syscall_32_name2num["mbind"]=4268
+__syscall_32_num2name[4269]="get_mempolicy"
+__syscall_32_name2num["get_mempolicy"]=4269
+__syscall_32_num2name[4270]="set_mempolicy"
+__syscall_32_name2num["set_mempolicy"]=4270
+__syscall_32_num2name[4271]="mq_open"
+__syscall_32_name2num["mq_open"]=4271
+__syscall_32_num2name[4272]="mq_unlink"
+__syscall_32_name2num["mq_unlink"]=4272
+__syscall_32_num2name[4273]="mq_timedsend"
+__syscall_32_name2num["mq_timedsend"]=4273
+__syscall_32_num2name[4274]="mq_timedreceive"
+__syscall_32_name2num["mq_timedreceive"]=4274
+__syscall_32_num2name[4275]="mq_notify"
+__syscall_32_name2num["mq_notify"]=4275
+__syscall_32_num2name[4276]="mq_getsetattr"
+__syscall_32_name2num["mq_getsetattr"]=4276
+__syscall_32_num2name[4277]="vserver"
+__syscall_32_name2num["vserver"]=4277
+__syscall_32_num2name[4278]="waitid"
+__syscall_32_name2num["waitid"]=4278
+__syscall_32_num2name[4280]="add_key"
+__syscall_32_name2num["add_key"]=4280
+__syscall_32_num2name[4281]="request_key"
+__syscall_32_name2num["request_key"]=4281
+__syscall_32_num2name[4282]="keyctl"
+__syscall_32_name2num["keyctl"]=4282
+__syscall_32_num2name[4283]="set_thread_area"
+__syscall_32_name2num["set_thread_area"]=4283
+__syscall_32_num2name[4284]="inotify_init"
+__syscall_32_name2num["inotify_init"]=4284
+__syscall_32_num2name[4285]="inotify_add_watch"
+__syscall_32_name2num["inotify_add_watch"]=4285
+__syscall_32_num2name[4286]="inotify_rm_watch"
+__syscall_32_name2num["inotify_rm_watch"]=4286
+__syscall_32_num2name[4287]="migrate_pages"
+__syscall_32_name2num["migrate_pages"]=4287
+__syscall_32_num2name[4288]="openat"
+__syscall_32_name2num["openat"]=4288
+__syscall_32_num2name[4289]="mkdirat"
+__syscall_32_name2num["mkdirat"]=4289
+__syscall_32_num2name[4290]="mknodat"
+__syscall_32_name2num["mknodat"]=4290
+__syscall_32_num2name[4291]="fchownat"
+__syscall_32_name2num["fchownat"]=4291
+__syscall_32_num2name[4292]="futimesat"
+__syscall_32_name2num["futimesat"]=4292
+__syscall_32_num2name[4293]="fstatat64"
+__syscall_32_name2num["fstatat64"]=4293
+__syscall_32_num2name[4294]="unlinkat"
+__syscall_32_name2num["unlinkat"]=4294
+__syscall_32_num2name[4295]="renameat"
+__syscall_32_name2num["renameat"]=4295
+__syscall_32_num2name[4296]="linkat"
+__syscall_32_name2num["linkat"]=4296
+__syscall_32_num2name[4297]="symlinkat"
+__syscall_32_name2num["symlinkat"]=4297
+__syscall_32_num2name[4298]="readlinkat"
+__syscall_32_name2num["readlinkat"]=4298
+__syscall_32_num2name[4299]="fchmodat"
+__syscall_32_name2num["fchmodat"]=4299
+__syscall_32_num2name[4300]="faccessat"
+__syscall_32_name2num["faccessat"]=4300
+__syscall_32_num2name[4301]="pselect6"
+__syscall_32_name2num["pselect6"]=4301
+__syscall_32_num2name[4302]="ppoll"
+__syscall_32_name2num["ppoll"]=4302
+__syscall_32_num2name[4303]="unshare"
+__syscall_32_name2num["unshare"]=4303
+__syscall_32_num2name[4304]="splice"
+__syscall_32_name2num["splice"]=4304
+__syscall_32_num2name[4305]="sync_file_range"
+__syscall_32_name2num["sync_file_range"]=4305
+__syscall_32_num2name[4306]="tee"
+__syscall_32_name2num["tee"]=4306
+__syscall_32_num2name[4307]="vmsplice"
+__syscall_32_name2num["vmsplice"]=4307
+__syscall_32_num2name[4308]="move_pages"
+__syscall_32_name2num["move_pages"]=4308
+__syscall_32_num2name[4309]="set_robust_list"
+__syscall_32_name2num["set_robust_list"]=4309
+__syscall_32_num2name[4310]="get_robust_list"
+__syscall_32_name2num["get_robust_list"]=4310
+__syscall_32_num2name[4311]="kexec_load"
+__syscall_32_name2num["kexec_load"]=4311
+__syscall_32_num2name[4312]="getcpu"
+__syscall_32_name2num["getcpu"]=4312
+__syscall_32_num2name[4313]="epoll_pwait"
+__syscall_32_name2num["epoll_pwait"]=4313
+__syscall_32_num2name[4314]="ioprio_set"
+__syscall_32_name2num["ioprio_set"]=4314
+__syscall_32_num2name[4315]="ioprio_get"
+__syscall_32_name2num["ioprio_get"]=4315
+__syscall_32_num2name[4316]="utimensat"
+__syscall_32_name2num["utimensat"]=4316
+__syscall_32_num2name[4317]="signalfd"
+__syscall_32_name2num["signalfd"]=4317
+__syscall_32_num2name[4318]="timerfd"
+__syscall_32_name2num["timerfd"]=4318
+__syscall_32_num2name[4319]="eventfd"
+__syscall_32_name2num["eventfd"]=4319
+__syscall_32_num2name[4320]="fallocate"
+__syscall_32_name2num["fallocate"]=4320
+__syscall_32_num2name[4321]="timerfd_create"
+__syscall_32_name2num["timerfd_create"]=4321
+__syscall_32_num2name[4322]="timerfd_gettime"
+__syscall_32_name2num["timerfd_gettime"]=4322
+__syscall_32_num2name[4323]="timerfd_settime"
+__syscall_32_name2num["timerfd_settime"]=4323
+__syscall_32_num2name[4324]="signalfd4"
+__syscall_32_name2num["signalfd4"]=4324
+__syscall_32_num2name[4325]="eventfd2"
+__syscall_32_name2num["eventfd2"]=4325
+__syscall_32_num2name[4326]="epoll_create1"
+__syscall_32_name2num["epoll_create1"]=4326
+__syscall_32_num2name[4327]="dup3"
+__syscall_32_name2num["dup3"]=4327
+__syscall_32_num2name[4328]="pipe2"
+__syscall_32_name2num["pipe2"]=4328
+__syscall_32_num2name[4329]="inotify_init1"
+__syscall_32_name2num["inotify_init1"]=4329
+__syscall_32_num2name[4330]="preadv"
+__syscall_32_name2num["preadv"]=4330
+__syscall_32_num2name[4331]="pwritev"
+__syscall_32_name2num["pwritev"]=4331
+__syscall_32_num2name[4332]="rt_tgsigqueueinfo"
+__syscall_32_name2num["rt_tgsigqueueinfo"]=4332
+__syscall_32_num2name[4333]="perf_event_open"
+__syscall_32_name2num["perf_event_open"]=4333
+__syscall_32_num2name[4334]="accept4"
+__syscall_32_name2num["accept4"]=4334
+__syscall_32_num2name[4335]="recvmmsg"
+__syscall_32_name2num["recvmmsg"]=4335
+__syscall_32_num2name[4336]="fanotify_init"
+__syscall_32_name2num["fanotify_init"]=4336
+__syscall_32_num2name[4337]="fanotify_mark"
+__syscall_32_name2num["fanotify_mark"]=4337
+__syscall_32_num2name[4338]="prlimit64"
+__syscall_32_name2num["prlimit64"]=4338
+__syscall_32_num2name[4339]="name_to_handle_at"
+__syscall_32_name2num["name_to_handle_at"]=4339
+__syscall_32_num2name[4340]="open_by_handle_at"
+__syscall_32_name2num["open_by_handle_at"]=4340
+__syscall_32_num2name[4341]="clock_adjtime"
+__syscall_32_name2num["clock_adjtime"]=4341
+__syscall_32_num2name[4342]="syncfs"
+__syscall_32_name2num["syncfs"]=4342
+__syscall_32_num2name[4343]="sendmmsg"
+__syscall_32_name2num["sendmmsg"]=4343
+__syscall_32_num2name[4344]="setns"
+__syscall_32_name2num["setns"]=4344
+__syscall_32_num2name[4345]="process_vm_readv"
+__syscall_32_name2num["process_vm_readv"]=4345
+__syscall_32_num2name[4346]="process_vm_writev"
+__syscall_32_name2num["process_vm_writev"]=4346
+__syscall_32_num2name[4347]="kcmp"
+__syscall_32_name2num["kcmp"]=4347
+__syscall_32_num2name[4348]="finit_module"
+__syscall_32_name2num["finit_module"]=4348
+__syscall_32_num2name[4349]="sched_setattr"
+__syscall_32_name2num["sched_setattr"]=4349
+__syscall_32_num2name[4350]="sched_getattr"
+__syscall_32_name2num["sched_getattr"]=4350
+__syscall_32_num2name[4351]="renameat2"
+__syscall_32_name2num["renameat2"]=4351
+__syscall_32_num2name[4352]="seccomp"
+__syscall_32_name2num["seccomp"]=4352
+__syscall_32_num2name[4353]="getrandom"
+__syscall_32_name2num["getrandom"]=4353
+__syscall_32_num2name[4354]="memfd_create"
+__syscall_32_name2num["memfd_create"]=4354
+__syscall_32_num2name[4355]="bpf"
+__syscall_32_name2num["bpf"]=4355
+__syscall_32_num2name[4356]="execveat"
+__syscall_32_name2num["execveat"]=4356
+__syscall_32_num2name[4357]="userfaultfd"
+__syscall_32_name2num["userfaultfd"]=4357
+__syscall_32_num2name[4358]="membarrier"
+__syscall_32_name2num["membarrier"]=4358
+__syscall_32_num2name[4359]="mlock2"
+__syscall_32_name2num["mlock2"]=4359
+__syscall_32_num2name[4360]="copy_file_range"
+__syscall_32_name2num["copy_file_range"]=4360
+__syscall_32_num2name[4361]="preadv2"
+__syscall_32_name2num["preadv2"]=4361
+__syscall_32_num2name[4362]="pwritev2"
+__syscall_32_name2num["pwritev2"]=4362
+__syscall_32_num2name[6000]="read"
+__syscall_32_name2num["read"]=6000
+__syscall_32_num2name[6001]="write"
+__syscall_32_name2num["write"]=6001
+__syscall_32_num2name[6002]="open"
+__syscall_32_name2num["open"]=6002
+__syscall_32_num2name[6003]="close"
+__syscall_32_name2num["close"]=6003
+__syscall_32_num2name[6004]="stat"
+__syscall_32_name2num["stat"]=6004
+__syscall_32_num2name[6005]="fstat"
+__syscall_32_name2num["fstat"]=6005
+__syscall_32_num2name[6006]="lstat"
+__syscall_32_name2num["lstat"]=6006
+__syscall_32_num2name[6007]="poll"
+__syscall_32_name2num["poll"]=6007
+__syscall_32_num2name[6008]="lseek"
+__syscall_32_name2num["lseek"]=6008
+__syscall_32_num2name[6009]="mmap"
+__syscall_32_name2num["mmap"]=6009
+__syscall_32_num2name[6010]="mprotect"
+__syscall_32_name2num["mprotect"]=6010
+__syscall_32_num2name[6011]="munmap"
+__syscall_32_name2num["munmap"]=6011
+__syscall_32_num2name[6012]="brk"
+__syscall_32_name2num["brk"]=6012
+__syscall_32_num2name[6013]="rt_sigaction"
+__syscall_32_name2num["rt_sigaction"]=6013
+__syscall_32_num2name[6014]="rt_sigprocmask"
+__syscall_32_name2num["rt_sigprocmask"]=6014
+__syscall_32_num2name[6015]="ioctl"
+__syscall_32_name2num["ioctl"]=6015
+__syscall_32_num2name[6016]="pread64"
+__syscall_32_name2num["pread64"]=6016
+__syscall_32_num2name[6017]="pwrite64"
+__syscall_32_name2num["pwrite64"]=6017
+__syscall_32_num2name[6018]="readv"
+__syscall_32_name2num["readv"]=6018
+__syscall_32_num2name[6019]="writev"
+__syscall_32_name2num["writev"]=6019
+__syscall_32_num2name[6020]="access"
+__syscall_32_name2num["access"]=6020
+__syscall_32_num2name[6021]="pipe"
+__syscall_32_name2num["pipe"]=6021
+__syscall_32_num2name[6022]="_newselect"
+__syscall_32_name2num["_newselect"]=6022
+__syscall_32_num2name[6023]="sched_yield"
+__syscall_32_name2num["sched_yield"]=6023
+__syscall_32_num2name[6024]="mremap"
+__syscall_32_name2num["mremap"]=6024
+__syscall_32_num2name[6025]="msync"
+__syscall_32_name2num["msync"]=6025
+__syscall_32_num2name[6026]="mincore"
+__syscall_32_name2num["mincore"]=6026
+__syscall_32_num2name[6027]="madvise"
+__syscall_32_name2num["madvise"]=6027
+__syscall_32_num2name[6028]="shmget"
+__syscall_32_name2num["shmget"]=6028
+__syscall_32_num2name[6029]="shmat"
+__syscall_32_name2num["shmat"]=6029
+__syscall_32_num2name[6030]="shmctl"
+__syscall_32_name2num["shmctl"]=6030
+__syscall_32_num2name[6031]="dup"
+__syscall_32_name2num["dup"]=6031
+__syscall_32_num2name[6032]="dup2"
+__syscall_32_name2num["dup2"]=6032
+__syscall_32_num2name[6033]="pause"
+__syscall_32_name2num["pause"]=6033
+__syscall_32_num2name[6034]="nanosleep"
+__syscall_32_name2num["nanosleep"]=6034
+__syscall_32_num2name[6035]="getitimer"
+__syscall_32_name2num["getitimer"]=6035
+__syscall_32_num2name[6036]="setitimer"
+__syscall_32_name2num["setitimer"]=6036
+__syscall_32_num2name[6037]="alarm"
+__syscall_32_name2num["alarm"]=6037
+__syscall_32_num2name[6038]="getpid"
+__syscall_32_name2num["getpid"]=6038
+__syscall_32_num2name[6039]="sendfile"
+__syscall_32_name2num["sendfile"]=6039
+__syscall_32_num2name[6040]="socket"
+__syscall_32_name2num["socket"]=6040
+__syscall_32_num2name[6041]="connect"
+__syscall_32_name2num["connect"]=6041
+__syscall_32_num2name[6042]="accept"
+__syscall_32_name2num["accept"]=6042
+__syscall_32_num2name[6043]="sendto"
+__syscall_32_name2num["sendto"]=6043
+__syscall_32_num2name[6044]="recvfrom"
+__syscall_32_name2num["recvfrom"]=6044
+__syscall_32_num2name[6045]="sendmsg"
+__syscall_32_name2num["sendmsg"]=6045
+__syscall_32_num2name[6046]="recvmsg"
+__syscall_32_name2num["recvmsg"]=6046
+__syscall_32_num2name[6047]="shutdown"
+__syscall_32_name2num["shutdown"]=6047
+__syscall_32_num2name[6048]="bind"
+__syscall_32_name2num["bind"]=6048
+__syscall_32_num2name[6049]="listen"
+__syscall_32_name2num["listen"]=6049
+__syscall_32_num2name[6050]="getsockname"
+__syscall_32_name2num["getsockname"]=6050
+__syscall_32_num2name[6051]="getpeername"
+__syscall_32_name2num["getpeername"]=6051
+__syscall_32_num2name[6052]="socketpair"
+__syscall_32_name2num["socketpair"]=6052
+__syscall_32_num2name[6053]="setsockopt"
+__syscall_32_name2num["setsockopt"]=6053
+__syscall_32_num2name[6054]="getsockopt"
+__syscall_32_name2num["getsockopt"]=6054
+__syscall_32_num2name[6055]="clone"
+__syscall_32_name2num["clone"]=6055
+__syscall_32_num2name[6056]="fork"
+__syscall_32_name2num["fork"]=6056
+__syscall_32_num2name[6057]="execve"
+__syscall_32_name2num["execve"]=6057
+__syscall_32_num2name[6058]="exit"
+__syscall_32_name2num["exit"]=6058
+__syscall_32_num2name[6059]="wait4"
+__syscall_32_name2num["wait4"]=6059
+__syscall_32_num2name[6060]="kill"
+__syscall_32_name2num["kill"]=6060
+__syscall_32_num2name[6061]="uname"
+__syscall_32_name2num["uname"]=6061
+__syscall_32_num2name[6062]="semget"
+__syscall_32_name2num["semget"]=6062
+__syscall_32_num2name[6063]="semop"
+__syscall_32_name2num["semop"]=6063
+__syscall_32_num2name[6064]="semctl"
+__syscall_32_name2num["semctl"]=6064
+__syscall_32_num2name[6065]="shmdt"
+__syscall_32_name2num["shmdt"]=6065
+__syscall_32_num2name[6066]="msgget"
+__syscall_32_name2num["msgget"]=6066
+__syscall_32_num2name[6067]="msgsnd"
+__syscall_32_name2num["msgsnd"]=6067
+__syscall_32_num2name[6068]="msgrcv"
+__syscall_32_name2num["msgrcv"]=6068
+__syscall_32_num2name[6069]="msgctl"
+__syscall_32_name2num["msgctl"]=6069
+__syscall_32_num2name[6070]="fcntl"
+__syscall_32_name2num["fcntl"]=6070
+__syscall_32_num2name[6071]="flock"
+__syscall_32_name2num["flock"]=6071
+__syscall_32_num2name[6072]="fsync"
+__syscall_32_name2num["fsync"]=6072
+__syscall_32_num2name[6073]="fdatasync"
+__syscall_32_name2num["fdatasync"]=6073
+__syscall_32_num2name[6074]="truncate"
+__syscall_32_name2num["truncate"]=6074
+__syscall_32_num2name[6075]="ftruncate"
+__syscall_32_name2num["ftruncate"]=6075
+__syscall_32_num2name[6076]="getdents"
+__syscall_32_name2num["getdents"]=6076
+__syscall_32_num2name[6077]="getcwd"
+__syscall_32_name2num["getcwd"]=6077
+__syscall_32_num2name[6078]="chdir"
+__syscall_32_name2num["chdir"]=6078
+__syscall_32_num2name[6079]="fchdir"
+__syscall_32_name2num["fchdir"]=6079
+__syscall_32_num2name[6080]="rename"
+__syscall_32_name2num["rename"]=6080
+__syscall_32_num2name[6081]="mkdir"
+__syscall_32_name2num["mkdir"]=6081
+__syscall_32_num2name[6082]="rmdir"
+__syscall_32_name2num["rmdir"]=6082
+__syscall_32_num2name[6083]="creat"
+__syscall_32_name2num["creat"]=6083
+__syscall_32_num2name[6084]="link"
+__syscall_32_name2num["link"]=6084
+__syscall_32_num2name[6085]="unlink"
+__syscall_32_name2num["unlink"]=6085
+__syscall_32_num2name[6086]="symlink"
+__syscall_32_name2num["symlink"]=6086
+__syscall_32_num2name[6087]="readlink"
+__syscall_32_name2num["readlink"]=6087
+__syscall_32_num2name[6088]="chmod"
+__syscall_32_name2num["chmod"]=6088
+__syscall_32_num2name[6089]="fchmod"
+__syscall_32_name2num["fchmod"]=6089
+__syscall_32_num2name[6090]="chown"
+__syscall_32_name2num["chown"]=6090
+__syscall_32_num2name[6091]="fchown"
+__syscall_32_name2num["fchown"]=6091
+__syscall_32_num2name[6092]="lchown"
+__syscall_32_name2num["lchown"]=6092
+__syscall_32_num2name[6093]="umask"
+__syscall_32_name2num["umask"]=6093
+__syscall_32_num2name[6094]="gettimeofday"
+__syscall_32_name2num["gettimeofday"]=6094
+__syscall_32_num2name[6095]="getrlimit"
+__syscall_32_name2num["getrlimit"]=6095
+__syscall_32_num2name[6096]="getrusage"
+__syscall_32_name2num["getrusage"]=6096
+__syscall_32_num2name[6097]="sysinfo"
+__syscall_32_name2num["sysinfo"]=6097
+__syscall_32_num2name[6098]="times"
+__syscall_32_name2num["times"]=6098
+__syscall_32_num2name[6099]="ptrace"
+__syscall_32_name2num["ptrace"]=6099
+__syscall_32_num2name[6100]="getuid"
+__syscall_32_name2num["getuid"]=6100
+__syscall_32_num2name[6101]="syslog"
+__syscall_32_name2num["syslog"]=6101
+__syscall_32_num2name[6102]="getgid"
+__syscall_32_name2num["getgid"]=6102
+__syscall_32_num2name[6103]="setuid"
+__syscall_32_name2num["setuid"]=6103
+__syscall_32_num2name[6104]="setgid"
+__syscall_32_name2num["setgid"]=6104
+__syscall_32_num2name[6105]="geteuid"
+__syscall_32_name2num["geteuid"]=6105
+__syscall_32_num2name[6106]="getegid"
+__syscall_32_name2num["getegid"]=6106
+__syscall_32_num2name[6107]="setpgid"
+__syscall_32_name2num["setpgid"]=6107
+__syscall_32_num2name[6108]="getppid"
+__syscall_32_name2num["getppid"]=6108
+__syscall_32_num2name[6109]="getpgrp"
+__syscall_32_name2num["getpgrp"]=6109
+__syscall_32_num2name[6110]="setsid"
+__syscall_32_name2num["setsid"]=6110
+__syscall_32_num2name[6111]="setreuid"
+__syscall_32_name2num["setreuid"]=6111
+__syscall_32_num2name[6112]="setregid"
+__syscall_32_name2num["setregid"]=6112
+__syscall_32_num2name[6113]="getgroups"
+__syscall_32_name2num["getgroups"]=6113
+__syscall_32_num2name[6114]="setgroups"
+__syscall_32_name2num["setgroups"]=6114
+__syscall_32_num2name[6115]="setresuid"
+__syscall_32_name2num["setresuid"]=6115
+__syscall_32_num2name[6116]="getresuid"
+__syscall_32_name2num["getresuid"]=6116
+__syscall_32_num2name[6117]="setresgid"
+__syscall_32_name2num["setresgid"]=6117
+__syscall_32_num2name[6118]="getresgid"
+__syscall_32_name2num["getresgid"]=6118
+__syscall_32_num2name[6119]="getpgid"
+__syscall_32_name2num["getpgid"]=6119
+__syscall_32_num2name[6120]="setfsuid"
+__syscall_32_name2num["setfsuid"]=6120
+__syscall_32_num2name[6121]="setfsgid"
+__syscall_32_name2num["setfsgid"]=6121
+__syscall_32_num2name[6122]="getsid"
+__syscall_32_name2num["getsid"]=6122
+__syscall_32_num2name[6123]="capget"
+__syscall_32_name2num["capget"]=6123
+__syscall_32_num2name[6124]="capset"
+__syscall_32_name2num["capset"]=6124
+__syscall_32_num2name[6125]="rt_sigpending"
+__syscall_32_name2num["rt_sigpending"]=6125
+__syscall_32_num2name[6126]="rt_sigtimedwait"
+__syscall_32_name2num["rt_sigtimedwait"]=6126
+__syscall_32_num2name[6127]="rt_sigqueueinfo"
+__syscall_32_name2num["rt_sigqueueinfo"]=6127
+__syscall_32_num2name[6128]="rt_sigsuspend"
+__syscall_32_name2num["rt_sigsuspend"]=6128
+__syscall_32_num2name[6129]="sigaltstack"
+__syscall_32_name2num["sigaltstack"]=6129
+__syscall_32_num2name[6130]="utime"
+__syscall_32_name2num["utime"]=6130
+__syscall_32_num2name[6131]="mknod"
+__syscall_32_name2num["mknod"]=6131
+__syscall_32_num2name[6132]="personality"
+__syscall_32_name2num["personality"]=6132
+__syscall_32_num2name[6133]="ustat"
+__syscall_32_name2num["ustat"]=6133
+__syscall_32_num2name[6134]="statfs"
+__syscall_32_name2num["statfs"]=6134
+__syscall_32_num2name[6135]="fstatfs"
+__syscall_32_name2num["fstatfs"]=6135
+__syscall_32_num2name[6136]="sysfs"
+__syscall_32_name2num["sysfs"]=6136
+__syscall_32_num2name[6137]="getpriority"
+__syscall_32_name2num["getpriority"]=6137
+__syscall_32_num2name[6138]="setpriority"
+__syscall_32_name2num["setpriority"]=6138
+__syscall_32_num2name[6139]="sched_setparam"
+__syscall_32_name2num["sched_setparam"]=6139
+__syscall_32_num2name[6140]="sched_getparam"
+__syscall_32_name2num["sched_getparam"]=6140
+__syscall_32_num2name[6141]="sched_setscheduler"
+__syscall_32_name2num["sched_setscheduler"]=6141
+__syscall_32_num2name[6142]="sched_getscheduler"
+__syscall_32_name2num["sched_getscheduler"]=6142
+__syscall_32_num2name[6143]="sched_get_priority_max"
+__syscall_32_name2num["sched_get_priority_max"]=6143
+__syscall_32_num2name[6144]="sched_get_priority_min"
+__syscall_32_name2num["sched_get_priority_min"]=6144
+__syscall_32_num2name[6145]="sched_rr_get_interval"
+__syscall_32_name2num["sched_rr_get_interval"]=6145
+__syscall_32_num2name[6146]="mlock"
+__syscall_32_name2num["mlock"]=6146
+__syscall_32_num2name[6147]="munlock"
+__syscall_32_name2num["munlock"]=6147
+__syscall_32_num2name[6148]="mlockall"
+__syscall_32_name2num["mlockall"]=6148
+__syscall_32_num2name[6149]="munlockall"
+__syscall_32_name2num["munlockall"]=6149
+__syscall_32_num2name[6150]="vhangup"
+__syscall_32_name2num["vhangup"]=6150
+__syscall_32_num2name[6151]="pivot_root"
+__syscall_32_name2num["pivot_root"]=6151
+__syscall_32_num2name[6152]="_sysctl"
+__syscall_32_name2num["_sysctl"]=6152
+__syscall_32_num2name[6153]="prctl"
+__syscall_32_name2num["prctl"]=6153
+__syscall_32_num2name[6154]="adjtimex"
+__syscall_32_name2num["adjtimex"]=6154
+__syscall_32_num2name[6155]="setrlimit"
+__syscall_32_name2num["setrlimit"]=6155
+__syscall_32_num2name[6156]="chroot"
+__syscall_32_name2num["chroot"]=6156
+__syscall_32_num2name[6157]="sync"
+__syscall_32_name2num["sync"]=6157
+__syscall_32_num2name[6158]="acct"
+__syscall_32_name2num["acct"]=6158
+__syscall_32_num2name[6159]="settimeofday"
+__syscall_32_name2num["settimeofday"]=6159
+__syscall_32_num2name[6160]="mount"
+__syscall_32_name2num["mount"]=6160
+__syscall_32_num2name[6161]="umount2"
+__syscall_32_name2num["umount2"]=6161
+__syscall_32_num2name[6162]="swapon"
+__syscall_32_name2num["swapon"]=6162
+__syscall_32_num2name[6163]="swapoff"
+__syscall_32_name2num["swapoff"]=6163
+__syscall_32_num2name[6164]="reboot"
+__syscall_32_name2num["reboot"]=6164
+__syscall_32_num2name[6165]="sethostname"
+__syscall_32_name2num["sethostname"]=6165
+__syscall_32_num2name[6166]="setdomainname"
+__syscall_32_name2num["setdomainname"]=6166
+__syscall_32_num2name[6167]="create_module"
+__syscall_32_name2num["create_module"]=6167
+__syscall_32_num2name[6168]="init_module"
+__syscall_32_name2num["init_module"]=6168
+__syscall_32_num2name[6169]="delete_module"
+__syscall_32_name2num["delete_module"]=6169
+__syscall_32_num2name[6170]="get_kernel_syms"
+__syscall_32_name2num["get_kernel_syms"]=6170
+__syscall_32_num2name[6171]="query_module"
+__syscall_32_name2num["query_module"]=6171
+__syscall_32_num2name[6172]="quotactl"
+__syscall_32_name2num["quotactl"]=6172
+__syscall_32_num2name[6173]="nfsservctl"
+__syscall_32_name2num["nfsservctl"]=6173
+__syscall_32_num2name[6174]="getpmsg"
+__syscall_32_name2num["getpmsg"]=6174
+__syscall_32_num2name[6175]="putpmsg"
+__syscall_32_name2num["putpmsg"]=6175
+__syscall_32_num2name[6176]="afs_syscall"
+__syscall_32_name2num["afs_syscall"]=6176
+__syscall_32_num2name[6177]="reserved177"
+__syscall_32_name2num["reserved177"]=6177
+__syscall_32_num2name[6178]="gettid"
+__syscall_32_name2num["gettid"]=6178
+__syscall_32_num2name[6179]="readahead"
+__syscall_32_name2num["readahead"]=6179
+__syscall_32_num2name[6180]="setxattr"
+__syscall_32_name2num["setxattr"]=6180
+__syscall_32_num2name[6181]="lsetxattr"
+__syscall_32_name2num["lsetxattr"]=6181
+__syscall_32_num2name[6182]="fsetxattr"
+__syscall_32_name2num["fsetxattr"]=6182
+__syscall_32_num2name[6183]="getxattr"
+__syscall_32_name2num["getxattr"]=6183
+__syscall_32_num2name[6184]="lgetxattr"
+__syscall_32_name2num["lgetxattr"]=6184
+__syscall_32_num2name[6185]="fgetxattr"
+__syscall_32_name2num["fgetxattr"]=6185
+__syscall_32_num2name[6186]="listxattr"
+__syscall_32_name2num["listxattr"]=6186
+__syscall_32_num2name[6187]="llistxattr"
+__syscall_32_name2num["llistxattr"]=6187
+__syscall_32_num2name[6188]="flistxattr"
+__syscall_32_name2num["flistxattr"]=6188
+__syscall_32_num2name[6189]="removexattr"
+__syscall_32_name2num["removexattr"]=6189
+__syscall_32_num2name[6190]="lremovexattr"
+__syscall_32_name2num["lremovexattr"]=6190
+__syscall_32_num2name[6191]="fremovexattr"
+__syscall_32_name2num["fremovexattr"]=6191
+__syscall_32_num2name[6192]="tkill"
+__syscall_32_name2num["tkill"]=6192
+__syscall_32_num2name[6193]="time"
+__syscall_32_name2num["time"]=6193
+__syscall_32_num2name[6194]="futex"
+__syscall_32_name2num["futex"]=6194
+__syscall_32_num2name[6195]="sched_setaffinity"
+__syscall_32_name2num["sched_setaffinity"]=6195
+__syscall_32_num2name[6196]="sched_getaffinity"
+__syscall_32_name2num["sched_getaffinity"]=6196
+__syscall_32_num2name[6197]="cacheflush"
+__syscall_32_name2num["cacheflush"]=6197
+__syscall_32_num2name[6198]="cachectl"
+__syscall_32_name2num["cachectl"]=6198
+__syscall_32_num2name[6199]="sysmips"
+__syscall_32_name2num["sysmips"]=6199
+__syscall_32_num2name[6200]="io_setup"
+__syscall_32_name2num["io_setup"]=6200
+__syscall_32_num2name[6201]="io_destroy"
+__syscall_32_name2num["io_destroy"]=6201
+__syscall_32_num2name[6202]="io_getevents"
+__syscall_32_name2num["io_getevents"]=6202
+__syscall_32_num2name[6203]="io_submit"
+__syscall_32_name2num["io_submit"]=6203
+__syscall_32_num2name[6204]="io_cancel"
+__syscall_32_name2num["io_cancel"]=6204
+__syscall_32_num2name[6205]="exit_group"
+__syscall_32_name2num["exit_group"]=6205
+__syscall_32_num2name[6206]="lookup_dcookie"
+__syscall_32_name2num["lookup_dcookie"]=6206
+__syscall_32_num2name[6207]="epoll_create"
+__syscall_32_name2num["epoll_create"]=6207
+__syscall_32_num2name[6208]="epoll_ctl"
+__syscall_32_name2num["epoll_ctl"]=6208
+__syscall_32_num2name[6209]="epoll_wait"
+__syscall_32_name2num["epoll_wait"]=6209
+__syscall_32_num2name[6210]="remap_file_pages"
+__syscall_32_name2num["remap_file_pages"]=6210
+__syscall_32_num2name[6211]="rt_sigreturn"
+__syscall_32_name2num["rt_sigreturn"]=6211
+__syscall_32_num2name[6212]="fcntl64"
+__syscall_32_name2num["fcntl64"]=6212
+__syscall_32_num2name[6213]="set_tid_address"
+__syscall_32_name2num["set_tid_address"]=6213
+__syscall_32_num2name[6214]="restart_syscall"
+__syscall_32_name2num["restart_syscall"]=6214
+__syscall_32_num2name[6215]="semtimedop"
+__syscall_32_name2num["semtimedop"]=6215
+__syscall_32_num2name[6216]="fadvise64"
+__syscall_32_name2num["fadvise64"]=6216
+__syscall_32_num2name[6217]="statfs64"
+__syscall_32_name2num["statfs64"]=6217
+__syscall_32_num2name[6218]="fstatfs64"
+__syscall_32_name2num["fstatfs64"]=6218
+__syscall_32_num2name[6219]="sendfile64"
+__syscall_32_name2num["sendfile64"]=6219
+__syscall_32_num2name[6220]="timer_create"
+__syscall_32_name2num["timer_create"]=6220
+__syscall_32_num2name[6221]="timer_settime"
+__syscall_32_name2num["timer_settime"]=6221
+__syscall_32_num2name[6222]="timer_gettime"
+__syscall_32_name2num["timer_gettime"]=6222
+__syscall_32_num2name[6223]="timer_getoverrun"
+__syscall_32_name2num["timer_getoverrun"]=6223
+__syscall_32_num2name[6224]="timer_delete"
+__syscall_32_name2num["timer_delete"]=6224
+__syscall_32_num2name[6225]="clock_settime"
+__syscall_32_name2num["clock_settime"]=6225
+__syscall_32_num2name[6226]="clock_gettime"
+__syscall_32_name2num["clock_gettime"]=6226
+__syscall_32_num2name[6227]="clock_getres"
+__syscall_32_name2num["clock_getres"]=6227
+__syscall_32_num2name[6228]="clock_nanosleep"
+__syscall_32_name2num["clock_nanosleep"]=6228
+__syscall_32_num2name[6229]="tgkill"
+__syscall_32_name2num["tgkill"]=6229
+__syscall_32_num2name[6230]="utimes"
+__syscall_32_name2num["utimes"]=6230
+__syscall_32_num2name[6231]="mbind"
+__syscall_32_name2num["mbind"]=6231
+__syscall_32_num2name[6232]="get_mempolicy"
+__syscall_32_name2num["get_mempolicy"]=6232
+__syscall_32_num2name[6233]="set_mempolicy"
+__syscall_32_name2num["set_mempolicy"]=6233
+__syscall_32_num2name[6234]="mq_open"
+__syscall_32_name2num["mq_open"]=6234
+__syscall_32_num2name[6235]="mq_unlink"
+__syscall_32_name2num["mq_unlink"]=6235
+__syscall_32_num2name[6236]="mq_timedsend"
+__syscall_32_name2num["mq_timedsend"]=6236
+__syscall_32_num2name[6237]="mq_timedreceive"
+__syscall_32_name2num["mq_timedreceive"]=6237
+__syscall_32_num2name[6238]="mq_notify"
+__syscall_32_name2num["mq_notify"]=6238
+__syscall_32_num2name[6239]="mq_getsetattr"
+__syscall_32_name2num["mq_getsetattr"]=6239
+__syscall_32_num2name[6240]="vserver"
+__syscall_32_name2num["vserver"]=6240
+__syscall_32_num2name[6241]="waitid"
+__syscall_32_name2num["waitid"]=6241
+__syscall_32_num2name[6243]="add_key"
+__syscall_32_name2num["add_key"]=6243
+__syscall_32_num2name[6244]="request_key"
+__syscall_32_name2num["request_key"]=6244
+__syscall_32_num2name[6245]="keyctl"
+__syscall_32_name2num["keyctl"]=6245
+__syscall_32_num2name[6246]="set_thread_area"
+__syscall_32_name2num["set_thread_area"]=6246
+__syscall_32_num2name[6247]="inotify_init"
+__syscall_32_name2num["inotify_init"]=6247
+__syscall_32_num2name[6248]="inotify_add_watch"
+__syscall_32_name2num["inotify_add_watch"]=6248
+__syscall_32_num2name[6249]="inotify_rm_watch"
+__syscall_32_name2num["inotify_rm_watch"]=6249
+__syscall_32_num2name[6250]="migrate_pages"
+__syscall_32_name2num["migrate_pages"]=6250
+__syscall_32_num2name[6251]="openat"
+__syscall_32_name2num["openat"]=6251
+__syscall_32_num2name[6252]="mkdirat"
+__syscall_32_name2num["mkdirat"]=6252
+__syscall_32_num2name[6253]="mknodat"
+__syscall_32_name2num["mknodat"]=6253
+__syscall_32_num2name[6254]="fchownat"
+__syscall_32_name2num["fchownat"]=6254
+__syscall_32_num2name[6255]="futimesat"
+__syscall_32_name2num["futimesat"]=6255
+__syscall_32_num2name[6256]="newfstatat"
+__syscall_32_name2num["newfstatat"]=6256
+__syscall_32_num2name[6257]="unlinkat"
+__syscall_32_name2num["unlinkat"]=6257
+__syscall_32_num2name[6258]="renameat"
+__syscall_32_name2num["renameat"]=6258
+__syscall_32_num2name[6259]="linkat"
+__syscall_32_name2num["linkat"]=6259
+__syscall_32_num2name[6260]="symlinkat"
+__syscall_32_name2num["symlinkat"]=6260
+__syscall_32_num2name[6261]="readlinkat"
+__syscall_32_name2num["readlinkat"]=6261
+__syscall_32_num2name[6262]="fchmodat"
+__syscall_32_name2num["fchmodat"]=6262
+__syscall_32_num2name[6263]="faccessat"
+__syscall_32_name2num["faccessat"]=6263
+__syscall_32_num2name[6264]="pselect6"
+__syscall_32_name2num["pselect6"]=6264
+__syscall_32_num2name[6265]="ppoll"
+__syscall_32_name2num["ppoll"]=6265
+__syscall_32_num2name[6266]="unshare"
+__syscall_32_name2num["unshare"]=6266
+__syscall_32_num2name[6267]="splice"
+__syscall_32_name2num["splice"]=6267
+__syscall_32_num2name[6268]="sync_file_range"
+__syscall_32_name2num["sync_file_range"]=6268
+__syscall_32_num2name[6269]="tee"
+__syscall_32_name2num["tee"]=6269
+__syscall_32_num2name[6270]="vmsplice"
+__syscall_32_name2num["vmsplice"]=6270
+__syscall_32_num2name[6271]="move_pages"
+__syscall_32_name2num["move_pages"]=6271
+__syscall_32_num2name[6272]="set_robust_list"
+__syscall_32_name2num["set_robust_list"]=6272
+__syscall_32_num2name[6273]="get_robust_list"
+__syscall_32_name2num["get_robust_list"]=6273
+__syscall_32_num2name[6274]="kexec_load"
+__syscall_32_name2num["kexec_load"]=6274
+__syscall_32_num2name[6275]="getcpu"
+__syscall_32_name2num["getcpu"]=6275
+__syscall_32_num2name[6276]="epoll_pwait"
+__syscall_32_name2num["epoll_pwait"]=6276
+__syscall_32_num2name[6277]="ioprio_set"
+__syscall_32_name2num["ioprio_set"]=6277
+__syscall_32_num2name[6278]="ioprio_get"
+__syscall_32_name2num["ioprio_get"]=6278
+__syscall_32_num2name[6279]="utimensat"
+__syscall_32_name2num["utimensat"]=6279
+__syscall_32_num2name[6280]="signalfd"
+__syscall_32_name2num["signalfd"]=6280
+__syscall_32_num2name[6281]="timerfd"
+__syscall_32_name2num["timerfd"]=6281
+__syscall_32_num2name[6282]="eventfd"
+__syscall_32_name2num["eventfd"]=6282
+__syscall_32_num2name[6283]="fallocate"
+__syscall_32_name2num["fallocate"]=6283
+__syscall_32_num2name[6284]="timerfd_create"
+__syscall_32_name2num["timerfd_create"]=6284
+__syscall_32_num2name[6285]="timerfd_gettime"
+__syscall_32_name2num["timerfd_gettime"]=6285
+__syscall_32_num2name[6286]="timerfd_settime"
+__syscall_32_name2num["timerfd_settime"]=6286
+__syscall_32_num2name[6287]="signalfd4"
+__syscall_32_name2num["signalfd4"]=6287
+__syscall_32_num2name[6288]="eventfd2"
+__syscall_32_name2num["eventfd2"]=6288
+__syscall_32_num2name[6289]="epoll_create1"
+__syscall_32_name2num["epoll_create1"]=6289
+__syscall_32_num2name[6290]="dup3"
+__syscall_32_name2num["dup3"]=6290
+__syscall_32_num2name[6291]="pipe2"
+__syscall_32_name2num["pipe2"]=6291
+__syscall_32_num2name[6292]="inotify_init1"
+__syscall_32_name2num["inotify_init1"]=6292
+__syscall_32_num2name[6293]="preadv"
+__syscall_32_name2num["preadv"]=6293
+__syscall_32_num2name[6294]="pwritev"
+__syscall_32_name2num["pwritev"]=6294
+__syscall_32_num2name[6295]="rt_tgsigqueueinfo"
+__syscall_32_name2num["rt_tgsigqueueinfo"]=6295
+__syscall_32_num2name[6296]="perf_event_open"
+__syscall_32_name2num["perf_event_open"]=6296
+__syscall_32_num2name[6297]="accept4"
+__syscall_32_name2num["accept4"]=6297
+__syscall_32_num2name[6298]="recvmmsg"
+__syscall_32_name2num["recvmmsg"]=6298
+__syscall_32_num2name[6299]="getdents64"
+__syscall_32_name2num["getdents64"]=6299
+__syscall_32_num2name[6300]="fanotify_init"
+__syscall_32_name2num["fanotify_init"]=6300
+__syscall_32_num2name[6301]="fanotify_mark"
+__syscall_32_name2num["fanotify_mark"]=6301
+__syscall_32_num2name[6302]="prlimit64"
+__syscall_32_name2num["prlimit64"]=6302
+__syscall_32_num2name[6303]="name_to_handle_at"
+__syscall_32_name2num["name_to_handle_at"]=6303
+__syscall_32_num2name[6304]="open_by_handle_at"
+__syscall_32_name2num["open_by_handle_at"]=6304
+__syscall_32_num2name[6305]="clock_adjtime"
+__syscall_32_name2num["clock_adjtime"]=6305
+__syscall_32_num2name[6306]="syncfs"
+__syscall_32_name2num["syncfs"]=6306
+__syscall_32_num2name[6307]="sendmmsg"
+__syscall_32_name2num["sendmmsg"]=6307
+__syscall_32_num2name[6308]="setns"
+__syscall_32_name2num["setns"]=6308
+__syscall_32_num2name[6309]="process_vm_readv"
+__syscall_32_name2num["process_vm_readv"]=6309
+__syscall_32_num2name[6310]="process_vm_writev"
+__syscall_32_name2num["process_vm_writev"]=6310
+__syscall_32_num2name[6311]="kcmp"
+__syscall_32_name2num["kcmp"]=6311
+__syscall_32_num2name[6312]="finit_module"
+__syscall_32_name2num["finit_module"]=6312
+__syscall_32_num2name[6313]="sched_setattr"
+__syscall_32_name2num["sched_setattr"]=6313
+__syscall_32_num2name[6314]="sched_getattr"
+__syscall_32_name2num["sched_getattr"]=6314
+__syscall_32_num2name[6315]="renameat2"
+__syscall_32_name2num["renameat2"]=6315
+__syscall_32_num2name[6316]="seccomp"
+__syscall_32_name2num["seccomp"]=6316
+__syscall_32_num2name[6317]="getrandom"
+__syscall_32_name2num["getrandom"]=6317
+__syscall_32_num2name[6318]="memfd_create"
+__syscall_32_name2num["memfd_create"]=6318
+__syscall_32_num2name[6319]="bpf"
+__syscall_32_name2num["bpf"]=6319
+__syscall_32_num2name[6320]="execveat"
+__syscall_32_name2num["execveat"]=6320
+__syscall_32_num2name[6321]="userfaultfd"
+__syscall_32_name2num["userfaultfd"]=6321
+__syscall_32_num2name[6322]="membarrier"
+__syscall_32_name2num["membarrier"]=6322
+__syscall_32_num2name[6323]="mlock2"
+__syscall_32_name2num["mlock2"]=6323
+__syscall_32_num2name[6324]="copy_file_range"
+__syscall_32_name2num["copy_file_range"]=6324
+__syscall_32_num2name[6325]="preadv2"
+__syscall_32_name2num["preadv2"]=6325
+__syscall_32_num2name[6326]="pwritev2"
+__syscall_32_name2num["pwritev2"]=6326
+__syscall_64_num2name[5000]="read"
+__syscall_64_name2num["read"]=5000
+__syscall_64_num2name[5001]="write"
+__syscall_64_name2num["write"]=5001
+__syscall_64_num2name[5002]="open"
+__syscall_64_name2num["open"]=5002
+__syscall_64_num2name[5003]="close"
+__syscall_64_name2num["close"]=5003
+__syscall_64_num2name[5004]="stat"
+__syscall_64_name2num["stat"]=5004
+__syscall_64_num2name[5005]="fstat"
+__syscall_64_name2num["fstat"]=5005
+__syscall_64_num2name[5006]="lstat"
+__syscall_64_name2num["lstat"]=5006
+__syscall_64_num2name[5007]="poll"
+__syscall_64_name2num["poll"]=5007
+__syscall_64_num2name[5008]="lseek"
+__syscall_64_name2num["lseek"]=5008
+__syscall_64_num2name[5009]="mmap"
+__syscall_64_name2num["mmap"]=5009
+__syscall_64_num2name[5010]="mprotect"
+__syscall_64_name2num["mprotect"]=5010
+__syscall_64_num2name[5011]="munmap"
+__syscall_64_name2num["munmap"]=5011
+__syscall_64_num2name[5012]="brk"
+__syscall_64_name2num["brk"]=5012
+__syscall_64_num2name[5013]="rt_sigaction"
+__syscall_64_name2num["rt_sigaction"]=5013
+__syscall_64_num2name[5014]="rt_sigprocmask"
+__syscall_64_name2num["rt_sigprocmask"]=5014
+__syscall_64_num2name[5015]="ioctl"
+__syscall_64_name2num["ioctl"]=5015
+__syscall_64_num2name[5016]="pread64"
+__syscall_64_name2num["pread64"]=5016
+__syscall_64_num2name[5017]="pwrite64"
+__syscall_64_name2num["pwrite64"]=5017
+__syscall_64_num2name[5018]="readv"
+__syscall_64_name2num["readv"]=5018
+__syscall_64_num2name[5019]="writev"
+__syscall_64_name2num["writev"]=5019
+__syscall_64_num2name[5020]="access"
+__syscall_64_name2num["access"]=5020
+__syscall_64_num2name[5021]="pipe"
+__syscall_64_name2num["pipe"]=5021
+__syscall_64_num2name[5022]="_newselect"
+__syscall_64_name2num["_newselect"]=5022
+__syscall_64_num2name[5023]="sched_yield"
+__syscall_64_name2num["sched_yield"]=5023
+__syscall_64_num2name[5024]="mremap"
+__syscall_64_name2num["mremap"]=5024
+__syscall_64_num2name[5025]="msync"
+__syscall_64_name2num["msync"]=5025
+__syscall_64_num2name[5026]="mincore"
+__syscall_64_name2num["mincore"]=5026
+__syscall_64_num2name[5027]="madvise"
+__syscall_64_name2num["madvise"]=5027
+__syscall_64_num2name[5028]="shmget"
+__syscall_64_name2num["shmget"]=5028
+__syscall_64_num2name[5029]="shmat"
+__syscall_64_name2num["shmat"]=5029
+__syscall_64_num2name[5030]="shmctl"
+__syscall_64_name2num["shmctl"]=5030
+__syscall_64_num2name[5031]="dup"
+__syscall_64_name2num["dup"]=5031
+__syscall_64_num2name[5032]="dup2"
+__syscall_64_name2num["dup2"]=5032
+__syscall_64_num2name[5033]="pause"
+__syscall_64_name2num["pause"]=5033
+__syscall_64_num2name[5034]="nanosleep"
+__syscall_64_name2num["nanosleep"]=5034
+__syscall_64_num2name[5035]="getitimer"
+__syscall_64_name2num["getitimer"]=5035
+__syscall_64_num2name[5036]="setitimer"
+__syscall_64_name2num["setitimer"]=5036
+__syscall_64_num2name[5037]="alarm"
+__syscall_64_name2num["alarm"]=5037
+__syscall_64_num2name[5038]="getpid"
+__syscall_64_name2num["getpid"]=5038
+__syscall_64_num2name[5039]="sendfile"
+__syscall_64_name2num["sendfile"]=5039
+__syscall_64_num2name[5040]="socket"
+__syscall_64_name2num["socket"]=5040
+__syscall_64_num2name[5041]="connect"
+__syscall_64_name2num["connect"]=5041
+__syscall_64_num2name[5042]="accept"
+__syscall_64_name2num["accept"]=5042
+__syscall_64_num2name[5043]="sendto"
+__syscall_64_name2num["sendto"]=5043
+__syscall_64_num2name[5044]="recvfrom"
+__syscall_64_name2num["recvfrom"]=5044
+__syscall_64_num2name[5045]="sendmsg"
+__syscall_64_name2num["sendmsg"]=5045
+__syscall_64_num2name[5046]="recvmsg"
+__syscall_64_name2num["recvmsg"]=5046
+__syscall_64_num2name[5047]="shutdown"
+__syscall_64_name2num["shutdown"]=5047
+__syscall_64_num2name[5048]="bind"
+__syscall_64_name2num["bind"]=5048
+__syscall_64_num2name[5049]="listen"
+__syscall_64_name2num["listen"]=5049
+__syscall_64_num2name[5050]="getsockname"
+__syscall_64_name2num["getsockname"]=5050
+__syscall_64_num2name[5051]="getpeername"
+__syscall_64_name2num["getpeername"]=5051
+__syscall_64_num2name[5052]="socketpair"
+__syscall_64_name2num["socketpair"]=5052
+__syscall_64_num2name[5053]="setsockopt"
+__syscall_64_name2num["setsockopt"]=5053
+__syscall_64_num2name[5054]="getsockopt"
+__syscall_64_name2num["getsockopt"]=5054
+__syscall_64_num2name[5055]="clone"
+__syscall_64_name2num["clone"]=5055
+__syscall_64_num2name[5056]="fork"
+__syscall_64_name2num["fork"]=5056
+__syscall_64_num2name[5057]="execve"
+__syscall_64_name2num["execve"]=5057
+__syscall_64_num2name[5058]="exit"
+__syscall_64_name2num["exit"]=5058
+__syscall_64_num2name[5059]="wait4"
+__syscall_64_name2num["wait4"]=5059
+__syscall_64_num2name[5060]="kill"
+__syscall_64_name2num["kill"]=5060
+__syscall_64_num2name[5061]="uname"
+__syscall_64_name2num["uname"]=5061
+__syscall_64_num2name[5062]="semget"
+__syscall_64_name2num["semget"]=5062
+__syscall_64_num2name[5063]="semop"
+__syscall_64_name2num["semop"]=5063
+__syscall_64_num2name[5064]="semctl"
+__syscall_64_name2num["semctl"]=5064
+__syscall_64_num2name[5065]="shmdt"
+__syscall_64_name2num["shmdt"]=5065
+__syscall_64_num2name[5066]="msgget"
+__syscall_64_name2num["msgget"]=5066
+__syscall_64_num2name[5067]="msgsnd"
+__syscall_64_name2num["msgsnd"]=5067
+__syscall_64_num2name[5068]="msgrcv"
+__syscall_64_name2num["msgrcv"]=5068
+__syscall_64_num2name[5069]="msgctl"
+__syscall_64_name2num["msgctl"]=5069
+__syscall_64_num2name[5070]="fcntl"
+__syscall_64_name2num["fcntl"]=5070
+__syscall_64_num2name[5071]="flock"
+__syscall_64_name2num["flock"]=5071
+__syscall_64_num2name[5072]="fsync"
+__syscall_64_name2num["fsync"]=5072
+__syscall_64_num2name[5073]="fdatasync"
+__syscall_64_name2num["fdatasync"]=5073
+__syscall_64_num2name[5074]="truncate"
+__syscall_64_name2num["truncate"]=5074
+__syscall_64_num2name[5075]="ftruncate"
+__syscall_64_name2num["ftruncate"]=5075
+__syscall_64_num2name[5076]="getdents"
+__syscall_64_name2num["getdents"]=5076
+__syscall_64_num2name[5077]="getcwd"
+__syscall_64_name2num["getcwd"]=5077
+__syscall_64_num2name[5078]="chdir"
+__syscall_64_name2num["chdir"]=5078
+__syscall_64_num2name[5079]="fchdir"
+__syscall_64_name2num["fchdir"]=5079
+__syscall_64_num2name[5080]="rename"
+__syscall_64_name2num["rename"]=5080
+__syscall_64_num2name[5081]="mkdir"
+__syscall_64_name2num["mkdir"]=5081
+__syscall_64_num2name[5082]="rmdir"
+__syscall_64_name2num["rmdir"]=5082
+__syscall_64_num2name[5083]="creat"
+__syscall_64_name2num["creat"]=5083
+__syscall_64_num2name[5084]="link"
+__syscall_64_name2num["link"]=5084
+__syscall_64_num2name[5085]="unlink"
+__syscall_64_name2num["unlink"]=5085
+__syscall_64_num2name[5086]="symlink"
+__syscall_64_name2num["symlink"]=5086
+__syscall_64_num2name[5087]="readlink"
+__syscall_64_name2num["readlink"]=5087
+__syscall_64_num2name[5088]="chmod"
+__syscall_64_name2num["chmod"]=5088
+__syscall_64_num2name[5089]="fchmod"
+__syscall_64_name2num["fchmod"]=5089
+__syscall_64_num2name[5090]="chown"
+__syscall_64_name2num["chown"]=5090
+__syscall_64_num2name[5091]="fchown"
+__syscall_64_name2num["fchown"]=5091
+__syscall_64_num2name[5092]="lchown"
+__syscall_64_name2num["lchown"]=5092
+__syscall_64_num2name[5093]="umask"
+__syscall_64_name2num["umask"]=5093
+__syscall_64_num2name[5094]="gettimeofday"
+__syscall_64_name2num["gettimeofday"]=5094
+__syscall_64_num2name[5095]="getrlimit"
+__syscall_64_name2num["getrlimit"]=5095
+__syscall_64_num2name[5096]="getrusage"
+__syscall_64_name2num["getrusage"]=5096
+__syscall_64_num2name[5097]="sysinfo"
+__syscall_64_name2num["sysinfo"]=5097
+__syscall_64_num2name[5098]="times"
+__syscall_64_name2num["times"]=5098
+__syscall_64_num2name[5099]="ptrace"
+__syscall_64_name2num["ptrace"]=5099
+__syscall_64_num2name[5100]="getuid"
+__syscall_64_name2num["getuid"]=5100
+__syscall_64_num2name[5101]="syslog"
+__syscall_64_name2num["syslog"]=5101
+__syscall_64_num2name[5102]="getgid"
+__syscall_64_name2num["getgid"]=5102
+__syscall_64_num2name[5103]="setuid"
+__syscall_64_name2num["setuid"]=5103
+__syscall_64_num2name[5104]="setgid"
+__syscall_64_name2num["setgid"]=5104
+__syscall_64_num2name[5105]="geteuid"
+__syscall_64_name2num["geteuid"]=5105
+__syscall_64_num2name[5106]="getegid"
+__syscall_64_name2num["getegid"]=5106
+__syscall_64_num2name[5107]="setpgid"
+__syscall_64_name2num["setpgid"]=5107
+__syscall_64_num2name[5108]="getppid"
+__syscall_64_name2num["getppid"]=5108
+__syscall_64_num2name[5109]="getpgrp"
+__syscall_64_name2num["getpgrp"]=5109
+__syscall_64_num2name[5110]="setsid"
+__syscall_64_name2num["setsid"]=5110
+__syscall_64_num2name[5111]="setreuid"
+__syscall_64_name2num["setreuid"]=5111
+__syscall_64_num2name[5112]="setregid"
+__syscall_64_name2num["setregid"]=5112
+__syscall_64_num2name[5113]="getgroups"
+__syscall_64_name2num["getgroups"]=5113
+__syscall_64_num2name[5114]="setgroups"
+__syscall_64_name2num["setgroups"]=5114
+__syscall_64_num2name[5115]="setresuid"
+__syscall_64_name2num["setresuid"]=5115
+__syscall_64_num2name[5116]="getresuid"
+__syscall_64_name2num["getresuid"]=5116
+__syscall_64_num2name[5117]="setresgid"
+__syscall_64_name2num["setresgid"]=5117
+__syscall_64_num2name[5118]="getresgid"
+__syscall_64_name2num["getresgid"]=5118
+__syscall_64_num2name[5119]="getpgid"
+__syscall_64_name2num["getpgid"]=5119
+__syscall_64_num2name[5120]="setfsuid"
+__syscall_64_name2num["setfsuid"]=5120
+__syscall_64_num2name[5121]="setfsgid"
+__syscall_64_name2num["setfsgid"]=5121
+__syscall_64_num2name[5122]="getsid"
+__syscall_64_name2num["getsid"]=5122
+__syscall_64_num2name[5123]="capget"
+__syscall_64_name2num["capget"]=5123
+__syscall_64_num2name[5124]="capset"
+__syscall_64_name2num["capset"]=5124
+__syscall_64_num2name[5125]="rt_sigpending"
+__syscall_64_name2num["rt_sigpending"]=5125
+__syscall_64_num2name[5126]="rt_sigtimedwait"
+__syscall_64_name2num["rt_sigtimedwait"]=5126
+__syscall_64_num2name[5127]="rt_sigqueueinfo"
+__syscall_64_name2num["rt_sigqueueinfo"]=5127
+__syscall_64_num2name[5128]="rt_sigsuspend"
+__syscall_64_name2num["rt_sigsuspend"]=5128
+__syscall_64_num2name[5129]="sigaltstack"
+__syscall_64_name2num["sigaltstack"]=5129
+__syscall_64_num2name[5130]="utime"
+__syscall_64_name2num["utime"]=5130
+__syscall_64_num2name[5131]="mknod"
+__syscall_64_name2num["mknod"]=5131
+__syscall_64_num2name[5132]="personality"
+__syscall_64_name2num["personality"]=5132
+__syscall_64_num2name[5133]="ustat"
+__syscall_64_name2num["ustat"]=5133
+__syscall_64_num2name[5134]="statfs"
+__syscall_64_name2num["statfs"]=5134
+__syscall_64_num2name[5135]="fstatfs"
+__syscall_64_name2num["fstatfs"]=5135
+__syscall_64_num2name[5136]="sysfs"
+__syscall_64_name2num["sysfs"]=5136
+__syscall_64_num2name[5137]="getpriority"
+__syscall_64_name2num["getpriority"]=5137
+__syscall_64_num2name[5138]="setpriority"
+__syscall_64_name2num["setpriority"]=5138
+__syscall_64_num2name[5139]="sched_setparam"
+__syscall_64_name2num["sched_setparam"]=5139
+__syscall_64_num2name[5140]="sched_getparam"
+__syscall_64_name2num["sched_getparam"]=5140
+__syscall_64_num2name[5141]="sched_setscheduler"
+__syscall_64_name2num["sched_setscheduler"]=5141
+__syscall_64_num2name[5142]="sched_getscheduler"
+__syscall_64_name2num["sched_getscheduler"]=5142
+__syscall_64_num2name[5143]="sched_get_priority_max"
+__syscall_64_name2num["sched_get_priority_max"]=5143
+__syscall_64_num2name[5144]="sched_get_priority_min"
+__syscall_64_name2num["sched_get_priority_min"]=5144
+__syscall_64_num2name[5145]="sched_rr_get_interval"
+__syscall_64_name2num["sched_rr_get_interval"]=5145
+__syscall_64_num2name[5146]="mlock"
+__syscall_64_name2num["mlock"]=5146
+__syscall_64_num2name[5147]="munlock"
+__syscall_64_name2num["munlock"]=5147
+__syscall_64_num2name[5148]="mlockall"
+__syscall_64_name2num["mlockall"]=5148
+__syscall_64_num2name[5149]="munlockall"
+__syscall_64_name2num["munlockall"]=5149
+__syscall_64_num2name[5150]="vhangup"
+__syscall_64_name2num["vhangup"]=5150
+__syscall_64_num2name[5151]="pivot_root"
+__syscall_64_name2num["pivot_root"]=5151
+__syscall_64_num2name[5152]="_sysctl"
+__syscall_64_name2num["_sysctl"]=5152
+__syscall_64_num2name[5153]="prctl"
+__syscall_64_name2num["prctl"]=5153
+__syscall_64_num2name[5154]="adjtimex"
+__syscall_64_name2num["adjtimex"]=5154
+__syscall_64_num2name[5155]="setrlimit"
+__syscall_64_name2num["setrlimit"]=5155
+__syscall_64_num2name[5156]="chroot"
+__syscall_64_name2num["chroot"]=5156
+__syscall_64_num2name[5157]="sync"
+__syscall_64_name2num["sync"]=5157
+__syscall_64_num2name[5158]="acct"
+__syscall_64_name2num["acct"]=5158
+__syscall_64_num2name[5159]="settimeofday"
+__syscall_64_name2num["settimeofday"]=5159
+__syscall_64_num2name[5160]="mount"
+__syscall_64_name2num["mount"]=5160
+__syscall_64_num2name[5161]="umount2"
+__syscall_64_name2num["umount2"]=5161
+__syscall_64_num2name[5162]="swapon"
+__syscall_64_name2num["swapon"]=5162
+__syscall_64_num2name[5163]="swapoff"
+__syscall_64_name2num["swapoff"]=5163
+__syscall_64_num2name[5164]="reboot"
+__syscall_64_name2num["reboot"]=5164
+__syscall_64_num2name[5165]="sethostname"
+__syscall_64_name2num["sethostname"]=5165
+__syscall_64_num2name[5166]="setdomainname"
+__syscall_64_name2num["setdomainname"]=5166
+__syscall_64_num2name[5167]="create_module"
+__syscall_64_name2num["create_module"]=5167
+__syscall_64_num2name[5168]="init_module"
+__syscall_64_name2num["init_module"]=5168
+__syscall_64_num2name[5169]="delete_module"
+__syscall_64_name2num["delete_module"]=5169
+__syscall_64_num2name[5170]="get_kernel_syms"
+__syscall_64_name2num["get_kernel_syms"]=5170
+__syscall_64_num2name[5171]="query_module"
+__syscall_64_name2num["query_module"]=5171
+__syscall_64_num2name[5172]="quotactl"
+__syscall_64_name2num["quotactl"]=5172
+__syscall_64_num2name[5173]="nfsservctl"
+__syscall_64_name2num["nfsservctl"]=5173
+__syscall_64_num2name[5174]="getpmsg"
+__syscall_64_name2num["getpmsg"]=5174
+__syscall_64_num2name[5175]="putpmsg"
+__syscall_64_name2num["putpmsg"]=5175
+__syscall_64_num2name[5176]="afs_syscall"
+__syscall_64_name2num["afs_syscall"]=5176
+__syscall_64_num2name[5177]="reserved177"
+__syscall_64_name2num["reserved177"]=5177
+__syscall_64_num2name[5178]="gettid"
+__syscall_64_name2num["gettid"]=5178
+__syscall_64_num2name[5179]="readahead"
+__syscall_64_name2num["readahead"]=5179
+__syscall_64_num2name[5180]="setxattr"
+__syscall_64_name2num["setxattr"]=5180
+__syscall_64_num2name[5181]="lsetxattr"
+__syscall_64_name2num["lsetxattr"]=5181
+__syscall_64_num2name[5182]="fsetxattr"
+__syscall_64_name2num["fsetxattr"]=5182
+__syscall_64_num2name[5183]="getxattr"
+__syscall_64_name2num["getxattr"]=5183
+__syscall_64_num2name[5184]="lgetxattr"
+__syscall_64_name2num["lgetxattr"]=5184
+__syscall_64_num2name[5185]="fgetxattr"
+__syscall_64_name2num["fgetxattr"]=5185
+__syscall_64_num2name[5186]="listxattr"
+__syscall_64_name2num["listxattr"]=5186
+__syscall_64_num2name[5187]="llistxattr"
+__syscall_64_name2num["llistxattr"]=5187
+__syscall_64_num2name[5188]="flistxattr"
+__syscall_64_name2num["flistxattr"]=5188
+__syscall_64_num2name[5189]="removexattr"
+__syscall_64_name2num["removexattr"]=5189
+__syscall_64_num2name[5190]="lremovexattr"
+__syscall_64_name2num["lremovexattr"]=5190
+__syscall_64_num2name[5191]="fremovexattr"
+__syscall_64_name2num["fremovexattr"]=5191
+__syscall_64_num2name[5192]="tkill"
+__syscall_64_name2num["tkill"]=5192
+__syscall_64_num2name[5193]="time"
+__syscall_64_name2num["time"]=5193
+__syscall_64_num2name[5194]="futex"
+__syscall_64_name2num["futex"]=5194
+__syscall_64_num2name[5195]="sched_setaffinity"
+__syscall_64_name2num["sched_setaffinity"]=5195
+__syscall_64_num2name[5196]="sched_getaffinity"
+__syscall_64_name2num["sched_getaffinity"]=5196
+__syscall_64_num2name[5197]="cacheflush"
+__syscall_64_name2num["cacheflush"]=5197
+__syscall_64_num2name[5198]="cachectl"
+__syscall_64_name2num["cachectl"]=5198
+__syscall_64_num2name[5199]="sysmips"
+__syscall_64_name2num["sysmips"]=5199
+__syscall_64_num2name[5200]="io_setup"
+__syscall_64_name2num["io_setup"]=5200
+__syscall_64_num2name[5201]="io_destroy"
+__syscall_64_name2num["io_destroy"]=5201
+__syscall_64_num2name[5202]="io_getevents"
+__syscall_64_name2num["io_getevents"]=5202
+__syscall_64_num2name[5203]="io_submit"
+__syscall_64_name2num["io_submit"]=5203
+__syscall_64_num2name[5204]="io_cancel"
+__syscall_64_name2num["io_cancel"]=5204
+__syscall_64_num2name[5205]="exit_group"
+__syscall_64_name2num["exit_group"]=5205
+__syscall_64_num2name[5206]="lookup_dcookie"
+__syscall_64_name2num["lookup_dcookie"]=5206
+__syscall_64_num2name[5207]="epoll_create"
+__syscall_64_name2num["epoll_create"]=5207
+__syscall_64_num2name[5208]="epoll_ctl"
+__syscall_64_name2num["epoll_ctl"]=5208
+__syscall_64_num2name[5209]="epoll_wait"
+__syscall_64_name2num["epoll_wait"]=5209
+__syscall_64_num2name[5210]="remap_file_pages"
+__syscall_64_name2num["remap_file_pages"]=5210
+__syscall_64_num2name[5211]="rt_sigreturn"
+__syscall_64_name2num["rt_sigreturn"]=5211
+__syscall_64_num2name[5212]="set_tid_address"
+__syscall_64_name2num["set_tid_address"]=5212
+__syscall_64_num2name[5213]="restart_syscall"
+__syscall_64_name2num["restart_syscall"]=5213
+__syscall_64_num2name[5214]="semtimedop"
+__syscall_64_name2num["semtimedop"]=5214
+__syscall_64_num2name[5215]="fadvise64"
+__syscall_64_name2num["fadvise64"]=5215
+__syscall_64_num2name[5216]="timer_create"
+__syscall_64_name2num["timer_create"]=5216
+__syscall_64_num2name[5217]="timer_settime"
+__syscall_64_name2num["timer_settime"]=5217
+__syscall_64_num2name[5218]="timer_gettime"
+__syscall_64_name2num["timer_gettime"]=5218
+__syscall_64_num2name[5219]="timer_getoverrun"
+__syscall_64_name2num["timer_getoverrun"]=5219
+__syscall_64_num2name[5220]="timer_delete"
+__syscall_64_name2num["timer_delete"]=5220
+__syscall_64_num2name[5221]="clock_settime"
+__syscall_64_name2num["clock_settime"]=5221
+__syscall_64_num2name[5222]="clock_gettime"
+__syscall_64_name2num["clock_gettime"]=5222
+__syscall_64_num2name[5223]="clock_getres"
+__syscall_64_name2num["clock_getres"]=5223
+__syscall_64_num2name[5224]="clock_nanosleep"
+__syscall_64_name2num["clock_nanosleep"]=5224
+__syscall_64_num2name[5225]="tgkill"
+__syscall_64_name2num["tgkill"]=5225
+__syscall_64_num2name[5226]="utimes"
+__syscall_64_name2num["utimes"]=5226
+__syscall_64_num2name[5227]="mbind"
+__syscall_64_name2num["mbind"]=5227
+__syscall_64_num2name[5228]="get_mempolicy"
+__syscall_64_name2num["get_mempolicy"]=5228
+__syscall_64_num2name[5229]="set_mempolicy"
+__syscall_64_name2num["set_mempolicy"]=5229
+__syscall_64_num2name[5230]="mq_open"
+__syscall_64_name2num["mq_open"]=5230
+__syscall_64_num2name[5231]="mq_unlink"
+__syscall_64_name2num["mq_unlink"]=5231
+__syscall_64_num2name[5232]="mq_timedsend"
+__syscall_64_name2num["mq_timedsend"]=5232
+__syscall_64_num2name[5233]="mq_timedreceive"
+__syscall_64_name2num["mq_timedreceive"]=5233
+__syscall_64_num2name[5234]="mq_notify"
+__syscall_64_name2num["mq_notify"]=5234
+__syscall_64_num2name[5235]="mq_getsetattr"
+__syscall_64_name2num["mq_getsetattr"]=5235
+__syscall_64_num2name[5236]="vserver"
+__syscall_64_name2num["vserver"]=5236
+__syscall_64_num2name[5237]="waitid"
+__syscall_64_name2num["waitid"]=5237
+__syscall_64_num2name[5239]="add_key"
+__syscall_64_name2num["add_key"]=5239
+__syscall_64_num2name[5240]="request_key"
+__syscall_64_name2num["request_key"]=5240
+__syscall_64_num2name[5241]="keyctl"
+__syscall_64_name2num["keyctl"]=5241
+__syscall_64_num2name[5242]="set_thread_area"
+__syscall_64_name2num["set_thread_area"]=5242
+__syscall_64_num2name[5243]="inotify_init"
+__syscall_64_name2num["inotify_init"]=5243
+__syscall_64_num2name[5244]="inotify_add_watch"
+__syscall_64_name2num["inotify_add_watch"]=5244
+__syscall_64_num2name[5245]="inotify_rm_watch"
+__syscall_64_name2num["inotify_rm_watch"]=5245
+__syscall_64_num2name[5246]="migrate_pages"
+__syscall_64_name2num["migrate_pages"]=5246
+__syscall_64_num2name[5247]="openat"
+__syscall_64_name2num["openat"]=5247
+__syscall_64_num2name[5248]="mkdirat"
+__syscall_64_name2num["mkdirat"]=5248
+__syscall_64_num2name[5249]="mknodat"
+__syscall_64_name2num["mknodat"]=5249
+__syscall_64_num2name[5250]="fchownat"
+__syscall_64_name2num["fchownat"]=5250
+__syscall_64_num2name[5251]="futimesat"
+__syscall_64_name2num["futimesat"]=5251
+__syscall_64_num2name[5252]="newfstatat"
+__syscall_64_name2num["newfstatat"]=5252
+__syscall_64_num2name[5253]="unlinkat"
+__syscall_64_name2num["unlinkat"]=5253
+__syscall_64_num2name[5254]="renameat"
+__syscall_64_name2num["renameat"]=5254
+__syscall_64_num2name[5255]="linkat"
+__syscall_64_name2num["linkat"]=5255
+__syscall_64_num2name[5256]="symlinkat"
+__syscall_64_name2num["symlinkat"]=5256
+__syscall_64_num2name[5257]="readlinkat"
+__syscall_64_name2num["readlinkat"]=5257
+__syscall_64_num2name[5258]="fchmodat"
+__syscall_64_name2num["fchmodat"]=5258
+__syscall_64_num2name[5259]="faccessat"
+__syscall_64_name2num["faccessat"]=5259
+__syscall_64_num2name[5260]="pselect6"
+__syscall_64_name2num["pselect6"]=5260
+__syscall_64_num2name[5261]="ppoll"
+__syscall_64_name2num["ppoll"]=5261
+__syscall_64_num2name[5262]="unshare"
+__syscall_64_name2num["unshare"]=5262
+__syscall_64_num2name[5263]="splice"
+__syscall_64_name2num["splice"]=5263
+__syscall_64_num2name[5264]="sync_file_range"
+__syscall_64_name2num["sync_file_range"]=5264
+__syscall_64_num2name[5265]="tee"
+__syscall_64_name2num["tee"]=5265
+__syscall_64_num2name[5266]="vmsplice"
+__syscall_64_name2num["vmsplice"]=5266
+__syscall_64_num2name[5267]="move_pages"
+__syscall_64_name2num["move_pages"]=5267
+__syscall_64_num2name[5268]="set_robust_list"
+__syscall_64_name2num["set_robust_list"]=5268
+__syscall_64_num2name[5269]="get_robust_list"
+__syscall_64_name2num["get_robust_list"]=5269
+__syscall_64_num2name[5270]="kexec_load"
+__syscall_64_name2num["kexec_load"]=5270
+__syscall_64_num2name[5271]="getcpu"
+__syscall_64_name2num["getcpu"]=5271
+__syscall_64_num2name[5272]="epoll_pwait"
+__syscall_64_name2num["epoll_pwait"]=5272
+__syscall_64_num2name[5273]="ioprio_set"
+__syscall_64_name2num["ioprio_set"]=5273
+__syscall_64_num2name[5274]="ioprio_get"
+__syscall_64_name2num["ioprio_get"]=5274
+__syscall_64_num2name[5275]="utimensat"
+__syscall_64_name2num["utimensat"]=5275
+__syscall_64_num2name[5276]="signalfd"
+__syscall_64_name2num["signalfd"]=5276
+__syscall_64_num2name[5277]="timerfd"
+__syscall_64_name2num["timerfd"]=5277
+__syscall_64_num2name[5278]="eventfd"
+__syscall_64_name2num["eventfd"]=5278
+__syscall_64_num2name[5279]="fallocate"
+__syscall_64_name2num["fallocate"]=5279
+__syscall_64_num2name[5280]="timerfd_create"
+__syscall_64_name2num["timerfd_create"]=5280
+__syscall_64_num2name[5281]="timerfd_gettime"
+__syscall_64_name2num["timerfd_gettime"]=5281
+__syscall_64_num2name[5282]="timerfd_settime"
+__syscall_64_name2num["timerfd_settime"]=5282
+__syscall_64_num2name[5283]="signalfd4"
+__syscall_64_name2num["signalfd4"]=5283
+__syscall_64_num2name[5284]="eventfd2"
+__syscall_64_name2num["eventfd2"]=5284
+__syscall_64_num2name[5285]="epoll_create1"
+__syscall_64_name2num["epoll_create1"]=5285
+__syscall_64_num2name[5286]="dup3"
+__syscall_64_name2num["dup3"]=5286
+__syscall_64_num2name[5287]="pipe2"
+__syscall_64_name2num["pipe2"]=5287
+__syscall_64_num2name[5288]="inotify_init1"
+__syscall_64_name2num["inotify_init1"]=5288
+__syscall_64_num2name[5289]="preadv"
+__syscall_64_name2num["preadv"]=5289
+__syscall_64_num2name[5290]="pwritev"
+__syscall_64_name2num["pwritev"]=5290
+__syscall_64_num2name[5291]="rt_tgsigqueueinfo"
+__syscall_64_name2num["rt_tgsigqueueinfo"]=5291
+__syscall_64_num2name[5292]="perf_event_open"
+__syscall_64_name2num["perf_event_open"]=5292
+__syscall_64_num2name[5293]="accept4"
+__syscall_64_name2num["accept4"]=5293
+__syscall_64_num2name[5294]="recvmmsg"
+__syscall_64_name2num["recvmmsg"]=5294
+__syscall_64_num2name[5295]="fanotify_init"
+__syscall_64_name2num["fanotify_init"]=5295
+__syscall_64_num2name[5296]="fanotify_mark"
+__syscall_64_name2num["fanotify_mark"]=5296
+__syscall_64_num2name[5297]="prlimit64"
+__syscall_64_name2num["prlimit64"]=5297
+__syscall_64_num2name[5298]="name_to_handle_at"
+__syscall_64_name2num["name_to_handle_at"]=5298
+__syscall_64_num2name[5299]="open_by_handle_at"
+__syscall_64_name2num["open_by_handle_at"]=5299
+__syscall_64_num2name[5300]="clock_adjtime"
+__syscall_64_name2num["clock_adjtime"]=5300
+__syscall_64_num2name[5301]="syncfs"
+__syscall_64_name2num["syncfs"]=5301
+__syscall_64_num2name[5302]="sendmmsg"
+__syscall_64_name2num["sendmmsg"]=5302
+__syscall_64_num2name[5303]="setns"
+__syscall_64_name2num["setns"]=5303
+__syscall_64_num2name[5304]="process_vm_readv"
+__syscall_64_name2num["process_vm_readv"]=5304
+__syscall_64_num2name[5305]="process_vm_writev"
+__syscall_64_name2num["process_vm_writev"]=5305
+__syscall_64_num2name[5306]="kcmp"
+__syscall_64_name2num["kcmp"]=5306
+__syscall_64_num2name[5307]="finit_module"
+__syscall_64_name2num["finit_module"]=5307
+__syscall_64_num2name[5308]="getdents64"
+__syscall_64_name2num["getdents64"]=5308
+__syscall_64_num2name[5309]="sched_setattr"
+__syscall_64_name2num["sched_setattr"]=5309
+__syscall_64_num2name[5310]="sched_getattr"
+__syscall_64_name2num["sched_getattr"]=5310
+__syscall_64_num2name[5311]="renameat2"
+__syscall_64_name2num["renameat2"]=5311
+__syscall_64_num2name[5312]="seccomp"
+__syscall_64_name2num["seccomp"]=5312
+__syscall_64_num2name[5313]="getrandom"
+__syscall_64_name2num["getrandom"]=5313
+__syscall_64_num2name[5314]="memfd_create"
+__syscall_64_name2num["memfd_create"]=5314
+__syscall_64_num2name[5315]="bpf"
+__syscall_64_name2num["bpf"]=5315
+__syscall_64_num2name[5316]="execveat"
+__syscall_64_name2num["execveat"]=5316
+__syscall_64_num2name[5317]="userfaultfd"
+__syscall_64_name2num["userfaultfd"]=5317
+__syscall_64_num2name[5318]="membarrier"
+__syscall_64_name2num["membarrier"]=5318
+__syscall_64_num2name[5319]="mlock2"
+__syscall_64_name2num["mlock2"]=5319
+__syscall_64_num2name[5320]="copy_file_range"
+__syscall_64_name2num["copy_file_range"]=5320
+__syscall_64_num2name[5321]="preadv2"
+__syscall_64_name2num["preadv2"]=5321
+__syscall_64_num2name[5322]="pwritev2"
+__syscall_64_name2num["pwritev2"]=5322
+} /* probe init */
-- 
2.7.4

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 02/12] testsuite: add support for mips64 build flags
  2016-10-11  8:14 [PATCH 00/12] MIPS port Marcin Nowakowski
                   ` (5 preceding siblings ...)
  2016-10-11  8:15 ` [PATCH 07/12] tapset: fix build if arch does not define SA_RESTORER Marcin Nowakowski
@ 2016-10-11  8:15 ` Marcin Nowakowski
  2016-10-11  8:15 ` [PATCH 01/12] tapset syscall-number database: add MIPS syscalls Marcin Nowakowski
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 17+ messages in thread
From: Marcin Nowakowski @ 2016-10-11  8:15 UTC (permalink / raw)
  To: systemtap; +Cc: Marcin Nowakowski

Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
---
 testsuite/lib/compile_flags.exp          | 3 ++-
 testsuite/lib/systemtap.exp              | 1 +
 testsuite/systemtap.context/num_args.stp | 1 +
 3 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/testsuite/lib/compile_flags.exp b/testsuite/lib/compile_flags.exp
index 431d646..dd8d584 100644
--- a/testsuite/lib/compile_flags.exp
+++ b/testsuite/lib/compile_flags.exp
@@ -35,6 +35,7 @@ proc arch_compile_flag_name { INDEX } {
     switch -regexp $::tcl_platform(machine) {
       {^(ia64|aarch64|ppc64le)$} { return "m64" }
       {^s390$} { return "m31" }
+      {^mips64$} { return "64" }
       default { return "m32" }
     }
   }
@@ -61,7 +62,7 @@ proc arch_compile_flag_bits { INDEX } {
   # Notice that even though s390/s390x is 31 bits, we'll call it 32.
   if { [arch_compile_flags] == 1 } {
     switch -regexp $::tcl_platform(machine) {
-      {^(ia64|aarch64|ppc64le)$} { return 64 }
+      {^(ia64|aarch64|ppc64le|mips64)$} { return 64 }
       default { return 32 }
     }
   }
diff --git a/testsuite/lib/systemtap.exp b/testsuite/lib/systemtap.exp
index 99c150f..358d61b 100644
--- a/testsuite/lib/systemtap.exp
+++ b/testsuite/lib/systemtap.exp
@@ -458,6 +458,7 @@ proc normalize_arch { arch } {
     if {$arch == "armv7lh"} then {return "arm"}
     if {$arch == "aarch64"} then {return "arm64"}
     if {$arch == "ppc64le"} then {return "powerpc"}
+    if {$arch == "mips64"} then {return "mips"}
     return $arch
 }
 
diff --git a/testsuite/systemtap.context/num_args.stp b/testsuite/systemtap.context/num_args.stp
index e261004..bc6eca2 100644
--- a/testsuite/systemtap.context/num_args.stp
+++ b/testsuite/systemtap.context/num_args.stp
@@ -4,6 +4,7 @@
 %( arch == "s390" %? global ir = "r2", lr = "r2" %)
 %( arch == "arm" %? global ir = "r0", lr = "r0" %)
 %( arch == "arm64" %? global ir = "x0", lr = "x0" %)
+%( arch == "mips" %? global ir = "v0", lr = "v0" %)
 
 # On s390/s390x, when in a syscall, the 1st argument is in the
 # orig_gpr2 register. If you aren't in a syscall, the 1st argument is
-- 
2.7.4

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 03/12] mips: add TIF_32BIT definition
  2016-10-11  8:14 [PATCH 00/12] MIPS port Marcin Nowakowski
  2016-10-11  8:15 ` [PATCH 10/12] Create debug_frame_hdr in target byte order Marcin Nowakowski
@ 2016-10-11  8:15 ` Marcin Nowakowski
  2016-10-11  8:15 ` [PATCH 12/12] mips: add runtime support Marcin Nowakowski
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 17+ messages in thread
From: Marcin Nowakowski @ 2016-10-11  8:15 UTC (permalink / raw)
  To: systemtap; +Cc: Marcin Nowakowski

Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
---
 runtime/compatdefs.h | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/runtime/compatdefs.h b/runtime/compatdefs.h
index e256dcc..ba429b5 100644
--- a/runtime/compatdefs.h
+++ b/runtime/compatdefs.h
@@ -20,6 +20,14 @@
 #if defined(__s390__) || defined(__s390x__)
   #define TIF_32BIT TIF_31BIT
 #endif
+#if defined (__mips__) && !defined(TIF_32BIT)
+  #ifdef CONFIG_MIPS32_O32
+    #define TIF_32BIT TIF_32BIT_REGS
+  #elif defined(CONFIG_MIPS32_N32)
+    #define TIF_32BIT TIF_32BIT_ADDR
+  #endif
+#endif
+
 #if !defined(TIF_32BIT)
 #error architecture not supported, no TIF_32BIT flag
 #endif
-- 
2.7.4

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 06/12] mips: add a stub for stack unwind
  2016-10-11  8:14 [PATCH 00/12] MIPS port Marcin Nowakowski
                   ` (7 preceding siblings ...)
  2016-10-11  8:15 ` [PATCH 01/12] tapset syscall-number database: add MIPS syscalls Marcin Nowakowski
@ 2016-10-11  8:15 ` Marcin Nowakowski
  2016-10-11  8:30 ` [PATCH 09/12] mips: add basic unwind support Marcin Nowakowski
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 17+ messages in thread
From: Marcin Nowakowski @ 2016-10-11  8:15 UTC (permalink / raw)
  To: systemtap; +Cc: Marcin Nowakowski

This change adds a stub for processing stack unwind - this does not do
proper stack printing, but is enough to let the generated code compile
and run

Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
---
 runtime/stack-mips.c | 4 ++++
 runtime/stack.c      | 2 ++
 2 files changed, 6 insertions(+)
 create mode 100644 runtime/stack-mips.c

diff --git a/runtime/stack-mips.c b/runtime/stack-mips.c
new file mode 100644
index 0000000..fde8a1a
--- /dev/null
+++ b/runtime/stack-mips.c
@@ -0,0 +1,4 @@
+static void __stp_stack_print (struct pt_regs *regs, int verbose, int levels)
+{
+  /* TODO: fix, it is just stub for now */
+}
diff --git a/runtime/stack.c b/runtime/stack.c
index a99bad0..7f72d89 100644
--- a/runtime/stack.c
+++ b/runtime/stack.c
@@ -78,6 +78,8 @@ static int _stp_valid_pc_addr(unsigned long addr, struct task_struct *tsk)
 #include "stack-ia64.c"
 #elif defined (__arm__)
 #include "stack-arm.c"
+#elif defined (__mips__)
+#include "stack-mips.c"
 #elif defined (__s390__)
 #include "stack-s390.c"
 #else
-- 
2.7.4

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 10/12] Create debug_frame_hdr in target byte order
  2016-10-11  8:14 [PATCH 00/12] MIPS port Marcin Nowakowski
@ 2016-10-11  8:15 ` Marcin Nowakowski
  2016-10-11  8:15 ` [PATCH 03/12] mips: add TIF_32BIT definition Marcin Nowakowski
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 17+ messages in thread
From: Marcin Nowakowski @ 2016-10-11  8:15 UTC (permalink / raw)
  To: systemtap; +Cc: Marcin Nowakowski

Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
---
 translate.cxx | 38 ++++++++++++++++++++++++++++----------
 1 file changed, 28 insertions(+), 10 deletions(-)

diff --git a/translate.cxx b/translate.cxx
index f4c8332..21afccd 100644
--- a/translate.cxx
+++ b/translate.cxx
@@ -23,6 +23,7 @@
 #include "stapregex.h"
 #include "stringtable.h"
 
+#include <byteswap.h>
 #include <cstdlib>
 #include <iostream>
 #include <set>
@@ -6062,6 +6063,17 @@ struct unwindsym_dump_context
   set<string> undone_unwindsym_modules;
 };
 
+static bool need_byte_swap_for_target (const unsigned char e_ident[])
+{
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+  return (e_ident[EI_DATA] == ELFDATA2MSB);
+#elif __BYTE_ORDER == __BIG_ENDIAN
+  return (e_ident[EI_DATA] == ELFDATA2LSB);
+#else
+  #error Bad host __BYTE_ORDER
+#endif
+}
+
 static void create_debug_frame_hdr (const unsigned char e_ident[],
 				    Elf_Data *debug_frame,
 				    void **debug_frame_hdr,
@@ -6081,6 +6093,12 @@ static void create_debug_frame_hdr (const unsigned char e_ident[],
   // So there is no need to read the CIEs.  And the size is either 4
   // or 8, depending on the elf class from e_ident.
   int size = (e_ident[EI_CLASS] == ELFCLASS32) ? 4 : 8;
+  bool need_byte_swap = need_byte_swap_for_target (e_ident);
+#define host_to_target_64(x) (need_byte_swap ? bswap_64((x)) : (x))
+#define host_to_target_32(x) (need_byte_swap ? bswap_32((x)) : (x))
+#define target_to_host_64(x) (need_byte_swap ? bswap_64((x)) : (x))
+#define target_to_host_32(x) (need_byte_swap ? bswap_32((x)) : (x))
+
   int res = 0;
   Dwarf_Off off = 0;
   Dwarf_CFI_Entry entry;
@@ -6098,9 +6116,9 @@ static void create_debug_frame_hdr (const unsigned char e_ident[],
 	    {
 	      Dwarf_Addr addr;
 	      if (size == 4)
-		addr = (*((uint32_t *) entry.fde.start));
+		addr = target_to_host_32((*((uint32_t *) entry.fde.start)));
 	      else
-		addr = (*((uint64_t *) entry.fde.start));
+		addr = target_to_host_64((*((uint64_t *) entry.fde.start)));
 	      fdes.insert(pair<Dwarf_Addr, Dwarf_Off>(addr, off));
 	    }
 	}
@@ -6145,23 +6163,23 @@ static void create_debug_frame_hdr (const unsigned char e_ident[],
   if (size == 4)
     {
       uint32_t *table = (uint32_t *)(hdr + 4);
-      *table++ = (uint32_t) 0; // eh_frame_ptr, unused
-      *table++ = (uint32_t) fdes.size();
+      *table++ = host_to_target_32 ((uint32_t) 0); // eh_frame_ptr, unused
+      *table++ = host_to_target_32 ((uint32_t) fdes.size());
       for (it = fdes.begin(); it != fdes.end(); it++)
 	{
-	  *table++ = (*it).first;
-	  *table++ = (*it).second;
+	  *table++ = host_to_target_32 ((*it).first);
+	  *table++ = host_to_target_32 ((*it).second);
 	}
     }
   else
     {
       uint64_t *table = (uint64_t *)(hdr + 4);
-      *table++ = (uint64_t) 0; // eh_frame_ptr, unused
-      *table++ = (uint64_t) fdes.size();
+      *table++ = host_to_target_64 ((uint64_t) 0); // eh_frame_ptr, unused
+      *table++ = host_to_target_64 ((uint64_t) fdes.size());
       for (it = fdes.begin(); it != fdes.end(); it++)
 	{
-	  *table++ = (*it).first;
-	  *table++ = (*it).second;
+	  *table++ = host_to_target_64 ((*it).first);
+	  *table++ = host_to_target_64 ((*it).second);
 	}
     }
 }
-- 
2.7.4

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 08/12] mips: tapset: fix mips oddities in syscalls
  2016-10-11  8:14 [PATCH 00/12] MIPS port Marcin Nowakowski
                   ` (2 preceding siblings ...)
  2016-10-11  8:15 ` [PATCH 12/12] mips: add runtime support Marcin Nowakowski
@ 2016-10-11  8:15 ` Marcin Nowakowski
  2016-10-11  8:15 ` [PATCH 11/12] mips: add support in tapset Marcin Nowakowski
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 17+ messages in thread
From: Marcin Nowakowski @ 2016-10-11  8:15 UTC (permalink / raw)
  To: systemtap; +Cc: Marcin Nowakowski

Some mips syscalls have different prototypes to standard ones and
require special handling

Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
---
 tapset/linux/scheduler.stp |  2 +-
 tapset/linux/syscalls2.stp | 12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/tapset/linux/scheduler.stp b/tapset/linux/scheduler.stp
index c9f66dc..ebf4f61 100644
--- a/tapset/linux/scheduler.stp
+++ b/tapset/linux/scheduler.stp
@@ -117,7 +117,7 @@ probe scheduler.balance = kernel.function("idle_balance") ?
  */
 
 probe scheduler.ctxswitch = kernel.trace("sched_switch") !,
-%( arch != "x86_64" && arch != "ia64" && arch != "arm" %?
+%( arch != "x86_64" && arch != "ia64" && arch != "arm" && arch != "mips" %?
 	kernel.function("__switch_to")
 %:
 	kernel.function("context_switch")
diff --git a/tapset/linux/syscalls2.stp b/tapset/linux/syscalls2.stp
index 0a4ac69..6ecb4da 100644
--- a/tapset/linux/syscalls2.stp
+++ b/tapset/linux/syscalls2.stp
@@ -1953,7 +1953,11 @@ probe syscall.rt_sigreturn.return =
 	kernel.function("sys32_rt_sigreturn").return ?
 {
 	name = "rt_sigreturn"
+%( arch == "mips" %?
+	retstr = "void"
+%:
 	retstr = return_str(1, $return)
+%)
 }
 
 # rt_sigsuspend ______________________________________________
@@ -3965,7 +3969,11 @@ probe syscall.sigreturn.return = kernel.function("sys_sigreturn").return ?,
                                  kernel.function("sys32_sigreturn").return ?
 {
 	name = "sigreturn"
+%( arch == "mips" && CONFIG_TRAD_SIGNALS == "y" %?
+	retstr = "void"
+%:
 	retstr = return_str(1, $return)
+%)
 }
 
 # sigsuspend _________________________________________________
@@ -3983,7 +3991,11 @@ probe syscall.sigsuspend = kernel.function("sys_sigsuspend").call ?,
 	kernel.function("compat_sys_sigsuspend").call ?
 {
 	name = "sigsuspend"
+%( arch == "mips" && CONFIG_TRAD_SIGNALS == "y" %?
+	mask = __ulong($uset)
+%:
 	mask = __ulong($mask)
+%)
 	argstr = sprintf("%s", _stp_sigmask_str(mask))
 }
 probe syscall.sigsuspend.return = kernel.function("sys_sigsuspend").return ?,
-- 
2.7.4

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 09/12] mips: add basic unwind support
  2016-10-11  8:14 [PATCH 00/12] MIPS port Marcin Nowakowski
                   ` (8 preceding siblings ...)
  2016-10-11  8:15 ` [PATCH 06/12] mips: add a stub for stack unwind Marcin Nowakowski
@ 2016-10-11  8:30 ` Marcin Nowakowski
  2016-10-11  8:30 ` [PATCH 05/12] mips: add tapset register definitions Marcin Nowakowski
                   ` (3 subsequent siblings)
  13 siblings, 0 replies; 17+ messages in thread
From: Marcin Nowakowski @ 2016-10-11  8:30 UTC (permalink / raw)
  To: systemtap; +Cc: Marcin Nowakowski

Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
---
 runtime/linux/runtime.h |  2 +-
 runtime/unwind/mips.h   | 79 +++++++++++++++++++++++++++++++++++++++++++++++++
 runtime/unwind/unwind.h |  2 ++
 3 files changed, 82 insertions(+), 1 deletion(-)
 create mode 100644 runtime/unwind/mips.h

diff --git a/runtime/linux/runtime.h b/runtime/linux/runtime.h
index beffdb5..1ba777d 100644
--- a/runtime/linux/runtime.h
+++ b/runtime/linux/runtime.h
@@ -165,7 +165,7 @@ static struct
    Only define STP_USE_DWARF_UNWINDER when STP_NEED_UNWIND_DATA,
    as set through a pragma:unwind in one of the [u]context-unwind.stp
    functions. */
-#if (defined(__arm__) || defined(__i386__) || defined(__x86_64__) || defined(__powerpc64__)) || defined (__s390x__) || defined(__aarch64__)
+#if (defined(__arm__) || defined(__i386__) || defined(__x86_64__) || defined(__powerpc64__)) || defined (__s390x__) || defined(__aarch64__) || defined(__mips__)
 #ifdef STP_NEED_UNWIND_DATA
 #ifndef STP_USE_DWARF_UNWINDER
 #define STP_USE_DWARF_UNWINDER
diff --git a/runtime/unwind/mips.h b/runtime/unwind/mips.h
new file mode 100644
index 0000000..8538dfc
--- /dev/null
+++ b/runtime/unwind/mips.h
@@ -0,0 +1,79 @@
+/* -*- linux-c -*-
+ *
+ * MIPS dwarf unwinder header file
+ *
+ * This file is part of systemtap, and is free software.  You can
+ * redistribute it and/or modify it under the terms of the GNU General
+ * Public License (GPL); either version 2, or (at your option) any
+ * later version.
+ */
+#ifndef _STP_ARM_UNWIND_H
+#define _STP_ARM_UNWIND_H
+
+#include <linux/sched.h>
+#include <asm/ptrace.h>
+
+#define _stp_get_unaligned(ptr) (*(ptr))
+
+#define UNW_PC(frame)        (frame)->regs.cp0_epc
+#define UNW_SP(frame)        (frame)->regs.regs[29] 
+
+#define STACK_LIMIT(ptr)     (((ptr) - 1) & ~(THREAD_SIZE - 1))
+
+#define UNW_REGISTER_INFO \
+	PTREGS_INFO(regs[0]), \
+	PTREGS_INFO(regs[1]), \
+	PTREGS_INFO(regs[2]), \
+	PTREGS_INFO(regs[3]), \
+	PTREGS_INFO(regs[4]), \
+	PTREGS_INFO(regs[5]), \
+	PTREGS_INFO(regs[6]), \
+	PTREGS_INFO(regs[7]), \
+	PTREGS_INFO(regs[8]), \
+	PTREGS_INFO(regs[9]), \
+	PTREGS_INFO(regs[10]), \
+	PTREGS_INFO(regs[11]), \
+	PTREGS_INFO(regs[12]), \
+	PTREGS_INFO(regs[13]), \
+	PTREGS_INFO(regs[14]), \
+	PTREGS_INFO(regs[16]), \
+	PTREGS_INFO(regs[17]), \
+	PTREGS_INFO(regs[18]), \
+	PTREGS_INFO(regs[19]), \
+	PTREGS_INFO(regs[20]), \
+	PTREGS_INFO(regs[21]), \
+	PTREGS_INFO(regs[22]), \
+	PTREGS_INFO(regs[23]), \
+	PTREGS_INFO(regs[24]), \
+	PTREGS_INFO(regs[26]), \
+	PTREGS_INFO(regs[27]), \
+	PTREGS_INFO(regs[28]), \
+	PTREGS_INFO(regs[29]), \
+	PTREGS_INFO(regs[30]), \
+	PTREGS_INFO(regs[31]), \
+	PTREGS_INFO(lo), \
+	PTREGS_INFO(hi), \
+	PTREGS_INFO(cp0_epc)
+
+#define UNW_PC_IDX 34
+#define UNW_SP_IDX 29
+
+/* Use default rules. The stack pointer should be set from the CFA.
+   And the instruction pointer should be set from the return address
+   column (which normally is the return register (regs[31]). */
+
+static inline void arch_unw_init_frame_info(struct unwind_frame_info *info,
+                                            /*const*/ struct pt_regs *regs,
+					    int sanitize)
+{
+	if (&info->regs == regs) { /* happens when unwinding kernel->user */
+		info->call_frame = 1;
+		return;
+	}
+
+	memset(info, 0, sizeof(*info));
+	/* XXX handle sanitize??? */
+	info->regs = *regs;
+}
+
+#endif /* _STP_ARM_UNWIND_H */
diff --git a/runtime/unwind/unwind.h b/runtime/unwind/unwind.h
index f16c983..9d66732 100644
--- a/runtime/unwind/unwind.h
+++ b/runtime/unwind/unwind.h
@@ -34,6 +34,8 @@ struct unwind_frame_info
 #include "arm.h"
 #elif defined (__aarch64__)
 #include "arm64.h"
+#elif defined (__mips__)
+#include "mips.h"
 #else
 #error "Unsupported dwarf unwind architecture"
 #endif
-- 
2.7.4

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 04/12] mips: tapsets.cxx: add dwarf register definitions for SDT uprobes
  2016-10-11  8:14 [PATCH 00/12] MIPS port Marcin Nowakowski
                   ` (10 preceding siblings ...)
  2016-10-11  8:30 ` [PATCH 05/12] mips: add tapset register definitions Marcin Nowakowski
@ 2016-10-11  8:30 ` Marcin Nowakowski
  2016-10-11  8:57 ` [PATCH 00/12] MIPS port Mark Wielaard
  2016-10-11 15:01 ` Frank Ch. Eigler
  13 siblings, 0 replies; 17+ messages in thread
From: Marcin Nowakowski @ 2016-10-11  8:30 UTC (permalink / raw)
  To: systemtap; +Cc: Marcin Nowakowski

Depending on the optimisations used, the compiler may generate either
numeric register definitions or typical aliases, so define both.
Since MIPS register names start with a dollar '$', add an escape
sequence to the register names when creating regname regular
expressions.

Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
---
 tapsets.cxx | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 77 insertions(+), 1 deletion(-)

diff --git a/tapsets.cxx b/tapsets.cxx
index 164881f..2193b7d 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -6275,6 +6275,77 @@ sdt_uprobe_var_expanding_visitor::build_dwarf_registers ()
     DRI ("x29", 29, DI); DRI ("w29", 29, SI);
     DRI ("x30", 30, DI); DRI ("w30", 30, SI);
     DRI ("sp", 31, DI);
+  } else if (elf_machine == EM_MIPS) {
+    Dwarf_Addr bias;
+    Elf* elf = (dwfl_module_getelf (dw.mod_info->mod, &bias));
+    enum regwidths mips_reg_width =
+        (gelf_getclass (elf) == ELFCLASS32) ? SI : DI;
+    DRI ("$zero", 0, mips_reg_width);
+    DRI ("$at", 1, mips_reg_width);
+    DRI ("$v0", 2, mips_reg_width);
+    DRI ("$v1", 3, mips_reg_width);
+    DRI ("$a0", 4, mips_reg_width);
+    DRI ("$a1", 5, mips_reg_width);
+    DRI ("$a2", 6, mips_reg_width);
+    DRI ("$a3", 7, mips_reg_width);
+    DRI ("$a4", 8, mips_reg_width);
+    DRI ("$a5", 9, mips_reg_width);
+    DRI ("$a6", 10, mips_reg_width);
+    DRI ("$a7", 11, mips_reg_width);
+    DRI ("$t0", 12, mips_reg_width);
+    DRI ("$t1", 13, mips_reg_width);
+    DRI ("$t2", 14, mips_reg_width);
+    DRI ("$t3", 15, mips_reg_width);
+    DRI ("$s0", 16, mips_reg_width);
+    DRI ("$s1", 17, mips_reg_width);
+    DRI ("$s2", 18, mips_reg_width);
+    DRI ("$s3", 19, mips_reg_width);
+    DRI ("$s4", 20, mips_reg_width);
+    DRI ("$s5", 21, mips_reg_width);
+    DRI ("$s6", 22, mips_reg_width);
+    DRI ("$s7", 23, mips_reg_width);
+    DRI ("$t8", 24, mips_reg_width);
+    DRI ("$t9", 25, mips_reg_width);
+    DRI ("$k0", 26, mips_reg_width);
+    DRI ("$k1", 27, mips_reg_width);
+    DRI ("$gp", 28, mips_reg_width);
+    DRI ("$sp", 29, mips_reg_width);
+    DRI ("$s8", 30, mips_reg_width);
+    DRI ("$fp", 30, mips_reg_width);
+    DRI ("$ra", 31, mips_reg_width);
+
+    DRI ("$0", 0, mips_reg_width);
+    DRI ("$1", 1, mips_reg_width);
+    DRI ("$2", 2, mips_reg_width);
+    DRI ("$3", 3, mips_reg_width);
+    DRI ("$4", 4, mips_reg_width);
+    DRI ("$5", 5, mips_reg_width);
+    DRI ("$6", 6, mips_reg_width);
+    DRI ("$7", 7, mips_reg_width);
+    DRI ("$8", 8, mips_reg_width);
+    DRI ("$9", 9, mips_reg_width);
+    DRI ("$10", 10, mips_reg_width);
+    DRI ("$11", 11, mips_reg_width);
+    DRI ("$12", 12, mips_reg_width);
+    DRI ("$13", 13, mips_reg_width);
+    DRI ("$14", 14, mips_reg_width);
+    DRI ("$15", 15, mips_reg_width);
+    DRI ("$16", 16, mips_reg_width);
+    DRI ("$17", 17, mips_reg_width);
+    DRI ("$18", 18, mips_reg_width);
+    DRI ("$19", 19, mips_reg_width);
+    DRI ("$20", 20, mips_reg_width);
+    DRI ("$21", 21, mips_reg_width);
+    DRI ("$22", 22, mips_reg_width);
+    DRI ("$23", 23, mips_reg_width);
+    DRI ("$24", 24, mips_reg_width);
+    DRI ("$25", 25, mips_reg_width);
+    DRI ("$26", 26, mips_reg_width);
+    DRI ("$27", 27, mips_reg_width);
+    DRI ("$28", 28, mips_reg_width);
+    DRI ("$29", 29, mips_reg_width);
+    DRI ("$30", 30, mips_reg_width);
+    DRI ("$31", 31, mips_reg_width);
   } else if (arg_count) {
     /* permit this case; just fall back to dwarf */
   }
@@ -6287,6 +6358,10 @@ sdt_uprobe_var_expanding_visitor::build_dwarf_registers ()
     {
       string regname = ri->first;
       assert (regname != "");
+      // for register names starting with '$' convert the dollar to a
+      // '\$' as otherwise the regexp tries to match end-of-line
+      if (regname[0]=='$')
+        regname = string("\\")+regname;
       regnames += string("|")+regname;
       if (regname[0]=='%')
         percent_regnames += string("|")+regname;
@@ -6428,7 +6503,7 @@ sdt_uprobe_var_expanding_visitor::try_parse_arg_literal (target_symbol *e,
   vector<string> matches;
   string regexp;
 
-  if (elf_machine == EM_AARCH64) {
+  if (elf_machine == EM_AARCH64 || elf_machine == EM_MIPS) {
     regexp = "^([-]?[0-9][0-9]*)$";
   } else {
     regexp = "^[i\\$#]([-]?[0-9][0-9]*)$";
@@ -6821,6 +6896,7 @@ sdt_uprobe_var_expanding_visitor::visit_target_symbol_arg (target_symbol *e)
       // s390   N       %rR 0(rR)    N(r15)
       // arm    #N      rR  [rR]     [rR, #N]
       // arm64  N       rR  [rR]     [rR, N]
+      // mips   N       $r           N($r)
 
       expression* argexpr = 0; // filled in in case of successful parse
 
-- 
2.7.4

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 05/12] mips: add tapset register definitions
  2016-10-11  8:14 [PATCH 00/12] MIPS port Marcin Nowakowski
                   ` (9 preceding siblings ...)
  2016-10-11  8:30 ` [PATCH 09/12] mips: add basic unwind support Marcin Nowakowski
@ 2016-10-11  8:30 ` Marcin Nowakowski
  2016-10-11  8:30 ` [PATCH 04/12] mips: tapsets.cxx: add dwarf register definitions for SDT uprobes Marcin Nowakowski
                   ` (2 subsequent siblings)
  13 siblings, 0 replies; 17+ messages in thread
From: Marcin Nowakowski @ 2016-10-11  8:30 UTC (permalink / raw)
  To: systemtap; +Cc: Marcin Nowakowski

Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
---
 tapset/mips/registers.stp | 301 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 301 insertions(+)
 create mode 100644 tapset/mips/registers.stp

diff --git a/tapset/mips/registers.stp b/tapset/mips/registers.stp
new file mode 100644
index 0000000..ac93d7e
--- /dev/null
+++ b/tapset/mips/registers.stp
@@ -0,0 +1,301 @@
+/* Dwarfless register access for mips */
+
+global _reg_offsets, _stp_regs_registered
+
+function _stp_register_regs() {
+	offset_acx = 0
+%( CONFIG_64BIT == "y" %?
+        /* n32/n64 registers naming scheme */
+	/* Same order as struct pt_regs */
+	_reg_offsets["zero"] = 0
+	_reg_offsets["at"] = 8
+	_reg_offsets["v0"] = 16
+	_reg_offsets["v1"] = 24
+	_reg_offsets["a0"] = 32
+	_reg_offsets["a1"] = 40
+	_reg_offsets["a2"] = 48
+	_reg_offsets["a3"] = 56
+	_reg_offsets["a4"] = 64
+	_reg_offsets["a5"] = 72
+	_reg_offsets["a6"] = 80
+	_reg_offsets["a7"] = 88
+	_reg_offsets["t0"] = 96
+	_reg_offsets["t1"] = 104
+	_reg_offsets["t2"] = 112
+	_reg_offsets["t3"] = 120
+	_reg_offsets["s0"] = 128
+	_reg_offsets["s1"] = 136
+	_reg_offsets["s2"] = 144
+	_reg_offsets["s3"] = 152
+	_reg_offsets["s4"] = 160
+	_reg_offsets["s5"] = 168
+	_reg_offsets["s6"] = 176
+	_reg_offsets["s7"] = 184
+	_reg_offsets["t8"] = 192
+	_reg_offsets["t9"] = 200
+	_reg_offsets["k0"] = 208
+	_reg_offsets["k1"] = 216
+	_reg_offsets["gp"] = 224
+	_reg_offsets["sp"] = 232
+	_reg_offsets["s8"] = 240       _reg_offsets["fp"] = 240
+	_reg_offsets["ra"] = 248
+
+	_reg_offsets["status"] = 256
+	_reg_offsets["hi"] = 264
+	_reg_offsets["lo"] = 272
+
+%( CONFIG_CPU_HAS_SMARTMIPS == "y" %?
+	_reg_offsets["acx"] = 280
+	offset_acx = 8
+%)
+	_reg_offsets["badvaddr"] = 280 + offset_acx
+	_reg_offsets["cause"] = 288 + offset_acx
+	_reg_offsets["epc"] = 296 + offset_acx
+
+        /* no cp0_tcstatus register for now */
+%( CONFIG_CPU_CAVIUM_OCTEON == "y" %?
+	_reg_offsets["mpl0"] = 304 + offset_acx
+	_reg_offsets["mpl1"] = 310 + offset_acx
+	_reg_offsets["mpl2"] = 318 + offset_acx
+	_reg_offsets["mtp0"] = 316 + offset_acx
+	_reg_offsets["mtp1"] = 324 + offset_acx
+	_reg_offsets["mtp2"] = 330 + offset_acx
+%)
+
+%:
+        /* o32 registers naming scheme */
+	/* Same order as struct pt_regs */
+	_reg_offsets["zero"] = 24
+	_reg_offsets["at"] = 28
+	_reg_offsets["v0"] = 32
+	_reg_offsets["v1"] = 36
+	_reg_offsets["a0"] = 40
+	_reg_offsets["a1"] = 44
+	_reg_offsets["a2"] = 48
+	_reg_offsets["a3"] = 52
+	_reg_offsets["t0"] = 56
+	_reg_offsets["t1"] = 60
+	_reg_offsets["t2"] = 64
+	_reg_offsets["t3"] = 68
+	_reg_offsets["t4"] = 72
+	_reg_offsets["t5"] = 76
+	_reg_offsets["t6"] = 80
+	_reg_offsets["t7"] = 84
+	_reg_offsets["s0"] = 88
+	_reg_offsets["s1"] = 92
+	_reg_offsets["s2"] = 96
+	_reg_offsets["s3"] = 100
+	_reg_offsets["s4"] = 104
+	_reg_offsets["s5"] = 108
+	_reg_offsets["s6"] = 112
+	_reg_offsets["s7"] = 116
+	_reg_offsets["t8"] = 120
+	_reg_offsets["t9"] = 124
+	_reg_offsets["k0"] = 128
+	_reg_offsets["k1"] = 132
+	_reg_offsets["gp"] = 136
+	_reg_offsets["sp"] = 140
+	_reg_offsets["s8"] = 144     _reg_offsets["fp"] = 144
+	_reg_offsets["ra"] = 148
+
+	_reg_offsets["status"] = 152
+	_reg_offsets["hi"] = 156
+	_reg_offsets["lo"] = 160
+
+%( CONFIG_CPU_HAS_SMARTMIPS == "y" %?
+	_reg_offsets["acx"] = 164
+	offset_acx = 4
+%)
+	_reg_offsets["badvaddr"] = 164 + offset_acx
+	_reg_offsets["cause"] = 168 + offset_acx
+	_reg_offsets["epc"] = 172 + offset_acx
+
+        /* no cp0_tcstatus register for now */
+        /* no mpl and mtp registers for now */
+%)
+	_stp_regs_registered = 1
+}
+
+function probing_app_with_32bit_regs() %{ /* pure */
+	struct pt_regs *regs;
+	regs = (CONTEXT->user_mode_p ? CONTEXT->uregs : NULL );
+        THIS->__retvalue = _stp_probing_app_with_32bit_regs(regs);
+%}
+
+function _stp_get_register_by_offset:long (offset:long) %{ /* pure */
+	long value;
+	struct pt_regs *regs;
+	regs = (CONTEXT->user_mode_p ? CONTEXT->uregs : CONTEXT->kregs);
+
+	if (!regs) {
+		CONTEXT->last_error = "No registers available in this context";
+		return;
+	}
+	if (STAP_ARG_offset < 0 || STAP_ARG_offset > sizeof(struct pt_regs) - sizeof(long)) {
+		snprintf(CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer),
+				"Bad register offset: %lld", STAP_ARG_offset);
+		CONTEXT->last_error = CONTEXT->error_buffer;
+		return;
+	}
+	memcpy(&value, ((char *)regs) + STAP_ARG_offset, sizeof(value));
+	THIS->__retvalue = value;
+%}
+
+function _stp_sign_extend32:long (value:long) {
+	if (value & 0x80000000)
+		value |= (0xffffffff << 32)
+	return value
+}
+
+function _stp_register:long (name:string, sign_extend:long) {
+	if (!registers_valid()) {
+		error("cannot access CPU registers in this context")
+		return 0
+	}
+	if (!_stp_regs_registered)
+		_stp_register_regs()
+	offset = _reg_offsets[name]
+	if (offset == 0 && !(name in _reg_offsets)) {
+		error("Unknown register: " . name)
+		return 0
+	}
+	value = _stp_get_register_by_offset(offset)
+%( CONFIG_64BIT == "y" %?
+	if (probing_app_with_32bit_regs()) {
+%)
+		if (sign_extend)
+			value = _stp_sign_extend32(value)
+		else
+			value &= 0xffffffff
+%( CONFIG_64BIT == "y" %?
+	}
+%)
+	return value
+}
+
+/* Return the named register value as a signed value. */
+function register:long (name:string) {
+	return _stp_register(name, 1)
+}
+
+/*
+ * Return the named register value as an unsigned value.  Specifically,
+ * don't sign-extend the register value when promoting it to 64 bits.
+ */
+function u_register:long (name:string) {
+	return _stp_register(name, 0)
+}
+
+/*
+ * Return the value of function arg #argnum (1=first arg).
+ * If truncate=1, mask off the top 32 bits.
+ * If sign_extend=1 and (truncate=1 or the probepoint we've hit is in a
+ * 32-bit app), sign-extend the 32-bit value.
+ */
+function _stp_arg:long (argnum:long, sign_extend:long, truncate:long) {
+	val = 0
+	if (argnum < 1 || argnum > 8) {
+		error(sprintf("Cannot access arg(%d)", argnum))
+		return 0
+	}
+
+	if (argnum == 1)
+		val = u_register("a0")
+	else if (argnum == 2)
+		val = u_register("a1")
+	else if (argnum == 3)
+		val = u_register("a2")
+	else if (argnum == 4)
+		val = u_register("a3")
+	else if (argnum == 5)
+		val = u_register("a4")
+	else if (argnum == 6)
+		val = u_register("a5")
+	else if (argnum == 7)
+		val = u_register("a6")
+	else if (argnum == 8)
+		val = u_register("a7")
+
+	if (truncate) {
+		if (sign_extend)
+			val = _stp_sign_extend32(val)
+		else
+			/* High bits may be garbage. */
+			val = (val & 0xffffffff);
+	}
+	return val;
+}
+
+function probing_32bit_app:long() %{ /* pure */
+	STAP_RETVALUE = (CONTEXT->user_mode_p && _stp_is_compat_task());
+%}
+
+function arch_bytes:long() %{ /* pure */
+  STAP_RETVALUE = sizeof(long);
+%}
+
+function uarch_bytes:long() {
+  assert(user_mode(), "requires user mode")
+  return probing_32bit_app() ? 4 : 8
+}
+
+/* Return the value of function arg #argnum (1=first arg) as a signed int. */
+function int_arg:long (argnum:long) {
+	return _stp_arg(argnum, 1, 1)
+}
+
+/* Return the value of function arg #argnum (1=first arg) as an unsigned int. */
+function uint_arg:long (argnum:long) {
+	return _stp_arg(argnum, 0, 1)
+}
+
+function long_arg:long (argnum:long) {
+	return _stp_arg(argnum, 1, 0)
+}
+
+function ulong_arg:long (argnum:long) {
+	return _stp_arg(argnum, 0, 0)
+}
+
+function longlong_arg:long (argnum:long) {
+	if (probing_app_with_32bit_regs()) {
+		lowbits = _stp_arg(argnum, 0, 1)
+		highbits = _stp_arg(argnum+1, 0, 1)
+		return ((highbits << 32) | lowbits)
+	} else
+		return _stp_arg(argnum, 0, 0)
+}
+
+function ulonglong_arg:long (argnum:long) {
+	return longlong_arg(argnum)
+}
+
+function pointer_arg:long (argnum:long) {
+	return _stp_arg(argnum, 0, 0)
+}
+
+function s32_arg:long (argnum:long) {
+	return int_arg(argnum)
+}
+
+function u32_arg:long (argnum:long) {
+	return uint_arg(argnum)
+}
+
+function s64_arg:long (argnum:long) {
+	return longlong_arg(argnum)
+}
+
+function u64_arg:long (argnum:long) {
+	return ulonglong_arg(argnum)
+}
+
+function asmlinkage() %{ /* pure */ %}
+
+function fastcall() %{ /* pure */ %}
+
+function regparm() %{
+	snprintf(CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer),
+		"regparm is invalid on mips.");
+	CONTEXT->last_error = CONTEXT->error_buffer;
+%}
-- 
2.7.4

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 00/12] MIPS port
  2016-10-11  8:14 [PATCH 00/12] MIPS port Marcin Nowakowski
                   ` (11 preceding siblings ...)
  2016-10-11  8:30 ` [PATCH 04/12] mips: tapsets.cxx: add dwarf register definitions for SDT uprobes Marcin Nowakowski
@ 2016-10-11  8:57 ` Mark Wielaard
  2016-10-11  9:36   ` Marcin Nowakowski
  2016-10-11 15:01 ` Frank Ch. Eigler
  13 siblings, 1 reply; 17+ messages in thread
From: Mark Wielaard @ 2016-10-11  8:57 UTC (permalink / raw)
  To: Marcin Nowakowski; +Cc: systemtap

On Tue, Oct 11, 2016 at 10:14:16AM +0200, Marcin Nowakowski wrote:
> Some functions don't work properly due to incomplete support in elfutils
> (Debian port of Elfutils has a reasonable MIPS support, but it's not
> complete),

Help getting the elfutils MIPS port upstreamed (and complete) would be
appreciated. I did once look at it, but it made changes to generic ELF
support that I didn't understand. And I don't have access to a MIPS setup
which makes it hard to test. So if people can explain the patches by
providing pointers to the MIPS ELF abi extensions and providing test
results, that would be really helpful.

Thanks,

Mark

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 00/12] MIPS port
  2016-10-11  8:57 ` [PATCH 00/12] MIPS port Mark Wielaard
@ 2016-10-11  9:36   ` Marcin Nowakowski
  0 siblings, 0 replies; 17+ messages in thread
From: Marcin Nowakowski @ 2016-10-11  9:36 UTC (permalink / raw)
  To: Mark Wielaard; +Cc: systemtap

On 11.10.2016 10:57, Mark Wielaard wrote:
> On Tue, Oct 11, 2016 at 10:14:16AM +0200, Marcin Nowakowski wrote:
>> Some functions don't work properly due to incomplete support in elfutils
>> (Debian port of Elfutils has a reasonable MIPS support, but it's not
>> complete),
>
> Help getting the elfutils MIPS port upstreamed (and complete) would be
> appreciated. I did once look at it, but it made changes to generic ELF
> support that I didn't understand. And I don't have access to a MIPS setup
> which makes it hard to test. So if people can explain the patches by
> providing pointers to the MIPS ELF abi extensions and providing test
> results, that would be really helpful.

That indeed would be very useful to have - as it's a large architecture 
that is missing from upstream elfutils at the moment.
It's something we want to do, but I cannot make any promises as to when 
that is going to happen.

Marcin

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 00/12] MIPS port
  2016-10-11  8:14 [PATCH 00/12] MIPS port Marcin Nowakowski
                   ` (12 preceding siblings ...)
  2016-10-11  8:57 ` [PATCH 00/12] MIPS port Mark Wielaard
@ 2016-10-11 15:01 ` Frank Ch. Eigler
  2016-10-14 10:30   ` Marcin Nowakowski
  13 siblings, 1 reply; 17+ messages in thread
From: Frank Ch. Eigler @ 2016-10-11 15:01 UTC (permalink / raw)
  To: Marcin Nowakowski; +Cc: systemtap

Marcin Nowakowski <marcin.nowakowski@imgtec.com> writes:

> This patch series attempts to bring MIPS support to systemtap. It is
> largely based on an earlier work by Victor Kamensky and Crestez Dan
> Leonard who have previously attempted to add MIPS support, but which
> has never been completed.  [...]

Thank you.

> There is no good guide on how to add a new architecture to SystemTap,
> so there might be things that I have missed or which are not done
> entirely correctly - I hope that with some guidance from the
> maintainers I can get it all merged into the tree. [...]

After a quick look over the patches and an x86-64 smoke-test to detect
"friendly fire", the whole set is now merged.

As to how to port to new architectures, indeed we lack formal
documentation on this.  (It happens so rarely!)  One minimal thing we
could do would be to add comment markers like /* PORTING */ to all the
places you just had to touch.  (It would be similar to the "PRERELEASE"
comment to mark pre-release checklist locations.)  Would that have
helped you?


- FChE

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 00/12] MIPS port
  2016-10-11 15:01 ` Frank Ch. Eigler
@ 2016-10-14 10:30   ` Marcin Nowakowski
  0 siblings, 0 replies; 17+ messages in thread
From: Marcin Nowakowski @ 2016-10-14 10:30 UTC (permalink / raw)
  To: Frank Ch. Eigler; +Cc: systemtap

Hi Frank,

On 11.10.2016 17:00, Frank Ch. Eigler wrote:
> Marcin Nowakowski <marcin.nowakowski@imgtec.com> writes:
>
>> This patch series attempts to bring MIPS support to systemtap. It is
>> largely based on an earlier work by Victor Kamensky and Crestez Dan
>> Leonard who have previously attempted to add MIPS support, but which
>> has never been completed.  [...]
>
> Thank you.

Thank you for a quick action to accept the patches - I didn't expect the 
process to go so smooth :)

>
>> There is no good guide on how to add a new architecture to SystemTap,
>> so there might be things that I have missed or which are not done
>> entirely correctly - I hope that with some guidance from the
>> maintainers I can get it all merged into the tree. [...]
>
> After a quick look over the patches and an x86-64 smoke-test to detect
> "friendly fire", the whole set is now merged.
>
> As to how to port to new architectures, indeed we lack formal
> documentation on this.  (It happens so rarely!)  One minimal thing we
> could do would be to add comment markers like /* PORTING */ to all the
> places you just had to touch.  (It would be similar to the "PRERELEASE"
> comment to mark pre-release checklist locations.)  Would that have
> helped you?

Yes, I think a clear label showing things that require porting can help. 
Obviously it wouldn't be able to show everything, as there might be some 
arch-dependent features that are only specific to a given arch and 
wouldn't be known otherwise, but for most contexts that would be helpful 
anyway.

Marcin

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2016-10-14 10:30 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-11  8:14 [PATCH 00/12] MIPS port Marcin Nowakowski
2016-10-11  8:15 ` [PATCH 10/12] Create debug_frame_hdr in target byte order Marcin Nowakowski
2016-10-11  8:15 ` [PATCH 03/12] mips: add TIF_32BIT definition Marcin Nowakowski
2016-10-11  8:15 ` [PATCH 12/12] mips: add runtime support Marcin Nowakowski
2016-10-11  8:15 ` [PATCH 08/12] mips: tapset: fix mips oddities in syscalls Marcin Nowakowski
2016-10-11  8:15 ` [PATCH 11/12] mips: add support in tapset Marcin Nowakowski
2016-10-11  8:15 ` [PATCH 07/12] tapset: fix build if arch does not define SA_RESTORER Marcin Nowakowski
2016-10-11  8:15 ` [PATCH 02/12] testsuite: add support for mips64 build flags Marcin Nowakowski
2016-10-11  8:15 ` [PATCH 01/12] tapset syscall-number database: add MIPS syscalls Marcin Nowakowski
2016-10-11  8:15 ` [PATCH 06/12] mips: add a stub for stack unwind Marcin Nowakowski
2016-10-11  8:30 ` [PATCH 09/12] mips: add basic unwind support Marcin Nowakowski
2016-10-11  8:30 ` [PATCH 05/12] mips: add tapset register definitions Marcin Nowakowski
2016-10-11  8:30 ` [PATCH 04/12] mips: tapsets.cxx: add dwarf register definitions for SDT uprobes Marcin Nowakowski
2016-10-11  8:57 ` [PATCH 00/12] MIPS port Mark Wielaard
2016-10-11  9:36   ` Marcin Nowakowski
2016-10-11 15:01 ` Frank Ch. Eigler
2016-10-14 10:30   ` Marcin Nowakowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).