diff --git a/lib/emscripten/src/emscripten_target.rs b/lib/emscripten/src/emscripten_target.rs index b4d179dcf..5af48a578 100644 --- a/lib/emscripten/src/emscripten_target.rs +++ b/lib/emscripten/src/emscripten_target.rs @@ -136,6 +136,14 @@ pub fn _pthread_cond_destroy(_ctx: &mut Ctx, _a: i32) -> i32 { debug!("emscripten::_pthread_cond_destroy"); 0 } +pub fn _pthread_create(_ctx: &mut Ctx, _a: i32, _b: i32, _c: i32, _d: i32) -> i32 { + debug!("emscripten::_pthread_create"); + 0 +} +pub fn _pthread_join(_ctx: &mut Ctx, _a: i32, _b: i32) -> i32 { + debug!("emscripten::_pthread_join"); + 0 +} pub fn _pthread_cond_init(_ctx: &mut Ctx, _a: i32, _b: i32) -> i32 { debug!("emscripten::_pthread_cond_init"); 0 @@ -236,6 +244,9 @@ pub fn _getloadavg(_ctx: &mut Ctx, _loadavg: i32, _nelem: i32) -> i32 { 0 } // round 2 +pub fn nullFunc_di(_ctx: &mut Ctx, _index: i32) { + debug!("emscripten::nullFunc_di"); +} pub fn nullFunc_dii(_ctx: &mut Ctx, _index: i32) { debug!("emscripten::nullFunc_dii"); } @@ -245,21 +256,69 @@ pub fn nullFunc_diiii(_ctx: &mut Ctx, _index: i32) { pub fn nullFunc_iiji(_ctx: &mut Ctx, _index: i32) { debug!("emscripten::nullFunc_iiji"); } +pub fn nullFunc_iiid(_ctx: &mut Ctx, _index: i32) { + debug!("emscripten::nullFunc_iiid"); +} +pub fn nullFunc_iij(_ctx: &mut Ctx, _index: i32) { + debug!("emscripten::nullFunc_iij"); +} +pub fn nullFunc_iiiiiiiii(_ctx: &mut Ctx, _index: i32) { + debug!("emscripten::nullFunc_iiiiiiiii"); +} +pub fn nullFunc_iiiiiiiiiii(_ctx: &mut Ctx, _index: i32) { + debug!("emscripten::nullFunc_iiiiiiiiiii"); +} +pub fn nullFunc_iiiiijii(_ctx: &mut Ctx, _index: i32) { + debug!("emscripten::nullFunc_iiiiijii"); +} +pub fn nullFunc_iiiijii(_ctx: &mut Ctx, _index: i32) { + debug!("emscripten::nullFunc_iiiijii"); +} +pub fn nullFunc_iiiij(_ctx: &mut Ctx, _index: i32) { + debug!("emscripten::nullFunc_iiiij"); +} +pub fn nullFunc_iiij(_ctx: &mut Ctx, _index: i32) { + debug!("emscripten::nullFunc_iiij"); +} +pub fn nullFunc_iijii(_ctx: &mut Ctx, _index: i32) { + debug!("emscripten::nullFunc_iijii"); +} +pub fn nullFunc_iiiiji(_ctx: &mut Ctx, _index: i32) { + debug!("emscripten::nullFunc_iiiiji"); +} +pub fn nullFunc_ij(_ctx: &mut Ctx, _index: i32) { + debug!("emscripten::nullFunc_ij"); +} pub fn nullFunc_j(_ctx: &mut Ctx, _index: i32) { debug!("emscripten::nullFunc_j"); } pub fn nullFunc_jij(_ctx: &mut Ctx, _index: i32) { debug!("emscripten::nullFunc_jij"); } +pub fn nullFunc_jj(_ctx: &mut Ctx, _index: i32) { + debug!("emscripten::nullFunc_jj"); +} pub fn nullFunc_jjj(_ctx: &mut Ctx, _index: i32) { debug!("emscripten::nullFunc_jjj"); } +pub fn nullFunc_jii(_ctx: &mut Ctx, _index: i32) { + debug!("emscripten::nullFunc_jii"); +} +pub fn nullFunc_jiij(_ctx: &mut Ctx, _index: i32) { + debug!("emscripten::nullFunc_jiij"); +} pub fn nullFunc_vd(_ctx: &mut Ctx, _index: i32) { debug!("emscripten::nullFunc_vd"); } +pub fn nullFunc_vid(_ctx: &mut Ctx, _index: i32) { + debug!("emscripten::nullFunc_vid"); +} pub fn nullFunc_viiiiiii(_ctx: &mut Ctx, _index: i32) { debug!("emscripten::nullFunc_viiiiiii"); } +pub fn nullFunc_viiiij(_ctx: &mut Ctx, _index: i32) { + debug!("emscripten::nullFunc_viiiij"); +} pub fn nullFunc_viiiiiiii(_ctx: &mut Ctx, _index: i32) { debug!("emscripten::nullFunc_viiiiiiii"); } @@ -281,6 +340,9 @@ pub fn nullFunc_viij(_ctx: &mut Ctx, _index: i32) { pub fn nullFunc_viiji(_ctx: &mut Ctx, _index: i32) { debug!("emscripten::nullFunc_viiji"); } +pub fn nullFunc_viijii(_ctx: &mut Ctx, _index: i32) { + debug!("emscripten::nullFunc_viijii"); +} pub fn nullFunc_viijiii(_ctx: &mut Ctx, _index: i32) { debug!("emscripten::nullFunc_viijiii"); } diff --git a/lib/emscripten/src/io/mod.rs b/lib/emscripten/src/io/mod.rs index 496c2da36..ceee3bdc1 100644 --- a/lib/emscripten/src/io/mod.rs +++ b/lib/emscripten/src/io/mod.rs @@ -24,12 +24,6 @@ pub fn getprotobynumber(_ctx: &mut Ctx, _one: i32) -> i32 { unimplemented!() } -/// getpwuid -pub fn getpwuid(_ctx: &mut Ctx, _uid: i32) -> i32 { - debug!("emscripten::getpwuid"); - unimplemented!() -} - /// sigdelset pub fn sigdelset(_ctx: &mut Ctx, _one: i32, _two: i32) -> i32 { debug!("emscripten::sigdelset"); diff --git a/lib/emscripten/src/io/unix.rs b/lib/emscripten/src/io/unix.rs index f5a495528..7627391ea 100644 --- a/lib/emscripten/src/io/unix.rs +++ b/lib/emscripten/src/io/unix.rs @@ -1,4 +1,4 @@ -use libc::{chroot as _chroot, printf as _printf}; +use libc::{chroot as _chroot, printf as _printf, getpwuid as _getpwuid}; use wasmer_runtime_core::vm::Ctx; @@ -22,3 +22,10 @@ pub fn chroot(ctx: &mut Ctx, name_ptr: i32) -> i32 { let name = emscripten_memory_pointer!(ctx.memory(0), name_ptr) as *const i8; unsafe { _chroot(name) } } + +/// getpwuid +pub fn getpwuid(_ctx: &mut Ctx, uid: i32) -> i32 { + debug!("emscripten::getpwuid"); + // REVIEW: this seems wrong + unsafe { _getpwuid(uid as u32) as _ } +} diff --git a/lib/emscripten/src/io/windows.rs b/lib/emscripten/src/io/windows.rs index bb1484c78..67322b0ab 100644 --- a/lib/emscripten/src/io/windows.rs +++ b/lib/emscripten/src/io/windows.rs @@ -38,3 +38,9 @@ pub fn chroot(ctx: &mut Ctx, name_ptr: i32) -> i32 { debug!("emscripten::chroot"); unimplemented!() } + +/// getpwuid +pub fn getpwuid(_ctx: &mut Ctx, uid: i32) -> i32 { + debug!("emscripten::getpwuid"); + unimplemented!() +} diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index 37346989e..ec8f4083a 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -657,6 +657,8 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "___cxa_free_exception" => func!(crate::emscripten_target::___cxa_free_exception), "___resumeException" => func!(crate::emscripten_target::___resumeException), "_dladdr" => func!(crate::emscripten_target::_dladdr), + "_pthread_create" => func!(crate::emscripten_target::_pthread_create), + "_pthread_join" => func!(crate::emscripten_target::_pthread_join), "_pthread_cond_destroy" => func!(crate::emscripten_target::_pthread_cond_destroy), "_pthread_cond_init" => func!(crate::emscripten_target::_pthread_cond_init), "_pthread_cond_signal" => func!(crate::emscripten_target::_pthread_cond_signal), @@ -678,13 +680,28 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "_gethostbyname_r" => func!(crate::emscripten_target::_gethostbyname_r), "_getloadavg" => func!(crate::emscripten_target::_getloadavg), // round 2 + "nullFunc_di" => func!(crate::emscripten_target::nullFunc_di), "nullFunc_dii" => func!(crate::emscripten_target::nullFunc_dii), "nullFunc_diiii" => func!(crate::emscripten_target::nullFunc_diiii), + "nullFunc_iiid" => func!(crate::emscripten_target::nullFunc_iiid), "nullFunc_iiji" => func!(crate::emscripten_target::nullFunc_iiji), + "nullFunc_iij" => func!(crate::emscripten_target::nullFunc_iij), + "nullFunc_ij" => func!(crate::emscripten_target::nullFunc_ij), "nullFunc_j" => func!(crate::emscripten_target::nullFunc_j), "nullFunc_jij" => func!(crate::emscripten_target::nullFunc_jij), + "nullFunc_jj" => func!(crate::emscripten_target::nullFunc_jj), "nullFunc_jjj" => func!(crate::emscripten_target::nullFunc_jjj), + "nullFunc_jii" => func!(crate::emscripten_target::nullFunc_jii), + "nullFunc_jiij" => func!(crate::emscripten_target::nullFunc_jiij), "nullFunc_vd" => func!(crate::emscripten_target::nullFunc_vd), + "nullFunc_iiiiiiiii" => func!(crate::emscripten_target::nullFunc_iiiiiiiii), + "nullFunc_iiiiiiiiiii" => func!(crate::emscripten_target::nullFunc_iiiiiiiiiii), + "nullFunc_iiiiijii" => func!(crate::emscripten_target::nullFunc_iiiiijii), + "nullFunc_iiiij" => func!(crate::emscripten_target::nullFunc_iiiij), + "nullFunc_iiij" => func!(crate::emscripten_target::nullFunc_iiij), + "nullFunc_iiiiji" => func!(crate::emscripten_target::nullFunc_iiiiji), + "nullFunc_iijii" => func!(crate::emscripten_target::nullFunc_iijii), + "nullFunc_iiiijii" => func!(crate::emscripten_target::nullFunc_iiiijii), "nullFunc_viiiiiii" => func!(crate::emscripten_target::nullFunc_viiiiiii), "nullFunc_viiiiiiii" => func!(crate::emscripten_target::nullFunc_viiiiiiii), "nullFunc_viiiiiiiii" => func!(crate::emscripten_target::nullFunc_viiiiiiiii), @@ -693,9 +710,12 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "nullFunc_viiijiiiiii" => func!(crate::emscripten_target::nullFunc_viiijiiiiii), "nullFunc_viij" => func!(crate::emscripten_target::nullFunc_viij), "nullFunc_viiji" => func!(crate::emscripten_target::nullFunc_viiji), + "nullFunc_viijii" => func!(crate::emscripten_target::nullFunc_viijii), + "nullFunc_viiiij" => func!(crate::emscripten_target::nullFunc_viiiij), "nullFunc_viijiii" => func!(crate::emscripten_target::nullFunc_viijiii), "nullFunc_viijj" => func!(crate::emscripten_target::nullFunc_viijj), "nullFunc_vij" => func!(crate::emscripten_target::nullFunc_vij), + "nullFunc_vid" => func!(crate::emscripten_target::nullFunc_vid), "nullFunc_viji" => func!(crate::emscripten_target::nullFunc_viji), "nullFunc_vijiii" => func!(crate::emscripten_target::nullFunc_vijiii), "nullFunc_vijj" => func!(crate::emscripten_target::nullFunc_vijj),