]> granicus.if.org Git - strace/commitdiff
cleanup: make get_syscall_args.c files more readable
authorDmitry V. Levin <ldv@altlinux.org>
Mon, 30 Nov 2015 00:57:14 +0000 (00:57 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Mon, 30 Nov 2015 00:57:14 +0000 (00:57 +0000)
Make get_syscall_args.c files more self-contained.  While they are
still being included by syscall.c, the latter no longer defines
get_syscall_args function.

* linux/aarch64/get_syscall_args.c: Include "arm/get_syscall_args.c"
with get_syscall_args temporarily defined to arm_get_syscall_args.
(get_syscall_args): Define.
* linux/alpha/get_syscall_args.c (get_syscall_args): Define.
* linux/arc/get_syscall_args.c: Likewise.
* linux/arm/get_syscall_args.c: Likewise.
* linux/avr32/get_syscall_args.c: Likewise.
* linux/bfin/get_syscall_args.c: Likewise.
* linux/crisv10/get_syscall_args.c: Likewise.
* linux/hppa/get_syscall_args.c: Likewise.
* linux/i386/get_syscall_args.c: Likewise.
* linux/ia64/get_syscall_args.c: Likewise.
* linux/m68k/get_syscall_args.c: Likewise.
* linux/metag/get_syscall_args.c: Likewise.
* linux/microblaze/get_syscall_args.c: Likewise.
* linux/mips/get_syscall_args.c: Likewise.
* linux/nios2/get_syscall_args.c: Likewise.
* linux/or1k/get_syscall_args.c: Likewise.
* linux/powerpc/get_syscall_args.c: Likewise.
* linux/s390/get_syscall_args.c: Likewise.
* linux/sh/get_syscall_args.c: Likewise.
* linux/sh64/get_syscall_args.c: Likewise.
* linux/sparc/get_syscall_args.c: Likewise.
* linux/tile/get_syscall_args.c: Likewise.
* linux/x86_64/get_syscall_args.c: Likewise.
* linux/xtensa/get_syscall_args.c: Likewise.
* syscall.c (get_syscall_args): Remove.
Include "get_syscall_args.c" in file scope.

Requested-by: Denys Vlasenko <dvlasenk@redhat.com>
25 files changed:
linux/aarch64/get_syscall_args.c
linux/alpha/get_syscall_args.c
linux/arc/get_syscall_args.c
linux/arm/get_syscall_args.c
linux/avr32/get_syscall_args.c
linux/bfin/get_syscall_args.c
linux/crisv10/get_syscall_args.c
linux/hppa/get_syscall_args.c
linux/i386/get_syscall_args.c
linux/ia64/get_syscall_args.c
linux/m68k/get_syscall_args.c
linux/metag/get_syscall_args.c
linux/microblaze/get_syscall_args.c
linux/mips/get_syscall_args.c
linux/nios2/get_syscall_args.c
linux/or1k/get_syscall_args.c
linux/powerpc/get_syscall_args.c
linux/s390/get_syscall_args.c
linux/sh/get_syscall_args.c
linux/sh64/get_syscall_args.c
linux/sparc/get_syscall_args.c
linux/tile/get_syscall_args.c
linux/x86_64/get_syscall_args.c
linux/xtensa/get_syscall_args.c
syscall.c

index 41ce8b448ae3327fb54c9f3ded3b230c60cf8a4e..b92130130c105ef18bd10cc9c71084682c6d8c1b 100644 (file)
@@ -1,10 +1,18 @@
-if (tcp->currpers == 1) {
+#define get_syscall_args arm_get_syscall_args
+#include "arm/get_syscall_args.c"
+#undef get_syscall_args
+
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       if (tcp->currpers == 0)
+               return arm_get_syscall_args(tcp);
        tcp->u_arg[0] = aarch64_regs.regs[0];
        tcp->u_arg[1] = aarch64_regs.regs[1];
        tcp->u_arg[2] = aarch64_regs.regs[2];
        tcp->u_arg[3] = aarch64_regs.regs[3];
        tcp->u_arg[4] = aarch64_regs.regs[4];
        tcp->u_arg[5] = aarch64_regs.regs[5];
-} else {
-#include "arm/get_syscall_args.c"
+       return 1;
 }
index 7f7d493a7e23005983591802e80ac801891222e7..a3857263d8cfda64aace857f5dc9b23e81ea37e0 100644 (file)
@@ -1,5 +1,11 @@
-unsigned int i;
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       unsigned int i;
 
-for (i = 0; i < tcp->s_ent->nargs; ++i)
-       if (upeek(tcp->pid, REG_A0+i, &tcp->u_arg[i]) < 0)
-               return -1;
+       for (i = 0; i < tcp->s_ent->nargs; ++i)
+               if (upeek(tcp->pid, REG_A0+i, &tcp->u_arg[i]) < 0)
+                       return -1;
+       return 1;
+}
index bb003c8d51e979c9b148bdc0177cd94cac7dd01c..4d6ace5c3f75c99b5248abfcd75ab34ae438b623 100644 (file)
@@ -1,5 +1,11 @@
-long *arc_args = &arc_regs.scratch.r0;
-unsigned int i;
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       long *arc_args = &arc_regs.scratch.r0;
+       unsigned int i;
 
