From: Filip Bozuta <filip.bozuta@syrmia.com>
To: qemu-devel@nongnu.org
Cc: laurent@vivier.eu
Subject: [PATCH 1/5] linux-user: Add strace support for a group of syscalls
Date: Tue, 2 Jun 2020 13:53:27 +0200 [thread overview]
Message-ID: <20200602115331.1659-2-filip.bozuta@syrmia.com> (raw)
In-Reply-To: <20200602115331.1659-1-filip.bozuta@syrmia.com>
From: Filip Bozuta <Filip.Bozuta@syrmia.com>
This patch implements strace argument printing functionality for following syscalls:
*acct - switch process accounting on or off
int acct(const char *filename)
man page: https://www.man7.org/linux/man-pages/man2/acct.2.html
*fsync, fdatasync - synchronize a file's in-core state with storage device
int fsync(int fd)
int fdatasync(int fd)
man page: https://www.man7.org/linux/man-pages/man2/fsync.2.html
*listen - listen for connections on a socket
int listen(int sockfd, int backlog)
man page: https://www.man7.org/linux/man-pages/man2/listen.2.html
Implementation notes:
Syscall acct() takes string as its only argument and thus a separate
print function "print_acct" is stated in file "strace.list". This
function is defined and implemented in "strace.c" by using an
existing function used to print string arguments: "print_string()".
All the other syscalls have only primitive argument types, so the
rest of the implementation was handled by stating an appropriate
printing format in file "strace.list".
Signed-off-by: Filip Bozuta <Filip.Bozuta@syrmia.com>
---
linux-user/strace.c | 13 ++++++++++++-
linux-user/strace.list | 8 ++++----
2 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/linux-user/strace.c b/linux-user/strace.c
index 0d9095c674..c578876d22 100644
--- a/linux-user/strace.c
+++ b/linux-user/strace.c
@@ -1353,6 +1353,18 @@ print_access(const struct syscallname *name,
}
#endif
+#ifdef TARGET_NR_acct
+static void
+print_acct(const struct syscallname *name,
+ abi_long arg0, abi_long arg1, abi_long arg2,
+ abi_long arg3, abi_long arg4, abi_long arg5)
+{
+ print_syscall_prologue(name);
+ print_string(arg0, 1);
+ print_syscall_epilogue(name);
+}
+#endif
+
#ifdef TARGET_NR_brk
static void
print_brk(const struct syscallname *name,
@@ -1617,7 +1629,6 @@ print_fcntl(const struct syscallname *name,
#define print_fcntl64 print_fcntl
#endif
-
#ifdef TARGET_NR_futimesat
static void
print_futimesat(const struct syscallname *name,
diff --git a/linux-user/strace.list b/linux-user/strace.list
index d49a1e92a8..fb9799e7e6 100644
--- a/linux-user/strace.list
+++ b/linux-user/strace.list
@@ -13,7 +13,7 @@
{ TARGET_NR_access, "access" , NULL, print_access, NULL },
#endif
#ifdef TARGET_NR_acct
-{ TARGET_NR_acct, "acct" , NULL, NULL, NULL },
+{ TARGET_NR_acct, "acct" , NULL, print_acct, NULL },
#endif
#ifdef TARGET_NR_add_key
{ TARGET_NR_add_key, "add_key" , NULL, NULL, NULL },
@@ -215,7 +215,7 @@
{ TARGET_NR_fcntl64, "fcntl64" , NULL, print_fcntl64, NULL },
#endif
#ifdef TARGET_NR_fdatasync
-{ TARGET_NR_fdatasync, "fdatasync" , NULL, NULL, NULL },
+{ TARGET_NR_fdatasync, "fdatasync" , "%s(%d)", NULL, NULL },
#endif
#ifdef TARGET_NR_fgetxattr
{ TARGET_NR_fgetxattr, "fgetxattr" , NULL, NULL, NULL },
@@ -251,7 +251,7 @@
{ TARGET_NR_fstatfs64, "fstatfs64" , "%s(%d,%p)", NULL, NULL },
#endif
#ifdef TARGET_NR_fsync
-{ TARGET_NR_fsync, "fsync" , NULL, NULL, NULL },
+{ TARGET_NR_fsync, "fsync" , "%s(%d)", NULL, NULL },
#endif
#ifdef TARGET_NR_ftime
{ TARGET_NR_ftime, "ftime" , NULL, NULL, NULL },
@@ -492,7 +492,7 @@
{ TARGET_NR_Linux, "Linux" , NULL, NULL, NULL },
#endif
#ifdef TARGET_NR_listen
-{ TARGET_NR_listen, "listen" , NULL, NULL, NULL },
+{ TARGET_NR_listen, "listen" , "%s(%d,%d)", NULL, NULL },
#endif
#ifdef TARGET_NR_listxattr
{ TARGET_NR_listxattr, "listxattr" , NULL, NULL, NULL },
--
2.17.1
next prev parent reply other threads:[~2020-06-02 13:11 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-02 11:53 [PATCH 0/5] Add strace support for printing arguments of selected syscalls Filip Bozuta
2020-06-02 11:53 ` Filip Bozuta [this message]
2020-06-03 14:23 ` [PATCH 1/5] linux-user: Add strace support for a group of syscalls Laurent Vivier
2020-06-02 11:53 ` [PATCH 2/5] linux-user: Add strace support for printing argument of syscalls used for extend attributes Filip Bozuta
2020-06-03 16:20 ` Laurent Vivier
2020-06-02 11:53 ` [PATCH 3/5] linux-user: Add strace support for printing arguments of lseek() Filip Bozuta
2020-06-03 14:41 ` Laurent Vivier
2020-06-02 11:53 ` [PATCH 4/5] linux-user: Add strace support for printing arguments of chown()/lchown() Filip Bozuta
2020-06-03 14:44 ` Laurent Vivier
2020-06-02 11:53 ` [PATCH 5/5] linux-user: Add strace support for printing arguments of fallocate() Filip Bozuta
2020-06-03 14:54 ` Laurent Vivier
2020-06-02 13:42 ` [PATCH 0/5] Add strace support for printing arguments of selected syscalls no-reply
2020-06-03 14:43 ` Alex Bennée
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200602115331.1659-2-filip.bozuta@syrmia.com \
--to=filip.bozuta@syrmia.com \
--cc=laurent@vivier.eu \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.