File wavm/dynlink.cpp
Defines
-
FFI_TYPE_CASE(nativeType)
-
namespace wasm
SYSCALL NUMBERING
Have a look in the sysroot at include/bits/syscall.h to determine the system call numbering.
Enums
-
enum libffi_type_value
Values:
-
enumerator VOID
-
enumerator INT
-
enumerator FLOAT
-
enumerator DOUBLE
-
enumerator LONGDOUBLE
-
enumerator UINT8
-
enumerator SINT8
-
enumerator UINT16
-
enumerator SINT16
-
enumerator UINT32
-
enumerator SINT32
-
enumerator UINT64
-
enumerator SINT64
-
enumerator STRUCT
-
enumerator POINTER
-
enumerator COMPLEX
-
enumerator VOID
Functions
-
void dynlinkLink()
- WAVM_DEFINE_INTRINSIC_FUNCTION (env, "dlopen", I32, dlopen, I32 fileNamePtr, I32 flags)
WebAssembly official docs on dynamic linking: https://webassembly.org/docs/dynamic-linking/
Tool conventions: https://github.com/WebAssembly/tool-conventions/blob/main/DynamicLinking.md
- WAVM_DEFINE_INTRINSIC_FUNCTION (env, "dlsym", I32, dlsym, I32 handle, I32 symbolPtr)
- WAVM_DEFINE_INTRINSIC_FUNCTION (env, "dlerror", I32, dlerror)
- WAVM_DEFINE_INTRINSIC_FUNCTION (env, "dlclose", I32, dlclose, I32 handle)
- WAVM_DEFINE_INTRINSIC_FUNCTION (env, "ffi_call", void, ffi_call, I32 cifPtr, I32 fnPtr, I32 retPtr, I32 argsPtrPtr)
The implementation of ffi_call is language-specific. The signature is:
void ffi_call(ffi_cif *cif, void (*fn)(void), void *ret, void **args);
cif = function definition
fn = function pointer
ret = return value address
args = arguments
- WAVM_DEFINE_INTRINSIC_FUNCTION (env, "ffi_prep_closure_loc", I32, ffi_prep_closure_loc, I32 a, I32 b, I32 c, I32 d, I32 e)
-
struct libffi_cif
-
struct libffi_type
-
enum libffi_type_value