diff mbox series

[v3,10/12] linux-user: Show timespec on strace for futex()

Message ID 20220918194555.83535-11-deller@gmx.de (mailing list archive)
State New, archived
Headers show
Series linux-user: Add more syscalls, enhance tracing & logging enhancements | expand

Commit Message

Helge Deller Sept. 18, 2022, 7:45 p.m. UTC
Signed-off-by: Helge Deller <deller@gmx.de>
---
 linux-user/strace.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

--
2.37.3

Comments

Laurent Vivier Sept. 25, 2022, 3:38 p.m. UTC | #1
Le 18/09/2022 à 21:45, Helge Deller a écrit :
> Signed-off-by: Helge Deller <deller@gmx.de>
> ---
>   linux-user/strace.c | 11 ++++++++++-
>   1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/linux-user/strace.c b/linux-user/strace.c
> index 6f818212d5..b6b9abaea4 100644
> --- a/linux-user/strace.c
> +++ b/linux-user/strace.c
> @@ -3714,11 +3714,20 @@ print_futex(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)
>   {
> +    abi_long op = arg1 & FUTEX_CMD_MASK;
>       print_syscall_prologue(name);
>       print_pointer(arg0, 0);
>       print_futex_op(arg1, 0);
>       print_raw_param(",%d", arg2, 0);
> -    print_pointer(arg3, 0); /* struct timespec */
> +    switch (op) {
> +        case FUTEX_WAIT:
> +        case FUTEX_WAIT_BITSET:
> +            print_timespec(arg3, 0);
> +            break;
> +        default:
> +            print_pointer(arg3, 0);
> +            break;
> +    }
>       print_pointer(arg4, 0);
>       print_raw_param("%d", arg4, 1);
>       print_syscall_epilogue(name);
> --
> 2.37.3
> 

Reviewed-by: Laurent Vivier <laurent@vivier.eu>

>
diff mbox series

Patch

diff --git a/linux-user/strace.c b/linux-user/strace.c
index 6f818212d5..b6b9abaea4 100644
--- a/linux-user/strace.c
+++ b/linux-user/strace.c
@@ -3714,11 +3714,20 @@  print_futex(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)
 {
+    abi_long op = arg1 & FUTEX_CMD_MASK;
     print_syscall_prologue(name);
     print_pointer(arg0, 0);
     print_futex_op(arg1, 0);
     print_raw_param(",%d", arg2, 0);
-    print_pointer(arg3, 0); /* struct timespec */
+    switch (op) {
+        case FUTEX_WAIT:
+        case FUTEX_WAIT_BITSET:
+            print_timespec(arg3, 0);
+            break;
+        default:
+            print_pointer(arg3, 0);
+            break;
+    }
     print_pointer(arg4, 0);
     print_raw_param("%d", arg4, 1);
     print_syscall_epilogue(name);