qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v4 1/5] linux-user: Make cpu_env accessible in strace.c


From: Laurent Vivier
Subject: Re: [PATCH v4 1/5] linux-user: Make cpu_env accessible in strace.c
Date: Mon, 24 Aug 2020 22:44:50 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0

Le 11/08/2020 à 18:45, Filip Bozuta a écrit :
> Variable "cpu_env" is used in file "syscall.c" to store
> the information about the cpu environment. This variable
> is used because values of some syscalls can vary between
> cpu architectures. This patch makes the "cpu_env" accessible
> in "strace.c" so it can enable aproppriate "-strace" argument
> printing for these syscalls. This will be a useful addition
> for future "-strace" implementation in QEMU.
> 
> Implementation notes:
> 
>     Functions "print_syscall()" and "print_syscall_ret()" which
>     are stated and defined in "qemu.h" and "strace.c" respectively
>     are used to print syscall arguments before and after syscall
>     execution. These functions were changed with addition of a
>     new argument "void *cpu_env". Strucute "struct syscallname"
>     in "strace.c" is used to store the information about syscalls.
>     Fields "call" and "result" represent pointers to functions which
>     are used to print syscall arguments before and after execution.
>     These fields were also changed with addition of a new "void *"
>     argumetn.
>     Also, all defined "print_*" and "print_syscall_ret*" functions
>     in "strace.c" were changed to have the new "void *cpu_env".
>     This was done to not cause build errors (even though none of
>     these functions use this argument).
> 
> Signed-off-by: Filip Bozuta <Filip.Bozuta@syrmia.com>
> Reviewed-by: Laurent Vivier <laurent@vivier.eu>
> ---
>  linux-user/qemu.h    |   4 +-
>  linux-user/strace.c  | 479 ++++++++++++++++++++++---------------------
>  linux-user/syscall.c |   5 +-
>  3 files changed, 247 insertions(+), 241 deletions(-)
> 
> diff --git a/linux-user/qemu.h b/linux-user/qemu.h
> index 5c964389c1..63ddfe86fd 100644
> --- a/linux-user/qemu.h
> +++ b/linux-user/qemu.h
> @@ -400,10 +400,10 @@ extern long safe_syscall_base(int *pending, long 
> number, ...);
>  int host_to_target_waitstatus(int status);
>  
>  /* strace.c */
> -void print_syscall(int num,
> +void print_syscall(void *cpu_env, int num,
>                     abi_long arg1, abi_long arg2, abi_long arg3,
>                     abi_long arg4, abi_long arg5, abi_long arg6);
> -void print_syscall_ret(int num, abi_long ret,
> +void print_syscall_ret(void *cpu_env, int num, abi_long ret,
>                         abi_long arg1, abi_long arg2, abi_long arg3,
>                         abi_long arg4, abi_long arg5, abi_long arg6);
>  /**
> diff --git a/linux-user/strace.c b/linux-user/strace.c
> index 13981341b3..f0624b6206 100644
> --- a/linux-user/strace.c
> +++ b/linux-user/strace.c
> @@ -16,10 +16,10 @@ struct syscallname {
>      int nr;
>      const char *name;
>      const char *format;
> -    void (*call)(const struct syscallname *,
> +    void (*call)(void *, const struct syscallname *,
>                   abi_long, abi_long, abi_long,
>                   abi_long, abi_long, abi_long);
> -    void (*result)(const struct syscallname *, abi_long,
> +    void (*result)(void *, const struct syscallname *, abi_long,
>                     abi_long, abi_long, abi_long,
>                     abi_long, abi_long, abi_long);
>  };
> @@ -634,7 +634,7 @@ print_clockid(int clockid, int last)
>  /* select */
>  #ifdef TARGET_NR__newselect
>  static void
> -print_newselect(const struct syscallname *name,
> +print_newselect(void *cpu_env, const struct syscallname *name,
>                  abi_long arg1, abi_long arg2, abi_long arg3,
>                  abi_long arg4, abi_long arg5, abi_long arg6)
>  {
> @@ -652,7 +652,7 @@ print_newselect(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_semctl
>  static void
> -print_semctl(const struct syscallname *name,
> +print_semctl(void *cpu_env, const struct syscallname *name,
>               abi_long arg1, abi_long arg2, abi_long arg3,
>               abi_long arg4, abi_long arg5, abi_long arg6)
>  {
> @@ -664,7 +664,7 @@ print_semctl(const struct syscallname *name,
>  #endif
>  
>  static void
> -print_execve(const struct syscallname *name,
> +print_execve(void *cpu_env, const struct syscallname *name,
>               abi_long arg1, abi_long arg2, abi_long arg3,
>               abi_long arg4, abi_long arg5, abi_long arg6)
>  {
> @@ -697,7 +697,7 @@ print_execve(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_ipc
>  static void
> -print_ipc(const struct syscallname *name,
> +print_ipc(void *cpu_env, const struct syscallname *name,
>            abi_long arg1, abi_long arg2, abi_long arg3,
>            abi_long arg4, abi_long arg5, abi_long arg6)
>  {
> @@ -741,9 +741,10 @@ print_syscall_err(abi_long ret)
>  }
>  
>  static void
> -print_syscall_ret_addr(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)
> +print_syscall_ret_addr(void *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("0x" TARGET_ABI_FMT_lx, ret);
> @@ -761,9 +762,10 @@ print_syscall_ret_raw(struct syscallname *name, abi_long 
> ret)
>  
>  #ifdef TARGET_NR__newselect
>  static void
> -print_syscall_ret_newselect(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)
> +print_syscall_ret_newselect(void *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(" = 0x" TARGET_ABI_FMT_lx " (", ret);
> @@ -790,9 +792,10 @@ print_syscall_ret_newselect(const struct syscallname 
> *name, abi_long ret,
>  #define TARGET_TIME_ERROR    5   /* clock not synchronized */
>  #ifdef TARGET_NR_adjtimex
>  static void
> -print_syscall_ret_adjtimex(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)
> +print_syscall_ret_adjtimex(void *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);
> @@ -825,9 +828,10 @@ print_syscall_ret_adjtimex(const struct syscallname 
> *name, abi_long ret,
>  #if defined(TARGET_NR_listxattr) || defined(TARGET_NR_llistxattr) \
>   || defined(TARGGET_NR_flistxattr)
>  static void
> -print_syscall_ret_listxattr(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)
> +print_syscall_ret_listxattr(void *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);
> @@ -856,9 +860,10 @@ print_syscall_ret_listxattr(const struct syscallname 
> *name, abi_long ret,
>  
>  #ifdef TARGET_NR_ioctl
>  static void
> -print_syscall_ret_ioctl(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)
> +print_syscall_ret_ioctl(void *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);
> @@ -1420,9 +1425,9 @@ print_timezone(abi_ulong tz_addr, int last)
>  
>  #ifdef TARGET_NR_accept
>  static void
> -print_accept(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_accept(void *cpu_env, 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_raw_param("%d", arg0, 0);
> @@ -1434,9 +1439,9 @@ print_accept(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_access
>  static void
> -print_access(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_access(void *cpu_env, 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, 0);
> @@ -1447,9 +1452,9 @@ print_access(const struct syscallname *name,
>  
>  #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_acct(void *cpu_env, 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);
> @@ -1459,9 +1464,9 @@ print_acct(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_brk
>  static void
> -print_brk(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_brk(void *cpu_env, 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_pointer(arg0, 1);
> @@ -1471,9 +1476,9 @@ print_brk(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_chdir
>  static void
> -print_chdir(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_chdir(void *cpu_env, 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);
> @@ -1483,9 +1488,9 @@ print_chdir(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_chroot
>  static void
> -print_chroot(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_chroot(void *cpu_env, 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);
> @@ -1495,9 +1500,9 @@ print_chroot(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_chmod
>  static void
> -print_chmod(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_chmod(void *cpu_env, 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, 0);
> @@ -1508,9 +1513,9 @@ print_chmod(const struct syscallname *name,
>  
>  #if defined(TARGET_NR_chown) || defined(TARGET_NR_lchown)
>  static void
> -print_chown(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_chown(void *cpu_env, 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, 0);
> @@ -1523,9 +1528,9 @@ print_chown(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_clock_adjtime
>  static void
> -print_clock_adjtime(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_clock_adjtime(void *cpu_env, 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_clockid(arg0, 0);
> @@ -1547,9 +1552,9 @@ static void do_print_clone(unsigned int flags, 
> abi_ulong newsp,
>  }
>  
>  static void
> -print_clone(const struct syscallname *name,
> -    abi_long arg1, abi_long arg2, abi_long arg3,
> -    abi_long arg4, abi_long arg5, abi_long arg6)
> +print_clone(void *cpu_env, const struct syscallname *name,
> +            abi_long arg1, abi_long arg2, abi_long arg3,
> +            abi_long arg4, abi_long arg5, abi_long arg6)
>  {
>      print_syscall_prologue(name);
>  #if defined(TARGET_MICROBLAZE)
> @@ -1567,9 +1572,9 @@ print_clone(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_creat
>  static void
> -print_creat(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_creat(void *cpu_env, 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, 0);
> @@ -1580,9 +1585,9 @@ print_creat(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_execv
>  static void
> -print_execv(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_execv(void *cpu_env, 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, 0);
> @@ -1593,9 +1598,9 @@ print_execv(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_faccessat
>  static void
> -print_faccessat(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_faccessat(void *cpu_env, 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);
> @@ -1608,9 +1613,9 @@ print_faccessat(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_fallocate
>  static void
> -print_fallocate(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_fallocate(void *cpu_env, 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_raw_param("%d", arg0, 0);
> @@ -1628,9 +1633,9 @@ print_fallocate(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_fchmodat
>  static void
> -print_fchmodat(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_fchmodat(void *cpu_env, 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);
> @@ -1643,9 +1648,9 @@ print_fchmodat(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_fchownat
>  static void
> -print_fchownat(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_fchownat(void *cpu_env, 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);
> @@ -1659,9 +1664,9 @@ print_fchownat(const struct syscallname *name,
>  
>  #if defined(TARGET_NR_fcntl) || defined(TARGET_NR_fcntl64)
>  static void
> -print_fcntl(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_fcntl(void *cpu_env, 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_raw_param("%d", arg0, 0);
> @@ -1758,9 +1763,9 @@ print_fcntl(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_fgetxattr
>  static void
> -print_fgetxattr(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_fgetxattr(void *cpu_env, 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_raw_param("%d", arg0, 0);
> @@ -1773,9 +1778,9 @@ print_fgetxattr(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_flistxattr
>  static void
> -print_flistxattr(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_flistxattr(void *cpu_env, 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_raw_param("%d", arg0, 0);
> @@ -1787,9 +1792,9 @@ print_flistxattr(const struct syscallname *name,
>  
>  #if defined(TARGET_NR_getxattr) || defined(TARGET_NR_lgetxattr)
>  static void
> -print_getxattr(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_getxattr(void *cpu_env, 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, 0);
> @@ -1803,9 +1808,9 @@ print_getxattr(const struct syscallname *name,
>  
>  #if defined(TARGET_NR_listxattr) || defined(TARGET_NR_llistxattr)
>  static void
> -print_listxattr(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_listxattr(void *cpu_env, 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, 0);
> @@ -1818,9 +1823,9 @@ print_listxattr(const struct syscallname *name,
>  
>  #if defined(TARGET_NR_fremovexattr)
>  static void
> -print_fremovexattr(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_fremovexattr(void *cpu_env, 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_raw_param("%d", arg0, 0);
> @@ -1831,9 +1836,9 @@ print_fremovexattr(const struct syscallname *name,
>  
>  #if defined(TARGET_NR_removexattr) || defined(TARGET_NR_lremovexattr)
>  static void
> -print_removexattr(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_removexattr(void *cpu_env, 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, 0);
> @@ -1845,9 +1850,9 @@ print_removexattr(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_futimesat
>  static void
> -print_futimesat(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_futimesat(void *cpu_env, 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);
> @@ -1860,9 +1865,9 @@ print_futimesat(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_settimeofday
>  static void
> -print_settimeofday(const struct syscallname *name,
> -                abi_long arg0, abi_long arg1, abi_long arg2,
> -                abi_long arg3, abi_long arg4, abi_long arg5)
> +print_settimeofday(void *cpu_env, 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_timeval(arg0, 0);
> @@ -1873,9 +1878,9 @@ print_settimeofday(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_link
>  static void
> -print_link(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_link(void *cpu_env, 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, 0);
> @@ -1886,9 +1891,9 @@ print_link(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_linkat
>  static void
> -print_linkat(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_linkat(void *cpu_env, 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);
> @@ -1902,9 +1907,9 @@ print_linkat(const struct syscallname *name,
>  
>  #ifdef TARGET_NR__llseek
>  static void
> -print__llseek(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print__llseek(void *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 *whence = "UNKNOWN";
>      print_syscall_prologue(name);
> @@ -1924,9 +1929,9 @@ print__llseek(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_lseek
>  static void
> -print_lseek(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_lseek(void *cpu_env, 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_raw_param("%d", arg0, 0);
> @@ -1955,7 +1960,7 @@ print_lseek(const struct syscallname *name,
>  
>  #if defined(TARGET_NR_socket)
>  static void
> -print_socket(const struct syscallname *name,
> +print_socket(void *cpu_env, const struct syscallname *name,
>               abi_long arg0, abi_long arg1, abi_long arg2,
>               abi_long arg3, abi_long arg4, abi_long arg5)
>  {
> @@ -2304,7 +2309,7 @@ static struct {
>  };
>  
>  static void
> -print_socketcall(const struct syscallname *name,
> +print_socketcall(void *cpu_env, const struct syscallname *name,
>                   abi_long arg0, abi_long arg1, abi_long arg2,
>                   abi_long arg3, abi_long arg4, abi_long arg5)
>  {
> @@ -2325,7 +2330,7 @@ print_socketcall(const struct syscallname *name,
>  
>  #if defined(TARGET_NR_bind)
>  static void
> -print_bind(const struct syscallname *name,
> +print_bind(void *cpu_env, const struct syscallname *name,
>             abi_long arg0, abi_long arg1, abi_long arg2,
>             abi_long arg3, abi_long arg4, abi_long arg5)
>  {
> @@ -2339,9 +2344,9 @@ print_bind(const struct syscallname *name,
>  #if defined(TARGET_NR_stat) || defined(TARGET_NR_stat64) || \
>      defined(TARGET_NR_lstat) || defined(TARGET_NR_lstat64)
>  static void
> -print_stat(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_stat(void *cpu_env, 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, 0);
> @@ -2355,9 +2360,9 @@ print_stat(const struct syscallname *name,
>  
>  #if defined(TARGET_NR_fstat) || defined(TARGET_NR_fstat64)
>  static void
> -print_fstat(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_fstat(void *cpu_env, 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_raw_param("%d", arg0, 0);
> @@ -2369,9 +2374,9 @@ print_fstat(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_mkdir
>  static void
> -print_mkdir(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_mkdir(void *cpu_env, 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, 0);
> @@ -2382,9 +2387,9 @@ print_mkdir(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_mkdirat
>  static void
> -print_mkdirat(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_mkdirat(void *cpu_env, 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);
> @@ -2396,9 +2401,9 @@ print_mkdirat(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_rmdir
>  static void
> -print_rmdir(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_rmdir(void *cpu_env, 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, 0);
> @@ -2408,9 +2413,9 @@ print_rmdir(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_rt_sigaction
>  static void
> -print_rt_sigaction(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_rt_sigaction(void *cpu_env, 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_signal(arg0, 0);
> @@ -2422,9 +2427,9 @@ print_rt_sigaction(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_rt_sigprocmask
>  static void
> -print_rt_sigprocmask(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_rt_sigprocmask(void *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 *how = "UNKNOWN";
>      print_syscall_prologue(name);
> @@ -2442,9 +2447,9 @@ print_rt_sigprocmask(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_rt_sigqueueinfo
>  static void
> -print_rt_sigqueueinfo(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_rt_sigqueueinfo(void *cpu_env, const struct syscallname *name,
> +                      abi_long arg0, abi_long arg1, abi_long arg2,
> +                      abi_long arg3, abi_long arg4, abi_long arg5)
>  {
>      void *p;
>      target_siginfo_t uinfo;
> @@ -2467,9 +2472,9 @@ print_rt_sigqueueinfo(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_rt_tgsigqueueinfo
>  static void
> -print_rt_tgsigqueueinfo(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_rt_tgsigqueueinfo(void *cpu_env, const struct syscallname *name,
> +                        abi_long arg0, abi_long arg1, abi_long arg2,
> +                        abi_long arg3, abi_long arg4, abi_long arg5)
>  {
>      void *p;
>      target_siginfo_t uinfo;
> @@ -2551,9 +2556,9 @@ print_syslog_action(abi_ulong arg, int last)
>  }
>  
>  static void
> -print_syslog(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_syslog(void *cpu_env, 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_syslog_action(arg0, 0);
> @@ -2565,9 +2570,9 @@ print_syslog(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_mknod
>  static void
> -print_mknod(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_mknod(void *cpu_env, const struct syscallname *name,
> +            abi_long arg0, abi_long arg1, abi_long arg2,
> +            abi_long arg3, abi_long arg4, abi_long arg5)
>  {
>      int hasdev = (arg1 & (S_IFCHR|S_IFBLK));
>  
> @@ -2584,9 +2589,9 @@ print_mknod(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_mknodat
>  static void
> -print_mknodat(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_mknodat(void *cpu_env, const struct syscallname *name,
> +              abi_long arg0, abi_long arg1, abi_long arg2,
> +              abi_long arg3, abi_long arg4, abi_long arg5)
>  {
>      int hasdev = (arg2 & (S_IFCHR|S_IFBLK));
>  
> @@ -2604,9 +2609,9 @@ print_mknodat(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_mq_open
>  static void
> -print_mq_open(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_mq_open(void *cpu_env, const struct syscallname *name,
> +              abi_long arg0, abi_long arg1, abi_long arg2,
> +              abi_long arg3, abi_long arg4, abi_long arg5)
>  {
>      int is_creat = (arg1 & TARGET_O_CREAT);
>  
> @@ -2623,9 +2628,9 @@ print_mq_open(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_open
>  static void
> -print_open(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_open(void *cpu_env, const struct syscallname *name,
> +           abi_long arg0, abi_long arg1, abi_long arg2,
> +           abi_long arg3, abi_long arg4, abi_long arg5)
>  {
>      int is_creat = (arg1 & TARGET_O_CREAT);
>  
> @@ -2640,9 +2645,9 @@ print_open(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_openat
>  static void
> -print_openat(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_openat(void *cpu_env, const struct syscallname *name,
> +             abi_long arg0, abi_long arg1, abi_long arg2,
> +             abi_long arg3, abi_long arg4, abi_long arg5)
>  {
>      int is_creat = (arg2 & TARGET_O_CREAT);
>  
> @@ -2658,9 +2663,9 @@ print_openat(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_mq_unlink
>  static void
> -print_mq_unlink(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_mq_unlink(void *cpu_env, 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);
> @@ -2670,9 +2675,9 @@ print_mq_unlink(const struct syscallname *name,
>  
>  #if defined(TARGET_NR_fstatat64) || defined(TARGET_NR_newfstatat)
>  static void
> -print_fstatat64(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_fstatat64(void *cpu_env, 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);
> @@ -2686,9 +2691,9 @@ print_fstatat64(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_readlink
>  static void
> -print_readlink(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_readlink(void *cpu_env, 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, 0);
> @@ -2700,9 +2705,9 @@ print_readlink(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_readlinkat
>  static void
> -print_readlinkat(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_readlinkat(void *cpu_env, 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);
> @@ -2715,9 +2720,9 @@ print_readlinkat(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_rename
>  static void
> -print_rename(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_rename(void *cpu_env, 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, 0);
> @@ -2728,9 +2733,9 @@ print_rename(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_renameat
>  static void
> -print_renameat(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_renameat(void *cpu_env, 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);
> @@ -2743,9 +2748,9 @@ print_renameat(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_statfs
>  static void
> -print_statfs(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_statfs(void *cpu_env, 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, 0);
> @@ -2756,9 +2761,9 @@ print_statfs(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_statfs64
>  static void
> -print_statfs64(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_statfs64(void *cpu_env, 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, 0);
> @@ -2769,9 +2774,9 @@ print_statfs64(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_symlink
>  static void
> -print_symlink(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_symlink(void *cpu_env, 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, 0);
> @@ -2782,9 +2787,9 @@ print_symlink(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_symlinkat
>  static void
> -print_symlinkat(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_symlinkat(void *cpu_env, 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, 0);
> @@ -2796,9 +2801,9 @@ print_symlinkat(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_mount
>  static void
> -print_mount(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_mount(void *cpu_env, 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, 0);
> @@ -2812,9 +2817,9 @@ print_mount(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_umount
>  static void
> -print_umount(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_umount(void *cpu_env, 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);
> @@ -2824,9 +2829,9 @@ print_umount(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_umount2
>  static void
> -print_umount2(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_umount2(void *cpu_env, 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, 0);
> @@ -2837,9 +2842,9 @@ print_umount2(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_unlink
>  static void
> -print_unlink(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_unlink(void *cpu_env, 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);
> @@ -2849,9 +2854,9 @@ print_unlink(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_unlinkat
>  static void
> -print_unlinkat(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_unlinkat(void *cpu_env, 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);
> @@ -2863,9 +2868,9 @@ print_unlinkat(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_utime
>  static void
> -print_utime(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_utime(void *cpu_env, 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, 0);
> @@ -2876,9 +2881,9 @@ print_utime(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_utimes
>  static void
> -print_utimes(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_utimes(void *cpu_env, 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, 0);
> @@ -2889,9 +2894,9 @@ print_utimes(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_utimensat
>  static void
> -print_utimensat(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_utimensat(void *cpu_env, 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);
> @@ -2904,9 +2909,9 @@ print_utimensat(const struct syscallname *name,
>  
>  #if defined(TARGET_NR_mmap) || defined(TARGET_NR_mmap2)
>  static void
> -print_mmap(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_mmap(void *cpu_env, 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_pointer(arg0, 0);
> @@ -2922,9 +2927,9 @@ print_mmap(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_mprotect
>  static void
> -print_mprotect(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_mprotect(void *cpu_env, 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_pointer(arg0, 0);
> @@ -2936,9 +2941,9 @@ print_mprotect(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_munmap
>  static void
> -print_munmap(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_munmap(void *cpu_env, 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_pointer(arg0, 0);
> @@ -2989,9 +2994,9 @@ if( cmd == val ) { \
>  }
>  
>  static void
> -print_futex(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_futex(void *cpu_env, 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_pointer(arg0, 0);
> @@ -3006,9 +3011,9 @@ print_futex(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_kill
>  static void
> -print_kill(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_kill(void *cpu_env, 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_raw_param("%d", arg0, 0);
> @@ -3019,9 +3024,9 @@ print_kill(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_tkill
>  static void
> -print_tkill(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_tkill(void *cpu_env, 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_raw_param("%d", arg0, 0);
> @@ -3032,9 +3037,9 @@ print_tkill(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_tgkill
>  static void
> -print_tgkill(const struct syscallname *name,
> -    abi_long arg0, abi_long arg1, abi_long arg2,
> -    abi_long arg3, abi_long arg4, abi_long arg5)
> +print_tgkill(void *cpu_env, 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_raw_param("%d", arg0, 0);
> @@ -3046,7 +3051,7 @@ print_tgkill(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_statx
>  static void
> -print_statx(const struct syscallname *name,
> +print_statx(void *cpu_env, const struct syscallname *name,
>              abi_long arg0, abi_long arg1, abi_long arg2,
>              abi_long arg3, abi_long arg4, abi_long arg5)
>  {
> @@ -3062,7 +3067,7 @@ print_statx(const struct syscallname *name,
>  
>  #ifdef TARGET_NR_ioctl
>  static void
> -print_ioctl(const struct syscallname *name,
> +print_ioctl(void *cpu_env, const struct syscallname *name,
>              abi_long arg0, abi_long arg1, abi_long arg2,
>              abi_long arg3, abi_long arg4, abi_long arg5)
>  {
> @@ -3147,7 +3152,7 @@ static int nsyscalls = ARRAY_SIZE(scnames);
>   * The public interface to this module.
>   */
>  void
> -print_syscall(int num,
> +print_syscall(void *cpu_env, int num,
>                abi_long arg1, abi_long arg2, abi_long arg3,
>                abi_long arg4, abi_long arg5, abi_long arg6)
>  {
> @@ -3160,7 +3165,7 @@ print_syscall(int num,
>          if( scnames[i].nr == num ) {
>              if( scnames[i].call != NULL ) {
>                  scnames[i].call(
> -                    &scnames[i], arg1, arg2, arg3, arg4, arg5, arg6);
> +                    cpu_env, &scnames[i], arg1, arg2, arg3, arg4, arg5, 
> arg6);
>              } else {
>                  /* XXX: this format system is broken because it uses
>                     host types and host pointers for strings */
> @@ -3176,7 +3181,7 @@ print_syscall(int num,
>  
>  
>  void
> -print_syscall_ret(int num, abi_long ret,
> +print_syscall_ret(void *cpu_env, int num, abi_long ret,
>                    abi_long arg1, abi_long arg2, abi_long arg3,
>                    abi_long arg4, abi_long arg5, abi_long arg6)
>  {
> @@ -3185,7 +3190,7 @@ print_syscall_ret(int num, abi_long ret,
>      for(i=0;i<nsyscalls;i++)
>          if( scnames[i].nr == num ) {
>              if( scnames[i].result != NULL ) {
> -                scnames[i].result(&scnames[i], ret,
> +                scnames[i].result(cpu_env, &scnames[i], ret,
>                                    arg1, arg2, arg3,
>                                    arg4, arg5, arg6);
>              } else {
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 1211e759c2..cc76ac61ba 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -12594,14 +12594,15 @@ abi_long do_syscall(void *cpu_env, int num, 
> abi_long arg1,
>                           arg2, arg3, arg4, arg5, arg6, arg7, arg8);
>  
>      if (unlikely(qemu_loglevel_mask(LOG_STRACE))) {
> -        print_syscall(num, arg1, arg2, arg3, arg4, arg5, arg6);
> +        print_syscall(cpu_env, num, arg1, arg2, arg3, arg4, arg5, arg6);
>      }
>  
>      ret = do_syscall1(cpu_env, num, arg1, arg2, arg3, arg4,
>                        arg5, arg6, arg7, arg8);
>  
>      if (unlikely(qemu_loglevel_mask(LOG_STRACE))) {
> -        print_syscall_ret(num, ret, arg1, arg2, arg3, arg4, arg5, arg6);
> +        print_syscall_ret(cpu_env, num, ret, arg1, arg2,
> +                          arg3, arg4, arg5, arg6);
>      }
>  
>      record_syscall_return(cpu, num, ret);
> 


Applied to my linux-user-for-5.2 branch.

Thanks,
Laurent




reply via email to

[Prev in Thread] Current Thread [Next in Thread]