Skip to content

Commit 8b96f4f

Browse files
authored
Update sample workload's scripts to align with latest emcc (#609)
And enable auxiliary stack overflow/underflow check in JIT mode
1 parent ee97618 commit 8b96f4f

File tree

8 files changed

+44
-23
lines changed

8 files changed

+44
-23
lines changed

core/iwasm/aot/aot_loader.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2458,6 +2458,7 @@ aot_convert_wasm_module(WASMModule *wasm_module,
24582458
#if WASM_ENABLE_SIMD != 0
24592459
option.enable_simd = true;
24602460
#endif
2461+
option.enable_aux_stack_check = true;
24612462
#if (WASM_ENABLE_PERF_PROFILING != 0) || (WASM_ENABLE_DUMP_CALL_STACK != 0)
24622463
option.enable_aux_stack_frame = true;
24632464
#endif

core/iwasm/libraries/libc-emcc/libc_emcc_wrapper.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,18 @@ emscripten_notify_memory_growth_wrapper(wasm_exec_env_t exec_env, int i)
508508
(void)i;
509509
}
510510

511+
static void
512+
emscripten_thread_sleep_wrapper(wasm_exec_env_t exec_env, double timeout_ms)
513+
{
514+
uint64 ms = (uint64)timeout_ms;
515+
uint64 sec = ms / 1000, us = (ms % 1000) * 1000;
516+
517+
if (sec > 0)
518+
sleep(sec);
519+
if (us > 0)
520+
usleep(us);
521+
}
522+
511523
#endif /* end of BH_PLATFORM_LINUX_SGX */
512524

513525
#define REG_NATIVE_FUNC(func_name, signature) \
@@ -543,6 +555,7 @@ static NativeSymbol native_symbols_libc_emcc[] = {
543555
REG_NATIVE_FUNC(__sys_getcwd, "(*~)i"),
544556
REG_NATIVE_FUNC(__sys_uname, "(*)i"),
545557
REG_NATIVE_FUNC(emscripten_notify_memory_growth, "(i)"),
558+
REG_NATIVE_FUNC(emscripten_thread_sleep, "(F)"),
546559
#endif /* end of BH_PLATFORM_LINUX_SGX */
547560
};
548561

samples/workload/XNNPACK/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ ExternalProject_Add(xnnpack
2626
UPDATE_COMMAND git checkout .bazelrc BUILD.bazel emscripten.bzl
2727
&& git apply ${CMAKE_CURRENT_SOURCE_DIR}/xnnpack.patch
2828
&& cmake -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/toolchain ${CMAKE_CURRENT_SOURCE_DIR}/xnnpack/toolchain
29+
# replace string "$ENV{HOME}" with actual home directory
30+
&& sed -i "s|\$ENV{HOME}|$ENV{HOME}|g" ${CMAKE_CURRENT_SOURCE_DIR}/xnnpack/toolchain/emscripten_toolchain_config.bzl
2931
CONFIGURE_COMMAND ""
3032
BUILD_COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR}/xnnpack
3133
&& bazel build -c opt --sandbox_writable_path=$ENV{HOME} --config=emscripten_wasm

samples/workload/XNNPACK/toolchain/emscripten_toolchain_config.bzl

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ def _impl(ctx):
100100
"STANDALONE_WASM=1",
101101
"-Wl,--export=__heap_base",
102102
"-Wl,--export=__data_end",
103+
"-Wl,--export=malloc",
104+
"-Wl,--export=free",
103105
],
104106
),
105107
]),
@@ -112,12 +114,15 @@ def _impl(ctx):
112114
ctx = ctx,
113115
features = features, # NEW
114116
cxx_builtin_include_directories = [
115-
"/opt/emsdk/upstream/emscripten/system/include/libcxx",
116-
"/opt/emsdk/upstream/emscripten/system/lib/libcxxabi/include",
117117
"/opt/emsdk/upstream/emscripten/system/include",
118-
"/opt/emsdk/upstream/emscripten/system/include/libc",
118+
"/opt/emsdk/upstream/emscripten/system/lib/libc/include",
119+
"/opt/emsdk/upstream/emscripten/system/lib/libcxx/include",
120+
"/opt/emsdk/upstream/emscripten/system/lib/libcxxabi/include",
119121
"/opt/emsdk/upstream/emscripten/system/lib/libc/musl/arch/emscripten",
120-
"/opt/emsdk/upstream/lib/clang/12.0.0/include/",
122+
"/opt/emsdk/upstream/emscripten/system/include/compat",
123+
"/opt/emsdk/upstream/emscripten/cache/sysroot/include",
124+
"/opt/emsdk/upstream/lib/clang/13.0.0/include",
125+
"$ENV{HOME}/.emscripten_cache/sysroot/include",
121126
],
122127
toolchain_identifier = "wasm-emsdk",
123128
host_system_name = "i686-unknown-linux-gnu",