-for (i = 0; i < MAX_ARGS; ++i)
-       tcp->u_arg[i] = *arc_args--;
+       for (i = 0; i < MAX_ARGS; ++i)
+               tcp->u_arg[i] = *arc_args--;
+       return 1;
+}
index 1bd4faf20fa6b39aa4e76b8afd4df3573885c4d2..6be175019a3cfd8fef2d643900887b98eb4e878e 100644 (file)
@@ -1,6 +1,12 @@
-tcp->u_arg[0] = arm_regs.uregs[0];
-tcp->u_arg[1] = arm_regs.uregs[1];
-tcp->u_arg[2] = arm_regs.uregs[2];
-tcp->u_arg[3] = arm_regs.uregs[3];
-tcp->u_arg[4] = arm_regs.uregs[4];
-tcp->u_arg[5] = arm_regs.uregs[5];
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       tcp->u_arg[0] = arm_regs.uregs[0];
+       tcp->u_arg[1] = arm_regs.uregs[1];
+       tcp->u_arg[2] = arm_regs.uregs[2];
+       tcp->u_arg[3] = arm_regs.uregs[3];
+       tcp->u_arg[4] = arm_regs.uregs[4];
+       tcp->u_arg[5] = arm_regs.uregs[5];
+       return 1;
+}
index 2e3cd3b6ebe72816f4d1547241fe9ba0209917f7..e8c41198bb7ad8eb4d792ea163b03ef756b7b8f1 100644 (file)
@@ -1,6 +1,12 @@
-tcp->u_arg[0] = avr32_regs.r12;
-tcp->u_arg[1] = avr32_regs.r11;
-tcp->u_arg[2] = avr32_regs.r10;
-tcp->u_arg[3] = avr32_regs.r9;
-tcp->u_arg[4] = avr32_regs.r5;
-tcp->u_arg[5] = avr32_regs.r3;
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       tcp->u_arg[0] = avr32_regs.r12;
+       tcp->u_arg[1] = avr32_regs.r11;
+       tcp->u_arg[2] = avr32_regs.r10;
+       tcp->u_arg[3] = avr32_regs.r9;
+       tcp->u_arg[4] = avr32_regs.r5;
+       tcp->u_arg[5] = avr32_regs.r3;
+       return 1;
+}
index ac6e6cd2cde4c158233e31580d3aa442809879ae..13d58bd7e45fdda06b438c05bdfde70737d34b88 100644 (file)
@@ -1,6 +1,13 @@
-static const int argreg[MAX_ARGS] = { PT_R0, PT_R1, PT_R2, PT_R3, PT_R4, PT_R5 };
-unsigned int i;
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       static const int argreg[MAX_ARGS] =
+               { PT_R0, PT_R1, PT_R2, PT_R3, PT_R4, PT_R5 };
+       unsigned int i;
 
