mirror of
https://github.com/fluencelabs/wasmer
synced 2024-12-14 14:45:40 +00:00
40 lines
946 B
Rust
40 lines
946 B
Rust
|
use libc::c_char;
|
||
|
|
||
|
use wasmer_runtime_core::vm;
|
||
|
|
||
|
#[repr(C)]
|
||
|
pub struct LLVMModule {
|
||
|
_private: [u8; 0],
|
||
|
}
|
||
|
|
||
|
#[allow(non_camel_case_types, dead_code)]
|
||
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||
|
#[repr(C)]
|
||
|
pub enum MemProtect {
|
||
|
NONE,
|
||
|
READ,
|
||
|
READ_WRITE,
|
||
|
READ_EXECUTE,
|
||
|
}
|
||
|
|
||
|
#[allow(non_camel_case_types, dead_code)]
|
||
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||
|
#[repr(C)]
|
||
|
pub enum LLVMResult {
|
||
|
OK,
|
||
|
ALLOCATE_FAILURE,
|
||
|
PROTECT_FAILURE,
|
||
|
DEALLOC_FAILURE,
|
||
|
OBJECT_LOAD_FAILURE,
|
||
|
}
|
||
|
|
||
|
#[repr(C)]
|
||
|
pub struct Callbacks {
|
||
|
pub alloc_memory: extern "C" fn(usize, MemProtect, &mut *mut u8, &mut usize) -> LLVMResult,
|
||
|
pub protect_memory: extern "C" fn(*mut u8, usize, MemProtect) -> LLVMResult,
|
||
|
pub dealloc_memory: extern "C" fn(*mut u8, usize) -> LLVMResult,
|
||
|
|
||
|
pub lookup_vm_symbol: extern "C" fn(*const c_char, usize) -> *const vm::Func,
|
||
|
pub visit_fde: extern "C" fn(*mut u8, usize, extern "C" fn(*mut u8)),
|
||
|
}
|