samples/workload/bwa/CMakeLists.txt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,28 +68,28 @@ include(ExternalProject)
6868
################ HEADERS ################
6969
ExternalProject_Add(headers_from_emcc
7070
PREFIX headers
71-
SOURCE_DIR "$ENV{EMSDK}/upstream/emscripten/system/include/SSE"
71+
SOURCE_DIR "$ENV{EM_CACHE}/sysroot/include"
7272
CONFIGURE_COMMAND ""
7373
BUILD_COMMAND ""
7474
INSTALL_COMMAND mkdir -p ${CMAKE_CURRENT_SOURCE_DIR}/include/SSE
7575
&& ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/sys
7676
&& ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/include/emscripten
7777
# copy emscripten SSE header files
78-
&& ${CMAKE_COMMAND} -E copy $ENV{EMSDK}/upstream/emscripten/system/include/SSE/immintrin.h ${CMAKE_CURRENT_SOURCE_DIR}/include/SSE/
78+
&& ${CMAKE_COMMAND} -E copy $ENV{EM_CACHE}/sysroot/include/compat/immintrin.h ${CMAKE_CURRENT_SOURCE_DIR}/include/SSE/
7979
# SSE
80-
&& ${CMAKE_COMMAND} -E copy $ENV{EMSDK}/upstream/emscripten/system/include/SSE/xmmintrin.h ${CMAKE_CURRENT_SOURCE_DIR}/include/SSE/
80+
&& ${CMAKE_COMMAND} -E copy $ENV{EM_CACHE}/sysroot/include/compat/xmmintrin.h ${CMAKE_CURRENT_SOURCE_DIR}/include/SSE/
8181
# SSE2
82-
&& ${CMAKE_COMMAND} -E copy $ENV{EMSDK}/upstream/emscripten/system/include/SSE/emmintrin.h ${CMAKE_CURRENT_SOURCE_DIR}/include/SSE/
82+
&& ${CMAKE_COMMAND} -E copy $ENV{EM_CACHE}/sysroot/include/compat/emmintrin.h ${CMAKE_CURRENT_SOURCE_DIR}/include/SSE/
8383
# SSE4.1
84-
&& ${CMAKE_COMMAND} -E copy $ENV{EMSDK}/upstream/emscripten/system/include/SSE/smmintrin.h ${CMAKE_CURRENT_SOURCE_DIR}/include/SSE/
84+
&& ${CMAKE_COMMAND} -E copy $ENV{EM_CACHE}/sysroot/include/compat/smmintrin.h ${CMAKE_CURRENT_SOURCE_DIR}/include/SSE/
8585
# a fake empty header to aovid further depenency
8686
&& ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_SOURCE_DIR}/include/emscripten/emscripten.h
8787
# copy emscripten pthread related header files
88-
&& ${CMAKE_COMMAND} -E copy $ENV{EMSDK}/upstream/emscripten/system/include/libc/pthread.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/
89-
&& ${CMAKE_COMMAND} -E copy $ENV{EMSDK}/upstream/emscripten/system/include/libc/signal.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/
90-
&& ${CMAKE_COMMAND} -E copy $ENV{EMSDK}/upstream/emscripten/system/include/libc/netdb.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/
91-
&& ${CMAKE_COMMAND} -E copy $ENV{EMSDK}/upstream/emscripten/system/include/libc/sys/wait.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/sys/
92-
&& ${CMAKE_COMMAND} -E copy $ENV{EMSDK}/upstream/emscripten/system/include/libc/sys/socket.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/sys/
88+
&& ${CMAKE_COMMAND} -E copy $ENV{EM_CACHE}/sysroot/include/pthread.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/
89+
&& ${CMAKE_COMMAND} -E copy $ENV{EM_CACHE}/sysroot/include/signal.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/
90+
&& ${CMAKE_COMMAND} -E copy $ENV{EM_CACHE}/sysroot/include/netdb.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/
91+
&& ${CMAKE_COMMAND} -E copy $ENV{EM_CACHE}/sysroot/include/sys/wait.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/sys/
92+
&& ${CMAKE_COMMAND} -E copy $ENV{EM_CACHE}/sysroot/include/sys/socket.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/sys/
9393
)
9494