-for (i = 0; i < tcp->s_ent->nargs; ++i)
-       if (upeek(tcp->pid, argreg[i], &tcp->u_arg[i]) < 0)
-               return -1;
+       for (i = 0; i < tcp->s_ent->nargs; ++i)
+               if (upeek(tcp->pid, argreg[i], &tcp->u_arg[i]) < 0)
+                       return -1;
+       return 1;
+}
index 66b5ac7e2d999d344733f8232c8592e9c7963119..bdd05746e9c09122b024c406c8c24509c0b28931 100644 (file)
@@ -1,9 +1,15 @@
-static const int crisregs[MAX_ARGS] = {
-       4*PT_ORIG_R10, 4*PT_R11, 4*PT_R12,
-       4*PT_R13     , 4*PT_MOF, 4*PT_SRP
-};
-unsigned int i;
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       static const int crisregs[MAX_ARGS] = {
+               4*PT_ORIG_R10, 4*PT_R11, 4*PT_R12,
+               4*PT_R13     , 4*PT_MOF, 4*PT_SRP
+       };
+       unsigned int i;
 
-for (i = 0; i < tcp->s_ent->nargs; ++i)
-       if (upeek(tcp->pid, crisregs[i], &tcp->u_arg[i]) < 0)
-               return -1;
+       for (i = 0; i < tcp->s_ent->nargs; ++i)
+               if (upeek(tcp->pid, crisregs[i], &tcp->u_arg[i]) < 0)
+                       return -1;
+       return 1;
+}
index 117b68b916b595508801bf741794170b92ac1ac6..2258ea87cfdf3be25248ba7dd31fde6d876bd9ad 100644 (file)
@@ -1,5 +1,11 @@
-unsigned int i;
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       unsigned int i;
 
