[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 2/6] linux-user: Add support for strace for statx() s
From: |
Laurent Vivier |
Subject: |
[Qemu-devel] [PULL 2/6] linux-user: Add support for strace for statx() syscall |
Date: |
Tue, 2 Jul 2019 17:05:41 +0200 |
From: Jim Wilson <address@hidden>
All of the flags need to be conditional as old systems don't have
statx support. Otherwise it works the same as other stat family
syscalls. This requires the pending patch to add statx support.
Tested on Ubuntu 16.04 (no host statx) and Ubuntu 19.04 (with host
statx) using a riscv32-linux toolchain.
Signed-off-by: Jim Wilson <address@hidden>
Signed-off-by: Aleksandar Markovic <address@hidden>
Reviewed-by: Laurent Vivier <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Laurent Vivier <address@hidden>
---
linux-user/strace.c | 86 ++++++++++++++++++++++++++++++++++++++++++
linux-user/strace.list | 3 ++
2 files changed, 89 insertions(+)
diff --git a/linux-user/strace.c b/linux-user/strace.c
index 6f72a74c0918..c80e93b5db8a 100644
--- a/linux-user/strace.c
+++ b/linux-user/strace.c
@@ -976,6 +976,76 @@ UNUSED static struct flags msg_flags[] = {
FLAG_END,
};
+UNUSED static struct flags statx_flags[] = {
+#ifdef AT_EMPTY_PATH
+ FLAG_GENERIC(AT_EMPTY_PATH),
+#endif
+#ifdef AT_NO_AUTOMOUNT
+ FLAG_GENERIC(AT_NO_AUTOMOUNT),
+#endif
+#ifdef AT_SYMLINK_NOFOLLOW
+ FLAG_GENERIC(AT_SYMLINK_NOFOLLOW),
+#endif
+#ifdef AT_STATX_SYNC_AS_STAT
+ FLAG_GENERIC(AT_STATX_SYNC_AS_STAT),
+#endif
+#ifdef AT_STATX_FORCE_SYNC
+ FLAG_GENERIC(AT_STATX_FORCE_SYNC),
+#endif
+#ifdef AT_STATX_DONT_SYNC
+ FLAG_GENERIC(AT_STATX_DONT_SYNC),
+#endif
+ FLAG_END,
+};
+
+UNUSED static struct flags statx_mask[] = {
+/* This must come first, because it includes everything. */
+#ifdef STATX_ALL
+ FLAG_GENERIC(STATX_ALL),
+#endif
+/* This must come second; it includes everything except STATX_BTIME. */
+#ifdef STATX_BASIC_STATS
+ FLAG_GENERIC(STATX_BASIC_STATS),
+#endif
+#ifdef STATX_TYPE
+ FLAG_GENERIC(STATX_TYPE),
+#endif
+#ifdef STATX_MODE
+ FLAG_GENERIC(STATX_MODE),
+#endif
+#ifdef STATX_NLINK
+ FLAG_GENERIC(STATX_NLINK),
+#endif
+#ifdef STATX_UID
+ FLAG_GENERIC(STATX_UID),
+#endif
+#ifdef STATX_GID
+ FLAG_GENERIC(STATX_GID),
+#endif
+#ifdef STATX_ATIME
+ FLAG_GENERIC(STATX_ATIME),
+#endif
+#ifdef STATX_MTIME
+ FLAG_GENERIC(STATX_MTIME),
+#endif
+#ifdef STATX_CTIME
+ FLAG_GENERIC(STATX_CTIME),
+#endif
+#ifdef STATX_INO
+ FLAG_GENERIC(STATX_INO),
+#endif
+#ifdef STATX_SIZE
+ FLAG_GENERIC(STATX_SIZE),
+#endif
+#ifdef STATX_BLOCKS
+ FLAG_GENERIC(STATX_BLOCKS),
+#endif
+#ifdef STATX_BTIME
+ FLAG_GENERIC(STATX_BTIME),
+#endif
+ FLAG_END,
+};
+
/*
* print_xxx utility functions. These are used to print syscall
* parameters in certain format. All of these have parameter
@@ -2611,6 +2681,22 @@ print_tgkill(const struct syscallname *name,
}
#endif
+#ifdef TARGET_NR_statx
+static void
+print_statx(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_at_dirfd(arg0, 0);
+ print_string(arg1, 0);
+ print_flags(statx_flags, arg2, 0);
+ print_flags(statx_mask, arg3, 0);
+ print_pointer(arg4, 1);
+ print_syscall_epilogue(name);
+}
+#endif
+
/*
* An array of all of the syscalls we know about
*/
diff --git a/linux-user/strace.list b/linux-user/strace.list
index db21ce41779f..63a946642d29 100644
--- a/linux-user/strace.list
+++ b/linux-user/strace.list
@@ -1650,3 +1650,6 @@
#ifdef TARGET_NR_atomic_barrier
{ TARGET_NR_atomic_barrier, "atomic_barrier", NULL, NULL, NULL },
#endif
+#ifdef TARGET_NR_statx
+{ TARGET_NR_statx, "statx", NULL, print_statx, NULL },
+#endif
--
2.21.0
- Re: [Qemu-devel] [PULL 0/6] Linux user for 4.1 patches, Peter Maydell, 2019/07/01
- [Qemu-devel] [PULL 0/6] Linux user for 4.1 patches, Laurent Vivier, 2019/07/02
- [Qemu-devel] [PULL 1/6] linux-user: Add support for translation of statx() syscall, Laurent Vivier, 2019/07/02
- [Qemu-devel] [PULL 6/6] linux-user: move QEMU_IFLA_BR_MULTI_BOOLOPT to the good function, Laurent Vivier, 2019/07/02
- [Qemu-devel] [PULL 2/6] linux-user: Add support for strace for statx() syscall,
Laurent Vivier <=
- [Qemu-devel] [PULL 5/6] linux-user: Handle EXCP_FPE properly for MIPS, Laurent Vivier, 2019/07/02
- [Qemu-devel] [PULL 4/6] linux-user: Introduce TARGET_HAVE_ARCH_STRUCT_FLOCK, Laurent Vivier, 2019/07/02
- [Qemu-devel] [PULL 3/6] linux-user: Fix target_flock structure for MIPS O64 ABI, Laurent Vivier, 2019/07/02
- Re: [Qemu-devel] [PULL 0/6] Linux user for 4.1 patches, no-reply, 2019/07/02
- Re: [Qemu-devel] [PULL 0/6] Linux user for 4.1 patches, no-reply, 2019/07/02
- Re: [Qemu-devel] [PULL 0/6] Linux user for 4.1 patches, no-reply, 2019/07/02
- Re: [Qemu-devel] [PULL 0/6] Linux user for 4.1 patches, no-reply, 2019/07/02
- Re: [Qemu-devel] [PULL 0/6] Linux user for 4.1 patches, no-reply, 2019/07/03
- Re: [Qemu-devel] [PULL 0/6] Linux user for 4.1 patches, no-reply, 2019/07/03
- Re: [Qemu-devel] [PULL 0/6] Linux user for 4.1 patches, Peter Maydell, 2019/07/03