mirror of
https://github.com/fluencelabs/wasmer
synced 2025-06-17 10:51:21 +00:00
Formatted files
This commit is contained in:
@ -143,14 +143,14 @@ pub extern "C" fn _getgrnam(name_ptr: c_int, vmctx: &mut Ctx) -> c_int {
|
|||||||
|
|
||||||
pub fn call_malloc(size: i32, vmctx: &mut Ctx) -> u32 {
|
pub fn call_malloc(size: i32, vmctx: &mut Ctx) -> u32 {
|
||||||
unimplemented!()
|
unimplemented!()
|
||||||
// let ret = instance
|
// let ret = instance
|
||||||
// .call("_malloc", &[Value::I32(size)])
|
// .call("_malloc", &[Value::I32(size)])
|
||||||
// .expect("_malloc call failed");
|
// .expect("_malloc call failed");
|
||||||
// if let [Value::I32(x)] = ret.as_slice() {
|
// if let [Value::I32(x)] = ret.as_slice() {
|
||||||
// *x as u32
|
// *x as u32
|
||||||
// } else {
|
// } else {
|
||||||
// panic!("unexpected value from _malloc: {:?}", ret);
|
// panic!("unexpected value from _malloc: {:?}", ret);
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn call_memalign(alignment: u32, size: u32, vmctx: &mut Ctx) -> u32 {
|
pub fn call_memalign(alignment: u32, size: u32, vmctx: &mut Ctx) -> u32 {
|
||||||
@ -171,21 +171,21 @@ pub fn call_memalign(alignment: u32, size: u32, vmctx: &mut Ctx) -> u32 {
|
|||||||
|
|
||||||
pub fn call_memset(pointer: u32, value: i32, size: u32, vmctx: &mut Ctx) -> u32 {
|
pub fn call_memset(pointer: u32, value: i32, size: u32, vmctx: &mut Ctx) -> u32 {
|
||||||
unimplemented!()
|
unimplemented!()
|
||||||
// let ret = instance
|
// let ret = instance
|
||||||
// .call(
|
// .call(
|
||||||
// "_memset",
|
// "_memset",
|
||||||
// &[
|
// &[
|
||||||
// Value::I32(pointer as i32),
|
// Value::I32(pointer as i32),
|
||||||
// Value::I32(value),
|
// Value::I32(value),
|
||||||
// Value::I32(size as i32),
|
// Value::I32(size as i32),
|
||||||
// ],
|
// ],
|
||||||
// )
|
// )
|
||||||
// .expect("_memset call failed");
|
// .expect("_memset call failed");
|
||||||
// if let [Value::I32(x)] = ret.as_slice() {
|
// if let [Value::I32(x)] = ret.as_slice() {
|
||||||
// *x as u32
|
// *x as u32
|
||||||
// } else {
|
// } else {
|
||||||
// panic!("unexpected value from _memset {:?}", ret);
|
// panic!("unexpected value from _memset {:?}", ret);
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub extern "C" fn _getpagesize() -> u32 {
|
pub extern "C" fn _getpagesize() -> u32 {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use super::env;
|
use super::env;
|
||||||
use super::process::_abort;
|
use super::process::_abort;
|
||||||
use wasmer_runtime_core::{Instance, vm::Ctx};
|
use wasmer_runtime_core::{vm::Ctx, Instance};
|
||||||
|
|
||||||
/// emscripten: ___cxa_allocate_exception
|
/// emscripten: ___cxa_allocate_exception
|
||||||
pub extern "C" fn ___cxa_allocate_exception(size: u32, vmctx: &mut Ctx) -> u32 {
|
pub extern "C" fn ___cxa_allocate_exception(size: u32, vmctx: &mut Ctx) -> u32 {
|
||||||
|
@ -9,16 +9,12 @@ use wasmer_runtime_core::{
|
|||||||
export::{Context, Export, FuncPointer, GlobalPointer, MemoryPointer, TablePointer},
|
export::{Context, Export, FuncPointer, GlobalPointer, MemoryPointer, TablePointer},
|
||||||
import::{ImportObject, Namespace},
|
import::{ImportObject, Namespace},
|
||||||
memory::LinearMemory,
|
memory::LinearMemory,
|
||||||
|
structures::TypedIndex,
|
||||||
table::TableBacking,
|
table::TableBacking,
|
||||||
types::{
|
types::{
|
||||||
FuncSig, GlobalDesc,
|
ElementType, FuncSig, GlobalDesc, LocalMemoryIndex, Memory, Table,
|
||||||
Type::{self, *},
|
Type::{self, *},
|
||||||
Memory,
|
|
||||||
LocalMemoryIndex,
|
|
||||||
ElementType,
|
|
||||||
Table,
|
|
||||||
},
|
},
|
||||||
structures::TypedIndex,
|
|
||||||
vm::LocalGlobal,
|
vm::LocalGlobal,
|
||||||
vm::LocalMemory,
|
vm::LocalMemory,
|
||||||
vm::LocalTable,
|
vm::LocalTable,
|
||||||
@ -183,7 +179,13 @@ impl<'a> EmscriptenGlobals<'a> {
|
|||||||
data.insert("env", env_namepace);
|
data.insert("env", env_namepace);
|
||||||
data.insert("global", global_namepace);
|
data.insert("global", global_namepace);
|
||||||
|
|
||||||
Self { data, memory, vm_memory, table, vm_table }
|
Self {
|
||||||
|
data,
|
||||||
|
memory,
|
||||||
|
vm_memory,
|
||||||
|
table,
|
||||||
|
vm_table,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,9 +205,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject
|
|||||||
let null_ctx = Context::External(ptr::null_mut());
|
let null_ctx = Context::External(ptr::null_mut());
|
||||||
|
|
||||||
// Memory
|
// Memory
|
||||||
let local_memory = unsafe {
|
let local_memory = unsafe { MemoryPointer::new(&mut globals.vm_memory) };
|
||||||
MemoryPointer::new(&mut globals.vm_memory)
|
|
||||||
};
|
|
||||||
|
|
||||||
env_namespace.insert(
|
env_namespace.insert(
|
||||||
"memory".to_string(),
|
"memory".to_string(),
|
||||||
@ -216,14 +216,12 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject
|
|||||||
min: 256,
|
min: 256,
|
||||||
max: Some(256),
|
max: Some(256),
|
||||||
shared: false,
|
shared: false,
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
// Table
|
// Table
|
||||||
let local_table = unsafe {
|
let local_table = unsafe { TablePointer::new(&mut globals.vm_table) };
|
||||||
TablePointer::new(&mut globals.vm_table)
|
|
||||||
};
|
|
||||||
|
|
||||||
env_namespace.insert(
|
env_namespace.insert(
|
||||||
"table".to_string(),
|
"table".to_string(),
|
||||||
@ -235,7 +233,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject
|
|||||||
ty: ElementType::Anyfunc,
|
ty: ElementType::Anyfunc,
|
||||||
min: 10,
|
min: 10,
|
||||||
max: Some(10),
|
max: Some(10),
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -105,11 +105,7 @@ pub extern "C" fn ___syscall1(which: c_int, mut varargs: VarArgs, vmctx: &mut Ct
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// read
|
/// read
|
||||||
pub extern "C" fn ___syscall3(
|
pub extern "C" fn ___syscall3(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> ssize_t {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> ssize_t {
|
|
||||||
debug!("emscripten::___syscall3 (read) {}", which);
|
debug!("emscripten::___syscall3 (read) {}", which);
|
||||||
let fd: i32 = varargs.get(vmctx);
|
let fd: i32 = varargs.get(vmctx);
|
||||||
let buf: u32 = varargs.get(vmctx);
|
let buf: u32 = varargs.get(vmctx);
|
||||||
@ -122,11 +118,7 @@ pub extern "C" fn ___syscall3(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// write
|
/// write
|
||||||
pub extern "C" fn ___syscall4(
|
pub extern "C" fn ___syscall4(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall4 (write) {}", which);
|
debug!("emscripten::___syscall4 (write) {}", which);
|
||||||
let fd: i32 = varargs.get(vmctx);
|
let fd: i32 = varargs.get(vmctx);
|
||||||
let buf: u32 = varargs.get(vmctx);
|
let buf: u32 = varargs.get(vmctx);
|
||||||
@ -137,11 +129,7 @@ pub extern "C" fn ___syscall4(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// open
|
/// open
|
||||||
pub extern "C" fn ___syscall5(
|
pub extern "C" fn ___syscall5(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall5 (open) {}", which);
|
debug!("emscripten::___syscall5 (open) {}", which);
|
||||||
let pathname: u32 = varargs.get(vmctx);
|
let pathname: u32 = varargs.get(vmctx);
|
||||||
let flags: i32 = varargs.get(vmctx);
|
let flags: i32 = varargs.get(vmctx);
|
||||||
@ -157,11 +145,7 @@ pub extern "C" fn ___syscall5(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// close
|
/// close
|
||||||
pub extern "C" fn ___syscall6(
|
pub extern "C" fn ___syscall6(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall6 (close) {}", which);
|
debug!("emscripten::___syscall6 (close) {}", which);
|
||||||
let fd: i32 = varargs.get(vmctx);
|
let fd: i32 = varargs.get(vmctx);
|
||||||
debug!("fd: {}", fd);
|
debug!("fd: {}", fd);
|
||||||
@ -169,11 +153,7 @@ pub extern "C" fn ___syscall6(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// chdir
|
// chdir
|
||||||
pub extern "C" fn ___syscall12(
|
pub extern "C" fn ___syscall12(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall12 (chdir) {}", which);
|
debug!("emscripten::___syscall12 (chdir) {}", which);
|
||||||
let path_addr: i32 = varargs.get(vmctx);
|
let path_addr: i32 = varargs.get(vmctx);
|
||||||
unsafe {
|
unsafe {
|
||||||
@ -192,11 +172,7 @@ pub extern "C" fn ___syscall20() -> pid_t {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// mkdir
|
// mkdir
|
||||||
pub extern "C" fn ___syscall39(
|
pub extern "C" fn ___syscall39(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall39 (mkdir) {}", which);
|
debug!("emscripten::___syscall39 (mkdir) {}", which);
|
||||||
let pathname: u32 = varargs.get(vmctx);
|
let pathname: u32 = varargs.get(vmctx);
|
||||||
let mode: u32 = varargs.get(vmctx);
|
let mode: u32 = varargs.get(vmctx);
|
||||||
@ -205,11 +181,7 @@ pub extern "C" fn ___syscall39(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// rmdir
|
// rmdir
|
||||||
pub extern "C" fn ___syscall40(
|
pub extern "C" fn ___syscall40(_which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
_which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall40 (rmdir)");
|
debug!("emscripten::___syscall40 (rmdir)");
|
||||||
let pathname: u32 = varargs.get(vmctx);
|
let pathname: u32 = varargs.get(vmctx);
|
||||||
let pathname_addr = vmctx.memory(0)[pathname as usize] as *const i8;
|
let pathname_addr = vmctx.memory(0)[pathname as usize] as *const i8;
|
||||||
@ -217,11 +189,7 @@ pub extern "C" fn ___syscall40(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// ioctl
|
/// ioctl
|
||||||
pub extern "C" fn ___syscall54(
|
pub extern "C" fn ___syscall54(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall54 (ioctl) {}", which);
|
debug!("emscripten::___syscall54 (ioctl) {}", which);
|
||||||
let fd: i32 = varargs.get(vmctx);
|
let fd: i32 = varargs.get(vmctx);
|
||||||
let request: u32 = varargs.get(vmctx);
|
let request: u32 = varargs.get(vmctx);
|
||||||
@ -263,11 +231,7 @@ pub extern "C" fn ___syscall54(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// setpgid
|
// setpgid
|
||||||
pub extern "C" fn ___syscall57(
|
pub extern "C" fn ___syscall57(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall57 (setpgid) {}", which);
|
debug!("emscripten::___syscall57 (setpgid) {}", which);
|
||||||
let pid: i32 = varargs.get(vmctx);
|
let pid: i32 = varargs.get(vmctx);
|
||||||
let pgid: i32 = varargs.get(vmctx);
|
let pgid: i32 = varargs.get(vmctx);
|
||||||
@ -275,11 +239,7 @@ pub extern "C" fn ___syscall57(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// dup2
|
// dup2
|
||||||
pub extern "C" fn ___syscall63(
|
pub extern "C" fn ___syscall63(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall63 (dup2) {}", which);
|
debug!("emscripten::___syscall63 (dup2) {}", which);
|
||||||
|
|
||||||
let src: i32 = varargs.get(vmctx);
|
let src: i32 = varargs.get(vmctx);
|
||||||
@ -296,11 +256,7 @@ pub extern "C" fn ___syscall64() -> pid_t {
|
|||||||
|
|
||||||
// socketcall
|
// socketcall
|
||||||
#[allow(clippy::cast_ptr_alignment)]
|
#[allow(clippy::cast_ptr_alignment)]
|
||||||
pub extern "C" fn ___syscall102(
|
pub extern "C" fn ___syscall102(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall102 (socketcall) {}", which);
|
debug!("emscripten::___syscall102 (socketcall) {}", which);
|
||||||
let call: u32 = varargs.get(vmctx);
|
let call: u32 = varargs.get(vmctx);
|
||||||
let mut socket_varargs: VarArgs = varargs.get(vmctx);
|
let mut socket_varargs: VarArgs = varargs.get(vmctx);
|
||||||
@ -547,11 +503,7 @@ pub extern "C" fn ___syscall102(
|
|||||||
|
|
||||||
/// wait4
|
/// wait4
|
||||||
#[allow(clippy::cast_ptr_alignment)]
|
#[allow(clippy::cast_ptr_alignment)]
|
||||||
pub extern "C" fn ___syscall114(
|
pub extern "C" fn ___syscall114(_which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> pid_t {
|
||||||
_which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> pid_t {
|
|
||||||
debug!("emscripten::___syscall114 (wait4)");
|
debug!("emscripten::___syscall114 (wait4)");
|
||||||
let pid: pid_t = varargs.get(vmctx);
|
let pid: pid_t = varargs.get(vmctx);
|
||||||
let status: u32 = varargs.get(vmctx);
|
let status: u32 = varargs.get(vmctx);
|
||||||
@ -569,11 +521,7 @@ pub extern "C" fn ___syscall114(
|
|||||||
|
|
||||||
/// uname
|
/// uname
|
||||||
// NOTE: Wondering if we should return custom utsname, like Emscripten.
|
// NOTE: Wondering if we should return custom utsname, like Emscripten.
|
||||||
pub extern "C" fn ___syscall122(
|
pub extern "C" fn ___syscall122(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall122 (uname) {}", which);
|
debug!("emscripten::___syscall122 (uname) {}", which);
|
||||||
let buf: u32 = varargs.get(vmctx);
|
let buf: u32 = varargs.get(vmctx);
|
||||||
debug!("=> buf: {}", buf);
|
debug!("=> buf: {}", buf);
|
||||||
@ -583,11 +531,7 @@ pub extern "C" fn ___syscall122(
|
|||||||
|
|
||||||
// select
|
// select
|
||||||
#[allow(clippy::cast_ptr_alignment)]
|
#[allow(clippy::cast_ptr_alignment)]
|
||||||
pub extern "C" fn ___syscall142(
|
pub extern "C" fn ___syscall142(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall142 (newselect) {}", which);
|
debug!("emscripten::___syscall142 (newselect) {}", which);
|
||||||
|
|
||||||
let nfds: i32 = varargs.get(vmctx);
|
let nfds: i32 = varargs.get(vmctx);
|
||||||
@ -606,11 +550,7 @@ pub extern "C" fn ___syscall142(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// mmap2
|
// mmap2
|
||||||
pub extern "C" fn ___syscall192(
|
pub extern "C" fn ___syscall192(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall192 (mmap2) {}", which);
|
debug!("emscripten::___syscall192 (mmap2) {}", which);
|
||||||
let addr: i32 = varargs.get(vmctx);
|
let addr: i32 = varargs.get(vmctx);
|
||||||
let len: u32 = varargs.get(vmctx);
|
let len: u32 = varargs.get(vmctx);
|
||||||
@ -636,11 +576,7 @@ pub extern "C" fn ___syscall192(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// lseek
|
/// lseek
|
||||||
pub extern "C" fn ___syscall140(
|
pub extern "C" fn ___syscall140(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> off_t {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> off_t {
|
|
||||||
debug!("emscripten::___syscall140 (lseek) {}", which);
|
debug!("emscripten::___syscall140 (lseek) {}", which);
|
||||||
let fd: i32 = varargs.get(vmctx);
|
let fd: i32 = varargs.get(vmctx);
|
||||||
let offset: i64 = varargs.get(vmctx);
|
let offset: i64 = varargs.get(vmctx);
|
||||||
@ -651,11 +587,7 @@ pub extern "C" fn ___syscall140(
|
|||||||
|
|
||||||
/// readv
|
/// readv
|
||||||
#[allow(clippy::cast_ptr_alignment)]
|
#[allow(clippy::cast_ptr_alignment)]
|
||||||
pub extern "C" fn ___syscall145(
|
pub extern "C" fn ___syscall145(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> ssize_t {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> ssize_t {
|
|
||||||
debug!("emscripten::___syscall145 (readv) {}", which);
|
debug!("emscripten::___syscall145 (readv) {}", which);
|
||||||
// let fd: i32 = varargs.get(vmctx);
|
// let fd: i32 = varargs.get(vmctx);
|
||||||
// let iov: u32 = varargs.get(vmctx);
|
// let iov: u32 = varargs.get(vmctx);
|
||||||
@ -695,11 +627,7 @@ pub extern "C" fn ___syscall145(
|
|||||||
|
|
||||||
// writev
|
// writev
|
||||||
#[allow(clippy::cast_ptr_alignment)]
|
#[allow(clippy::cast_ptr_alignment)]
|
||||||
pub extern "C" fn ___syscall146(
|
pub extern "C" fn ___syscall146(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> ssize_t {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> ssize_t {
|
|
||||||
debug!("emscripten::___syscall146 (writev) {}", which);
|
debug!("emscripten::___syscall146 (writev) {}", which);
|
||||||
let fd: i32 = varargs.get(vmctx);
|
let fd: i32 = varargs.get(vmctx);
|
||||||
let iov: i32 = varargs.get(vmctx);
|
let iov: i32 = varargs.get(vmctx);
|
||||||
@ -731,11 +659,7 @@ pub extern "C" fn ___syscall146(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// pread
|
// pread
|
||||||
pub extern "C" fn ___syscall180(
|
pub extern "C" fn ___syscall180(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall180 (pread) {}", which);
|
debug!("emscripten::___syscall180 (pread) {}", which);
|
||||||
let fd: i32 = varargs.get(vmctx);
|
let fd: i32 = varargs.get(vmctx);
|
||||||
let buf: u32 = varargs.get(vmctx);
|
let buf: u32 = varargs.get(vmctx);
|
||||||
@ -752,11 +676,7 @@ pub extern "C" fn ___syscall180(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// pwrite
|
// pwrite
|
||||||
pub extern "C" fn ___syscall181(
|
pub extern "C" fn ___syscall181(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall181 (pwrite) {}", which);
|
debug!("emscripten::___syscall181 (pwrite) {}", which);
|
||||||
let fd: i32 = varargs.get(vmctx);
|
let fd: i32 = varargs.get(vmctx);
|
||||||
let buf: u32 = varargs.get(vmctx);
|
let buf: u32 = varargs.get(vmctx);
|
||||||
@ -777,11 +697,7 @@ pub extern "C" fn ___syscall181(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// stat64
|
// stat64
|
||||||
pub extern "C" fn ___syscall195(
|
pub extern "C" fn ___syscall195(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall195 (stat64) {}", which);
|
debug!("emscripten::___syscall195 (stat64) {}", which);
|
||||||
let pathname: u32 = varargs.get(vmctx);
|
let pathname: u32 = varargs.get(vmctx);
|
||||||
let buf: u32 = varargs.get(vmctx);
|
let buf: u32 = varargs.get(vmctx);
|
||||||
@ -801,11 +717,7 @@ pub extern "C" fn ___syscall195(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// fstat64
|
// fstat64
|
||||||
pub extern "C" fn ___syscall197(
|
pub extern "C" fn ___syscall197(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall197 (fstat64) {}", which);
|
debug!("emscripten::___syscall197 (fstat64) {}", which);
|
||||||
let fd: c_int = varargs.get(vmctx);
|
let fd: c_int = varargs.get(vmctx);
|
||||||
let buf: u32 = varargs.get(vmctx);
|
let buf: u32 = varargs.get(vmctx);
|
||||||
@ -842,11 +754,7 @@ pub extern "C" fn ___syscall202() -> gid_t {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// chown
|
// chown
|
||||||
pub extern "C" fn ___syscall212(
|
pub extern "C" fn ___syscall212(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall212 (chown) {}", which);
|
debug!("emscripten::___syscall212 (chown) {}", which);
|
||||||
|
|
||||||
let pathname: u32 = varargs.get(vmctx);
|
let pathname: u32 = varargs.get(vmctx);
|
||||||
@ -859,11 +767,7 @@ pub extern "C" fn ___syscall212(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// fcntl64
|
// fcntl64
|
||||||
pub extern "C" fn ___syscall221(
|
pub extern "C" fn ___syscall221(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall221 (fcntl64) {}", which);
|
debug!("emscripten::___syscall221 (fcntl64) {}", which);
|
||||||
// fcntl64
|
// fcntl64
|
||||||
let _fd: i32 = varargs.get(vmctx);
|
let _fd: i32 = varargs.get(vmctx);
|
||||||
@ -875,11 +779,7 @@ pub extern "C" fn ___syscall221(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// dup3
|
/// dup3
|
||||||
pub extern "C" fn ___syscall330(
|
pub extern "C" fn ___syscall330(_which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> pid_t {
|
||||||
_which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> pid_t {
|
|
||||||
// Implementation based on description at https://linux.die.net/man/2/dup3
|
// Implementation based on description at https://linux.die.net/man/2/dup3
|
||||||
debug!("emscripten::___syscall330 (dup3)");
|
debug!("emscripten::___syscall330 (dup3)");
|
||||||
let oldfd: c_int = varargs.get(vmctx);
|
let oldfd: c_int = varargs.get(vmctx);
|
||||||
@ -913,11 +813,7 @@ pub extern "C" fn ___syscall330(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// prlimit64
|
// prlimit64
|
||||||
pub extern "C" fn ___syscall340(
|
pub extern "C" fn ___syscall340(which: c_int, mut varargs: VarArgs, vmctx: &mut Ctx) -> c_int {
|
||||||
which: c_int,
|
|
||||||
mut varargs: VarArgs,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___syscall340 (prlimit64), {}", which);
|
debug!("emscripten::___syscall340 (prlimit64), {}", which);
|
||||||
// NOTE: Doesn't really matter. Wasm modules cannot exceed WASM_PAGE_SIZE anyway.
|
// NOTE: Doesn't really matter. Wasm modules cannot exceed WASM_PAGE_SIZE anyway.
|
||||||
let _pid: i32 = varargs.get(vmctx);
|
let _pid: i32 = varargs.get(vmctx);
|
||||||
|
@ -51,11 +51,7 @@ pub extern "C" fn _gettimeofday(tp: c_int, tz: c_int, vmctx: &mut Ctx) -> c_int
|
|||||||
|
|
||||||
/// emscripten: _clock_gettime
|
/// emscripten: _clock_gettime
|
||||||
#[allow(clippy::cast_ptr_alignment)]
|
#[allow(clippy::cast_ptr_alignment)]
|
||||||
pub extern "C" fn _clock_gettime(
|
pub extern "C" fn _clock_gettime(clk_id: libc::clockid_t, tp: c_int, vmctx: &mut Ctx) -> c_int {
|
||||||
clk_id: libc::clockid_t,
|
|
||||||
tp: c_int,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::_clock_gettime {} {}", clk_id, tp);
|
debug!("emscripten::_clock_gettime {} {}", clk_id, tp);
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
struct GuestTimeSpec {
|
struct GuestTimeSpec {
|
||||||
@ -84,11 +80,7 @@ pub extern "C" fn _clock_gettime(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// emscripten: ___clock_gettime
|
/// emscripten: ___clock_gettime
|
||||||
pub extern "C" fn ___clock_gettime(
|
pub extern "C" fn ___clock_gettime(clk_id: libc::clockid_t, tp: c_int, vmctx: &mut Ctx) -> c_int {
|
||||||
clk_id: libc::clockid_t,
|
|
||||||
tp: c_int,
|
|
||||||
vmctx: &mut Ctx,
|
|
||||||
) -> c_int {
|
|
||||||
debug!("emscripten::___clock_gettime {} {}", clk_id, tp);
|
debug!("emscripten::___clock_gettime {} {}", clk_id, tp);
|
||||||
_clock_gettime(clk_id, tp, vmctx)
|
_clock_gettime(clk_id, tp, vmctx)
|
||||||
}
|
}
|
||||||
|
@ -144,8 +144,8 @@ mod tests {
|
|||||||
fn should_detect_emscripten_files() {
|
fn should_detect_emscripten_files() {
|
||||||
const wast_bytes: &[u8] = include_bytes!("tests/is_emscripten_true.wast");
|
const wast_bytes: &[u8] = include_bytes!("tests/is_emscripten_true.wast");
|
||||||
let wasm_binary = wat2wasm(wast_bytes.to_vec()).expect("Can't convert to wasm");
|
let wasm_binary = wat2wasm(wast_bytes.to_vec()).expect("Can't convert to wasm");
|
||||||
let module =
|
let module = compile_with(&wasm_binary[..], &CraneliftCompiler::new())
|
||||||
compile_with(&wasm_binary[..], &CraneliftCompiler::new()).expect("WASM can't be compiled");
|
.expect("WASM can't be compiled");
|
||||||
let module = Arc::new(module);
|
let module = Arc::new(module);
|
||||||
assert!(is_emscripten_module(&module));
|
assert!(is_emscripten_module(&module));
|
||||||
}
|
}
|
||||||
@ -154,8 +154,8 @@ mod tests {
|
|||||||
fn should_detect_non_emscripten_files() {
|
fn should_detect_non_emscripten_files() {
|
||||||
const wast_bytes: &[u8] = include_bytes!("tests/is_emscripten_false.wast");
|
const wast_bytes: &[u8] = include_bytes!("tests/is_emscripten_false.wast");
|
||||||
let wasm_binary = wat2wasm(wast_bytes.to_vec()).expect("Can't convert to wasm");
|
let wasm_binary = wat2wasm(wast_bytes.to_vec()).expect("Can't convert to wasm");
|
||||||
let module =
|
let module = compile_with(&wasm_binary[..], &CraneliftCompiler::new())
|
||||||
compile_with(&wasm_binary[..], &CraneliftCompiler::new()).expect("WASM can't be compiled");
|
.expect("WASM can't be compiled");
|
||||||
let module = Arc::new(module);
|
let module = Arc::new(module);
|
||||||
assert!(!is_emscripten_module(&module));
|
assert!(!is_emscripten_module(&module));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user