-for (i = 0; i < tcp->s_ent->nargs; ++i)
-       if (upeek(tcp->pid, PT_GR26-4*i, &tcp->u_arg[i]) < 0)
-               return -1;
+       for (i = 0; i < tcp->s_ent->nargs; ++i)
+               if (upeek(tcp->pid, PT_GR26-4*i, &tcp->u_arg[i]) < 0)
+                       return -1;
+       return 1;
+}
index 30cce6a45de8c191c69106f28fe0608b6e05cab4..d5de1d9593c67ee7fb356b7b8e676c2a4f38a49c 100644 (file)
@@ -1,6 +1,12 @@
-tcp->u_arg[0] = i386_regs.ebx;
-tcp->u_arg[1] = i386_regs.ecx;
-tcp->u_arg[2] = i386_regs.edx;
-tcp->u_arg[3] = i386_regs.esi;
-tcp->u_arg[4] = i386_regs.edi;
-tcp->u_arg[5] = i386_regs.ebp;
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       tcp->u_arg[0] = i386_regs.ebx;
+       tcp->u_arg[1] = i386_regs.ecx;
+       tcp->u_arg[2] = i386_regs.edx;
+       tcp->u_arg[3] = i386_regs.esi;
+       tcp->u_arg[4] = i386_regs.edi;
+       tcp->u_arg[5] = i386_regs.ebp;
+       return 1;
+}
index 95273965d563ca05473b38e983000ec0c7d5f708..2295d08dce8fa5fd47ae0fa216904cffa7ad2de0 100644 (file)
@@ -1,22 +1,29 @@
-if (!ia64_ia32mode) {
-       unsigned long *rbs_end =
-               (unsigned long *) ia64_regs.ar[PT_AUR_BSP];
-       unsigned long sof = (ia64_regs.cfm >> 0) & 0x7f;
-       unsigned long sol = (ia64_regs.cfm >> 7) & 0x7f;
-       unsigned long *out0 = ia64_rse_skip_regs(rbs_end, -sof + sol);
-       unsigned int i;
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       if (!ia64_ia32mode) {
+               unsigned long *rbs_end =
+                       (unsigned long *) ia64_regs.ar[PT_AUR_BSP];
+               unsigned long sof = (ia64_regs.cfm >> 0) & 0x7f;
+               unsigned long sol = (ia64_regs.cfm >> 7) & 0x7f;
+               unsigned long *out0 = ia64_rse_skip_regs(rbs_end, -sof + sol);
+               unsigned int i;
 
-       for (i = 0; i < tcp->s_ent->nargs; ++i) {
-               if (umoven(tcp, (unsigned long) ia64_rse_skip_regs(out0, i),
-                          sizeof(long), &tcp->u_arg[i]) < 0)
-                       return -1;
+               for (i = 0; i < tcp->s_ent->nargs; ++i) {
+                       if (umoven(tcp,
+                                  (unsigned long) ia64_rse_skip_regs(out0, i),
+                                  sizeof(long), &tcp->u_arg[i]) < 0)
+                               return -1;
+               }
+       } else {
+               /* truncate away IVE sign-extension */
+               tcp->u_arg[0] = 0xffffffff & ia64_regs.gr[11]; /* EBX */
+               tcp->u_arg[1] = 0xffffffff & ia64_regs.gr[ 9]; /* ECX */
+               tcp->u_arg[2] = 0xffffffff & ia64_regs.gr[10]; /* EDX */
+               tcp->u_arg[3] = 0xffffffff & ia64_regs.gr[14]; /* ESI */
+               tcp->u_arg[4] = 0xffffffff & ia64_regs.gr[15]; /* EDI */
+               tcp->u_arg[5] = 0xffffffff & ia64_regs.gr[13]; /* EBP */
        }
-} else {
-       /* truncate away IVE sign-extension */
-       tcp->u_arg[0] = 0xffffffff & ia64_regs.gr[11]; /* EBX */
-       tcp->u_arg[1] = 0xffffffff & ia64_regs.gr[ 9]; /* ECX */
-       tcp->u_arg[2] = 0xffffffff & ia64_regs.gr[10]; /* EDX */
-       tcp->u_arg[3] = 0xffffffff & ia64_regs.gr[14]; /* ESI */
-       tcp->u_arg[4] = 0xffffffff & ia64_regs.gr[15]; /* EDI */
-       tcp->u_arg[5] = 0xffffffff & ia64_regs.gr[13]; /* EBP */
+       return 1;
 }
index bdffcb1d92cf5ec898e5831b8e20fc956666337f..bc69a1957c12a484a75f4566a8438613daaee2b3 100644 (file)
@@ -1,5 +1,11 @@
-unsigned int i;
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       unsigned int i;
 
-for (i = 0; i < tcp->s_ent->nargs; ++i)
-       if (upeek(tcp->pid, (i < 5 ? i : i + 2)*4, &tcp->u_arg[i]) < 0)
-               return -1;
+       for (i = 0; i < tcp->s_ent->nargs; ++i)
+               if (upeek(tcp->pid, (i < 5 ? i : i + 2)*4, &tcp->u_arg[i]) < 0)
+                       return -1;
+       return 1;
+}
index 269f4eb8eafab699849b1618e13aef6a6e5e3a6c..b7c10f45ffa770e07eab135b888e72d2f38bf06c 100644 (file)
@@ -1,5 +1,12 @@
-unsigned int i;
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       unsigned int i;
 
-for (i = 0; i < MAX_ARGS; i++)
-       /* arguments go backwards from D1Ar1 (D1.3) */
-       tcp->u_arg[i] = ((unsigned long *)&metag_regs.dx[3][1])[-i];
+       for (i = 0; i < MAX_ARGS; i++) {
+               /* arguments go backwards from D1Ar1 (D1.3) */
+               tcp->u_arg[i] = ((unsigned long *)&metag_regs.dx[3][1])[-i];
+       }
+       return 1;
+}
index 373911c1c737b0c1fd6e1a7ca798045c4a65b454..830c8c321ed0bb2614a1f682a390d7920118d958 100644 (file)
@@ -1,5 +1,11 @@
-unsigned int i;
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       unsigned int i;
 
