From fae9c9f81f9b5b65b94393c1c0ebd9982d8abdf7 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 7 Aug 2020 18:46:56 +0200 Subject: [PATCH] UserspaceEmulator: Add the dup2 syscall --- DevTools/UserspaceEmulator/Emulator.cpp | 7 +++++++ DevTools/UserspaceEmulator/Emulator.h | 1 + 2 files changed, 8 insertions(+) diff --git a/DevTools/UserspaceEmulator/Emulator.cpp b/DevTools/UserspaceEmulator/Emulator.cpp index c7a6caa156..fd1e71bab3 100644 --- a/DevTools/UserspaceEmulator/Emulator.cpp +++ b/DevTools/UserspaceEmulator/Emulator.cpp @@ -253,6 +253,8 @@ u32 Emulator::virt_syscall(u32 function, u32 arg1, u32 arg2, u32 arg3) switch (function) { case SC_chdir: return virt$chdir(arg1, arg2); + case SC_dup2: + return virt$dup2(arg1, arg2); case SC_access: return virt$access(arg1, arg2, arg3); case SC_waitid: @@ -1346,4 +1348,9 @@ int Emulator::virt$chdir(FlatPtr path, size_t path_length) return syscall(SC_chdir, host_path.data(), host_path.size()); } +int Emulator::virt$dup2(int old_fd, int new_fd) +{ + return syscall(SC_dup2, old_fd, new_fd); +} + } diff --git a/DevTools/UserspaceEmulator/Emulator.h b/DevTools/UserspaceEmulator/Emulator.h index 34956d3a50..0709b93bd8 100644 --- a/DevTools/UserspaceEmulator/Emulator.h +++ b/DevTools/UserspaceEmulator/Emulator.h @@ -138,6 +138,7 @@ private: ssize_t virt$getrandom(FlatPtr buffer, size_t buffer_size, unsigned int flags); int virt$sleep(unsigned); int virt$chdir(FlatPtr, size_t); + int virt$dup2(int, int); int virt$getpgrp(); int virt$getpgid(pid_t); int virt$setpgid(pid_t pid, pid_t pgid);