[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 039/108] linux-user: Split out mprotect, mremap,
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH v2 039/108] linux-user: Split out mprotect, mremap, msync, munmap |
Date: |
Sat, 9 Jun 2018 17:01:11 -1000 |
All targets define all of these; remove the ifdefs.
Signed-off-by: Richard Henderson <address@hidden>
---
linux-user/syscall.c | 61 ++++++++++++++++++++++++++------------------
1 file changed, 36 insertions(+), 25 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index a3374955da..7504ad74b5 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -8471,6 +8471,37 @@ IMPL(mount)
return ret;
}
+IMPL(mprotect)
+{
+ /* Special hack to detect libc making the stack executable. */
+ if (arg3 & PROT_GROWSDOWN) {
+ CPUState *cpu = ENV_GET_CPU(cpu_env);
+ TaskState *ts = cpu->opaque;
+
+ if (arg1 >= ts->info->stack_limit && arg1 <= ts->info->start_stack) {
+ arg3 &= ~PROT_GROWSDOWN;
+ arg2 = arg2 + arg1 - ts->info->stack_limit;
+ arg1 = ts->info->stack_limit;
+ }
+ }
+ return get_errno(target_mprotect(arg1, arg2, arg3));
+}
+
+IMPL(mremap)
+{
+ return get_errno(target_mremap(arg1, arg2, arg3, arg4, arg5));
+}
+
+IMPL(msync)
+{
+ return get_errno(msync(g2h(arg1), arg2, arg3));
+}
+
+IMPL(munmap)
+{
+ return get_errno(target_munmap(arg1, arg2));
+}
+
#ifdef CONFIG_OPEN_BY_HANDLE
IMPL(name_to_handle_at)
{
@@ -9696,37 +9727,13 @@ static abi_long do_syscall1(void *cpu_env, unsigned
num, abi_long arg1,
abi_long arg5, abi_long arg6, abi_long arg7,
abi_long arg8)
{
- CPUState *cpu = ENV_GET_CPU(cpu_env);
+ CPUState *cpu __attribute__((unused)) = ENV_GET_CPU(cpu_env);
abi_long ret;
struct stat st;
struct statfs stfs;
void *p;
switch(num) {
- case TARGET_NR_munmap:
- return get_errno(target_munmap(arg1, arg2));
- case TARGET_NR_mprotect:
- {
- TaskState *ts = cpu->opaque;
- /* Special hack to detect libc making the stack executable. */
- if ((arg3 & PROT_GROWSDOWN)
- && arg1 >= ts->info->stack_limit
- && arg1 <= ts->info->start_stack) {
- arg3 &= ~PROT_GROWSDOWN;
- arg2 = arg2 + arg1 - ts->info->stack_limit;
- arg1 = ts->info->stack_limit;
- }
- }
- return get_errno(target_mprotect(arg1, arg2, arg3));
-#ifdef TARGET_NR_mremap
- case TARGET_NR_mremap:
- return get_errno(target_mremap(arg1, arg2, arg3, arg4, arg5));
-#endif
- /* ??? msync/mlock/munlock are broken for softmmu. */
-#ifdef TARGET_NR_msync
- case TARGET_NR_msync:
- return get_errno(msync(g2h(arg1), arg2, arg3));
-#endif
#ifdef TARGET_NR_mlock
case TARGET_NR_mlock:
return get_errno(mlock(g2h(arg1), arg2));
@@ -12762,6 +12769,10 @@ static impl_fn *syscall_table(unsigned num)
SYSCALL(mmap2);
#endif
SYSCALL(mount);
+ SYSCALL(mprotect);
+ SYSCALL(mremap);
+ SYSCALL(msync);
+ SYSCALL(munmap);
#ifdef CONFIG_OPEN_BY_HANDLE
SYSCALL(name_to_handle_at);
#endif
--
2.17.1
- [Qemu-devel] [PATCH v2 029/108] linux-user: Split out rt_sigaction, sigaction, (continued)
- [Qemu-devel] [PATCH v2 029/108] linux-user: Split out rt_sigaction, sigaction, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 030/108] linux-user: Split out rt_sigprocmask, sgetmask, sigprocmask, ssetmask, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 031/108] linux-user: Split out rt_sigpending, rt_sigsuspend, sigpending, sigsuspend, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 032/108] linux-user: Split out rt_sigqueueinfo, rt_sigtimedwait, rt_tgsigqueueinfo, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 033/108] linux-user: Split out rt_sigreturn, sethostname, setrlimit, sigreturn, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 036/108] linux-user: Split out symlink, symlinkat, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 035/108] linux-user: Split out select, pselect6, newselect, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 034/108] linux-user: Split out getrlimit, getrusage, gettimeofday, settimeofday, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 037/108] linux-user: Split out readlink, readlinkat, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 038/108] linux-user: Split out mmap, mmap2, reboot, swapon, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 039/108] linux-user: Split out mprotect, mremap, msync, munmap,
Richard Henderson <=
- [Qemu-devel] [PATCH v2 040/108] linux-user: Split out mlock, mlockall, munlock, munlockall, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 041/108] linux-user: Split out fchmod, fchmodat, ftruncate, truncate, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 042/108] linux-user: Split out fstatfs, fstatfs64, statfs, statfs64, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 043/108] linux-user: Split out getpriority, setpriority, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 044/108] linux-user: Split out socketcall, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 045/108] linux-user: Split out accept, accept4, bind, connect, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 046/108] linux-user: Split out 7 syscalls, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 047/108] linux-user: Split out recvmmsg, send, sendmmsg, sendmsg, sendto, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 048/108] linux-user: Split out getrandom, shutdown, setsockopt, socket, socketpair, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 049/108] linux-user: Fix stub gettid, Richard Henderson, 2018/06/09
- Prev by Date:
[Qemu-devel] [PATCH v2 038/108] linux-user: Split out mmap, mmap2, reboot, swapon
- Next by Date:
[Qemu-devel] [PATCH v2 040/108] linux-user: Split out mlock, mlockall, munlock, munlockall
- Previous by thread:
[Qemu-devel] [PATCH v2 038/108] linux-user: Split out mmap, mmap2, reboot, swapon
- Next by thread:
[Qemu-devel] [PATCH v2 040/108] linux-user: Split out mlock, mlockall, munlock, munlockall
- Index(es):