-for (i = 0; i < tcp->s_ent->nargs; ++i)
-       if (upeek(tcp->pid, (5 + i) * 4, &tcp->u_arg[i]) < 0)
-               return -1;
+       for (i = 0; i < tcp->s_ent->nargs; ++i)
+               if (upeek(tcp->pid, (5 + i) * 4, &tcp->u_arg[i]) < 0)
+                       return -1;
+       return 1;
+}
index 4e4a22b77acdc49276bae751de990dce2b52971a..a20be8dee1ea89e5eb7c5d736ade06350abf5387 100644 (file)
@@ -1,3 +1,7 @@
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
 #if defined LINUX_MIPSN64
        tcp->u_arg[0] = mips_REG_A0;
        tcp->u_arg[1] = mips_REG_A1;
        tcp->u_arg[2] = mips_REG_A2;
        tcp->u_arg[3] = mips_REG_A3;
        if (tcp->s_ent->nargs > 4) {
-               umoven(tcp, mips_REG_SP + 4 * 4,
-                      (tcp->s_ent->nargs - 4) * sizeof(tcp->u_arg[0]),
-                      &tcp->u_arg[4]);
+               if (umoven(tcp, mips_REG_SP + 4 * 4,
+                          (tcp->s_ent->nargs - 4) * sizeof(tcp->u_arg[0]),
+                          &tcp->u_arg[4]) < 0)
+                       return -1;
        }
 #else
 # error unsupported mips abi
 #endif
+       return 1;
+}
index d12c2f7e24b1d5d8311ca99b1ac1a39ca869a458..707f594a64e3a83dac60900421c3562bc0549618 100644 (file)
@@ -1,6 +1,12 @@
-tcp->u_arg[0] = nios2_regs.regs[4];
-tcp->u_arg[1] = nios2_regs.regs[5];
-tcp->u_arg[2] = nios2_regs.regs[6];
-tcp->u_arg[3] = nios2_regs.regs[7];
-tcp->u_arg[4] = nios2_regs.regs[8];
-tcp->u_arg[5] = nios2_regs.regs[9];
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       tcp->u_arg[0] = nios2_regs.regs[4];
+       tcp->u_arg[1] = nios2_regs.regs[5];
+       tcp->u_arg[2] = nios2_regs.regs[6];
+       tcp->u_arg[3] = nios2_regs.regs[7];
+       tcp->u_arg[4] = nios2_regs.regs[8];
+       tcp->u_arg[5] = nios2_regs.regs[9];
+       return 1;
+}
index 751cba05b55b7ceeacf0bea752a7d98525d8a62c..b72e01f09599753248fb6414e1050d66f1190747 100644 (file)
@@ -1,6 +1,12 @@
-tcp->u_arg[0] = or1k_regs.gpr[3 + 0];
-tcp->u_arg[1] = or1k_regs.gpr[3 + 1];
-tcp->u_arg[2] = or1k_regs.gpr[3 + 2];
-tcp->u_arg[3] = or1k_regs.gpr[3 + 3];
-tcp->u_arg[4] = or1k_regs.gpr[3 + 4];
-tcp->u_arg[5] = or1k_regs.gpr[3 + 5];
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       tcp->u_arg[0] = or1k_regs.gpr[3 + 0];
+       tcp->u_arg[1] = or1k_regs.gpr[3 + 1];
+       tcp->u_arg[2] = or1k_regs.gpr[3 + 2];
+       tcp->u_arg[3] = or1k_regs.gpr[3 + 3];
+       tcp->u_arg[4] = or1k_regs.gpr[3 + 4];
+       tcp->u_arg[5] = or1k_regs.gpr[3 + 5];
+       return 1;
+}
index 237cf77fe95a9fe95d09556533e4bc6d3d3dfa66..66bcae31f57d08448840c96c3fea661fbd13cc73 100644 (file)
@@ -1,6 +1,12 @@
-tcp->u_arg[0] = ppc_regs.orig_gpr3;
-tcp->u_arg[1] = ppc_regs.gpr[4];
-tcp->u_arg[2] = ppc_regs.gpr[5];
-tcp->u_arg[3] = ppc_regs.gpr[6];
-tcp->u_arg[4] = ppc_regs.gpr[7];
-tcp->u_arg[5] = ppc_regs.gpr[8];
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       tcp->u_arg[0] = ppc_regs.orig_gpr3;
+       tcp->u_arg[1] = ppc_regs.gpr[4];
+       tcp->u_arg[2] = ppc_regs.gpr[5];
+       tcp->u_arg[3] = ppc_regs.gpr[6];
+       tcp->u_arg[4] = ppc_regs.gpr[7];
+       tcp->u_arg[5] = ppc_regs.gpr[8];
+       return 1;
+}
index 85f258511de43844bcd69c514d886f6950008c92..ebf6c6c4a5adcc461570311db1bcd0d776759583 100644 (file)
@@ -1,6 +1,12 @@
-tcp->u_arg[0] = s390_regset.orig_gpr2;
-tcp->u_arg[1] = s390_regset.gprs[3];
-tcp->u_arg[2] = s390_regset.gprs[4];
-tcp->u_arg[3] = s390_regset.gprs[5];
-tcp->u_arg[4] = s390_regset.gprs[6];
-tcp->u_arg[5] = s390_regset.gprs[7];
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       tcp->u_arg[0] = s390_regset.orig_gpr2;
+       tcp->u_arg[1] = s390_regset.gprs[3];
+       tcp->u_arg[2] = s390_regset.gprs[4];
+       tcp->u_arg[3] = s390_regset.gprs[5];
+       tcp->u_arg[4] = s390_regset.gprs[6];
+       tcp->u_arg[5] = s390_regset.gprs[7];
+       return 1;
+}
index 7c94f488529a2c49683e11ea3c9f777289207823..0b6c8819d31921339dea36eb43c80a4cece49261 100644 (file)
@@ -1,10 +1,19 @@
-static const int syscall_regs[MAX_ARGS] = {
-       4 * (REG_REG0+4), 4 * (REG_REG0+5), 4 * (REG_REG0+6),
-       4 * (REG_REG0+7), 4 * (REG_REG0  ), 4 * (REG_REG0+1)
-};
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       static const int syscall_regs[MAX_ARGS] = {
+               4 * (REG_REG0+4),
+               4 * (REG_REG0+5),
+               4 * (REG_REG0+6),
+               4 * (REG_REG0+7),
+               4 * (REG_REG0  ),
+               4 * (REG_REG0+1)
+       };
+       unsigned int i;
 
