summaryrefslogtreecommitdiffstats
path: root/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/libraries/libc-emcc/libc_emcc_wrapper.c
diff options
context:
space:
mode:
Diffstat (limited to 'fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/libraries/libc-emcc/libc_emcc_wrapper.c')
-rw-r--r--fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/libraries/libc-emcc/libc_emcc_wrapper.c554
1 files changed, 0 insertions, 554 deletions
diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/libraries/libc-emcc/libc_emcc_wrapper.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/libraries/libc-emcc/libc_emcc_wrapper.c
deleted file mode 100644
index 23c02aad3..000000000
--- a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/libraries/libc-emcc/libc_emcc_wrapper.c
+++ /dev/null
@@ -1,554 +0,0 @@
-/*
- * Copyright (C) 2020 Intel Corporation. All rights reserved.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- */
-
-#include "bh_common.h"
-#include "bh_log.h"
-#include "wasm_export.h"
-#include "../interpreter/wasm.h"
-#if !defined(_DEFAULT_SOURCE) && !defined(BH_PLATFORM_LINUX_SGX)
-#include "sys/syscall.h"
-#endif
-
-/* clang-format off */
-#define get_module_inst(exec_env) \
- wasm_runtime_get_module_inst(exec_env)
-
-#define validate_app_addr(offset, size) \
- wasm_runtime_validate_app_addr(module_inst, offset, size)
-
-#define validate_app_str_addr(offset) \
- wasm_runtime_validate_app_str_addr(module_inst, offset)
-
-#define validate_native_addr(addr, size) \
- wasm_runtime_validate_native_addr(module_inst, addr, size)
-
-#define addr_app_to_native(offset) \
- wasm_runtime_addr_app_to_native(module_inst, offset)
-
-#define addr_native_to_app(ptr) \
- wasm_runtime_addr_native_to_app(module_inst, ptr)
-
-#define module_malloc(size, p_native_addr) \
- wasm_runtime_module_malloc(module_inst, size, p_native_addr)
-
-#define module_free(offset) \
- wasm_runtime_module_free(module_inst, offset)
-/* clang-format on */
-
-static void
-invoke_viiii_wrapper(wasm_exec_env_t exec_env, uint32 elem_idx, int arg0,
- int arg1, int arg2, int arg3)
-{
- uint32 argv[4];
- bool ret;
-
- argv[0] = arg0;
- argv[1] = arg1;
- argv[2] = arg2;
- argv[3] = arg3;
- ret = wasm_runtime_call_indirect(exec_env, elem_idx, 4, argv);
- (void)ret;
-}
-
-static void
-invoke_viii_wrapper(wasm_exec_env_t exec_env, uint32 elem_idx, int arg0,
- int arg1, int arg2)
-{
- uint32 argv[4];
- bool ret;
-
- argv[0] = arg0;
- argv[1] = arg1;
- argv[2] = arg2;
- ret = wasm_runtime_call_indirect(exec_env, elem_idx, 3, argv);
- (void)ret;
-}
-
-static void
-invoke_vii_wrapper(wasm_exec_env_t exec_env, uint32 elem_idx, int arg0,
- int arg1)
-{
- uint32 argv[4];
- bool ret;
-
- argv[0] = arg0;
- argv[1] = arg1;
- ret = wasm_runtime_call_indirect(exec_env, elem_idx, 2, argv);
- (void)ret;
-}
-
-static void
-invoke_vi_wrapper(wasm_exec_env_t exec_env, uint32 elem_idx, int arg0)
-{
- uint32 argv[4];
- bool ret;
-
- argv[0] = arg0;
- ret = wasm_runtime_call_indirect(exec_env, elem_idx, 1, argv);
- (void)ret;
-}
-
-static int
-invoke_iii_wrapper(wasm_exec_env_t exec_env, uint32 elem_idx, int arg0,
- int arg1)
-{
- uint32 argv[4];
- bool ret;
-
- argv[0] = arg0;
- argv[1] = arg1;
- ret = wasm_runtime_call_indirect(exec_env, elem_idx, 2, argv);
- return ret ? argv[0] : 0;
-}
-
-static int
-invoke_ii_wrapper(wasm_exec_env_t exec_env, uint32 elem_idx, int arg0)
-{
- uint32 argv[4];
- bool ret;
-
- argv[0] = arg0;
- ret = wasm_runtime_call_indirect(exec_env, elem_idx, 1, argv);
- return ret ? argv[0] : 0;
-}
-
-struct timespec_emcc {
- int tv_sec;
- int tv_nsec;
-};
-
-struct stat_emcc {
- unsigned st_dev;
- int __st_dev_padding;
- unsigned __st_ino_truncated;
- unsigned st_mode;
- unsigned st_nlink;
- unsigned st_uid;
- unsigned st_gid;
- unsigned st_rdev;
- int __st_rdev_padding;
- int64 st_size;
- int st_blksize;
- int st_blocks;
- struct timespec_emcc st_atim;
- struct timespec_emcc st_mtim;
- struct timespec_emcc st_ctim;
- int64 st_ino;
-};
-
-static int
-open_wrapper(wasm_exec_env_t exec_env, const char *pathname, int flags,
- int mode)
-{
- if (pathname == NULL)
- return -1;
- return open(pathname, flags, mode);
-}
-
-static int
-__sys_read_wrapper(wasm_exec_env_t exec_env, int fd, void *buf, uint32 count)
-{
- return read(fd, buf, count);
-}
-
-static void
-statbuf_native2app(const struct stat *statbuf_native,
- struct stat_emcc *statbuf_app)
-{
- statbuf_app->st_dev = (unsigned)statbuf_native->st_dev;
- statbuf_app->__st_ino_truncated = (unsigned)statbuf_native->st_ino;
- statbuf_app->st_mode = (unsigned)statbuf_native->st_mode;
- statbuf_app->st_nlink = (unsigned)statbuf_native->st_nlink;
- statbuf_app->st_uid = (unsigned)statbuf_native->st_uid;
- statbuf_app->st_gid = (unsigned)statbuf_native->st_gid;
- statbuf_app->st_rdev = (unsigned)statbuf_native->st_rdev;
- statbuf_app->st_size = (int64)statbuf_native->st_size;
- statbuf_app->st_blksize = (unsigned)statbuf_native->st_blksize;
- statbuf_app->st_blocks = (unsigned)statbuf_native->st_blocks;
- statbuf_app->st_ino = (int64)statbuf_native->st_ino;
- statbuf_app->st_atim.tv_sec = (int)statbuf_native->st_atim.tv_sec;
- statbuf_app->st_atim.tv_nsec = (int)statbuf_native->st_atim.tv_nsec;
- statbuf_app->st_mtim.tv_sec = (int)statbuf_native->st_mtim.tv_sec;
- statbuf_app->st_mtim.tv_nsec = (int)statbuf_native->st_mtim.tv_nsec;
- statbuf_app->st_ctim.tv_sec = (int)statbuf_native->st_ctim.tv_sec;
- statbuf_app->st_ctim.tv_nsec = (int)statbuf_native->st_ctim.tv_nsec;
-}
-
-static int
-__sys_stat64_wrapper(wasm_exec_env_t exec_env, const char *pathname,
- struct stat_emcc *statbuf_app)
-{
- wasm_module_inst_t module_inst = get_module_inst(exec_env);
- int ret;
- struct stat statbuf;
-
- if (!validate_native_addr((void *)statbuf_app, sizeof(struct stat_emcc)))
- return -1;
-
- if (pathname == NULL)
- return -1;
-
- ret = stat(pathname, &statbuf);
- if (ret == 0)
- statbuf_native2app(&statbuf, statbuf_app);
- return ret;
-}
-
-static int
-__sys_fstat64_wrapper(wasm_exec_env_t exec_env, int fd,
- struct stat_emcc *statbuf_app)
-{
- wasm_module_inst_t module_inst = get_module_inst(exec_env);
- int ret;
- struct stat statbuf;
-
- if (!validate_native_addr((void *)statbuf_app, sizeof(struct stat_emcc)))
- return -1;
-
- if (fd <= 0)
- return -1;
-
- ret = fstat(fd, &statbuf);
- if (ret == 0)
- statbuf_native2app(&statbuf, statbuf_app);
- return ret;
-}
-
-static int
-mmap_wrapper(wasm_exec_env_t exec_env, void *addr, int length, int prot,
- int flags, int fd, int64 offset)
-{
- wasm_module_inst_t module_inst = get_module_inst(exec_env);
- uint32 buf_offset;
- char *buf;
- int size_read;
-
- buf_offset = module_malloc(length, (void **)&buf);
- if (buf_offset == 0)
- return -1;
-
- if (fd <= 0)
- return -1;
-
- if (lseek(fd, offset, SEEK_SET) == -1)
- return -1;
-
- size_read = read(fd, buf, length);
- (void)size_read;
- return buf_offset;
-}
-
-static int
-munmap_wrapper(wasm_exec_env_t exec_env, uint32 buf_offset, int length)
-{
- wasm_module_inst_t module_inst = get_module_inst(exec_env);
- module_free(buf_offset);
- return 0;
-}
-
-static int
-__munmap_wrapper(wasm_exec_env_t exec_env, uint32 buf_offset, int length)
-{
- return munmap_wrapper(exec_env, buf_offset, length);
-}
-
-static int
-getentropy_wrapper(wasm_exec_env_t exec_env, void *buffer, uint32 length)
-{
- if (buffer == NULL)
- return -1;
-#if defined(_DEFAULT_SOURCE) || defined(BH_PLATFORM_LINUX_SGX)
- return getentropy(buffer, length);
-#else
- return syscall(SYS_getrandom, buffer, length, 0);
-#endif
-}
-
-static int
-setjmp_wrapper(wasm_exec_env_t exec_env, void *jmp_buf)
-{
- os_printf("setjmp() called\n");
- return 0;
-}
-
-static void
-longjmp_wrapper(wasm_exec_env_t exec_env, void *jmp_buf, int val)
-{
- os_printf("longjmp() called\n");
-}
-
-#if !defined(BH_PLATFORM_LINUX_SGX)
-static FILE *file_list[32] = { 0 };
-
-static int
-get_free_file_slot()
-{
- unsigned int i;
-
- for (i = 0; i < sizeof(file_list) / sizeof(FILE *); i++) {
- if (file_list[i] == NULL)
- return (int)i;
- }
- return -1;
-}
-
-static int
-fopen_wrapper(wasm_exec_env_t exec_env, const char *pathname, const char *mode)
-{
- FILE *file;
- int file_id;
-
- if (pathname == NULL || mode == NULL)
- return 0;
-
- if ((file_id = get_free_file_slot()) == -1)
- return 0;
-
- file = fopen(pathname, mode);
- if (!file)
- return 0;
-
- file_list[file_id] = file;
- return file_id + 1;
-}
-
-static uint32
-fread_wrapper(wasm_exec_env_t exec_env, void *ptr, uint32 size, uint32 nmemb,
- int file_id)
-{
- FILE *file;
-
- file_id = file_id - 1;
- if ((unsigned)file_id >= sizeof(file_list) / sizeof(FILE *)) {
- return 0;
- }
- if ((file = file_list[file_id]) == NULL) {
- return 0;
- }
- return (uint32)fread(ptr, size, nmemb, file);
-}
-
-static int
-fseeko_wrapper(wasm_exec_env_t exec_env, int file_id, int64 offset, int whence)
-{
- FILE *file;
-
- file_id = file_id - 1;
- if ((unsigned)file_id >= sizeof(file_list) / sizeof(FILE *)) {
- return -1;
- }
- if ((file = file_list[file_id]) == NULL) {
- return -1;
- }
- return (uint32)fseek(file, offset, whence);
-}
-
-static uint32
-emcc_fwrite_wrapper(wasm_exec_env_t exec_env, const void *ptr, uint32 size,
- uint32 nmemb, int file_id)
-{
- FILE *file;
-
- file_id = file_id - 1;
- if ((unsigned)file_id >= sizeof(file_list) / sizeof(FILE *)) {
- return 0;
- }
- if ((file = file_list[file_id]) == NULL) {
- return 0;
- }
- return (uint32)fwrite(ptr, size, nmemb, file);
-}
-
-static int
-feof_wrapper(wasm_exec_env_t exec_env, int file_id)
-{
- FILE *file;
-
- file_id = file_id - 1;
- if ((unsigned)file_id >= sizeof(file_list) / sizeof(FILE *))
- return 1;
- if ((file = file_list[file_id]) == NULL)
- return 1;
- return feof(file);
-}
-
-static int
-fclose_wrapper(wasm_exec_env_t exec_env, int file_id)
-{
- FILE *file;
-
- file_id = file_id - 1;
- if ((unsigned)file_id >= sizeof(file_list) / sizeof(FILE *))
- return -1;
- if ((file = file_list[file_id]) == NULL)
- return -1;
- file_list[file_id] = NULL;
- return fclose(file);
-}
-
-static int
-__sys_mkdir_wrapper(wasm_exec_env_t exec_env, const char *pathname, int mode)
-{
- if (!pathname)
- return -1;
- return mkdir(pathname, mode);
-}
-
-static int
-__sys_rmdir_wrapper(wasm_exec_env_t exec_env, const char *pathname)
-{
- if (!pathname)
- return -1;
- return rmdir(pathname);
-}
-
-static int
-__sys_unlink_wrapper(wasm_exec_env_t exec_env, const char *pathname)
-{
- if (!pathname)
- return -1;
- return unlink(pathname);
-}
-
-static uint32
-__sys_getcwd_wrapper(wasm_exec_env_t exec_env, char *buf, uint32 size)
-{
- wasm_module_inst_t module_inst = get_module_inst(exec_env);
- char *ret;
-
- if (!buf)
- return -1;
-
- ret = getcwd(buf, size);
- return ret ? addr_native_to_app(ret) : 0;
-}
-
-#include <sys/utsname.h>
-
-struct utsname_app {
- char sysname[64];
- char nodename[64];
- char release[64];
- char version[64];
- char machine[64];
- char domainname[64];
-};
-
-static int
-__sys_uname_wrapper(wasm_exec_env_t exec_env, struct utsname_app *uname_app)
-{
- wasm_module_inst_t module_inst = get_module_inst(exec_env);
- struct utsname uname_native = { 0 };
- uint32 length;
-
- if (!validate_native_addr(uname_app, sizeof(struct utsname_app)))
- return -1;
-
- if (uname(&uname_native) != 0) {
- return -1;
- }
-
- memset(uname_app, 0, sizeof(struct utsname_app));
-
- length = strlen(uname_native.sysname);
- if (length > sizeof(uname_app->sysname) - 1)
- length = sizeof(uname_app->sysname) - 1;
- bh_memcpy_s(uname_app->sysname, sizeof(uname_app->sysname),
- uname_native.sysname, length);
-
- length = strlen(uname_native.nodename);
- if (length > sizeof(uname_app->nodename) - 1)
- length = sizeof(uname_app->nodename) - 1;
- bh_memcpy_s(uname_app->nodename, sizeof(uname_app->nodename),
- uname_native.nodename, length);
-
- length = strlen(uname_native.release);
- if (length > sizeof(uname_app->release) - 1)
- length = sizeof(uname_app->release) - 1;
- bh_memcpy_s(uname_app->release, sizeof(uname_app->release),
- uname_native.release, length);
-
- length = strlen(uname_native.version);
- if (length > sizeof(uname_app->version) - 1)
- length = sizeof(uname_app->version) - 1;
- bh_memcpy_s(uname_app->version, sizeof(uname_app->version),
- uname_native.version, length);
-
-#ifdef _GNU_SOURCE
- length = strlen(uname_native.domainname);
- if (length > sizeof(uname_app->domainname) - 1)
- length = sizeof(uname_app->domainname) - 1;
- bh_memcpy_s(uname_app->domainname, sizeof(uname_app->domainname),
- uname_native.domainname, length);
-#endif
-
- return 0;
-}
-
-static void
-emscripten_notify_memory_growth_wrapper(wasm_exec_env_t exec_env, int i)
-{
- (void)i;
-}
-
-static void
-emscripten_thread_sleep_wrapper(wasm_exec_env_t exec_env, double timeout_ms)
-{
- uint64 ms = (uint64)timeout_ms;
- uint64 sec = ms / 1000, us = (ms % 1000) * 1000;
-
- if (sec > 0)
- sleep(sec);
- if (us > 0)
- usleep(us);
-}
-
-#endif /* end of BH_PLATFORM_LINUX_SGX */
-
-/* clang-format off */
-#define REG_NATIVE_FUNC(func_name, signature) \
- { #func_name, func_name##_wrapper, signature, NULL }
-/* clang-format off */
-
-static NativeSymbol native_symbols_libc_emcc[] = {
- REG_NATIVE_FUNC(invoke_viiii, "(iiiii)"),
- REG_NATIVE_FUNC(invoke_viii, "(iiii)"),
- REG_NATIVE_FUNC(invoke_vii, "(iii)"),
- REG_NATIVE_FUNC(invoke_vi, "(ii)"),
- REG_NATIVE_FUNC(invoke_iii, "(iii)i"),
- REG_NATIVE_FUNC(invoke_ii, "(ii)i"),
- REG_NATIVE_FUNC(open, "($ii)i"),
- REG_NATIVE_FUNC(__sys_read, "(i*~)i"),
- REG_NATIVE_FUNC(__sys_stat64, "($*)i"),
- REG_NATIVE_FUNC(__sys_fstat64, "(i*)i"),
- REG_NATIVE_FUNC(mmap, "(*iiiiI)i"),
- REG_NATIVE_FUNC(munmap, "(ii)i"),
- REG_NATIVE_FUNC(__munmap, "(ii)i"),
- REG_NATIVE_FUNC(getentropy, "(*~)i"),
- REG_NATIVE_FUNC(setjmp, "(*)i"),
- REG_NATIVE_FUNC(longjmp, "(*i)"),
-#if !defined(BH_PLATFORM_LINUX_SGX)
- REG_NATIVE_FUNC(fopen, "($$)i"),
- REG_NATIVE_FUNC(fread, "(*iii)i"),
- REG_NATIVE_FUNC(fseeko, "(iIi)i"),
- REG_NATIVE_FUNC(emcc_fwrite, "(*iii)i"),
- REG_NATIVE_FUNC(feof, "(i)i"),
- REG_NATIVE_FUNC(fclose, "(i)i"),
- REG_NATIVE_FUNC(__sys_mkdir, "($i)i"),
- REG_NATIVE_FUNC(__sys_rmdir, "($)i"),
- REG_NATIVE_FUNC(__sys_unlink, "($)i"),
- REG_NATIVE_FUNC(__sys_getcwd, "(*~)i"),
- REG_NATIVE_FUNC(__sys_uname, "(*)i"),
- REG_NATIVE_FUNC(emscripten_notify_memory_growth, "(i)"),
- REG_NATIVE_FUNC(emscripten_thread_sleep, "(F)"),
-#endif /* end of BH_PLATFORM_LINUX_SGX */
-};
-
-uint32
-get_libc_emcc_export_apis(NativeSymbol **p_libc_emcc_apis)
-{
- *p_libc_emcc_apis = native_symbols_libc_emcc;
- return sizeof(native_symbols_libc_emcc) / sizeof(NativeSymbol);
-}