From: Laurent Vivier <laurent@vivier.eu>
To: qemu-devel@nongnu.org
Cc: Helge Deller <deller@gmx.de>, Laurent Vivier <laurent@vivier.eu>
Subject: [PULL 09/28] linux-user: Add strace for prlimit64() syscall
Date: Wed, 8 Mar 2023 14:28:38 +0100 [thread overview]
Message-ID: <20230308132857.161793-10-laurent@vivier.eu> (raw)
In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu>
From: Helge Deller <deller@gmx.de>
Add proper prlimit64() strace output.
Signed-off-by: Helge Deller <deller@gmx.de>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20221222190639.124078-1-deller@gmx.de>
[lvivier: use print_raw_param64()]
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---
linux-user/strace.c | 88 ++++++++++++++++++++++++++++++++++++++++++
linux-user/strace.list | 3 +-
2 files changed, 90 insertions(+), 1 deletion(-)
diff --git a/linux-user/strace.c b/linux-user/strace.c
index 2cea93aec46e..e9757ed9adee 100644
--- a/linux-user/strace.c
+++ b/linux-user/strace.c
@@ -3866,6 +3866,94 @@ print_futex(CPUArchState *cpu_env, const struct syscallname *name,
}
#endif
+#ifdef TARGET_NR_prlimit64
+static const char *target_ressource_string(abi_ulong r)
+{
+ #define RET_RES_ENTRY(res) case TARGET_##res: return #res;
+ switch (r) {
+ RET_RES_ENTRY(RLIMIT_AS);
+ RET_RES_ENTRY(RLIMIT_CORE);
+ RET_RES_ENTRY(RLIMIT_CPU);
+ RET_RES_ENTRY(RLIMIT_DATA);
+ RET_RES_ENTRY(RLIMIT_FSIZE);
+ RET_RES_ENTRY(RLIMIT_LOCKS);
+ RET_RES_ENTRY(RLIMIT_MEMLOCK);
+ RET_RES_ENTRY(RLIMIT_MSGQUEUE);
+ RET_RES_ENTRY(RLIMIT_NICE);
+ RET_RES_ENTRY(RLIMIT_NOFILE);
+ RET_RES_ENTRY(RLIMIT_NPROC);
+ RET_RES_ENTRY(RLIMIT_RSS);
+ RET_RES_ENTRY(RLIMIT_RTPRIO);
+#ifdef RLIMIT_RTTIME
+ RET_RES_ENTRY(RLIMIT_RTTIME);
+#endif
+ RET_RES_ENTRY(RLIMIT_SIGPENDING);
+ RET_RES_ENTRY(RLIMIT_STACK);
+ default:
+ return NULL;
+ }
+ #undef RET_RES_ENTRY
+}
+
+static void
+print_rlimit64(abi_ulong rlim_addr, int last)
+{
+ if (rlim_addr) {
+ struct target_rlimit64 *rl;
+
+ rl = lock_user(VERIFY_READ, rlim_addr, sizeof(*rl), 1);
+ if (!rl) {
+ print_pointer(rlim_addr, last);
+ return;
+ }
+ print_raw_param64("{rlim_cur=%" PRId64, tswap64(rl->rlim_cur), 0);
+ print_raw_param64("rlim_max=%" PRId64 "}", tswap64(rl->rlim_max),
+ last);
+ unlock_user(rl, rlim_addr, 0);
+ } else {
+ qemu_log("NULL%s", get_comma(last));
+ }
+}
+
+static void
+print_prlimit64(CPUArchState *cpu_env, const struct syscallname *name,
+ abi_long arg0, abi_long arg1, abi_long arg2,
+ abi_long arg3, abi_long arg4, abi_long arg5)
+{
+ const char *rlim_name;
+
+ print_syscall_prologue(name);
+ print_raw_param("%d", arg0, 0);
+ rlim_name = target_ressource_string(arg1);
+ if (rlim_name) {
+ qemu_log("%s,", rlim_name);
+ } else {
+ print_raw_param("%d", arg1, 0);
+ }
+ print_rlimit64(arg2, 0);
+ print_pointer(arg3, 1);
+ print_syscall_epilogue(name);
+}
+
+static void
+print_syscall_ret_prlimit64(CPUArchState *cpu_env,
+ const struct syscallname *name,
+ abi_long ret, abi_long arg0, abi_long arg1,
+ abi_long arg2, abi_long arg3, abi_long arg4,
+ abi_long arg5)
+{
+ if (!print_syscall_err(ret)) {
+ qemu_log(TARGET_ABI_FMT_ld, ret);
+ if (arg3) {
+ qemu_log(" (");
+ print_rlimit64(arg3, 1);
+ qemu_log(")");
+ }
+ }
+ qemu_log("\n");
+}
+#endif
+
#ifdef TARGET_NR_kill
static void
print_kill(CPUArchState *cpu_env, const struct syscallname *name,
diff --git a/linux-user/strace.list b/linux-user/strace.list
index d8acbeec6093..f776c73fa04c 100644
--- a/linux-user/strace.list
+++ b/linux-user/strace.list
@@ -1074,7 +1074,8 @@
{ TARGET_NR_preadv, "preadv" , NULL, NULL, NULL },
#endif
#ifdef TARGET_NR_prlimit64
-{ TARGET_NR_prlimit64, "prlimit64" , NULL, NULL, NULL },
+{ TARGET_NR_prlimit64, "prlimit64" , NULL, print_prlimit64,
+ print_syscall_ret_prlimit64 },
#endif
#ifdef TARGET_NR_process_vm_readv
{ TARGET_NR_process_vm_readv, "process_vm_readv" , NULL, NULL, NULL },
--
2.39.2
next prev parent reply other threads:[~2023-03-08 13:30 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-08 13:28 [PULL 00/28] Linux user for 8.0 patches Laurent Vivier
2023-03-08 13:28 ` [PULL 01/28] linux-user: Fix access to /proc/self/exe Laurent Vivier
2023-03-08 13:28 ` [PULL 02/28] linux-user: fix timerfd read endianness conversion Laurent Vivier
2023-03-08 13:28 ` [PULL 03/28] linux-user: add target to host netlink conversions Laurent Vivier
2023-03-08 13:28 ` [PULL 04/28] linux-user: Fix unaligned memory access in prlimit64 syscall Laurent Vivier
2023-03-08 13:28 ` [PULL 05/28] linux-user: add support for xtensa FDPIC Laurent Vivier
2023-03-08 13:28 ` [PULL 06/28] linux-user: fill out task state in /proc/self/stat Laurent Vivier
2023-03-08 13:28 ` [PULL 07/28] linux-user: Fix brk() to release pages Laurent Vivier
2023-03-08 13:28 ` [PULL 08/28] linux-user: Provide print_raw_param64() for 64-bit values Laurent Vivier
2023-03-08 13:28 ` Laurent Vivier [this message]
2023-03-08 13:28 ` [PULL 10/28] linux-user: fix sockaddr_in6 endianness Laurent Vivier
2023-03-08 13:28 ` [PULL 11/28] linux-user: handle netlink flag NLA_F_NESTED Laurent Vivier
2023-03-08 13:28 ` [PULL 12/28] linux-user: Add translation for argument of msync() Laurent Vivier
2023-03-08 13:28 ` [PULL 13/28] linux-user: Emulate CLONE_PIDFD flag in clone() Laurent Vivier
2023-03-08 13:28 ` [PULL 14/28] linux-user/sparc: Tidy syscall trap Laurent Vivier
2023-03-08 13:28 ` [PULL 15/28] linux-user/sparc: Tidy syscall error return Laurent Vivier
2023-03-08 13:28 ` [PULL 16/28] linux-user/sparc: Use TT_TRAP for flush windows Laurent Vivier
2023-03-08 13:28 ` [PULL 17/28] linux-user/sparc: Tidy window spill/fill traps Laurent Vivier
2023-03-08 13:28 ` [PULL 18/28] linux-user/sparc: Fix sparc64_{get, set}_context traps Laurent Vivier
2023-03-08 13:28 ` [PULL 19/28] linux-user/sparc: Handle software breakpoint trap Laurent Vivier
2023-03-08 13:28 ` [PULL 20/28] linux-user/sparc: Handle division by zero traps Laurent Vivier
2023-03-08 13:28 ` [PULL 21/28] linux-user/sparc: Handle getcc, setcc, getpsr traps Laurent Vivier
2023-03-08 13:28 ` [PULL 22/28] linux-user/sparc: Handle priviledged opcode trap Laurent Vivier
2023-03-08 13:28 ` [PULL 23/28] linux-user/sparc: Handle privilidged action trap Laurent Vivier
2023-03-08 13:28 ` [PULL 24/28] linux-user/sparc: Handle coprocessor disabled trap Laurent Vivier
2023-03-08 13:28 ` [PULL 25/28] linux-user/sparc: Handle unimplemented flush trap Laurent Vivier
2023-03-08 13:28 ` [PULL 26/28] linux-user/sparc: Handle floating-point exceptions Laurent Vivier
2023-03-08 13:28 ` [PULL 27/28] linux-user/sparc: Handle tag overflow traps Laurent Vivier
2023-03-08 13:28 ` [PULL 28/28] linux-user: fix bug about incorrect base addresss of gdt on i386 and x86_64 Laurent Vivier
2023-03-10 10:35 ` [PULL 00/28] Linux user for 8.0 patches Peter Maydell
-- strict thread matches above, loose matches on Subject: below --
2023-03-10 22:08 Laurent Vivier
2023-03-10 22:09 ` [PULL 09/28] linux-user: Add strace for prlimit64() syscall Laurent Vivier
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=20230308132857.161793-10-laurent@vivier.eu \
--to=laurent@vivier.eu \
--cc=deller@gmx.de \
--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 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 NNTP newsgroup(s).