-unsigned int i;
-
-for (i = 0; i < tcp->s_ent->nargs; ++i)
-       if (upeek(tcp->pid, syscall_regs[i], &tcp->u_arg[i]) < 0)
-               return -1;
+       for (i = 0; i < tcp->s_ent->nargs; ++i)
+               if (upeek(tcp->pid, syscall_regs[i], &tcp->u_arg[i]) < 0)
+                       return -1;
+       return 1;
+}
index dcc8967ace098571ec3efd08ae573fdb3788e742..3970df8f73dfe6f7d1ae3efc245457e9c985d764 100644 (file)
@@ -1,7 +1,14 @@
-/* Registers used by SH5 Linux system calls for parameters */
-static const int syscall_regs[MAX_ARGS] = { 2, 3, 4, 5, 6, 7 };
-unsigned int i;
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       /* Registers used by SH5 Linux system calls for parameters */
+       static const int syscall_regs[MAX_ARGS] = { 2, 3, 4, 5, 6, 7 };
+       unsigned int i;
 
-for (i = 0; i < tcp->s_ent->nargs; ++i)
-       if (upeek(tcp->pid, REG_GENERAL(syscall_regs[i]), &tcp->u_arg[i]) < 0)
-               return -1;
+       for (i = 0; i < tcp->s_ent->nargs; ++i)
+               if (upeek(tcp->pid, REG_GENERAL(syscall_regs[i]),
+                         &tcp->u_arg[i]) < 0)
+                       return -1;
+       return 1;
+}
index 14bce8f959edfc93fd5e64a9bb088e999d4c3949..57b5488e47dfcdf2a8c5db124f308e824f342506 100644 (file)
@@ -1,6 +1,12 @@
-tcp->u_arg[0] = sparc_regs.u_regs[U_REG_O0 + 0];
-tcp->u_arg[1] = sparc_regs.u_regs[U_REG_O0 + 1];
-tcp->u_arg[2] = sparc_regs.u_regs[U_REG_O0 + 2];
-tcp->u_arg[3] = sparc_regs.u_regs[U_REG_O0 + 3];
-tcp->u_arg[4] = sparc_regs.u_regs[U_REG_O0 + 4];
-tcp->u_arg[5] = sparc_regs.u_regs[U_REG_O0 + 5];
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       tcp->u_arg[0] = sparc_regs.u_regs[U_REG_O0 + 0];
+       tcp->u_arg[1] = sparc_regs.u_regs[U_REG_O0 + 1];
+       tcp->u_arg[2] = sparc_regs.u_regs[U_REG_O0 + 2];
+       tcp->u_arg[3] = sparc_regs.u_regs[U_REG_O0 + 3];
+       tcp->u_arg[4] = sparc_regs.u_regs[U_REG_O0 + 4];
+       tcp->u_arg[5] = sparc_regs.u_regs[U_REG_O0 + 5];
+       return 1;
+}
index 33371d5c4e01493da547c10d311e043eaf529b68..b2043d394e62cbd1fb4b99a531a59d83fc8bfaf2 100644 (file)
@@ -1,6 +1,12 @@
-tcp->u_arg[0] = tile_regs.regs[0];
-tcp->u_arg[1] = tile_regs.regs[1];
-tcp->u_arg[2] = tile_regs.regs[2];
-tcp->u_arg[3] = tile_regs.regs[3];
-tcp->u_arg[4] = tile_regs.regs[4];
-tcp->u_arg[5] = tile_regs.regs[5];
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       tcp->u_arg[0] = tile_regs.regs[0];
+       tcp->u_arg[1] = tile_regs.regs[1];
+       tcp->u_arg[2] = tile_regs.regs[2];
+       tcp->u_arg[3] = tile_regs.regs[3];
+       tcp->u_arg[4] = tile_regs.regs[4];
+       tcp->u_arg[5] = tile_regs.regs[5];
+       return 1;
+}
index 0ccecdf07e1a3cb9766a301d225db8977c3b22a6..fa591fb63f085d4231b4424d5b8e01d4ee166a9d 100644 (file)
@@ -1,29 +1,35 @@
-if (x86_io.iov_len != sizeof(i386_regs)) {
-       /* x86-64 or x32 ABI */
-       tcp->u_arg[0] = x86_64_regs.rdi;
-       tcp->u_arg[1] = x86_64_regs.rsi;
-       tcp->u_arg[2] = x86_64_regs.rdx;
-       tcp->u_arg[3] = x86_64_regs.r10;
-       tcp->u_arg[4] = x86_64_regs.r8;
-       tcp->u_arg[5] = x86_64_regs.r9;
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       if (x86_io.iov_len != sizeof(i386_regs)) {
+               /* x86-64 or x32 ABI */
+               tcp->u_arg[0] = x86_64_regs.rdi;
+               tcp->u_arg[1] = x86_64_regs.rsi;
+               tcp->u_arg[2] = x86_64_regs.rdx;
+               tcp->u_arg[3] = x86_64_regs.r10;
+               tcp->u_arg[4] = x86_64_regs.r8;
+               tcp->u_arg[5] = x86_64_regs.r9;
 #ifdef X32
-       tcp->ext_arg[0] = x86_64_regs.rdi;
-       tcp->ext_arg[1] = x86_64_regs.rsi;
-       tcp->ext_arg[2] = x86_64_regs.rdx;
-       tcp->ext_arg[3] = x86_64_regs.r10;
-       tcp->ext_arg[4] = x86_64_regs.r8;
-       tcp->ext_arg[5] = x86_64_regs.r9;
+               tcp->ext_arg[0] = x86_64_regs.rdi;
+               tcp->ext_arg[1] = x86_64_regs.rsi;
+               tcp->ext_arg[2] = x86_64_regs.rdx;
+               tcp->ext_arg[3] = x86_64_regs.r10;
+               tcp->ext_arg[4] = x86_64_regs.r8;
+               tcp->ext_arg[5] = x86_64_regs.r9;
 #endif
-} else {
-       /* i386 ABI */
-       /* Zero-extend from 32 bits */
-       /* Use widen_to_long(tcp->u_arg[N]) in syscall handlers
-        * if you need to use *sign-extended* parameter.
-        */
-       tcp->u_arg[0] = (long)(uint32_t)i386_regs.ebx;
-       tcp->u_arg[1] = (long)(uint32_t)i386_regs.ecx;
-       tcp->u_arg[2] = (long)(uint32_t)i386_regs.edx;
-       tcp->u_arg[3] = (long)(uint32_t)i386_regs.esi;
-       tcp->u_arg[4] = (long)(uint32_t)i386_regs.edi;
-       tcp->u_arg[5] = (long)(uint32_t)i386_regs.ebp;
+       } else {
+               /* i386 ABI */
+               /* Zero-extend from 32 bits */
+               /* Use widen_to_long(tcp->u_arg[N]) in syscall handlers
+                * if you need to use *sign-extended* parameter.
+                */
+               tcp->u_arg[0] = (long)(uint32_t)i386_regs.ebx;
+               tcp->u_arg[1] = (long)(uint32_t)i386_regs.ecx;
+               tcp->u_arg[2] = (long)(uint32_t)i386_regs.edx;
+               tcp->u_arg[3] = (long)(uint32_t)i386_regs.esi;
+               tcp->u_arg[4] = (long)(uint32_t)i386_regs.edi;
+               tcp->u_arg[5] = (long)(uint32_t)i386_regs.ebp;
+       }
+       return 1;
 }
