]> granicus.if.org Git - strace/commitdiff
Refactor get_syscall_args() and get_error()
authorDmitry V. Levin <ldv@altlinux.org>
Wed, 5 Dec 2018 06:47:35 +0000 (06:47 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Wed, 5 Dec 2018 16:10:05 +0000 (16:10 +0000)
* linux/*/get_error.c: Rename all arch-specific implementations
of get_error() to arch_get_error().
* linux/*/get_syscall_args.c: Rename all arch-specific implementations
of get_syscall_args() to arch_get_syscall_args().
* syscall.c (get_syscall_args, get_error): New functions.
(tamper_with_syscall_exiting, get_syscall_result): Do not clear
tcp->u_error before get_error() invocation as the latter does it now.

53 files changed:
linux/aarch64/get_error.c
linux/aarch64/get_syscall_args.c
linux/alpha/get_error.c
linux/alpha/get_syscall_args.c
linux/arc/get_error.c
linux/arc/get_syscall_args.c
linux/arm/get_error.c
linux/arm/get_syscall_args.c
linux/avr32/get_error.c
linux/avr32/get_syscall_args.c
linux/bfin/get_error.c
linux/bfin/get_syscall_args.c
linux/hppa/get_error.c
linux/hppa/get_syscall_args.c
linux/i386/get_error.c
linux/i386/get_syscall_args.c
linux/ia64/get_error.c
linux/ia64/get_syscall_args.c
linux/m68k/get_error.c
linux/m68k/get_syscall_args.c
linux/metag/get_error.c
linux/metag/get_syscall_args.c
linux/microblaze/get_error.c
linux/microblaze/get_syscall_args.c
linux/mips/get_error.c
linux/mips/get_syscall_args.c
linux/nios2/get_error.c
linux/nios2/get_syscall_args.c
linux/or1k/get_error.c
linux/or1k/get_syscall_args.c
linux/powerpc/get_error.c
linux/powerpc/get_syscall_args.c
linux/riscv/get_error.c
linux/riscv/get_syscall_args.c
linux/s390/get_error.c
linux/s390/get_syscall_args.c
linux/s390x/get_error.c
linux/s390x/get_syscall_args.c
linux/sh/get_error.c
linux/sh/get_syscall_args.c
linux/sh64/get_error.c
linux/sh64/get_syscall_args.c
linux/sparc/get_error.c
linux/sparc/get_syscall_args.c
linux/sparc64/get_error.c
linux/sparc64/get_syscall_args.c
linux/tile/get_error.c
linux/tile/get_syscall_args.c
linux/x86_64/get_error.c
linux/x86_64/get_syscall_args.c
linux/xtensa/get_error.c
linux/xtensa/get_syscall_args.c
syscall.c

index b3287a0deabd8c0dbd4e8bbbad6affdcfc139c79..ab9fad79ac30e22a5e9392cbe0895b76a4da5d0f 100644 (file)
@@ -1,11 +1,11 @@
 #include "negated_errno.h"
 
-#define get_error arm_get_error
+#define arch_get_error arm_get_error
 #include "arm/get_error.c"
-#undef get_error
+#undef arch_get_error
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (tcp->currpers == 1) {
                arm_get_error(tcp, check_errno);
index ea6e497dc7beb07f4dbb45da79500d315d998d8f..f167e809fe46ff0d028087f24f73c25afdb92e84 100644 (file)
@@ -1,10 +1,10 @@
-#define get_syscall_args arm_get_syscall_args
+#define arch_get_syscall_args arm_get_syscall_args
 #include "arm/get_syscall_args.c"
-#undef get_syscall_args
+#undef arch_get_syscall_args
 
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        if (tcp->currpers == 1)
                return arm_get_syscall_args(tcp);
index d4928d4be0da043ccaf44da411586fae2a0a93a3..379348b6ef94b851080fdc75b4726e4fdbf16603 100644 (file)
@@ -1,5 +1,5 @@
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (alpha_a3) {
                tcp->u_rval = -1;
index be61abfaa163e696a7d3f512be1d82ffe1f1fafc..2e39b844dfbf8a4bcdec32cd0408b1b975891925 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        unsigned int i;
 
index 39b5d1c0023d2a56498a1375872bb74703ad329e..88f9c83d2c9235d38fe26963337fe5e11093bc2c 100644 (file)
@@ -1,7 +1,7 @@
 #include "negated_errno.h"
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (check_errno && is_negated_errno(arc_regs.scratch.r0)) {
                tcp->u_rval = -1;
index 85e867f0e53164e3581f873941e9a573af2aced3..acf5778c6b3af436fe56895559943742c6cc93f6 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        unsigned long *arc_args = &arc_regs.scratch.r0;
        unsigned int i;
index 02d7e65de953d8cfc26ba4a43aa5b204724a0d3b..9cd53d2e755c057723b5acc8c369d384ece7fb56 100644 (file)
@@ -1,7 +1,7 @@
 #include "negated_errno.h"
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (check_errno && is_negated_errno(arm_regs.ARM_r0)) {
                tcp->u_rval = -1;
index 6be175019a3cfd8fef2d643900887b98eb4e878e..007b9e6056a4f9a8d23d9ea0f0a0a38172c1e836 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        tcp->u_arg[0] = arm_regs.uregs[0];
        tcp->u_arg[1] = arm_regs.uregs[1];
index b53c8f6c61962f682b2b97eb1a10d1c552439138..654e6b9835181b0da069fe7355996a12ca91a9eb 100644 (file)
@@ -1,7 +1,7 @@
 #include "negated_errno.h"
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (check_errno && is_negated_errno(avr32_regs.r12)) {
                tcp->u_rval = -1;
index e8c41198bb7ad8eb4d792ea163b03ef756b7b8f1..90fbfafb5c37ed3a80701862fcad3d9da5035485 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        tcp->u_arg[0] = avr32_regs.r12;
        tcp->u_arg[1] = avr32_regs.r11;
index 76e4099ddd1ee39cfd2a17e2de985514b82aaedb..98abd7222091c4909e6fa9ae8379b19e31f8bf4a 100644 (file)
@@ -1,7 +1,7 @@
 #include "negated_errno.h"
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (check_errno && is_negated_errno(bfin_r0)) {
                tcp->u_rval = -1;
index 506d3a99b082cc42fd33e09ae3be889a2ff94425..3d0e908fe95c190b00438d86bf064f177a6962ea 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        static const int argreg[MAX_ARGS] = {
                PT_R0, PT_R1, PT_R2, PT_R3, PT_R4, PT_R5
index 8b23f3056c97854db4643a48a347c45c85ca4abb..5ce449acc0e482f53680f0572dfa9a8c3fa31aec 100644 (file)
@@ -1,7 +1,7 @@
 #include "negated_errno.h"
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (check_errno && is_negated_errno(hppa_r28)) {
                tcp->u_rval = -1;
index aa938f509fffa85f8a9885084dc502477fc49c05..b58f8d70995161c33e68371ec7f7264790dd2e35 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        unsigned int i;
 
index 9e0be03efc3dcc3960e56ce038319eb67ea96507..89de81133299209dcba5866429a644837e4fcb60 100644 (file)
@@ -1,7 +1,7 @@
 #include "negated_errno.h"
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (check_errno && is_negated_errno(i386_regs.eax)) {
                tcp->u_rval = -1;
index d5de1d9593c67ee7fb356b7b8e676c2a4f38a49c..353bde029a3390fa76c28cf29008b434fd158c2a 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        tcp->u_arg[0] = i386_regs.ebx;
        tcp->u_arg[1] = i386_regs.ecx;
index 611107792667dd47e7b624f47b029828e3a50c07..1ce7be862b5f4b053b1ebceb2f5c259b21514249 100644 (file)
@@ -1,7 +1,7 @@
 #include "negated_errno.h"
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (ia64_regs.gr[10]) {
                tcp->u_rval = -1;
index ad73c547c97e514299bb5ca85a9abbfcc31486a7..040e5c7b68131323b1bac7f84497730a2550479d 100644 (file)
@@ -2,7 +2,7 @@
 
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        unsigned long *rbs_end =
                (unsigned long *) ia64_regs.ar[PT_AUR_BSP];
index edd69cfcc7b6feb705b93d3220bb720f09b8daf1..3a0472c11d48dea54defdbb066b6b6644b138644 100644 (file)
@@ -1,7 +1,7 @@
 #include "negated_errno.h"
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (check_errno && is_negated_errno(m68k_regs.d0)) {
                tcp->u_rval = -1;
index 8ec3d28165e42f296e987bf64d76b58d8027e770..a95db47123dbe5986e5b5fd8c1ae2263a031fa96 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        tcp->u_arg[0] = m68k_regs.d1;
        tcp->u_arg[1] = m68k_regs.d2;
index 5415b39b2b9cb095d3d34b98bd11ad36fc92303b..afdec9d7f7e5c39fd47a933c2840bd74467b7280 100644 (file)
@@ -1,7 +1,7 @@
 #include "negated_errno.h"
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        /* result pointer in D0Re0 (D0.0) */
        if (check_errno && is_negated_errno(metag_regs.dx[0][0])) {
index 4cae04f1dad3979ef493a5c9f88a14d8f43a0342..c11de14501ee96369cbf6cbfd2db13c74e67e706 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        unsigned int i;
 
index 1da69c0e722fbf287b8ff536f0d3b89ae3cba5a9..fb529ff8b967eb2f53fd5af6d8d3429b77175d09 100644 (file)
@@ -1,7 +1,7 @@
 #include "negated_errno.h"
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (check_errno && is_negated_errno(microblaze_r3)) {
                tcp->u_rval = -1;
index 1a3a48f970152d0a181017df980f18f193dd1311..19314204d5ea2d1b2a0de476c2331d901b705a05 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        unsigned int i;
 
index 4096de26ae7dadd143191bf0856892e6125efac4..6bf6b20eca0db8ed701f25fcea45ea6c98f309e5 100644 (file)
@@ -1,5 +1,5 @@
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (mips_REG_A3) {
                tcp->u_rval = -1;
index 3c9160e3f852c5b85ecc883fb19cb60c01b277d0..ec3602431f21b098a2cb422cb597974a5b345966 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
 #if defined LINUX_MIPSN64 || defined LINUX_MIPSN32
        tcp->u_arg[0] = mips_REG_A0;
index 1c91c0acfd8d9e482a77e7de54e573efe62518d2..0dc66fba2e1d58a45cff59d71bf814bf777e8136 100644 (file)
@@ -1,5 +1,5 @@
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        /*
         * The system call convention specifies that r2 contains the return
index 707f594a64e3a83dac60900421c3562bc0549618..d71d29cdf9f3907b64960c2588a32f15c13c4c19 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        tcp->u_arg[0] = nios2_regs.regs[4];
        tcp->u_arg[1] = nios2_regs.regs[5];
index f6a327132422138817e83c31062cd8a481f3484b..f697758190127725106e2c7c112333969bb6e6a5 100644 (file)
@@ -1,7 +1,7 @@
 #include "negated_errno.h"
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (check_errno && is_negated_errno(or1k_regs.gpr[11])) {
                tcp->u_rval = -1;
index b72e01f09599753248fb6414e1050d66f1190747..17e41dca5d958de47277e032657cefed8115a954 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        tcp->u_arg[0] = or1k_regs.gpr[3 + 0];
        tcp->u_arg[1] = or1k_regs.gpr[3 + 1];
index 8f10612d4a901f1160d8e3e141417fc8d263dc61..7aa7808be78fe3379eebbc0890c56b355ba041c9 100644 (file)
@@ -1,5 +1,5 @@
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (ppc_regs.ccr & 0x10000000) {
                tcp->u_rval = -1;
index b54377efcf12508ad3b470482d29447005b6bc71..471bf08fdfa18edfdc872ca483bcd3681e83434d 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        if (current_personality != 0) {
                /*
index 2b2594fc8d0f15fffcd8d9a10655bcac2782b741..8bec778e986fe9a93fb0bbd3fd88eef1a415270b 100644 (file)
@@ -1,7 +1,7 @@
 #include "negated_errno.h"
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (check_errno && is_negated_errno(riscv_regs.a0)) {
                tcp->u_rval = -1;
index 746e085cde9facd80b182afc83f52c5bba5c8cb6..a79fa4456d37e59fcff56709ff1e75e8fcb88222 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        tcp->u_arg[0] = riscv_regs.a0;
        tcp->u_arg[1] = riscv_regs.a1;
index 6f3925be7d2dc32f1bd3bfb47aac5650d0f06713..e7c163240c0562e7e89f4be9812e8146dd27fe8a 100644 (file)
@@ -5,7 +5,7 @@
 #endif
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (check_errno && is_negated_errno(ARCH_REGSET.gprs[2])) {
                tcp->u_rval = -1;
index 2c353807e56c374c6b601c3b2300e7513a2f6b3c..881dc95d96dcefeb901ec5a17264fa94ef73d796 100644 (file)
@@ -4,7 +4,7 @@
 
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        tcp->u_arg[0] = ARCH_REGSET.orig_gpr2;
        tcp->u_arg[1] = ARCH_REGSET.gprs[3];
index fe503f46c3c486c2168f15ba231a52313916c370..c30b317f2384aac914d26bf68c0b7a2c1d567d23 100644 (file)
@@ -1,19 +1,19 @@
 #include "negated_errno.h"
 
-#define get_error s390_get_error
+#define arch_get_error s390_get_error
 #define ARCH_REGSET s390_regset
 #include "../s390/get_error.c"
 #undef ARCH_REGSET
-#undef get_error
+#undef arch_get_error
 
-#define get_error s390x_get_error
+#define arch_get_error s390x_get_error
 #define ARCH_REGSET s390x_regset
 #include "../s390/get_error.c"
 #undef ARCH_REGSET
-#undef get_error
+#undef arch_get_error
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (tcp->currpers == 1)
                s390_get_error(tcp, check_errno);
index bed3d68fea695168750a073db0be3844a0fb2a1e..5dcab26137deecc54e772ec61347dad0ae414617 100644 (file)
@@ -1,18 +1,18 @@
-#define get_syscall_args s390_get_syscall_args
+#define arch_get_syscall_args s390_get_syscall_args
 #define ARCH_REGSET s390_regset
 #include "../s390/get_syscall_args.c"
 #undef ARCH_REGSET
-#undef get_syscall_args
+#undef arch_get_syscall_args
 
-#define get_syscall_args s390x_get_syscall_args
+#define arch_get_syscall_args s390x_get_syscall_args
 #define ARCH_REGSET s390x_regset
 #include "../s390/get_syscall_args.c"
 #undef ARCH_REGSET
-#undef get_syscall_args
+#undef arch_get_syscall_args
 
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        if (tcp->currpers == 1)
                return s390_get_syscall_args(tcp);
index 0bb6fc50af2c59c9f1264ea661a748a5d1cac672..2cd1a6b2295f3e15d682df5bd891f4d8255314f5 100644 (file)
@@ -1,7 +1,7 @@
 #include "negated_errno.h"
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (check_errno && is_negated_errno(sh_r0)) {
                tcp->u_rval = -1;
index b4ee1dd3818dae5971ec52dcce76f34ee726b446..15f77b918ba43704d72a72ef8e3c0e43c3e3370f 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        static const int syscall_regs[MAX_ARGS] = {
                4 * (REG_REG0+4),
index 0a9001d8abd8291a39e1fcf684729dcb059fa79d..b3971600a81c8ea67dee7e6f106a14cb9353685b 100644 (file)
@@ -1,7 +1,7 @@
 #include "negated_errno.h"
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (check_errno && is_negated_errno(sh64_r9)) {
                tcp->u_rval = -1;
index e35c350748a608c737cbb5f4c03262eac7000341..5a3873263870b3f914774c7094f1703d1be0808f 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_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 };
index b41bfb373f4172b8e7650aa6fa341e06945b71be..03d774b0d11cf7fac8cc525e06bd29f63e53f8ba 100644 (file)
@@ -1,7 +1,7 @@
 #include <asm/psr.h>
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (sparc_regs.psr & PSR_C) {
                tcp->u_rval = -1;
index 57b5488e47dfcdf2a8c5db124f308e824f342506..0ab8b3c25d5462b8882b5d9bfe4d97dd95ddc75a 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_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];
index 8f8978b6b3a4d3903f27f4bfab99d40d248f2058..fcf60ae6966e2dda2ae4a60d566520ba15ad2f22 100644 (file)
@@ -1,5 +1,5 @@
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (sparc_regs.tstate & 0x1100000000UL) {
                tcp->u_rval = -1;
index f5c1aa6f6dfbcc16636967401ee4450416737dba..00dbf894cb978f3ecce34e4ae11cf93e42b9bada 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        if (tcp->currpers == 1) {
                /*
index 1f007bad8c8aec3eb2a56559eaa6295d0303e145..ae8ecbd37a76984e3237d7fb54227684e623becc 100644 (file)
@@ -1,7 +1,7 @@
 #include "negated_errno.h"
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        /*
         * The standard tile calling convention returns the value
index b2043d394e62cbd1fb4b99a531a59d83fc8bfaf2..c27339bd5c578e96070a9092b25883b544403002 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        tcp->u_arg[0] = tile_regs.regs[0];
        tcp->u_arg[1] = tile_regs.regs[1];
index ac47ab58ac8e39937a7e462b91cd5dce964f42d4..927e46ca696446ded45dd7e3d800bed246bb4609 100644 (file)
@@ -1,7 +1,7 @@
 #include "negated_errno.h"
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        /*
         * In X32, return value is 64-bit (llseek uses one).
index f285ac32e7116bf41b76d775aa75ec214fdb42f2..45b0460df0219c83c035a8e6fccbaa98595cbd65 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        if (x86_io.iov_len != sizeof(i386_regs)) {
                /* x86-64 or x32 ABI */
index f49cc46784a21f125112ecc4670de8db0b8c6559..0c38470c368c0109d428da2aef662b733d426098 100644 (file)
@@ -1,7 +1,7 @@
 #include "negated_errno.h"
 
 static void
-get_error(struct tcb *tcp, const bool check_errno)
+arch_get_error(struct tcb *tcp, const bool check_errno)
 {
        if (check_errno && is_negated_errno(xtensa_a2)) {
                tcp->u_rval = -1;
index 2a20cdb1f62e601dea0dadb630b70c78aa1dc31b..ca3aeec589e0e744ac91d7a9830f2b6ef5af1aa1 100644 (file)
@@ -1,6 +1,6 @@
 /* Return -1 on error or 1 on success (never 0!). */
 static int
-get_syscall_args(struct tcb *tcp)
+arch_get_syscall_args(struct tcb *tcp)
 {
        /* arg0: a6, arg1: a3, arg2: a4, arg3: a5, arg4: a8, arg5: a9 */
        static const int xtensaregs[MAX_ARGS] = {
index 9107fe50750a59bdfd338f76703fd531d60f2851..9ff95591007521dae6f3b9663a5243ce53391604 100644 (file)
--- a/syscall.c
+++ b/syscall.c
@@ -477,9 +477,11 @@ print_err_ret(kernel_ulong_t ret, unsigned long u_error)
 static long get_regs(struct tcb *);
 static int get_syscall_args(struct tcb *);
 static int get_syscall_result(struct tcb *);
+static void get_error(struct tcb *, bool);
 static int arch_get_scno(struct tcb *tcp);
 static int arch_set_scno(struct tcb *, kernel_ulong_t);
-static void get_error(struct tcb *, const bool);
+static int arch_get_syscall_args(struct tcb *);
+static void arch_get_error(struct tcb *, bool);
 static int arch_set_error(struct tcb *);
 static int arch_set_success(struct tcb *);
 
@@ -591,10 +593,8 @@ tamper_with_syscall_exiting(struct tcb *tcp)
                }
        }
 
-       if (update_tcb) {
-               tcp->u_error = 0;
+       if (update_tcb)
                get_error(tcp, !(tcp->s_ent->sys_flags & SYSCALL_NEVER_FAILS));
-       }
 
        return 0;
 }
@@ -1265,6 +1265,12 @@ get_scno(struct tcb *tcp)
        return 1;
 }
 
+static int
+get_syscall_args(struct tcb *tcp)
+{
+       return arch_get_syscall_args(tcp);
+}
+
 #ifdef ptrace_getregset_or_getregs
 # define get_syscall_result_regs get_regs
 #else
@@ -1281,7 +1287,6 @@ get_syscall_result(struct tcb *tcp)
 {
        if (get_syscall_result_regs(tcp) < 0)
                return -1;
-       tcp->u_error = 0;
        get_error(tcp,
                  (!(tcp->s_ent->sys_flags & SYSCALL_NEVER_FAILS)
                        || syscall_tampered(tcp))
@@ -1290,6 +1295,13 @@ get_syscall_result(struct tcb *tcp)
        return 1;
 }
 
+static void
+get_error(struct tcb *tcp, const bool check_errno)
+{
+       tcp->u_error = 0;
+       arch_get_error(tcp, check_errno);
+}
+
 #include "get_scno.c"
 #include "set_scno.c"
 #include "get_syscall_args.c"