| From e8f06676c6c88e12cd5f4f81a839b7111c683596 Mon Sep 17 00:00:00 2001 |
| From: Richard Henderson <richard.henderson@linaro.org> |
| Date: Wed, 28 Feb 2024 10:25:16 -1000 |
| Subject: [PATCH 3/5] linux-user: Add strace for shmat |
| |
| Upstream-Status: Submitted [https://www.mail-archive.com/qemu-devel@nongnu.org/msg1026793.html] |
| |
| Signed-off-by: Richard Henderson <richard.henderson@linaro.org> |
| Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> |
| --- |
| linux-user/strace.c | 23 +++++++++++++++++++++++ |
| linux-user/strace.list | 2 +- |
| 2 files changed, 24 insertions(+), 1 deletion(-) |
| |
| diff --git a/linux-user/strace.c b/linux-user/strace.c |
| index cf26e5526..47d6ec326 100644 |
| --- a/linux-user/strace.c |
| +++ b/linux-user/strace.c |
| @@ -670,6 +670,25 @@ print_semctl(CPUArchState *cpu_env, const struct syscallname *name, |
| } |
| #endif |
| |
| +static void |
| +print_shmat(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) |
| +{ |
| + static const struct flags shmat_flags[] = { |
| + FLAG_GENERIC(SHM_RND), |
| + FLAG_GENERIC(SHM_REMAP), |
| + FLAG_GENERIC(SHM_RDONLY), |
| + FLAG_GENERIC(SHM_EXEC), |
| + }; |
| + |
| + print_syscall_prologue(name); |
| + print_raw_param(TARGET_ABI_FMT_ld, arg0, 0); |
| + print_pointer(arg1, 0); |
| + print_flags(shmat_flags, arg2, 1); |
| + print_syscall_epilogue(name); |
| +} |
| + |
| #ifdef TARGET_NR_ipc |
| static void |
| print_ipc(CPUArchState *cpu_env, const struct syscallname *name, |
| @@ -683,6 +702,10 @@ print_ipc(CPUArchState *cpu_env, const struct syscallname *name, |
| print_ipc_cmd(arg3); |
| qemu_log(",0x" TARGET_ABI_FMT_lx ")", arg4); |
| break; |
| + case IPCOP_shmat: |
| + print_shmat(cpu_env, &(const struct syscallname){ .name = "shmat" }, |
| + arg1, arg4, arg2, 0, 0, 0); |
| + break; |
| default: |
| qemu_log(("%s(" |
| TARGET_ABI_FMT_ld "," |
| diff --git a/linux-user/strace.list b/linux-user/strace.list |
| index 6655d4f26..dfd4237d1 100644 |
| --- a/linux-user/strace.list |
| +++ b/linux-user/strace.list |
| @@ -1398,7 +1398,7 @@ |
| { TARGET_NR_sgetmask, "sgetmask" , NULL, NULL, NULL }, |
| #endif |
| #ifdef TARGET_NR_shmat |
| -{ TARGET_NR_shmat, "shmat" , NULL, NULL, print_syscall_ret_addr }, |
| +{ TARGET_NR_shmat, "shmat" , NULL, print_shmat, print_syscall_ret_addr }, |
| #endif |
| #ifdef TARGET_NR_shmctl |
| { TARGET_NR_shmctl, "shmctl" , NULL, NULL, NULL }, |
| -- |
| 2.34.1 |
| |