index dca8788e902f457c762b311c24182794b1f6a7a6..a9c933a9f66c56a9a35bf587336fb50d60f2c57a 100644 (file)
@@ -1,7 +1,20 @@
-/* arg0: a6, arg1: a3, arg2: a4, arg3: a5, arg4: a8, arg5: a9 */
-static const int xtensaregs[MAX_ARGS] = { 6, 3, 4, 5, 8, 9 };
-unsigned int i;
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       /* arg0: a6, arg1: a3, arg2: a4, arg3: a5, arg4: a8, arg5: a9 */
+       static const int xtensaregs[MAX_ARGS] = {
+               REG_A_BASE + 6,
+               REG_A_BASE + 3,
+               REG_A_BASE + 4,
+               REG_A_BASE + 5,
+               REG_A_BASE + 8,
+               REG_A_BASE + 9
+       };
+       unsigned int i;
 
-for (i = 0; i < tcp->s_ent->nargs; ++i)
-       if (upeek(tcp->pid, REG_A_BASE + xtensaregs[i], &tcp->u_arg[i]) < 0)
-               return -1;
+       for (i = 0; i < tcp->s_ent->nargs; ++i)
+               if (upeek(tcp->pid, xtensaregs[i], &tcp->u_arg[i]) < 0)
+                       return -1;
+       return 1;
+}
index 9cf3fc54eaca7cf85fe54be0bcb6b94e53df4cf9..91bd4fa9fb73de2bd3c39f65e4bd709ee9d6d217 100644 (file)
--- a/syscall.c
+++ b/syscall.c
@@ -1337,14 +1337,7 @@ get_scno(struct tcb *tcp)
        return 1;
 }
 
-/* Return -1 on error or 1 on success (never 0!) */
-static int
-get_syscall_args(struct tcb *tcp)
-{
 #include "get_syscall_args.c"
-       return 1;
-}
-
 #ifdef USE_GET_SYSCALL_RESULT_REGS
 # include "get_syscall_result.c"
 #endif