diff --git a/core/app-framework/app-native-shared/attr_container.c b/core/app-framework/app-native-shared/attr_container.c index 2cd816c6..b27dacdf 100644 --- a/core/app-framework/app-native-shared/attr_container.c +++ b/core/app-framework/app-native-shared/attr_container.c @@ -106,13 +106,13 @@ attr_container_get_attr_begin(const attr_container_t *attr_cont, /* tag content */ p += str_len; - if (p - attr_cont->buf >= total_length) + if ((uint32_t)(p - attr_cont->buf) >= total_length) return NULL; /* attribute num */ attr_num = get_uint16(p); p += sizeof(uint16_t); - if (p - attr_cont->buf >= total_length) + if ((uint32_t)(p - attr_cont->buf) >= total_length) return NULL; if (p_total_length) @@ -174,7 +174,8 @@ attr_container_find_attr(const attr_container_t *attr_cont, const char *key) if (str_len == strlen(key) + 1 && memcmp(p + sizeof(uint16_t), key, str_len) == 0) { - if (p + sizeof(uint16_t) + str_len - attr_cont->buf >= total_length) + if ((uint32_t)(p + sizeof(uint16_t) + str_len + - attr_cont->buf) >= total_length) return NULL; return p; } @@ -337,7 +338,7 @@ bool attr_container_set_attr(attr_container_t **p_attr_cont, const char *key, } /* Set the attr buf */ - str_len = strlen(key) + 1; + str_len = (uint16_t)(strlen(key) + 1); set_uint16(p, str_len); p += sizeof(uint16_t); bh_memcpy_s(p, str_len, key, str_len); @@ -366,7 +367,7 @@ bool attr_container_set_attr(attr_container_t **p_attr_cont, const char *key, return true; } - if (p1 - p + msg_end - attr_end >= attr_len) { + if ((uint32_t)(p1 - p + msg_end - attr_end) >= attr_len) { memmove(p, p1, attr_end - p1); bh_memcpy_s(p + (attr_end - p1), attr_len, attr_buf, attr_len); attr_container_free(attr_buf); @@ -399,7 +400,7 @@ bool attr_container_set_attr(attr_container_t **p_attr_cont, const char *key, return true; } else { /* key not found */ - if (msg_end - attr_end >= attr_len) { + if ((uint32_t)(msg_end - attr_end) >= attr_len) { bh_memcpy_s(attr_end, msg_end - attr_end, attr_buf, attr_len); attr_container_inc_attr_num(attr_cont); attr_container_free(attr_buf); @@ -564,6 +565,9 @@ attr_container_get_attr(const attr_container_t *attr_cont, const char *key) bh_memcpy_s(&val.var_name, sizeof(val.var_name), addr, len); \ break; \ } \ + default: \ + bh_assert(0); \ + break; \ } \ return val.var_name; \ } while (0) @@ -819,6 +823,9 @@ void attr_container_dump(const attr_container_t *attr_cont) get_uint32(p)); p += sizeof(uint32_t) + get_uint32(p); break; + default: + bh_assert(0); + break; } } diff --git a/core/app-framework/base/native/timer_wrapper.c b/core/app-framework/base/native/timer_wrapper.c index fd3ef4bb..1f565aaa 100644 --- a/core/app-framework/base/native/timer_wrapper.c +++ b/core/app-framework/base/native/timer_wrapper.c @@ -5,7 +5,7 @@ #include "bh_platform.h" #include "app_manager_export.h" -#include "module_wasm_app.h" +#include "../app-manager/module_wasm_app.h" #include "timer_native_api.h" static bool timer_thread_run = true; diff --git a/core/app-mgr/app-manager/app_manager.c b/core/app-mgr/app-manager/app_manager.c index d6886182..6418fecb 100644 --- a/core/app-mgr/app-manager/app_manager.c +++ b/core/app-mgr/app-manager/app_manager.c @@ -396,4 +396,5 @@ module_interface *g_module_interfaces[Module_Max] = { #else NULL #endif - }; +}; + diff --git a/core/app-mgr/app-manager/app_manager_host.c b/core/app-mgr/app-manager/app_manager_host.c index a6b13baa..f134eed6 100644 --- a/core/app-mgr/app-manager/app_manager_host.c +++ b/core/app-mgr/app-manager/app_manager_host.c @@ -209,13 +209,14 @@ int aee_host_msg_callback(void *msg, uint16_t msg_len) memset(&request, 0, sizeof(request)); if (!unpack_request(recv_ctx.message.payload, - recv_ctx.message.payload_size, &request)) + recv_ctx.message.payload_size, &request)) continue; request.sender = ID_HOST; am_dispatch_request(&request); - } else { + } + else { app_manager_printf("unexpected host msg type: %d\n", msg_type); } diff --git a/core/app-mgr/app-manager/message.c b/core/app-mgr/app-manager/message.c index 2aed1475..e9c594ec 100644 --- a/core/app-mgr/app-manager/message.c +++ b/core/app-mgr/app-manager/message.c @@ -73,8 +73,8 @@ bool send_error_response_to_host(int mid, int status, const char *msg) } } - set_response(response, status, - FMT_ATTR_CONTAINER, (const char *)payload, payload_len); + set_response(response, status, FMT_ATTR_CONTAINER, + (const char *)payload, payload_len); response->mid = mid; send_response_to_host(response); diff --git a/core/app-mgr/app-mgr-shared/app_manager_export.h b/core/app-mgr/app-mgr-shared/app_manager_export.h index aa676d2a..4d8ced8d 100644 --- a/core/app-mgr/app-mgr-shared/app_manager_export.h +++ b/core/app-mgr/app-mgr-shared/app_manager_export.h @@ -173,11 +173,11 @@ typedef struct host_interface { * @return true if success, false otherwise */ bool -app_manager_host_init(host_interface *interface); +app_manager_host_init(host_interface *intf); /* Startup app manager */ void -app_manager_startup(host_interface *interface); +app_manager_startup(host_interface *intf); /* Get queue of current applet */ void * diff --git a/core/config.h b/core/config.h index 234b43e3..0e9c87ae 100644 --- a/core/config.h +++ b/core/config.h @@ -226,7 +226,7 @@ /* Default/min/max stack size of each app thread */ #if !defined(BH_PLATFORM_ZEPHYR) && !defined(BH_PLATFORM_ALIOS_THINGS) \ - && !defined(BH_PLATFORM_FREERTOS) + && !defined(BH_PLATFORM_ESP_IDF) && !defined(BH_PLATFORM_OPENRTOS) #define APP_THREAD_STACK_SIZE_DEFAULT (32 * 1024) #define APP_THREAD_STACK_SIZE_MIN (24 * 1024) #else @@ -259,5 +259,9 @@ #define WASM_ENABLE_TAIL_CALL 0 #endif +#ifndef WASM_ENABLE_CUSTOM_NAME_SECTION +#define WASM_ENABLE_CUSTOM_NAME_SECTION 0 +#endif + #endif /* end of _CONFIG_H_ */ diff --git a/core/iwasm/aot/aot_loader.c b/core/iwasm/aot/aot_loader.c index 47857076..5bf2453d 100644 --- a/core/iwasm/aot/aot_loader.c +++ b/core/iwasm/aot/aot_loader.c @@ -1663,6 +1663,10 @@ load_from_sections(AOTModule *module, AOTSection *sections, error_buf, error_buf_size)) return false; break; + default: + set_error_buf(error_buf, error_buf_size, + "invalid aot section type"); + return false; } section = section->next; diff --git a/core/iwasm/aot/aot_reloc.h b/core/iwasm/aot/aot_reloc.h index 9df623e9..cbf2f9cd 100644 --- a/core/iwasm/aot/aot_reloc.h +++ b/core/iwasm/aot/aot_reloc.h @@ -36,8 +36,8 @@ typedef struct { REG_SYM(aot_call_indirect), \ REG_SYM(wasm_runtime_enlarge_memory), \ REG_SYM(wasm_runtime_set_exception), \ - REG_SYM(memset), \ - REG_SYM(memmove), \ + REG_SYM(aot_memset), \ + REG_SYM(aot_memmove), \ REG_BULK_MEMORY_SYM() \ REG_ATOMIC_WAIT_SYM() #else /* else of (defined(_WIN32) || defined(_WIN32_)) && defined(NDEBUG) */ @@ -47,8 +47,8 @@ typedef struct { REG_SYM(aot_call_indirect), \ REG_SYM(wasm_runtime_enlarge_memory), \ REG_SYM(wasm_runtime_set_exception), \ - REG_SYM(memset), \ - REG_SYM(memmove), \ + REG_SYM(aot_memset), \ + REG_SYM(aot_memmove), \ REG_SYM(fmin), \ REG_SYM(fminf), \ REG_SYM(fmax), \ diff --git a/core/iwasm/aot/aot_runtime.c b/core/iwasm/aot/aot_runtime.c index db047dc4..d6db2d51 100644 --- a/core/iwasm/aot/aot_runtime.c +++ b/core/iwasm/aot/aot_runtime.c @@ -1907,6 +1907,18 @@ aot_call_indirect(WASMExecEnv *exec_env, } } +void * +aot_memmove(void *dest, const void *src, size_t n) +{ + return memmove(dest, src, n); +} + +void * +aot_memset(void *s, int c, size_t n) +{ + return memset(s, c, n); +} + #if WASM_ENABLE_BULK_MEMORY != 0 bool aot_memory_init(AOTModuleInstance *module_inst, uint32 seg_index, diff --git a/core/iwasm/aot/aot_runtime.h b/core/iwasm/aot/aot_runtime.h index 93a0cf5d..2fa72158 100644 --- a/core/iwasm/aot/aot_runtime.h +++ b/core/iwasm/aot/aot_runtime.h @@ -527,6 +527,12 @@ aot_call_indirect(WASMExecEnv *exec_env, uint32 aot_get_plt_table_size(); +void * +aot_memmove(void *dest, const void *src, size_t n); + +void * +aot_memset(void *s, int c, size_t n); + #if WASM_ENABLE_BULK_MEMORY != 0 bool aot_memory_init(AOTModuleInstance *module_inst, uint32 seg_index, diff --git a/core/iwasm/common/wasm_memory.c b/core/iwasm/common/wasm_memory.c index 151de282..0b94beeb 100644 --- a/core/iwasm/common/wasm_memory.c +++ b/core/iwasm/common/wasm_memory.c @@ -7,6 +7,8 @@ #include "bh_platform.h" #include "mem_alloc.h" +#define BH_ENABLE_MEMORY_PROFILING 0 + #if BH_ENABLE_MEMORY_PROFILING != 0 /* Memory profile data of a function */ diff --git a/core/iwasm/common/wasm_native.c b/core/iwasm/common/wasm_native.c index de252c2e..c4313a6e 100644 --- a/core/iwasm/common/wasm_native.c +++ b/core/iwasm/common/wasm_native.c @@ -8,7 +8,7 @@ #include "bh_log.h" #if !defined(BH_PLATFORM_ZEPHYR) && !defined(BH_PLATFORM_ALIOS_THINGS) \ - && !defined(BH_PLATFORM_FREERTOS) + && !defined(BH_PLATFORM_OPENRTOS) && !defined(BH_PLATFORM_ESP_IDF) #define ENABLE_QUICKSORT 1 #else #define ENABLE_QUICKSORT 0 diff --git a/core/iwasm/include/aot_export.h b/core/iwasm/include/aot_export.h index f2d33962..78d2edc1 100644 --- a/core/iwasm/include/aot_export.h +++ b/core/iwasm/include/aot_export.h @@ -6,7 +6,7 @@ #ifndef _AOT_EXPORT_H #define _AOT_EXPORT_H -#include +#include #include diff --git a/core/iwasm/interpreter/wasm_loader.c b/core/iwasm/interpreter/wasm_loader.c index a92bb319..f4b71805 100644 --- a/core/iwasm/interpreter/wasm_loader.c +++ b/core/iwasm/interpreter/wasm_loader.c @@ -6393,6 +6393,9 @@ handle_op_block_and_loop: } #endif break; + default: + bh_assert(0); + break; } ref_type = *(loader_ctx->frame_ref - 1); diff --git a/core/iwasm/libraries/libc-builtin/libc_builtin_wrapper.c b/core/iwasm/libraries/libc-builtin/libc_builtin_wrapper.c index 584ee600..b1a20b1d 100644 --- a/core/iwasm/libraries/libc-builtin/libc_builtin_wrapper.c +++ b/core/iwasm/libraries/libc-builtin/libc_builtin_wrapper.c @@ -399,6 +399,31 @@ sprintf_out(int c, struct str_context *ctx) return c; } +#ifdef BH_PLATFORM_OPENRTOS +PRIVILEGED_DATA static char print_buf[128] = { 0 }; +PRIVILEGED_DATA static int print_buf_size = 0; + +static int +printf_out(int c, struct str_context *ctx) +{ + if (c == '\n') { + print_buf[print_buf_size] = '\0'; + os_printf("%s\n", print_buf); + print_buf_size = 0; + } + else if (print_buf_size >= sizeof(print_buf) - 2) { + print_buf[print_buf_size++] = (char)c; + print_buf[print_buf_size] = '\0'; + os_printf("%s\n", print_buf); + print_buf_size = 0; + } + else { + print_buf[print_buf_size++] = (char)c; + } + ctx->count++; + return c; +} +#else static int printf_out(int c, struct str_context *ctx) { @@ -406,6 +431,7 @@ printf_out(int c, struct str_context *ctx) ctx->count++; return c; } +#endif static int printf_wrapper(wasm_exec_env_t exec_env, diff --git a/core/shared/coap/er-coap/coap-constants.h b/core/shared/coap/er-coap/coap-constants.h index f73a5b95..d2898f89 100644 --- a/core/shared/coap/er-coap/coap-constants.h +++ b/core/shared/coap/er-coap/coap-constants.h @@ -84,7 +84,7 @@ typedef enum { /* CoAP response codes */ typedef enum { - NO_ERROR = 0, + COAP_NO_ERROR = 0, CREATED_2_01 = 65, /* CREATED */ DELETED_2_02 = 66, /* DELETED */ diff --git a/core/shared/platform/common/freertos/freertos_malloc.c b/core/shared/platform/common/freertos/freertos_malloc.c new file mode 100644 index 00000000..70002163 --- /dev/null +++ b/core/shared/platform/common/freertos/freertos_malloc.c @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2019 Intel Corporation. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + */ + +#include "platform_api_vmcore.h" + + +void * +os_malloc(unsigned size) +{ + return NULL; +} + +void * +os_realloc(void *ptr, unsigned size) +{ + return NULL; +} + +void +os_free(void *ptr) +{ +} + diff --git a/core/shared/platform/freertos/freertos_thread.c b/core/shared/platform/common/freertos/freertos_thread.c similarity index 96% rename from core/shared/platform/freertos/freertos_thread.c rename to core/shared/platform/common/freertos/freertos_thread.c index b0b2d2af..78643419 100644 --- a/core/shared/platform/freertos/freertos_thread.c +++ b/core/shared/platform/common/freertos/freertos_thread.c @@ -8,9 +8,12 @@ #define bh_assert(v) do { \ if (!(v)) { \ + int _count = 1; \ os_printf("\nASSERTION FAILED: %s, at %s, line %d\n",\ - #v, __FILE__, __LINE__); \ - abort(); \ + #v, __FILE__, __LINE__); \ + /* divived by 0 to make it abort */ \ + os_printf("%d\n", _count / (_count - 1)); \ + while (1); \ } \ } while (0) @@ -293,7 +296,8 @@ int os_thread_join(korp_tid thread, void **value_ptr) int os_mutex_init(korp_mutex *mutex) { SemaphoreHandle_t semaphore; - if (!(semaphore = xSemaphoreCreateMutex())) + + if (!(semaphore = xSemaphoreCreateMutex())) return BHT_ERROR; mutex->sem = semaphore; mutex->is_recursive = false; @@ -303,6 +307,7 @@ int os_mutex_init(korp_mutex *mutex) int os_recursive_mutex_init(korp_mutex *mutex) { SemaphoreHandle_t semaphore; + if (!(semaphore = xSemaphoreCreateRecursiveMutex())) return BHT_ERROR; mutex->sem = semaphore; @@ -418,9 +423,3 @@ int os_cond_signal(korp_cond *cond) return BHT_OK; } -uint8 *os_thread_get_stack_boundary() -{ - /* TODO: implement os_thread_get_stack_boundary */ - return NULL; -} - diff --git a/core/shared/platform/freertos/freertos_time.c b/core/shared/platform/common/freertos/freertos_time.c similarity index 100% rename from core/shared/platform/freertos/freertos_time.c rename to core/shared/platform/common/freertos/freertos_time.c diff --git a/core/shared/platform/common/freertos/platform_api_freertos.cmake b/core/shared/platform/common/freertos/platform_api_freertos.cmake new file mode 100644 index 00000000..ebfc19d7 --- /dev/null +++ b/core/shared/platform/common/freertos/platform_api_freertos.cmake @@ -0,0 +1,8 @@ +# Copyright (C) 2019 Intel Corporation. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +set (PLATFORM_COMMON_FREERTOS_DIR ${CMAKE_CURRENT_LIST_DIR}) + +file (GLOB_RECURSE source_all ${PLATFORM_COMMON_FREERTOS_DIR}/*.c) + +set (PLATFORM_COMMON_FREERTOS_SOURCE ${source_all} ) diff --git a/core/shared/platform/common/math/math.c b/core/shared/platform/common/math/math.c index 1c1137ba..4f6a7ce7 100644 --- a/core/shared/platform/common/math/math.c +++ b/core/shared/platform/common/math/math.c @@ -32,6 +32,10 @@ #define __FDLIBM_STDC__ +#ifndef FLT_EVAL_METHOD +#define FLT_EVAL_METHOD 0 +#endif + typedef uint32_t u_int32_t; typedef uint64_t u_int64_t; diff --git a/core/shared/platform/esp-idf/espidf_platform.c b/core/shared/platform/esp-idf/espidf_platform.c new file mode 100644 index 00000000..7660ada4 --- /dev/null +++ b/core/shared/platform/esp-idf/espidf_platform.c @@ -0,0 +1,122 @@ +/* + * Copyright (C) 2019 Intel Corporation. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + */ + +#include "platform_api_vmcore.h" +#include "platform_api_extension.h" + + +int errno = 0; + +int +os_thread_sys_init(); + +void +os_thread_sys_destroy(); + +int +bh_platform_init() +{ + return os_thread_sys_init(); +} + +void +bh_platform_destroy() +{ + os_thread_sys_destroy(); +} + +int os_printf(const char *format, ...) +{ + int ret = 0; + va_list ap; + + va_start(ap, format); + ret += vprintf(format, ap); + va_end(ap); + + return ret; +} + +int +os_vprintf(const char *format, va_list ap) +{ + return vprintf(format, ap); +} + +void * +os_mmap(void *hint, size_t size, int prot, int flags) +{ + + return BH_MALLOC(size); +} + +void +os_munmap(void *addr, size_t size) +{ + BH_FREE(addr); +} + +int +os_mprotect(void *addr, size_t size, int prot) +{ + return 0; +} + +void +os_dcache_flush() +{ +} + +int +atoi(const char *nptr) +{ + bool is_negative = false; + int total = 0; + const char *p = nptr; + char temp = '0'; + + if (NULL == p) { + os_printf("invlaid atoi input\n"); + return 0; + } + + if (*p == '-') { + is_negative = true; + p++; + } + + while ((temp = *p++) != '\0') { + if (temp > '9' || temp < '0') { + continue; + } + + total = total * 10 + (int)(temp - '0'); + } + + if (is_negative) + total = 0 - total; + + return total; +} + +void * +memmove(void *dest, const void *src, size_t n) +{ + char *d = dest; + const char *s = src; + + if (d < s) { + while (n--) + *d++ = *s++; + } + else { + const char *lasts = s + (n-1); + char *lastd = d + (n-1); + while (n--) + *lastd-- = *lasts--; + } + return dest; +} + diff --git a/core/shared/platform/esp-idf/espidf_thread.c b/core/shared/platform/esp-idf/espidf_thread.c new file mode 100644 index 00000000..d5228dc2 --- /dev/null +++ b/core/shared/platform/esp-idf/espidf_thread.c @@ -0,0 +1,14 @@ +/* + * Copyright (C) 2019 Intel Corporation. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + */ + +#include "platform_api_vmcore.h" +#include "platform_api_extension.h" + +uint8 *os_thread_get_stack_boundary() +{ + /* TODO: implement os_thread_get_stack_boundary */ + return NULL; +} + diff --git a/core/shared/platform/freertos/platform_internal.h b/core/shared/platform/esp-idf/platform_internal.h similarity index 97% rename from core/shared/platform/freertos/platform_internal.h rename to core/shared/platform/esp-idf/platform_internal.h index baa9e069..5703fa78 100644 --- a/core/shared/platform/freertos/platform_internal.h +++ b/core/shared/platform/esp-idf/platform_internal.h @@ -20,8 +20,8 @@ #include #include -#ifndef BH_PLATFORM_FREERTOS -#define BH_PLATFORM_FREERTOS +#ifndef BH_PLATFORM_ESP_IDF +#define BH_PLATFORM_ESP_IDF #endif #define BH_APPLET_PRESERVED_STACK_SIZE (2 * BH_KB) diff --git a/core/shared/platform/freertos/shared_platform.cmake b/core/shared/platform/esp-idf/shared_platform.cmake similarity index 58% rename from core/shared/platform/freertos/shared_platform.cmake rename to core/shared/platform/esp-idf/shared_platform.cmake index 1938acfd..656fcfae 100644 --- a/core/shared/platform/freertos/shared_platform.cmake +++ b/core/shared/platform/esp-idf/shared_platform.cmake @@ -3,14 +3,17 @@ set (PLATFORM_SHARED_DIR ${CMAKE_CURRENT_LIST_DIR}) -add_definitions(-DBH_PLATFORM_FREERTOS) +add_definitions(-DBH_PLATFORM_ESP_IDF) include_directories(${PLATFORM_SHARED_DIR}) include_directories(${PLATFORM_SHARED_DIR}/../include) +include (${CMAKE_CURRENT_LIST_DIR}/../common/freertos/platform_api_freertos.cmake) include (${CMAKE_CURRENT_LIST_DIR}/../common/math/platform_api_math.cmake) file (GLOB_RECURSE source_all ${PLATFORM_SHARED_DIR}/*.c) -set (PLATFORM_SHARED_SOURCE ${source_all} ${PLATFORM_COMMON_MATH_SOURCE}) +set (PLATFORM_SHARED_SOURCE ${source_all} + ${PLATFORM_COMMON_MATH_SOURCE} + ${PLATFORM_COMMON_FREERTOS_SOURCE}) diff --git a/core/shared/platform/freertos/freertos_platform.c b/core/shared/platform/freertos/freertos_platform.c deleted file mode 100644 index 4a47a498..00000000 --- a/core/shared/platform/freertos/freertos_platform.c +++ /dev/null @@ -1,315 +0,0 @@ -/* - * Copyright (C) 2019 Intel Corporation. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - */ - -#include "platform_api_vmcore.h" -#include "platform_api_extension.h" - - -int errno = 0; - -int -os_thread_sys_init(); - -void -os_thread_sys_destroy(); - -int -bh_platform_init() -{ - return os_thread_sys_init(); -} - -void -bh_platform_destroy() -{ - os_thread_sys_destroy(); -} - -void * -os_malloc(unsigned size) -{ - return NULL; -} - -void * -os_realloc(void *ptr, unsigned size) -{ - return NULL; -} - -void -os_free(void *ptr) -{ -} - -int os_printf(const char *format, ...) -{ - /* TODO: implement os_printf */ - return 0; -} - -int -os_vprintf(const char *format, va_list ap) -{ - /* TODO: implement os_vprintf */ - return 1; -} - -void * -os_mmap(void *hint, size_t size, int prot, int flags) -{ - - return BH_MALLOC(size); -} - -void -os_munmap(void *addr, size_t size) -{ - BH_FREE(addr); -} - -int -os_mprotect(void *addr, size_t size, int prot) -{ - return 0; -} - -void -os_dcache_flush() -{ -} - -int atoi(const char *nptr) -{ - bool is_negative = false; - int total = 0; - const char *p = nptr; - char temp = '0'; - - if (NULL == p) { - os_printf("invlaid atoi input\n"); - return 0; - } - - if (*p == '-') { - is_negative = true; - p++; - } - - while ((temp = *p++) != '\0') { - if (temp > '9' || temp < '0') { - continue; - } - - total = total * 10 + (int)(temp - '0'); - } - - if (is_negative) - total = 0 - total; - - return total; -} - -/** - * TODO: implement these APIs which are needed by libc_builtin_wrapper.c - * and wasm_runtime_common.c - */ -int strncasecmp(const char *s1, const char *s2, size_t n) -{ - os_printf("### unimplemented function strncasecmp called!\n"); - return 0; -} - -long int strtol(const char *str, char **endptr, int base) -{ - os_printf("### unimplemented function strtol called!\n"); - return 0; -} - -unsigned long int strtoul(const char *str, char **endptr, int base) -{ - os_printf("### unimplemented function strtoul called!\n"); - return 0; -} - -unsigned long long int strtoull(const char *nptr, char **endptr, int base) -{ - os_printf("### unimplemented function strtoull called!\n"); - return 0; -} - -double strtod(const char *nptr, char **endptr) -{ - os_printf("### unimplemented function strtod called!\n"); - return 0; -} - -float strtof(const char *nptr, char **endptr) -{ - os_printf("### unimplemented function strtof called!\n"); - return 0; -} - -char *strstr(const char *haystack, const char *needle) -{ - os_printf("### unimplemented function strstr called!\n"); - return NULL; -} - -size_t strspn(const char *s, const char *accept) -{ - os_printf("### unimplemented function strspn called!\n"); - return 0; -} - -size_t strcspn(const char *s, const char *reject) -{ - os_printf("### unimplemented function strcspn called!\n"); - return 0; -} - -void *memchr(const void *s, int c, size_t n) -{ - os_printf("### unimplemented function memchr called!\n"); - return NULL; -} - -int isalnum(int c) -{ - os_printf("### unimplemented function isalnum called!\n"); - return 0; -} - -int isxdigit(int c) -{ - os_printf("### unimplemented function isxdigit called!\n"); - return 0; -} - -int isdigit(int c) -{ - os_printf("### unimplemented function isdigit called!\n"); - return 0; -} - -int isprint(int c) -{ - os_printf("### unimplemented function isprint called!\n"); - return 0; -} - -int isgraph(int c) -{ - os_printf("### unimplemented function isgraph called!\n"); - return 0; -} - -int isspace(int c) -{ - os_printf("### unimplemented function isspace called!\n"); - return 0; -} - -int isalpha(int c) -{ - os_printf("### unimplemented function isalpha called!\n"); - return 0; -} - -int isupper(int c) -{ - os_printf("### unimplemented function isupper called!\n"); - return 0; -} - -int toupper(int c) -{ - os_printf("### unimplemented function toupper called!\n"); - return 0; -} - -int tolower(int c) -{ - os_printf("### unimplemented function tolower called!\n"); - return 0; -} - -void *memmove(void *dest, const void *src, size_t n) -{ - char *d = dest; - const char *s = src; - - if (d < s) { - while (n--) - *d++ = *s++; - } - else { - const char *lasts = s + (n-1); - char *lastd = d + (n-1); - while (n--) - *lastd-- = *lasts--; - } - return dest; -} - -static union { - int a; - char b; -} __ue = { .a = 1 }; - -#define is_little_endian() (__ue.b == 1) - -static void swap32(uint8_t* pData) -{ - uint8_t value = *pData; - *pData = *(pData + 3); - *(pData + 3) = value; - - value = *(pData + 1); - *(pData + 1) = *(pData + 2); - *(pData + 2) = value; -} - -static void swap16(uint8_t* pData) -{ - uint8_t value = *pData; - *(pData) = *(pData + 1); - *(pData + 1) = value; -} - -uint32_t htonl(uint32_t value) -{ - uint32_t ret; - if (is_little_endian()) { - ret = value; - swap32((uint8*) &ret); - return ret; - } - - return value; -} - -uint32_t ntohl(uint32_t value) -{ - return htonl(value); -} - -uint16_t htons(uint16_t value) -{ - uint16_t ret; - if (is_little_endian()) { - ret = value; - swap16((uint8_t *)&ret); - return ret; - } - - return value; -} - -uint16_t ntohs(uint16_t value) -{ - return htons(value); -} - diff --git a/core/shared/platform/windows/win_thread.c b/core/shared/platform/windows/win_thread.c index f356dcc3..a2f4a4d4 100644 --- a/core/shared/platform/windows/win_thread.c +++ b/core/shared/platform/windows/win_thread.c @@ -147,7 +147,6 @@ int os_thread_detach(korp_tid thread) void os_thread_exit(void *retval) { - return BHT_OK; } uint8 *os_thread_get_stack_boundary() diff --git a/core/shared/utils/bh_log.c b/core/shared/utils/bh_log.c index e1a3eb22..a3b392e8 100644 --- a/core/shared/utils/bh_log.c +++ b/core/shared/utils/bh_log.c @@ -26,7 +26,7 @@ bh_log(LogLevel log_level, const char *file, int line, const char *fmt, ...) uint64 usec; uint32 t, h, m, s, mills; - if (log_level > log_verbose_level) + if ((uint32)log_level > log_verbose_level) return; self = os_self_thread(); diff --git a/product-mini/platforms/esp-idf/CMakeLists.txt b/product-mini/platforms/esp-idf/CMakeLists.txt new file mode 100644 index 00000000..f0896d5b --- /dev/null +++ b/product-mini/platforms/esp-idf/CMakeLists.txt @@ -0,0 +1,55 @@ +# Copyright (C) 2019 Intel Corporation. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +# from ESP-IDF 4.0 examples/build_system/cmake/idf_as_lib +cmake_minimum_required(VERSION 3.5) + +project(wamr_esp_idf C) + +enable_language (ASM) + +# Include for ESP-IDF build system functions +include($ENV{IDF_PATH}/tools/cmake/idf.cmake) + +# Create idf::esp32 and idf::freertos static libraries +idf_build_process(esp32 + # try and trim the build; additional components + # will be included as needed based on dependency tree + # + # although esptool_py does not generate static library, + # processing the component is needed for flashing related + # targets and file generation + COMPONENTS esp32 freertos esptool_py + SDKCONFIG ${CMAKE_BINARY_DIR}/sdkconfig + BUILD_DIR ${CMAKE_BINARY_DIR}) + +include_directories(build/config + xtensa/include + $ENV{IDF_PATH}/components/esp32/include + $ENV{IDF_PATH}/components/esp_common/include + $ENV{IDF_PATH}/components/esp_rom/include + $ENV{IDF_PATH}/components/freertos/include + $ENV{IDF_PATH}/components/heap/include + $ENV{IDF_PATH}/components/soc/esp32/include + $ENV{IDF_PATH}/components/xtensa/include + $ENV{IDF_PATH}/components/xtensa/esp32/include) + +set(WAMR_BUILD_PLATFORM "esp-idf") +set(WAMR_BUILD_TARGET "XTENSA") +set(WAMR_BUILD_INTERP 1) +set(WAMR_BUILD_FAST_INTERP 1) +set(WAMR_BUILD_AOT 1) +set(WAMR_BUILD_LIBC_BUILTIN 1) +set(WAMR_BUILD_LIBC_WASI 0) + +set(WAMR_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../..) + +include(${WAMR_ROOT_DIR}/build-scripts/runtime_lib.cmake) +add_library(vmlib ${WAMR_RUNTIME_LIB_SOURCE}) + +set(elf_file ${CMAKE_PROJECT_NAME}.elf) +add_executable(${elf_file} main.c iwasm_main.c) + +# Link the static libraries to the executable +target_link_libraries(${elf_file} idf::esp32 idf::freertos idf::spi_flash vmlib) + diff --git a/product-mini/platforms/freertos/simple/iwasm_main.c b/product-mini/platforms/esp-idf/iwasm_main.c similarity index 100% rename from product-mini/platforms/freertos/simple/iwasm_main.c rename to product-mini/platforms/esp-idf/iwasm_main.c diff --git a/product-mini/platforms/freertos/simple/main.c b/product-mini/platforms/esp-idf/main.c similarity index 100% rename from product-mini/platforms/freertos/simple/main.c rename to product-mini/platforms/esp-idf/main.c diff --git a/product-mini/platforms/freertos/simple/sources.mk b/product-mini/platforms/esp-idf/sources.mk similarity index 85% rename from product-mini/platforms/freertos/simple/sources.mk rename to product-mini/platforms/esp-idf/sources.mk index 466769ee..c9e5ce0f 100644 --- a/product-mini/platforms/freertos/simple/sources.mk +++ b/product-mini/platforms/esp-idf/sources.mk @@ -1,5 +1,5 @@ # TODO: set WAMR root dir -WAMR_ROOT := ../../../../ +WAMR_ROOT := ../../.. override PROJECT_CFLAGS := $(PROJECT_CFLAGS) -Wno-unused-parameter -Wno-pedantic @@ -12,11 +12,11 @@ override PROJECT_CFLAGS := $(PROJECT_CFLAGS) \ -I$(WAMR_INC_ROOT)/core/shared/utils \ -I$(WAMR_INC_ROOT)/core/shared/mem-alloc \ -I$(WAMR_INC_ROOT)/core/shared/platform/include \ - -I$(WAMR_INC_ROOT)/core/shared/platform/freertos \ + -I$(WAMR_INC_ROOT)/core/shared/platform/esp-idf \ -I$(WAMR_INC_ROOT)/core/iwasm/interpreter override PROJECT_CFLAGS := $(PROJECT_CFLAGS) \ - -DBH_PLATFORM_FREERTOS \ + -DBH_PLATFORM_ESP_IDF \ -DBH_MALLOC=wasm_runtime_malloc \ -DBH_FREE=wasm_runtime_free \ -DBUILD_TARGET_X86_32 \ @@ -25,10 +25,11 @@ override PROJECT_CFLAGS := $(PROJECT_CFLAGS) \ -DWASM_ENABLE_LIBC_BUILTIN=1 override PROJECT_CSRC := $(PROJECT_CSRC) \ - $(WAMR_SRC_ROOT)/core/shared/platform/freertos/freertos_platform.c \ - $(WAMR_SRC_ROOT)/core/shared/platform/freertos/freertos_thread.c \ - $(WAMR_SRC_ROOT)/core/shared/platform/freertos/freertos_time.c \ - $(WAMR_SRC_ROOT)/core/shared/platform/common/math/math.c \ + $(WAMR_SRC_ROOT)/core/shared/platform/esp-idf/espidf_platform.c \ + $(WAMR_SRC_ROOT)/core/shared/platform/esp-idf/espidf_thread.c \ + $(WAMR_SRC_ROOT)/core/shared/platform/common/freertos/freertos_malloc.c \ + $(WAMR_SRC_ROOT)/core/shared/platform/common/freertos/freertos_thread.c \ + $(WAMR_SRC_ROOT)/core/shared/platform/common/freertos/freertos_time.c \ $(WAMR_SRC_ROOT)/core/shared/mem-alloc/mem_alloc.c \ $(WAMR_SRC_ROOT)/core/shared/mem-alloc/ems/ems_kfc.c \ $(WAMR_SRC_ROOT)/core/shared/mem-alloc/ems/ems_hmu.c \ @@ -50,5 +51,5 @@ override PROJECT_CSRC := $(PROJECT_CSRC) \ $(WAMR_SRC_ROOT)/core/iwasm/interpreter/wasm_interp_classic.c \ $(WAMR_SRC_ROOT)/core/iwasm/interpreter/wasm_loader.c \ $(WAMR_SRC_ROOT)/core/iwasm/interpreter/wasm_runtime.c \ - $(WAMR_SRC_ROOT)/product-mini/platforms/freertos/simple/iwasm_main.c \ - $(WAMR_SRC_ROOT)/product-mini/platforms/freertos/simple/main.c + $(WAMR_SRC_ROOT)/product-mini/platforms/esp-idf/iwasm_main.c \ + $(WAMR_SRC_ROOT)/product-mini/platforms/esp-idf/main.c diff --git a/product-mini/platforms/freertos/simple/test_wasm.h b/product-mini/platforms/esp-idf/test_wasm.h similarity index 100% rename from product-mini/platforms/freertos/simple/test_wasm.h rename to product-mini/platforms/esp-idf/test_wasm.h diff --git a/product-mini/platforms/nuttx/wamr.mk b/product-mini/platforms/nuttx/wamr.mk index f76bf0cc..2efdbd70 100644 --- a/product-mini/platforms/nuttx/wamr.mk +++ b/product-mini/platforms/nuttx/wamr.mk @@ -134,8 +134,6 @@ else CFLAGS += -DWASM_ENABLE_GLOBAL_HEAP_POOL=0 endif -CFLAGS += -DBH_ENABLE_MEMORY_PROFILING=0 - CFLAGS += -Wno-strict-prototypes -Wno-shadow -Wno-unused-variable CFLAGS += -Wno-int-conversion -Wno-implicit-function-declaration