9595
################ libz ################

samples/workload/tensorflow/build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ fi
1717

1818
set -xe
1919

20-
EMSDK_WASM_DIR="$EM_CACHE/wasm"
20+
EMSDK_WASM_DIR="$EM_CACHE/sysroot/lib/wasm32-emscripten"
2121
BUILD_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
2222
OUT_DIR="${BUILD_SCRIPT_DIR}/out"
2323
TENSORFLOW_DIR="${BUILD_SCRIPT_DIR}/tensorflow"

samples/workload/wasm-av1/CMakeLists.txt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,19 +58,19 @@ include(ExternalProject)
5858
################ HEADERS ################
5959
ExternalProject_Add(headers_from_emcc
6060
PREFIX headers
61-
SOURCE_DIR "$ENV{EMSDK}/upstream/emscripten/system/"
61+
SOURCE_DIR "$ENV{EM_CACHE}/sysroot/include"
6262
CONFIGURE_COMMAND ""
6363
BUILD_COMMAND ""
6464
INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/sys
6565
&& ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/include/libc/bits
6666
# copy emscripten pthread related header files
67-
&& ${CMAKE_COMMAND} -E copy $ENV{EMSDK}/upstream/emscripten/system/include/libc/pthread.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/
68-
&& ${CMAKE_COMMAND} -E copy $ENV{EMSDK}/upstream/emscripten/system/include/libc/signal.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/
69-
&& ${CMAKE_COMMAND} -E copy $ENV{EMSDK}/upstream/emscripten/system/include/libc/netdb.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/
70-
&& ${CMAKE_COMMAND} -E copy $ENV{EMSDK}/upstream/emscripten/system/include/libc/sys/wait.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/sys/
71-
&& ${CMAKE_COMMAND} -E copy $ENV{EMSDK}/upstream/emscripten/system/include/libc/sys/socket.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/sys/
67+
&& ${CMAKE_COMMAND} -E copy $ENV{EM_CACHE}/sysroot/include/pthread.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/
68+
&& ${CMAKE_COMMAND} -E copy $ENV{EM_CACHE}/sysroot/include/signal.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/
69+
&& ${CMAKE_COMMAND} -E copy $ENV{EM_CACHE}/sysroot/include/netdb.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/
70+
&& ${CMAKE_COMMAND} -E copy $ENV{EM_CACHE}/sysroot/include/sys/wait.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/sys/
71+
&& ${CMAKE_COMMAND} -E copy $ENV{EM_CACHE}/sysroot/include/sys/socket.h ${CMAKE_CURRENT_SOURCE_DIR}/include/pthread/sys/
7272
# copy emscripten setjmp headers
73-
&& ${CMAKE_COMMAND} -E copy $ENV{EMSDK}/upstream/emscripten/system/include/libc/setjmp.h ${CMAKE_CURRENT_SOURCE_DIR}/include/libc/setjmp.h
73+
&& ${CMAKE_COMMAND} -E copy $ENV{EM_CACHE}/sysroot/include/setjmp.h ${CMAKE_CURRENT_SOURCE_DIR}/include/libc/setjmp.h
7474
&& ${CMAKE_COMMAND} -E copy $ENV{EMSDK}/upstream/emscripten/system/lib/libc/musl/arch/emscripten/bits/setjmp.h ${CMAKE_CURRENT_SOURCE_DIR}/include/libc/bits/setjmp.h
7575
)
7676

samples/workload/wasm-av1/build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ fi
1717

1818
set -xe
1919

20-
EMSDK_WASM_DIR="$EM_CACHE/wasm"
20+
EMSDK_WASM_DIR="$EM_CACHE/sysroot/lib/wasm32-emscripten"
2121
BUILD_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
2222
OUT_DIR="${BUILD_SCRIPT_DIR}/out"
2323
WASM_AV1_DIR="${BUILD_SCRIPT_DIR}/wasm-av1"

0 commit comments

Comments
 (0)