Просмотр исходного кода

Remove iwasm/runtime/platform src files, refine interpreter and fix issue of --repl option (#150)

wenyongh 6 лет назад
Родитель
Сommit
5875a37f34
43 измененных файлов с 84 добавлено и 646 удалено
  1. 2 3
      core/iwasm/lib/native/libc/libc_builtin_wrapper.c
  2. 1 1
      core/iwasm/lib/native/libc/wasmtime-wasi-c/sandboxed-system-primitives/src/locking.h
  3. 1 1
      core/iwasm/lib/native/libc/wasmtime-wasi-c/sandboxed-system-primitives/src/posix.c
  4. 1 1
      core/iwasm/lib/native/libc/wasmtime-wasi-c/sandboxed-system-primitives/src/random.c
  5. 2 2
      core/iwasm/lib/native/libc/wasmtime-wasi-c/sandboxed-system-primitives/src/ssp_config.h
  6. 1 1
      core/iwasm/lib/native/libc/wasmtime-wasi-c/sandboxed-system-primitives/src/str.c
  7. 1 1
      core/iwasm/lib/native/libc/wasmtime-wasi-c/sandboxed-system-primitives/src/str.h
  8. 0 1
      core/iwasm/products/alios-things/iwasm.mk
  9. 0 1
      core/iwasm/products/darwin/CMakeLists.txt
  10. 2 4
      core/iwasm/products/darwin/main.c
  11. 0 1
      core/iwasm/products/linux-sgx/CMakeLists.txt
  12. 0 1
      core/iwasm/products/linux/CMakeLists.txt
  13. 2 4
      core/iwasm/products/linux/main.c
  14. 0 1
      core/iwasm/products/vxworks/CMakeLists.txt
  15. 2 4
      core/iwasm/products/vxworks/main.c
  16. 2 1
      core/iwasm/products/zephyr/simple/CMakeLists.txt
  17. 0 15
      core/iwasm/runtime/platform/alios/wasm_native.c
  18. 0 14
      core/iwasm/runtime/platform/darwin/platform.cmake
  19. 0 14
      core/iwasm/runtime/platform/darwin/wasm_native.c
  20. 0 14
      core/iwasm/runtime/platform/linux-sgx/platform.cmake
  21. 0 15
      core/iwasm/runtime/platform/linux-sgx/wasm_native.c
  22. 0 14
      core/iwasm/runtime/platform/linux/platform.cmake
  23. 0 365
      core/iwasm/runtime/platform/linux/wasm_native.c
  24. 0 14
      core/iwasm/runtime/platform/vxworks/platform.cmake
  25. 0 15
      core/iwasm/runtime/platform/vxworks/wasm_native.c
  26. 0 14
      core/iwasm/runtime/platform/zephyr/platform.cmake
  27. 0 15
      core/iwasm/runtime/platform/zephyr/wasm_native.c
  28. 0 2
      core/iwasm/runtime/vmcore-wasm/wasm.h
  29. 13 8
      core/iwasm/runtime/vmcore-wasm/wasm_application.c
  30. 13 13
      core/iwasm/runtime/vmcore-wasm/wasm_interp.c
  31. 4 4
      core/iwasm/runtime/vmcore-wasm/wasm_loader.c
  32. 0 3
      core/iwasm/runtime/vmcore-wasm/wasm_native.h
  33. 19 61
      core/iwasm/runtime/vmcore-wasm/wasm_runtime.c
  34. 3 10
      core/iwasm/runtime/vmcore-wasm/wasm_runtime.h
  35. 1 0
      core/shared-lib/include/config.h
  36. 1 0
      core/shared-lib/platform/alios/bh_platform.h
  37. 5 0
      core/shared-lib/platform/zephyr/bh_platform.h
  38. 1 1
      core/shared-lib/platform/zephyr/bh_platform_log.c
  39. 1 1
      samples/gui/wasm-runtime-wgl/linux-build/CMakeLists.txt
  40. 1 1
      samples/gui/wasm-runtime-wgl/zephyr-build/CMakeLists.txt
  41. 3 3
      samples/littlevgl/vgl-wasm-runtime/CMakeLists.txt
  42. 1 1
      samples/littlevgl/vgl-wasm-runtime/zephyr-build/CMakeLists.txt
  43. 1 1
      samples/simple/CMakeLists.txt

+ 2 - 3
core/iwasm/lib/native/libc/libc_builtin_wrapper.c

@@ -1245,7 +1245,9 @@ wasm_native_func_lookup(const char *module_name, const char *func_name)
     uint32 size = sizeof(native_func_defs) / sizeof(WASMNativeFuncDef);
     WASMNativeFuncDef *func_def = native_func_defs;
     WASMNativeFuncDef *func_def_end = func_def + size;
+#if WASM_ENABLE_WASI != 0
     void *ret;
+#endif
 
     if (!module_name || !func_name)
         return NULL;
@@ -1259,9 +1261,6 @@ wasm_native_func_lookup(const char *module_name, const char *func_name)
         func_def++;
     }
 
-    if ((ret = wasm_platform_native_func_lookup(module_name, func_name)))
-        return ret;
-
 #if WASM_ENABLE_WASI != 0
     if ((ret = wasi_native_func_lookup(module_name, func_name)))
         return ret;

+ 1 - 1
core/iwasm/lib/native/libc/wasmtime-wasi-c/sandboxed-system-primitives/src/locking.h

@@ -12,7 +12,7 @@
 #ifndef LOCKING_H
 #define LOCKING_H
 
-#include "config.h"
+#include "ssp_config.h"
 
 #include <assert.h>
 #include <errno.h>

+ 1 - 1
core/iwasm/lib/native/libc/wasmtime-wasi-c/sandboxed-system-primitives/src/posix.c

@@ -9,7 +9,7 @@
 //
 // Copyright (c) 2016-2018 Nuxi, https://nuxi.nl/
 
-#include "config.h"
+#include "ssp_config.h"
 
 #include <sys/types.h>
 

+ 1 - 1
core/iwasm/lib/native/libc/wasmtime-wasi-c/sandboxed-system-primitives/src/random.c

@@ -9,7 +9,7 @@
 //
 // Copyright (c) 2016 Nuxi, https://nuxi.nl/
 
-#include "config.h"
+#include "ssp_config.h"
 
 #include <fcntl.h>
 #include <pthread.h>

+ 2 - 2
core/iwasm/lib/native/libc/wasmtime-wasi-c/sandboxed-system-primitives/src/config.h → core/iwasm/lib/native/libc/wasmtime-wasi-c/sandboxed-system-primitives/src/ssp_config.h

@@ -9,8 +9,8 @@
 //
 // Copyright (c) 2016 Nuxi, https://nuxi.nl/
 
-#ifndef CONFIG_H
-#define CONFIG_H
+#ifndef SSP_CONFIG_H
+#define SSP_CONFIG_H
 
 #include <stdlib.h>
 

+ 1 - 1
core/iwasm/lib/native/libc/wasmtime-wasi-c/sandboxed-system-primitives/src/str.c

@@ -9,7 +9,7 @@
 //
 // Copyright (c) 2016 Nuxi, https://nuxi.nl/
 
-#include "config.h"
+#include "ssp_config.h"
 
 #include <errno.h>
 #include <stdlib.h>

+ 1 - 1
core/iwasm/lib/native/libc/wasmtime-wasi-c/sandboxed-system-primitives/src/str.h

@@ -12,7 +12,7 @@
 #ifndef STR_H
 #define STR_H
 
-#include "config.h"
+#include "ssp_config.h"
 
 char *str_nullterminate(const char *, size_t);
 

+ 0 - 1
core/iwasm/products/alios-things/iwasm.mk

