From 584923445ca039f7ac31dfea46b129fb7a80d836 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 12 Jul 2020 19:49:55 +0200 Subject: [PATCH] UserspaceEmulator: "Add" a couple of syscalls This patch adds gettid() and stubs out pledge() and unveil() for now. --- DevTools/UserspaceEmulator/Emulator.cpp | 21 +++++++++++++++++++++ DevTools/UserspaceEmulator/Emulator.h | 3 +++ 2 files changed, 24 insertions(+) diff --git a/DevTools/UserspaceEmulator/Emulator.cpp b/DevTools/UserspaceEmulator/Emulator.cpp index 1968af7e50..fcea894e6e 100644 --- a/DevTools/UserspaceEmulator/Emulator.cpp +++ b/DevTools/UserspaceEmulator/Emulator.cpp @@ -185,6 +185,12 @@ u32 Emulator::virt_syscall(u32 function, u32 arg1, u32 arg2, u32 arg3) printf("Syscall: %s (%x)\n", Syscall::to_string((Syscall::Function)function), function); switch (function) { + case SC_gettid: + return virt$gettid(); + case SC_pledge: + return virt$pledge(arg1); + case SC_unveil: + return virt$unveil(arg1); case SC_getuid: return virt$getuid(); case SC_exit: @@ -196,6 +202,21 @@ u32 Emulator::virt_syscall(u32 function, u32 arg1, u32 arg2, u32 arg3) } } +u32 Emulator::virt$gettid() +{ + return gettid(); +} + +u32 Emulator::virt$pledge(u32) +{ + return 0; +} + +u32 Emulator::virt$unveil(u32) +{ + return 0; +} + uid_t Emulator::virt$getuid() { return getuid(); diff --git a/DevTools/UserspaceEmulator/Emulator.h b/DevTools/UserspaceEmulator/Emulator.h index 5d07ba43f0..1f9d9011cd 100644 --- a/DevTools/UserspaceEmulator/Emulator.h +++ b/DevTools/UserspaceEmulator/Emulator.h @@ -54,6 +54,9 @@ private: void setup_stack(); + u32 virt$gettid(); + u32 virt$unveil(u32); + u32 virt$pledge(u32); uid_t virt$getuid(); void virt$exit(int);