From: Laurent Vivier <laurent@vivier.eu>
To: qemu-devel@nongnu.org
Cc: Helge Deller <deller@gmx.de>, Laurent Vivier <laurent@vivier.eu>
Subject: [PULL 12/28] linux-user: Add translation for argument of msync()
Date: Wed, 8 Mar 2023 14:28:41 +0100 [thread overview]
Message-ID: <20230308132857.161793-13-laurent@vivier.eu> (raw)
In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu>
From: Helge Deller <deller@gmx.de>
msync() uses the flags MS_ASYNC, MS_INVALIDATE and MS_SYNC, which differ
between platforms, specifcally on alpha and hppa.
Add a target to host translation for those and wire up a nicer strace
output.
This fixes the testsuite of the macaulay2 debian package with a hppa-linux
guest on a x86-64 host.
Signed-off-by: Helge Deller <deller@gmx.de>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <Y5rMcts4qe15RaVN@p100>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---
linux-user/alpha/target_mman.h | 4 ++++
linux-user/generic/target_mman.h | 13 +++++++++++++
linux-user/hppa/target_mman.h | 4 ++++
linux-user/strace.list | 2 +-
linux-user/syscall.c | 12 +++++++++++-
5 files changed, 33 insertions(+), 2 deletions(-)
diff --git a/linux-user/alpha/target_mman.h b/linux-user/alpha/target_mman.h
index cd6e3d70a604..051544f5abd8 100644
--- a/linux-user/alpha/target_mman.h
+++ b/linux-user/alpha/target_mman.h
@@ -3,6 +3,10 @@
#define TARGET_MADV_DONTNEED 6
+#define TARGET_MS_ASYNC 1
+#define TARGET_MS_SYNC 2
+#define TARGET_MS_INVALIDATE 4
+
#include "../generic/target_mman.h"
#endif
diff --git a/linux-user/generic/target_mman.h b/linux-user/generic/target_mman.h
index 1436a3c54308..32bf1a52d07e 100644
--- a/linux-user/generic/target_mman.h
+++ b/linux-user/generic/target_mman.h
@@ -89,4 +89,17 @@
#define TARGET_MADV_DONTNEED_LOCKED 24
#endif
+
+#ifndef TARGET_MS_ASYNC
+#define TARGET_MS_ASYNC 1
+#endif
+
+#ifndef TARGET_MS_INVALIDATE
+#define TARGET_MS_INVALIDATE 2
+#endif
+
+#ifndef TARGET_MS_SYNC
+#define TARGET_MS_SYNC 4
+#endif
+
#endif
diff --git a/linux-user/hppa/target_mman.h b/linux-user/hppa/target_mman.h
index 66dd9f79414e..f9b6b9703255 100644
--- a/linux-user/hppa/target_mman.h
+++ b/linux-user/hppa/target_mman.h
@@ -10,6 +10,10 @@
#define TARGET_MADV_WIPEONFORK 71
#define TARGET_MADV_KEEPONFORK 72
+#define TARGET_MS_SYNC 1
+#define TARGET_MS_ASYNC 2
+#define TARGET_MS_INVALIDATE 4
+
#include "../generic/target_mman.h"
#endif
diff --git a/linux-user/strace.list b/linux-user/strace.list
index f776c73fa04c..c7808ea118f9 100644
--- a/linux-user/strace.list
+++ b/linux-user/strace.list
@@ -656,7 +656,7 @@
{ TARGET_NR_msgsnd, "msgsnd" , NULL, NULL, NULL },
#endif
#ifdef TARGET_NR_msync
-{ TARGET_NR_msync, "msync" , NULL, NULL, NULL },
+{ TARGET_NR_msync, "msync" , "%s(%p,%u,%d)", NULL, NULL },
#endif
#ifdef TARGET_NR_multiplexer
{ TARGET_NR_multiplexer, "multiplexer" , NULL, NULL, NULL },
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 1f903dd67cba..44498e9e8ac7 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -22,6 +22,7 @@
#include "qemu/path.h"
#include "qemu/memfd.h"
#include "qemu/queue.h"
+#include "target_mman.h"
#include <elf.h>
#include <endian.h>
#include <grp.h>
@@ -7612,6 +7613,14 @@ static inline int target_to_host_mlockall_arg(int arg)
}
#endif
+static inline int target_to_host_msync_arg(abi_long arg)
+{
+ return ((arg & TARGET_MS_ASYNC) ? MS_ASYNC : 0) |
+ ((arg & TARGET_MS_INVALIDATE) ? MS_INVALIDATE : 0) |
+ ((arg & TARGET_MS_SYNC) ? MS_SYNC : 0) |
+ (arg & ~(TARGET_MS_ASYNC | TARGET_MS_INVALIDATE | TARGET_MS_SYNC));
+}
+
#if (defined(TARGET_NR_stat64) || defined(TARGET_NR_lstat64) || \
defined(TARGET_NR_fstat64) || defined(TARGET_NR_fstatat64) || \
defined(TARGET_NR_newfstatat))
@@ -10124,7 +10133,8 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
/* ??? msync/mlock/munlock are broken for softmmu. */
#ifdef TARGET_NR_msync
case TARGET_NR_msync:
- return get_errno(msync(g2h(cpu, arg1), arg2, arg3));
+ return get_errno(msync(g2h(cpu, arg1), arg2,
+ target_to_host_msync_arg(arg3)));
#endif
#ifdef TARGET_NR_mlock
case TARGET_NR_mlock:
--
2.39.2
next prev parent reply other threads:[~2023-03-08 13:35 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 ` [PULL 09/28] linux-user: Add strace for prlimit64() syscall Laurent Vivier
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 ` Laurent Vivier [this message]
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 12/28] linux-user: Add translation for argument of msync() 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-13-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).