@@ -17,7 +17,6 @@ GLOBAL_INCLUDES += ${IWASM_ROOT}/runtime/include \
 $(NAME)_SOURCES := ${IWASM_ROOT}/runtime/utils/wasm_hashmap.c \
                    ${IWASM_ROOT}/runtime/utils/wasm_log.c \
                    ${IWASM_ROOT}/runtime/utils/wasm_dlfcn.c \
-                   ${IWASM_ROOT}/runtime/platform/alios/wasm_native.c \
                    ${IWASM_ROOT}/runtime/vmcore-wasm/wasm_application.c \
                    ${IWASM_ROOT}/runtime/vmcore-wasm/wasm_interp.c \
                    ${IWASM_ROOT}/runtime/vmcore-wasm/wasm_loader.c \

+ 0 - 1
core/iwasm/products/darwin/CMakeLists.txt

@@ -92,7 +92,6 @@ include_directories (.
 
 enable_language (ASM)
 
-include (../../runtime/platform/${PLATFORM}/platform.cmake)
 include (../../runtime/utils/utils.cmake)
 include (../../runtime/vmcore-wasm/vmcore.cmake)
 include (../../lib/native/libc/wasmtime-wasi-c/wasi.cmake)

+ 2 - 4
core/iwasm/products/darwin/main.c

@@ -60,12 +60,10 @@ app_instance_main(wasm_module_inst_t module_inst)
 static void*
 app_instance_func(wasm_module_inst_t module_inst, char *func_name)
 {
-    const char *exception;
-
     wasm_application_execute_func(module_inst, func_name, app_argc - 1,
                                   app_argv + 1);
-    if ((exception = wasm_runtime_get_exception(module_inst)))
-        wasm_printf("%s\n", exception);
+    /* The result of wasm function or exception info was output inside
+       wasm_application_execute_func(), here we don't output them again. */
     return NULL;
 }
 

+ 0 - 1
core/iwasm/products/linux-sgx/CMakeLists.txt

@@ -93,7 +93,6 @@ include_directories (.
 
 enable_language (ASM)
 
-include (../../runtime/platform/${PLATFORM}/platform.cmake)
 include (../../runtime/utils/utils.cmake)
 include (../../runtime/vmcore-wasm/vmcore.cmake)
 include (../../lib/native/libc/wasmtime-wasi-c/wasi.cmake)

+ 0 - 1
core/iwasm/products/linux/CMakeLists.txt

@@ -89,7 +89,6 @@ include_directories (.
 
 enable_language (ASM)
 
-include (../../runtime/platform/${PLATFORM}/platform.cmake)
 include (../../runtime/utils/utils.cmake)
 include (../../runtime/vmcore-wasm/vmcore.cmake)
 include (../../lib/native/libc/wasmtime-wasi-c/wasi.cmake)

+ 2 - 4
core/iwasm/products/linux/main.c

@@ -87,12 +87,10 @@ app_instance_main(wasm_module_inst_t module_inst)
 static void*
 app_instance_func(wasm_module_inst_t module_inst, const char *func_name)
 {
-    const char *exception;
-
     wasm_application_execute_func(module_inst, func_name, app_argc - 1,
                                   app_argv + 1);
-    if ((exception = wasm_runtime_get_exception(module_inst)))
-        wasm_printf("%s\n", exception);
+    /* The result of wasm function or exception info was output inside
+       wasm_application_execute_func(), here we don't output them again. */
     return NULL;
 }
 

+ 0 - 1
core/iwasm/products/vxworks/CMakeLists.txt

@@ -107,7 +107,6 @@ include_directories (.
 
 enable_language (ASM)
 
-include (../../runtime/platform/${PLATFORM}/platform.cmake)
 include (../../runtime/utils/utils.cmake)
 include (../../runtime/vmcore-wasm/vmcore.cmake)
 include (../../lib/native/libc/wasmtime-wasi-c/wasi.cmake)

+ 2 - 4
core/iwasm/products/vxworks/main.c

@@ -87,12 +87,10 @@ app_instance_main(wasm_module_inst_t module_inst)
 static void*
 app_instance_func(wasm_module_inst_t module_inst, const char *func_name)
 {
-    const char *exception;
-
     wasm_application_execute_func(module_inst, func_name, app_argc - 1,
                                   app_argv + 1);
-    if ((exception = wasm_runtime_get_exception(module_inst)))
-        wasm_printf("%s\n", exception);
+    /* The result of wasm function or exception info was output inside
+       wasm_application_execute_func(), here we don't output them again. */
     return NULL;
 }
 

+ 2 - 1
core/iwasm/products/zephyr/simple/CMakeLists.txt

@@ -37,7 +37,6 @@ message ("-- Build as target ${BUILD_TARGET}")
 set (IWASM_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/iwasm)
 set (SHARED_LIB_ROOT ${IWASM_ROOT}/../shared-lib)
 
-include (${IWASM_ROOT}/runtime/platform/${PLATFORM}/platform.cmake)
 include (${IWASM_ROOT}/runtime/utils/utils.cmake)
 include (${IWASM_ROOT}/runtime/vmcore-wasm/vmcore.cmake)
 include (${IWASM_ROOT}/lib/native/libc/wasmtime-wasi-c/wasi.cmake)
@@ -47,6 +46,8 @@ include (${SHARED_LIB_ROOT}/platform/${PLATFORM}/shared_platform.cmake)
 include (${SHARED_LIB_ROOT}/mem-alloc/mem_alloc.cmake)
 include (${SHARED_LIB_ROOT}/utils/shared_utils.cmake)
 
+include_directories (${IWASM_ROOT}/runtime/platform/include)
+
 set (VM_LIB_SRCS
      ${WASM_PLATFORM_LIB_SOURCE}
      ${WASM_UTILS_LIB_SOURCE}

+ 0 - 15
core/iwasm/runtime/platform/alios/wasm_native.c

@@ -1,15 +0,0 @@
-/*
- * Copyright (C) 2019 Intel Corporation.  All rights reserved.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- */
-
-#include "wasm_native.h"
-
-
-void*
-wasm_platform_native_func_lookup(const char *module_name,
-                                 const char *func_name)
-{
-    return NULL;
-}
-

+ 0 - 14
core/iwasm/runtime/platform/darwin/platform.cmake

@@ -1,14 +0,0 @@
-# Copyright (C) 2019 Intel Corporation.  All rights reserved.
-# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-
-add_definitions (-D__POSIX__ -D_XOPEN_SOURCE=600 -D_POSIX_C_SOURCE=200809L)
-
-set (PLATFORM_LIB_DIR ${CMAKE_CURRENT_LIST_DIR})
-
-include_directories(${PLATFORM_LIB_DIR})
-include_directories(${PLATFORM_LIB_DIR}/../include)
-
-file (GLOB_RECURSE source_all ${PLATFORM_LIB_DIR}/*.c)
-
-set (WASM_PLATFORM_LIB_SOURCE ${source_all})
-

+ 0 - 14
core/iwasm/runtime/platform/darwin/wasm_native.c

@@ -1,14 +0,0 @@
-/*
- * Copyright (C) 2019 Intel Corporation.  All rights reserved.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- */
-
-#include "wasm_native.h"
-
-void*
-wasm_platform_native_func_lookup(const char *module_name,
-                                 const char *func_name)
-{
-    return NULL;
-}
-

+ 0 - 14
core/iwasm/runtime/platform/linux-sgx/platform.cmake

@@ -1,14 +0,0 @@
-# Copyright (C) 2019 Intel Corporation.  All rights reserved.
-# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-
-add_definitions (-D__POSIX__ -D_XOPEN_SOURCE=600 -D_POSIX_C_SOURCE=199309L)
-
-set (PLATFORM_LIB_DIR ${CMAKE_CURRENT_LIST_DIR})
-
-include_directories(${PLATFORM_LIB_DIR})
-include_directories(${PLATFORM_LIB_DIR}/../include)
-
-file (GLOB_RECURSE source_all ${PLATFORM_LIB_DIR}/*.c)
-
-set (WASM_PLATFORM_LIB_SOURCE ${source_all})
-

+ 0 - 15
core/iwasm/runtime/platform/linux-sgx/wasm_native.c

@@ -1,15 +0,0 @@
-/*
- * Copyright (C) 2019 Intel Corporation.  All rights reserved.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- */
-
-#include "wasm_native.h"
-
-
-void*
-wasm_platform_native_func_lookup(const char *module_name,
-                                 const char *func_name)
-{
-    return NULL;
-}
-

+ 0 - 14
core/iwasm/runtime/platform/linux/platform.cmake

@@ -1,14 +0,0 @@
-# Copyright (C) 2019 Intel Corporation.  All rights reserved.
-# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-
-add_definitions (-D__POSIX__ -D_XOPEN_SOURCE=600 -D_POSIX_C_SOURCE=200809L -D_BSD_SOURCE)
-
-set (PLATFORM_LIB_DIR ${CMAKE_CURRENT_LIST_DIR})
-
-include_directories(${PLATFORM_LIB_DIR})
-include_directories(${PLATFORM_LIB_DIR}/../include)
-
-file (GLOB_RECURSE source_all ${PLATFORM_LIB_DIR}/*.c)
-
-set (WASM_PLATFORM_LIB_SOURCE ${source_all})
-

+ 0 - 365
core/iwasm/runtime/platform/linux/wasm_native.c

@@ -1,365 +0,0 @@
-/*
- * Copyright (C) 2019 Intel Corporation.  All rights reserved.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- */
-
-/**
- * Currently WAMR supports libc for WASM applications in two modes:
- *   (1) the built-in libc subset for embedded environment and
- *   (2) WASI for standard libc
- * so here the libc syscall mode is disabled by default, if developer
- * wants to enable the libc syscall mode, please set the following
- * macro to 1, and implements the related syscall wrappers. Here some
- * syscall wrapper examples are given.
- */
-#define WASM_TEST_SYSCALL_WRAPPER 0
-
-#if WASM_TEST_SYSCALL_WRAPPER == 0
-
-#include "wasm_native.h"
-
-void*
-wasm_platform_native_func_lookup(const char *module_name,
-                                 const char *func_name)
-{
-    return NULL;
-}
-
-#else
-
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE /* for O_DIRECT */
-#endif
-
-#include "wasm_native.h"
-#include "wasm_runtime.h"
-#include "wasm_log.h"
-#include "wasm_memory.h"
-#include "wasm_platform_log.h"
-#include "bh_common.h"
-
-#include <sys/ioctl.h>
-#include <sys/uio.h>
-#include <sys/syscall.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <pwd.h>
-#include <fcntl.h>
-#include <errno.h>
-
-
-#define validate_app_addr(offset, size) \
-    wasm_runtime_validate_app_addr(module_inst, offset, 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) \
-    wasm_runtime_module_malloc(module_inst, size)
-
-#define module_free(offset) \
-    wasm_runtime_module_free(module_inst, offset)
-
-
-static int32
-__syscall0_wrapper(WASMModuleInstance *module_inst, int32 arg0)
-{
-    switch (arg0) {
-        case 199: /* getuid */
-            /* TODO */
-        default:
-            bh_printf("##_syscall0 called, syscall id: %d\n", arg0);
-    }
-    return 0;
-}
-
-static int32
-__syscall1_wrapper(WASMModuleInstance *module_inst, int32 arg0, int32 arg1)
-{
-    switch (arg0) {
-        case 6: /* close */
-            /* TODO */
-        default:
-            bh_printf("##_syscall1 called, syscall id: %d\n", arg0);
-    }
-    return 0;
-}
-
-static int32
-__syscall2_wrapper(WASMModuleInstance *module_inst,
-                   int32 arg0, int32 arg1, int32 arg2)
-{
-    switch (arg0) {
-        case 183: /* getcwd */
-            /* TODO */
-        default:
-            bh_printf("##_syscall2 called, syscall id: %d\n", arg0);
-    }
-    return 0;
-}
-
-static int32
-__syscall3_wrapper(WASMModuleInstance *module_inst,
-                   int32 arg0, int32 arg1, int32 arg2, int32 arg3)
-{
-    switch (arg0) {
-        case 54: /* ioctl */
-        {
-            /* Implement syscall 54 and syscall 146 to support printf()
-               for non SIDE_MODULE=1 mode */
-            struct winsize *wsz;
-
-            if (!validate_app_addr(arg3, sizeof(struct winsize)))
-                return 0;
-
-            wsz = (struct winsize*)addr_app_to_native(arg3);
-            return (int32)syscall(54, arg1, arg2, wsz);
-        }
-
-        case 146: /* writev */
-        {
-            /* Implement syscall 54 and syscall 146 to support printf()
-               for non SIDE_MODULE=1 mode */
-            struct iovec_app {
-                int32 iov_base_offset;
-                uint32 iov_len;
-            } *vec;
-            int32 vec_offset = arg2, str_offset;
-            uint32 iov_count = (uint32)arg3, i;
-            int32 count = 0;
-            char *iov_base, *str;
-
-            if (!validate_app_addr(vec_offset, sizeof(struct iovec_app)))
-                return 0;
-
-            vec = (struct iovec_app *)addr_app_to_native(vec_offset);
-            for (i = 0; i < iov_count; i++, vec++) {
-                if (vec->iov_len > 0) {
-                    if (!validate_app_addr(vec->iov_base_offset, 1))
-                        return 0;
-                    iov_base = (char*)addr_app_to_native(vec->iov_base_offset);
-
-                    if (!(str_offset = module_malloc(vec->iov_len + 1)))
-                        return 0;
-
-                    str = addr_app_to_native(str_offset);
-
-                    bh_memcpy_s(str, vec->iov_len + 1, iov_base, vec->iov_len);
-                    str[vec->iov_len] = '\0';
-                    count += wasm_printf("%s", str);
-
-                    module_free(str_offset);
-                }
-            }
-            return count;
-        }
-        case 145: /* readv */
-        case 3: /* read*/
-        case 5: /* open */
-        case 221: /* fcntl */
-        /* TODO */
-        default:
-            bh_printf("##_syscall3 called, syscall id: %d\n", arg0);
-    }
-    return 0;
-}
-
-static int32
-__syscall4_wrapper(WASMModuleInstance *module_inst,
-                   int32 arg0, int32 arg1, int32 arg2,
-                   int32 arg3, int32 arg4)
-{
-    bh_printf("##_syscall4 called, syscall id: %d\n", arg0);
-    return 0;
-}
-
-static int32
-__syscall5_wrapper(WASMModuleInstance *module_inst,
-                   int32 arg0, int32 arg1, int32 arg2,
-                   int32 arg3, int32 arg4, int32 arg5)
-{
-    switch (arg0) {
-        case 140: /* llseek */
-            /* TODO */
-        default:
-            bh_printf("##_syscall5 called, args[0]: %d\n", arg0);
-    }
-    return 0;
-}
-
-#define GET_EMCC_SYSCALL_ARGS()                                     \
-  int32 *args;                                                      \
-  if (!validate_app_addr(args_off, 1))                              \
-    return 0;                                                       \
-  args = addr_app_to_native(args_off)                               \
-
-#define EMCC_SYSCALL_WRAPPER0(id)                                       \
-  static int32 ___syscall##id##_wrapper(WASMModuleInstance *module_inst,\
-                                        int32 _id) {                    \
-    return __syscall0_wrapper(module_inst, id);                         \
-  }
-
-#define EMCC_SYSCALL_WRAPPER1(id)                                       \
-  static int32 ___syscall##id##_wrapper(WASMModuleInstance *module_inst,\
-                                        int32 _id, int32 args_off) {    \
-    GET_EMCC_SYSCALL_ARGS();                                            \
-    return __syscall1_wrapper(module_inst, id, args[0]);                \
-  }
-
-#define EMCC_SYSCALL_WRAPPER2(id)                                       \
-  static int32 ___syscall##id##_wrapper(WASMModuleInstance *module_inst,\
-                                        int32 _id, int32 args_off){     \
-    GET_EMCC_SYSCALL_ARGS();                                            \
-    return __syscall2_wrapper(module_inst, id, args[0], args[1]);       \
-  }
-
-#define EMCC_SYSCALL_WRAPPER3(id)                                       \
-  static int32 ___syscall##id##_wrapper(WASMModuleInstance *module_inst,\
-                                        int32 _id, int32 args_off) {    \
-    GET_EMCC_SYSCALL_ARGS();                                            \
-    return __syscall3_wrapper(module_inst, id,                          \
-                              args[0], args[1], args[2]);               \
-  }
-
-#define EMCC_SYSCALL_WRAPPER4(id)                                       \
-  static int32 ___syscall##id##_wrapper(WASMModuleInstance *module_inst,\
-                                        int32 _id, int32 args_off) {    \
-    GET_EMCC_SYSCALL_ARGS();                                            \
-    return __syscall4_wrapper(module_inst, id,                          \
-                              args[0], args[1], args[2], args[3]);      \
-  }
-
-#define EMCC_SYSCALL_WRAPPER5(id)                                       \
-  static int32 ___syscall##id##_wrapper(WASMModuleInstance *module_inst,\
-                                        int32 _id, int32 args_off) {    \
-    GET_EMCC_SYSCALL_ARGS();                                            \
-    return __syscall5_wrapper(module_inst, id,                          \
-                              args[0], args[1], args[2],                \
-                              args[3], args[4]);                        \
-  }
-
-EMCC_SYSCALL_WRAPPER0(199)
-
-EMCC_SYSCALL_WRAPPER1(6)
-
-EMCC_SYSCALL_WRAPPER2(183)
-
-EMCC_SYSCALL_WRAPPER3(3)
-EMCC_SYSCALL_WRAPPER3(5)
-EMCC_SYSCALL_WRAPPER3(54)
-EMCC_SYSCALL_WRAPPER3(145)
-EMCC_SYSCALL_WRAPPER3(146)
-EMCC_SYSCALL_WRAPPER3(221)
-
-EMCC_SYSCALL_WRAPPER5(140)
-
-static uint32
-getTotalMemory_wrapper(WASMModuleInstance *module_inst)
-{
-    WASMMemoryInstance *memory = module_inst->default_memory;
-    return NumBytesPerPage * memory->cur_page_count;
-}
-
-static int32
-enlargeMemory_wrapper(WASMModuleInstance *module_inst)
-{
-    bool ret;
-    WASMMemoryInstance *memory = module_inst->default_memory;
-    uint32 DYNAMICTOP_PTR_offset = module_inst->DYNAMICTOP_PTR_offset;
-    uint32 addr_data_offset = *(uint32*)(memory->global_data + DYNAMICTOP_PTR_offset);
-    uint32 *DYNAMICTOP_PTR = (uint32*)(memory->memory_data + addr_data_offset);
-    uint32 memory_size_expected = *DYNAMICTOP_PTR;
-    uint32 total_page_count = (memory_size_expected + NumBytesPerPage - 1) / NumBytesPerPage;
-
-    if (total_page_count < memory->cur_page_count) {
-        return 1;
-    }
-    else {
-        ret = wasm_runtime_enlarge_memory(module_inst, total_page_count -
-                                          memory->cur_page_count);
-        return ret ? 1 : 0;
-    }
-}
-
-static void
-_abort_wrapper(WASMModuleInstance *module_inst, int32 code)
-{
-    char buf[32];
-
-    snprintf(buf, sizeof(buf), "env.abort(%i)", code);
-    wasm_runtime_set_exception(module_inst, buf);
-}
-
-static void
-abortOnCannotGrowMemory_wrapper(WASMModuleInstance *module_inst)
-{
-    wasm_runtime_set_exception(module_inst, "abort on cannot grow memory");
-}
-
-static void
-___setErrNo_wrapper(WASMModuleInstance *module_inst, int32 error_no)
-{
-    errno = error_no;
-}
-
-/* TODO: add function parameter/result types check */
-#define REG_NATIVE_FUNC(module_name, func_name) \
-    {#module_name, #func_name, func_name##_wrapper}
-
-typedef struct WASMNativeFuncDef {
-    const char *module_name;
-    const char *func_name;
-    void *func_ptr;
-} WASMNativeFuncDef;
-
-static WASMNativeFuncDef native_func_defs[] = {
-    REG_NATIVE_FUNC(env, __syscall0),
-    REG_NATIVE_FUNC(env, __syscall1),
-    REG_NATIVE_FUNC(env, __syscall2),
-    REG_NATIVE_FUNC(env, __syscall3),
-    REG_NATIVE_FUNC(env, __syscall4),
-    REG_NATIVE_FUNC(env, __syscall5),
-    REG_NATIVE_FUNC(env, ___syscall3),
-    REG_NATIVE_FUNC(env, ___syscall5),
-    REG_NATIVE_FUNC(env, ___syscall6),
-    REG_NATIVE_FUNC(env, ___syscall54),
-    REG_NATIVE_FUNC(env, ___syscall140),
-    REG_NATIVE_FUNC(env, ___syscall145),
-    REG_NATIVE_FUNC(env, ___syscall146),
-    REG_NATIVE_FUNC(env, ___syscall183),
-    REG_NATIVE_FUNC(env, ___syscall199),
-    REG_NATIVE_FUNC(env, ___syscall221),
-    REG_NATIVE_FUNC(env, _abort),
-    REG_NATIVE_FUNC(env, abortOnCannotGrowMemory),
-    REG_NATIVE_FUNC(env, enlargeMemory),
-    REG_NATIVE_FUNC(env, getTotalMemory),
-    REG_NATIVE_FUNC(env, ___setErrNo),
-};
-
-void*
-wasm_platform_native_func_lookup(const char *module_name,
-                                 const char *func_name)
-{
-    uint32 size = sizeof(native_func_defs) / sizeof(WASMNativeFuncDef);
-    WASMNativeFuncDef *func_def = native_func_defs;
-    WASMNativeFuncDef *func_def_end = func_def + size;
-
-    if (!module_name || !func_name)
-        return NULL;
-
-    while (func_def < func_def_end) {
-        if (!strcmp(func_def->module_name, module_name)
-            && !strcmp(func_def->func_name, func_name))
-            return (void*)(uintptr_t)func_def->func_ptr;
-        func_def++;
-    }
-
-    return NULL;
-}
-
-#endif /* end of WASM_TEST_SYSCALL_WRAPPER */
-

+ 0 - 14
core/iwasm/runtime/platform/vxworks/platform.cmake

@@ -1,14 +0,0 @@
-# Copyright (C) 2019 Intel Corporation.  All rights reserved.
-# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-
-add_definitions (-D__POSIX__ -D_XOPEN_SOURCE=600 -D_POSIX_C_SOURCE=200809L -D_BSD_SOURCE)
-
-set (PLATFORM_LIB_DIR ${CMAKE_CURRENT_LIST_DIR})
-
-include_directories(${PLATFORM_LIB_DIR})
-include_directories(${PLATFORM_LIB_DIR}/../include)
-
-file (GLOB_RECURSE source_all ${PLATFORM_LIB_DIR}/*.c)
-
-set (WASM_PLATFORM_LIB_SOURCE ${source_all})
-

+ 0 - 15
core/iwasm/runtime/platform/vxworks/wasm_native.c

@@ -1,15 +0,0 @@
-/*
- * Copyright (C) 2019 Intel Corporation.  All rights reserved.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- */
-
-#include "wasm_native.h"
-
-
-void*
-wasm_platform_native_func_lookup(const char *module_name,
-                                 const char *func_name)
-{
-    return NULL;
-}
-

+ 0 - 14
core/iwasm/runtime/platform/zephyr/platform.cmake

@@ -1,14 +0,0 @@
-# Copyright (C) 2019 Intel Corporation.  All rights reserved.
-# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-
-add_definitions (-D__POSIX__ -D_XOPEN_SOURCE=600 -D_POSIX_C_SOURCE=200809L -D_BSD_SOURCE)
-
-set (PLATFORM_LIB_DIR ${CMAKE_CURRENT_LIST_DIR})
-
-include_directories(${PLATFORM_LIB_DIR})
-include_directories(${PLATFORM_LIB_DIR}/../include)
-
-file (GLOB_RECURSE source_all ${PLATFORM_LIB_DIR}/*.c)
-
-set (WASM_PLATFORM_LIB_SOURCE ${source_all})
-

+ 0 - 15
core/iwasm/runtime/platform/zephyr/wasm_native.c

@@ -1,15 +0,0 @@
-/*
- * Copyright (C) 2019 Intel Corporation.  All rights reserved.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- */
-
-#include "wasm_native.h"
-
-
-void*
-wasm_platform_native_func_lookup(const char *module_name,
-                                 const char *func_name)
-{
-    return NULL;
-}
-

+ 0 - 2
core/iwasm/runtime/vmcore-wasm/wasm.h

@@ -146,7 +146,6 @@ typedef struct WASMGlobalImport {
     char *field_name;
     uint8 type;
     bool is_mutable;
-    bool is_addr;
     /* global data after linked */
     WASMValue global_data_linked;
 } WASMGlobalImport;
@@ -179,7 +178,6 @@ typedef struct WASMFunction {
 typedef struct WASMGlobal {
     uint8 type;
     bool is_mutable;
-    bool is_addr;
     InitializerExpression init_expr;
 } WASMGlobal;
 

+ 13 - 8
core/iwasm/runtime/vmcore-wasm/wasm_application.c

@@ -214,7 +214,7 @@ wasm_application_execute_func(WASMModuleInstance *module_inst,
 {
     WASMFunctionInstance *func;
     WASMType *type;
-    uint32 argc1, *argv1;
+    uint32 argc1, *argv1 = NULL;
     int32 i, p;
     uint64 total_size;
     const char *exception;
@@ -225,14 +225,14 @@ wasm_application_execute_func(WASMModuleInstance *module_inst,
     if (!func || func->is_import_func) {
         snprintf(buf, sizeof(buf), "lookup function %s failed.", name);
         wasm_runtime_set_exception(module_inst, buf);
-        return false;
+        goto fail;
     }
 
     type = func->u.func->func_type;
     if (type->param_count != (uint32)argc) {
         wasm_runtime_set_exception(module_inst,
                                    "invalid input argument count.");
-        return false;
+        goto fail;
     }
 
     argc1 = func->param_cell_num;
@@ -240,9 +240,12 @@ wasm_application_execute_func(WASMModuleInstance *module_inst,
     if (total_size >= UINT32_MAX
         || (!(argv1 = wasm_malloc((uint32)total_size)))) {
         wasm_runtime_set_exception(module_inst, "allocate memory failed.");
-        return false;
+        goto fail;
     }
 
+    /* Clear errno before parsing arguments */
+    errno = 0;
+
     /* Parse arguments */
     for (i = 0, p = 0; i < argc; i++) {
         char *endptr = NULL;
@@ -332,9 +335,6 @@ wasm_application_execute_func(WASMModuleInstance *module_inst,
 
     wasm_runtime_set_exception(module_inst, NULL);
     if (!wasm_runtime_call_wasm(module_inst, NULL, func, argc1, argv1)) {
-        exception = wasm_runtime_get_exception(module_inst);
-        wasm_assert(exception);
-        wasm_printf("%s\n", exception);
         goto fail;
     }
 
@@ -374,7 +374,12 @@ wasm_application_execute_func(WASMModuleInstance *module_inst,
     return true;
 
 fail:
-    wasm_free(argv1);
+    if (argv1)
+        wasm_free(argv1);
+
+    exception = wasm_runtime_get_exception(module_inst);
+    wasm_assert(exception);
+    wasm_printf("%s\n", exception);
     return false;
 }
 

+ 13 - 13
core/iwasm/runtime/vmcore-wasm/wasm_interp.c

@@ -84,15 +84,15 @@ GET_F64_FROM_ADDR (uint32 *addr)
     uintptr_t addr1 = (uintptr_t)(addr);        \
     union { int64 val; uint32 u32[2];           \
             uint16 u16[4]; uint8 u8[8]; } u;    \
-    if (addr1 % 8 == 0)                         \
+    if ((addr1 & (uintptr_t)7) == 0)            \
       *(int64*)(addr) = (int64)(value);         \
     else {                                      \
         u.val = (int64)(value);                 \
-        if (addr1 % 4 == 0) {                   \
+        if ((addr1 & (uintptr_t)3) == 0) {      \
             ((uint32*)(addr))[0] = u.u32[0];    \
             ((uint32*)(addr))[1] = u.u32[1];    \
         }                                       \
-        else if (addr1 % 2 == 0) {              \
+        else if ((addr1 & (uintptr_t)1) == 0) { \
             ((uint16*)(addr))[0] = u.u16[0];    \
             ((uint16*)(addr))[1] = u.u16[1];    \
             ((uint16*)(addr))[2] = u.u16[2];    \
@@ -110,11 +110,11 @@ GET_F64_FROM_ADDR (uint32 *addr)
     uintptr_t addr1 = (uintptr_t)(addr);        \
     union { uint32 val;                         \
             uint16 u16[2]; uint8 u8[4]; } u;    \
-    if (addr1 % 4 == 0)                         \
+    if ((addr1 & (uintptr_t)3) == 0)            \
       *(uint32*)(addr) = (uint32)(value);       \
     else {                                      \
         u.val = (uint32)(value);                \
-        if (addr1 % 2 == 0) {                   \
+        if ((addr1 & (uintptr_t)1) == 0) {      \
             ((uint16*)(addr))[0] = u.u16[0];    \
             ((uint16*)(addr))[1] = u.u16[1];    \
         }                                       \
@@ -141,14 +141,14 @@ LOAD_I64(void *addr)
     uintptr_t addr1 = (uintptr_t)addr;
     union { int64 val; uint32 u32[2];
             uint16 u16[4]; uint8 u8[8]; } u;
-    if (addr1 % 8 == 0)
+    if ((addr1 & (uintptr_t)7) == 0)
         return *(int64*)addr;
 
-    if (addr1 % 4 == 0) {
+    if ((addr1 & (uintptr_t)3) == 0) {
         u.u32[0] = ((uint32*)addr)[0];
         u.u32[1] = ((uint32*)addr)[1];
     }
-    else if (addr1 % 2 == 0) {
+    else if ((addr1 & (uintptr_t)1) == 0) {
         u.u16[0] = ((uint16*)addr)[0];
         u.u16[1] = ((uint16*)addr)[1];
         u.u16[2] = ((uint16*)addr)[2];
@@ -168,14 +168,14 @@ LOAD_F64(void *addr)
     uintptr_t addr1 = (uintptr_t)addr;
     union { float64 val; uint32 u32[2];
             uint16 u16[4]; uint8 u8[8]; } u;
-    if (addr1 % 8 == 0)
+    if ((addr1 & (uintptr_t)7) == 0)
         return *(float64*)addr;
 
-    if (addr1 % 4 == 0) {
+    if ((addr1 & (uintptr_t)3) == 0) {
         u.u32[0] = ((uint32*)addr)[0];
         u.u32[1] = ((uint32*)addr)[1];
     }
-    else if (addr1 % 2 == 0) {
+    else if ((addr1 & (uintptr_t)1) == 0) {
         u.u16[0] = ((uint16*)addr)[0];
         u.u16[1] = ((uint16*)addr)[1];
         u.u16[2] = ((uint16*)addr)[2];
@@ -194,10 +194,10 @@ LOAD_I32(void *addr)
 {
     uintptr_t addr1 = (uintptr_t)addr;
     union { int32 val; uint16 u16[2]; uint8 u8[4]; } u;
-    if (addr1 % 4 == 0)
+    if ((addr1 & (uintptr_t)3) == 0)
         return *(int32*)addr;
 
-    if (addr1 % 2 == 0) {
+    if ((addr1 & (uintptr_t)1) == 0) {
         u.u16[0] = ((uint16*)addr)[0];
         u.u16[1] = ((uint16*)addr)[1];
     }

+ 4 - 4
core/iwasm/runtime/vmcore-wasm/wasm_loader.c

@@ -256,25 +256,25 @@ load_init_expr(const uint8 **p_buf, const uint8 *buf_end,
         case INIT_EXPR_TYPE_I32_CONST:
             read_leb_int32(p, p_end, init_expr->u.i32);
             break;
-            /* i64.const */
+        /* i64.const */
         case INIT_EXPR_TYPE_I64_CONST:
             read_leb_int64(p, p_end, init_expr->u.i64);
             break;
-            /* f32.const */
+        /* f32.const */
         case INIT_EXPR_TYPE_F32_CONST:
             CHECK_BUF(p, p_end, 4);
             p_float = (uint8*)&init_expr->u.f32;
             for (i = 0; i < sizeof(float32); i++)
                 *p_float++ = *p++;
             break;
-            /* f64.const */
+        /* f64.const */
         case INIT_EXPR_TYPE_F64_CONST:
             CHECK_BUF(p, p_end, 8);
             p_float = (uint8*)&init_expr->u.f64;
             for (i = 0; i < sizeof(float64); i++)
                 *p_float++ = *p++;
             break;
-            /* get_global */
+        /* get_global */
         case INIT_EXPR_TYPE_GET_GLOBAL:
             read_leb_uint32(p, p_end, init_expr->u.global_index);
             break;

+ 0 - 3
core/iwasm/runtime/vmcore-wasm/wasm_native.h

@@ -45,9 +45,6 @@ bool
 wasm_native_global_lookup(const char *module_name, const char *global_name,
                           WASMGlobalImport *global);
 
-void* wasm_platform_native_func_lookup(const char *module_name,
-                                       const char *func_name);
-
 #ifdef __cplusplus
 }
 #endif

+ 19 - 61
core/iwasm/runtime/vmcore-wasm/wasm_runtime.c

@@ -167,14 +167,14 @@ memories_deinstantiate(WASMMemoryInstance **memories, uint32 count)
 
 static WASMMemoryInstance*
 memory_instantiate(uint32 init_page_count, uint32 max_page_count,
-                   uint32 addr_data_size, uint32 global_data_size,
+                   uint32 global_data_size,
                    uint32 heap_size,
                    char *error_buf, uint32 error_buf_size)
 {
     WASMMemoryInstance *memory;
     uint64 total_size = offsetof(WASMMemoryInstance, base_addr) +
                         NumBytesPerPage * (uint64)init_page_count +
-                        addr_data_size + global_data_size;
+                        global_data_size;
 
     /* Allocate memory space, addr data and global data */
     if (total_size >= UINT32_MAX
@@ -188,10 +188,7 @@ memory_instantiate(uint32 init_page_count, uint32 max_page_count,
     memory->cur_page_count = init_page_count;
     memory->max_page_count = max_page_count;
 
-    memory->addr_data = memory->base_addr;
-    memory->addr_data_size = addr_data_size;
-
-    memory->memory_data = memory->addr_data + addr_data_size;
+    memory->memory_data = memory->base_addr;
 
     memory->global_data = memory->memory_data +
                           NumBytesPerPage * memory->cur_page_count;;
@@ -233,7 +230,7 @@ fail1:
  * Instantiate memories in a module.
  */
 static WASMMemoryInstance**
-memories_instantiate(const WASMModule *module, uint32 addr_data_size,
+memories_instantiate(const WASMModule *module,
                      uint32 global_data_size, uint32 heap_size,
                      char *error_buf, uint32 error_buf_size)
 {
@@ -264,7 +261,7 @@ memories_instantiate(const WASMModule *module, uint32 addr_data_size,
         if (!(memory = memories[mem_index++] =
                     memory_instantiate(import->u.memory.init_page_count,
                                        import->u.memory. max_page_count,
-                                       addr_data_size, global_data_size,
+                                       global_data_size,
                                        heap_size, error_buf, error_buf_size))) {
             set_error_buf(error_buf, error_buf_size,
                          "Instantiate memory failed: "
@@ -279,7 +276,7 @@ memories_instantiate(const WASMModule *module, uint32 addr_data_size,
         if (!(memory = memories[mem_index++] =
                     memory_instantiate(module->memories[i].init_page_count,
                                        module->memories[i].max_page_count,
-                                       addr_data_size, global_data_size,
+                                       global_data_size,
                                        heap_size, error_buf, error_buf_size))) {
             set_error_buf(error_buf, error_buf_size,
                           "Instantiate memory failed: "
@@ -292,7 +289,7 @@ memories_instantiate(const WASMModule *module, uint32 addr_data_size,
     if (mem_index == 0) {
         /* no import memory and define memory, but has global variables */
         if (!(memory = memories[mem_index++] =
-                    memory_instantiate(0, 0, addr_data_size, global_data_size,
+                    memory_instantiate(0, 0, global_data_size,
                                        heap_size, error_buf, error_buf_size))) {
             set_error_buf(error_buf, error_buf_size,
                           "Instantiate memory failed: "
@@ -525,12 +522,11 @@ globals_deinstantiate(WASMGlobalInstance *globals)
  */
 static WASMGlobalInstance*
 globals_instantiate(const WASMModule *module,
-                    uint32 *p_addr_data_size,
                     uint32 *p_global_data_size,
                     char *error_buf, uint32 error_buf_size)
 {
     WASMImport *import;
-    uint32 addr_data_offset = 0, global_data_offset = 0;
+    uint32 global_data_offset = 0;
     uint32 i, global_count =
         module->import_global_count + module->global_count;
     uint64 total_size = sizeof(WASMGlobalInstance) * (uint64)global_count;
@@ -553,14 +549,10 @@ globals_instantiate(const WASMModule *module,
         WASMGlobalImport *global_import = &import->u.global;
         global->type = global_import->type;
         global->is_mutable = global_import->is_mutable;
-        global->is_addr = global_import->is_addr;
         global->initial_value = global_import->global_data_linked;
         global->data_offset = global_data_offset;
         global_data_offset += wasm_value_type_size(global->type);
 
-        if (global->is_addr)
-            addr_data_offset += (uint32)sizeof(uint32);
-
         global++;
     }
 
@@ -568,19 +560,14 @@ globals_instantiate(const WASMModule *module,
     for (i = 0; i < module->global_count; i++) {
         global->type = module->globals[i].type;
         global->is_mutable = module->globals[i].is_mutable;
-        global->is_addr = module->globals[i].is_addr;
 
         global->data_offset = global_data_offset;
         global_data_offset += wasm_value_type_size(global->type);
 
-        if (global->is_addr)
-            addr_data_offset += (uint32)sizeof(uint32);
-
         global++;
     }
 
     wasm_assert((uint32)(global - globals) == global_count);
-    *p_addr_data_size = addr_data_offset;
     *p_global_data_size = global_data_offset;
     return globals;
 }
@@ -949,9 +936,9 @@ wasm_runtime_instantiate(WASMModule *module,
     WASMTableSeg *table_seg;
     WASMDataSeg *data_seg;
     WASMGlobalInstance *globals = NULL, *global;
-    uint32 global_count, addr_data_size = 0, global_data_size = 0, i, j;
+    uint32 global_count, global_data_size = 0, i, j;
     uint32 base_offset, length, memory_size;
-    uint8 *global_data, *global_data_end, *addr_data, *addr_data_end;
+    uint8 *global_data, *global_data_end;
     uint8 *memory_data;
     uint32 *table_data;
 
@@ -970,7 +957,7 @@ wasm_runtime_instantiate(WASMModule *module,
     /* Instantiate global firstly to get the mutable data size */
     global_count = module->import_global_count + module->global_count;
     if (global_count &&
-        !(globals = globals_instantiate(module, &addr_data_size,
+        !(globals = globals_instantiate(module,
                                         &global_data_size,
                                         error_buf, error_buf_size)))
         return NULL;
@@ -998,7 +985,7 @@ wasm_runtime_instantiate(WASMModule *module,
     /* Instantiate memories/tables/functions */
     if (((module_inst->memory_count > 0 || global_count > 0)
          && !(module_inst->memories =
-             memories_instantiate(module, addr_data_size, global_data_size,
+             memories_instantiate(module, global_data_size,
                                   heap_size, error_buf, error_buf_size)))
         || (module_inst->table_count > 0
             && !(module_inst->tables = tables_instantiate(module,
@@ -1026,8 +1013,6 @@ wasm_runtime_instantiate(WASMModule *module,
         globals_instantiate_fix(globals, module, module_inst);
 
         /* Initialize the global data */
-        addr_data = memory->addr_data;
-        addr_data_end = addr_data + addr_data_size;
         global_data = memory->global_data;
         global_data_end = global_data + global_data_size;
         global = globals;
@@ -1035,19 +1020,11 @@ wasm_runtime_instantiate(WASMModule *module,
             switch (global->type) {
                 case VALUE_TYPE_I32:
                 case VALUE_TYPE_F32:
-                    if (!global->is_addr)
-                        *(int32*)global_data = global->initial_value.i32;
-                    else {
-                        *(int32*)addr_data = global->initial_value.i32;
-                        /* Store the offset to memory data for global of addr */
-                        *(int32*)global_data = (int32)(addr_data - memory_data);
-                        addr_data += sizeof(int32);
-                    }
+                    *(int32*)global_data = global->initial_value.i32;
                     global_data += sizeof(int32);
                     break;
                 case VALUE_TYPE_I64:
                 case VALUE_TYPE_F64:
-                    wasm_assert(!global->is_addr);
                     bh_memcpy_s(global_data, (uint32)(global_data_end - global_data),
                                 &global->initial_value.i64, sizeof(int64));
                     global_data += sizeof(int64);
@@ -1056,22 +1033,8 @@ wasm_runtime_instantiate(WASMModule *module,
                     wasm_assert(0);
             }
         }
-        wasm_assert(addr_data == addr_data_end);
         wasm_assert(global_data == global_data_end);
 
-        global = globals + module->import_global_count;
-        for (i = 0; i < module->global_count; i++, global++) {
-            InitializerExpression *init_expr = &module->globals[i].init_expr;
-
-            if (init_expr->init_expr_type == INIT_EXPR_TYPE_GET_GLOBAL
-                && globals[init_expr->u.global_index].is_addr) {
-                uint8 *global_data_dst = memory->global_data + global->data_offset;
-                uint8 *global_data_src =
-                    memory->global_data + globals[init_expr->u.global_index].data_offset;
-                *(uintptr_t*)global_data_dst = *(uintptr_t*)global_data_src;
-            }
-        }
-
         /* Initialize the memory data with data segment section */
         if (module_inst->default_memory->cur_page_count > 0) {
             for (i = 0; i < module->data_seg_count; i++) {
@@ -1200,7 +1163,6 @@ wasm_runtime_instantiate(WASMModule *module,
         return NULL;
     }
 
-    (void)addr_data_end;
     (void)global_data_end;
     return module_inst;
 }
@@ -1272,7 +1234,6 @@ wasm_runtime_enlarge_memory(WASMModuleInstance *module, uint32 inc_page_count)
     WASMMemoryInstance *new_memory;
     uint32 total_page_count = inc_page_count + memory->cur_page_count;
     uint64 total_size = offsetof(WASMMemoryInstance, base_addr) +
-                        memory->addr_data_size +
                         NumBytesPerPage * (uint64)total_page_count +
                         memory->global_data_size;
 
@@ -1295,10 +1256,7 @@ wasm_runtime_enlarge_memory(WASMModuleInstance *module, uint32 inc_page_count)
     new_memory->cur_page_count = total_page_count;
     new_memory->max_page_count = memory->max_page_count;
 
-    new_memory->addr_data = new_memory->base_addr;
-    new_memory->addr_data_size = memory->addr_data_size;
-
-    new_memory->memory_data = new_memory->addr_data + new_memory->addr_data_size;
+    new_memory->memory_data = new_memory->base_addr;
 
     new_memory->global_data = new_memory->memory_data +
                               NumBytesPerPage * total_page_count;
@@ -1306,11 +1264,11 @@ wasm_runtime_enlarge_memory(WASMModuleInstance *module, uint32 inc_page_count)
 
     new_memory->end_addr = new_memory->global_data + memory->global_data_size;
 
-    /* Copy addr data and memory data */
-    bh_memcpy_s(new_memory->addr_data,
-                (uint32)(memory->global_data - memory->addr_data),
-                memory->addr_data,
-                (uint32)(memory->global_data - memory->addr_data));
+    /* Copy memory data */
+    bh_memcpy_s(new_memory->memory_data,
+                (uint32)(memory->global_data - memory->memory_data),
+                memory->memory_data,
+                (uint32)(memory->global_data - memory->memory_data));
     /* Copy global data */
     bh_memcpy_s(new_memory->global_data, new_memory->global_data_size,
                 memory->global_data, memory->global_data_size);

+ 3 - 10
core/iwasm/runtime/vmcore-wasm/wasm_runtime.h

@@ -23,12 +23,6 @@ typedef struct WASMMemoryInstance {
     uint32 cur_page_count;
     /* Maximum page count */
     uint32 max_page_count;
-    /* Data of import globals with address info, like _stdin/_stdout/_stderr,
-       stdin/stdout/stderr is stored here, but the actual addr info, or offset
-       to memory_data is stored in global_data section */
-    uint8 *addr_data;
-    /* Size of addr_data */
-    uint32 addr_data_size;
 
     /* Heap data base address */
     uint8 *heap_data;
@@ -49,11 +43,11 @@ typedef struct WASMMemoryInstance {
     uint8 *end_addr;
 
     /* Base address, the layout is:
-       addr_data + thunk_argv data + thunk arg offsets +
+       thunk_argv data + thunk arg offsets +
        memory data + global data
        memory data init size is: NumBytesPerPage * cur_page_count
-       addr data size and global data size is calculated in module instantiating
-       Note: when memory is re-allocated, the addr data, thunk argv data, thunk
+       global data size is calculated in module instantiating
+       Note: when memory is re-allocated, the thunk argv data, thunk
              argv offsets and memory data must be copied to new memory also.
      */
     uint8 base_addr[1];
@@ -75,7 +69,6 @@ typedef struct WASMGlobalInstance {
     uint8 type;
     /* mutable or constant */
     bool is_mutable;
-    bool is_addr;
     /* data offset to base_addr of WASMMemoryInstance */
     uint32 data_offset;
     /* initial value */

+ 1 - 0
core/shared-lib/include/config.h

@@ -4,6 +4,7 @@
  */
 
 #ifndef _CONFIG_H_
+#define _CONFIG_H_
 
 #if !defined(BUILD_TARGET_X86_64) \
     && !defined(BUILD_TARGET_AMD_64) \

+ 1 - 0
core/shared-lib/platform/alios/bh_platform.h

@@ -17,6 +17,7 @@
 #include <limits.h>
 #include <errno.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 
 /* Platform name */

+ 5 - 0
core/shared-lib/platform/zephyr/bh_platform.h

@@ -115,6 +115,11 @@ double trunc(double x);
 int signbit(double x);
 int isnan(double x);
 
+unsigned long long int strtoull(const char *nptr, char **endptr,
+                                int base);
+double strtod(const char *nptr, char **endptr);
+float strtof(const char *nptr, char **endptr);
+
 int bh_platform_init();
 
 #endif

+ 1 - 1
core/shared-lib/platform/zephyr/bh_platform_log.c

@@ -27,7 +27,7 @@ static int char_out(int c, struct out_context *ctx)
 static int bh_vprintk(const char *fmt, va_list ap)
 {
     struct out_context ctx = { 0 };
-    _vprintk((out_func_t) char_out, &ctx, fmt, ap);
+    z_vprintk((out_func_t) char_out, &ctx, fmt, ap);
     return ctx.count;
 }
 

+ 1 - 1
samples/gui/wasm-runtime-wgl/linux-build/CMakeLists.txt

@@ -83,7 +83,6 @@ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffunction-sections -fdata-sections -Wall -
 
 enable_language (ASM)
 
-include (${WASM_DIR}/runtime/platform/${TARGET_PLATFORM}/platform.cmake)
 include (${WASM_DIR}/runtime/utils/utils.cmake)
 include (${WASM_DIR}/runtime/vmcore-wasm/vmcore.cmake)
 include (${WASM_DIR}/lib/native/base/wasm_lib_base.cmake)
@@ -103,6 +102,7 @@ include (${SHARED_DIR}/coap/lib_coap.cmake)
 set (PROJECT_SRC_DIR ${CMAKE_CURRENT_LIST_DIR}/../src/platform/${TARGET_PLATFORM})
 
 include_directories(${SHARED_DIR}/include)
+include_directories(${WASM_DIR}/runtime/platform/include)
 include_directories(${PROJECT_SRC_DIR})
 
 add_definitions (-DWASM_ENABLE_BASE_LIB)

+ 1 - 1
samples/gui/wasm-runtime-wgl/zephyr-build/CMakeLists.txt

@@ -51,7 +51,6 @@ set (SHARED_DIR ${WASM_DIR}/../shared-lib)
 
 set (TARGET_PLATFORM "zephyr")
 
-include (${WASM_DIR}/runtime/platform/${TARGET_PLATFORM}/platform.cmake)
 include (${WASM_DIR}/runtime/utils/utils.cmake)
 include (${WASM_DIR}/runtime/vmcore-wasm/vmcore.cmake)
 include (${WASM_DIR}/lib/native/base/wasm_lib_base.cmake)
@@ -68,6 +67,7 @@ include (${SHARED_DIR}/utils/shared_utils.cmake)
 include (${SHARED_DIR}/mem-alloc/mem_alloc.cmake)
 include (${SHARED_DIR}/coap/lib_coap.cmake)
 
+include_directories(${WASM_DIR}/runtime/platform/include)
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../src)
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../src/platform/zephyr)
 

+ 3 - 3
samples/littlevgl/vgl-wasm-runtime/CMakeLists.txt

@@ -78,7 +78,6 @@ set(SHARED_DIR ${REPO_ROOT_DIR}/core/shared-lib)
 
 enable_language (ASM)
 
-include (${WASM_DIR}/runtime/platform/${TARGET_PLATFORM}/platform.cmake)
 include (${WASM_DIR}/runtime/utils/utils.cmake)
 include (${WASM_DIR}/runtime/vmcore-wasm/vmcore.cmake)
 include (${WASM_DIR}/lib/native/base/wasm_lib_base.cmake)
@@ -94,8 +93,9 @@ include (${SHARED_DIR}/utils/shared_utils.cmake)
 include (${SHARED_DIR}/mem-alloc/mem_alloc.cmake)
 include (${SHARED_DIR}/coap/lib_coap.cmake)
 
-
-include_directories(${SHARED_DIR}/include ${CMAKE_CURRENT_LIST_DIR}/src)
+include_directories(${SHARED_DIR}/include)
+include_directories(${WASM_DIR}/runtime/platform/include)
+include_directories(${CMAKE_CURRENT_LIST_DIR}/src)
 
 add_definitions (-DWASM_ENABLE_BASE_LIB)
 add_definitions (-Dattr_container_malloc=bh_malloc)

+ 1 - 1
samples/littlevgl/vgl-wasm-runtime/zephyr-build/CMakeLists.txt

@@ -49,7 +49,6 @@ set (SHARED_DIR ${WASM_DIR}/../shared-lib)
 
 set (TARGET_PLATFORM "zephyr")
 
-include (${WASM_DIR}/runtime/platform/${TARGET_PLATFORM}/platform.cmake)
 include (${WASM_DIR}/runtime/utils/utils.cmake)
 include (${WASM_DIR}/runtime/vmcore-wasm/vmcore.cmake)
 include (${WASM_DIR}/lib/native/base/wasm_lib_base.cmake)
@@ -65,6 +64,7 @@ include (${SHARED_DIR}/utils/shared_utils.cmake)
 include (${SHARED_DIR}/mem-alloc/mem_alloc.cmake)
 include (${SHARED_DIR}/coap/lib_coap.cmake)
 
+include_directories(${WASM_DIR}/runtime/platform/include)
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../src)
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../src/platform/zephyr)
 

+ 1 - 1
samples/simple/CMakeLists.txt

@@ -89,7 +89,6 @@ endif()
 
 enable_language (ASM)
 
-include (${WASM_DIR}/runtime/platform/${TARGET_PLATFORM}/platform.cmake)
 include (${WASM_DIR}/runtime/utils/utils.cmake)
 include (${WASM_DIR}/runtime/vmcore-wasm/vmcore.cmake)
 include (${WASM_DIR}/lib/native/base/wasm_lib_base.cmake)
@@ -110,6 +109,7 @@ include (${SHARED_DIR}/coap/lib_coap.cmake)
 
 
 include_directories(${SHARED_DIR}/include)
+include_directories(${WASM_DIR}/runtime/platform/include)
 include_directories(${CMAKE_CURRENT_LIST_DIR}/src)
 
 #Note: uncomment below line to use UART mode