From f59ffa0d63f832982da1caa524aaac146f3f1422 Mon Sep 17 00:00:00 2001 From: dongsheng28849455 <68947925+dongsheng28849455@users.noreply.github.com> Date: Tue, 8 Nov 2022 12:42:19 +0800 Subject: [PATCH] Enable Nuttx spec test option and register aot symbols (#1687) Enable spec test option on Nuttx platform. Register sqrt/sqrtf in aot global symbol map and _fixdfdi/__floatundidf in xtensa symbol map. --- core/iwasm/aot/aot_reloc.h | 2 ++ core/iwasm/aot/aot_runtime.c | 12 ++++++++++++ core/iwasm/aot/aot_runtime.h | 6 ++++++ core/iwasm/aot/arch/aot_reloc_xtensa.c | 7 +++++-- product-mini/platforms/nuttx/wamr.mk | 6 ++++++ 5 files changed, 31 insertions(+), 2 deletions(-) diff --git a/core/iwasm/aot/aot_reloc.h b/core/iwasm/aot/aot_reloc.h index 1d97c99f5..34a37a7be 100644 --- a/core/iwasm/aot/aot_reloc.h +++ b/core/iwasm/aot/aot_reloc.h @@ -124,6 +124,8 @@ typedef struct { { "memset", (void*)aot_memset }, \ { "memmove", (void*)aot_memmove }, \ { "memcpy", (void*)aot_memmove }, \ + { "sqrt", (void*)aot_sqrt }, \ + { "sqrtf", (void*)aot_sqrtf }, \ 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 6220c8b0e..1c3f033c6 100644 --- a/core/iwasm/aot/aot_runtime.c +++ b/core/iwasm/aot/aot_runtime.c @@ -1968,6 +1968,18 @@ aot_memset(void *s, int c, size_t n) return memset(s, c, n); } +double +aot_sqrt(double x) +{ + return sqrt(x); +} + +float +aot_sqrtf(float x) +{ + return sqrtf(x); +} + #if WASM_ENABLE_BULK_MEMORY != 0 bool aot_memory_init(AOTModuleInstance *module_inst, uint32 seg_index, uint32 offset, diff --git a/core/iwasm/aot/aot_runtime.h b/core/iwasm/aot/aot_runtime.h index 263878d1a..d02af3cb9 100644 --- a/core/iwasm/aot/aot_runtime.h +++ b/core/iwasm/aot/aot_runtime.h @@ -451,6 +451,12 @@ aot_memmove(void *dest, const void *src, size_t n); void * aot_memset(void *s, int c, size_t n); +double +aot_sqrt(double x); + +float +aot_sqrtf(float x); + #if WASM_ENABLE_BULK_MEMORY != 0 bool aot_memory_init(AOTModuleInstance *module_inst, uint32 seg_index, uint32 offset, diff --git a/core/iwasm/aot/arch/aot_reloc_xtensa.c b/core/iwasm/aot/arch/aot_reloc_xtensa.c index 7da471dfe..91766831d 100644 --- a/core/iwasm/aot/arch/aot_reloc_xtensa.c +++ b/core/iwasm/aot/arch/aot_reloc_xtensa.c @@ -41,6 +41,9 @@ void __gtdf2(); void __umoddi3(); void __floatdidf(); void __divsf3(); +void __fixdfdi(); +void __floatundidf(); + static SymbolMap target_sym_map[] = { REG_COMMON_SYMBOLS @@ -80,8 +83,8 @@ static SymbolMap target_sym_map[] = { REG_SYM(__umoddi3), REG_SYM(__floatdidf), REG_SYM(__divsf3), - REG_SYM(sqrt), - REG_SYM(sqrtf), + REG_SYM(__fixdfdi), + REG_SYM(__floatundidf), }; /* clang-format on */ diff --git a/product-mini/platforms/nuttx/wamr.mk b/product-mini/platforms/nuttx/wamr.mk index bda4d6de0..04cb7ee1d 100644 --- a/product-mini/platforms/nuttx/wamr.mk +++ b/product-mini/platforms/nuttx/wamr.mk @@ -287,6 +287,12 @@ else CFLAGS += -DWASM_ENABLE_GLOBAL_HEAP_POOL=0 endif +ifeq ($(CONFIG_INTERPRETERS_WAMR_ENABLE_SPEC_TEST),y) +CFLAGS += -DWASM_ENABLE_SPEC_TEST=1 +else +CFLAGS += -DWASM_ENABLE_SPEC_TEST=0 +endif + CFLAGS += -Wno-strict-prototypes -Wno-shadow -Wno-unused-variable CFLAGS += -Wno-int-conversion -Wno-implicit-function-declaration