From 8876ade6249175fc51b327af8255a8917071f436 Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Mon, 26 Nov 2018 13:59:18 -0800 Subject: [PATCH] Added emscripten ___syscall201 and ___syscall202 --- src/apis/emscripten/mod.rs | 12 +++++++++++- src/apis/emscripten/syscalls.rs | 22 +++++++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/apis/emscripten/mod.rs b/src/apis/emscripten/mod.rs index 3ba4fdf3a..e83ab928f 100644 --- a/src/apis/emscripten/mod.rs +++ b/src/apis/emscripten/mod.rs @@ -215,6 +215,16 @@ pub fn generate_emscripten_env<'a, 'b>() -> ImportObject<&'a str, &'b str> { "___syscall122", ImportValue::Func(syscalls::___syscall122 as *const u8), ); + import_object.set( + "env", + "___syscall201", + ImportValue::Func(syscalls::___syscall201 as *const u8), + ); + import_object.set( + "env", + "___syscall202", + ImportValue::Func(syscalls::___syscall202 as *const u8), + ); // Process import_object.set( "env", @@ -385,7 +395,7 @@ pub fn generate_emscripten_env<'a, 'b>() -> ImportObject<&'a str, &'b str> { mock_external!(import_object, ___syscall221); mock_external!(import_object, ___syscall220); mock_external!(import_object, ___syscall212); - mock_external!(import_object, ___syscall201); + // mock_external!(import_object, ___syscall201); mock_external!(import_object, ___syscall199); mock_external!(import_object, ___syscall197); mock_external!(import_object, ___syscall196); diff --git a/src/apis/emscripten/syscalls.rs b/src/apis/emscripten/syscalls.rs index 36f666615..15a46c95e 100644 --- a/src/apis/emscripten/syscalls.rs +++ b/src/apis/emscripten/syscalls.rs @@ -11,7 +11,8 @@ use libc::{ getsockname, getpeername, sendto, recvfrom, setsockopt, getsockopt, sendmsg, recvmsg, - msghdr, getpid, getppid, pid_t + msghdr, getpid, getppid, pid_t, + gid_t, getgid }; use macros; @@ -260,3 +261,22 @@ pub extern "C" fn ___syscall64() -> pid_t { getpid() } } + + +// sys_getgid +pub extern "C" fn ___syscall201() -> gid_t { + debug!("emscripten::___syscall201"); + unsafe { + // Maybe fix: Emscripten returns 0 always + getgid() + } +} + +// sys_getgid32 +pub extern "C" fn ___syscall202() -> gid_t { + debug!("emscripten::___syscall202"); + unsafe { + // Maybe fix: Emscripten returns 0 always + getgid() + } +}