@@ -11,17 +11,17 @@ WASI_SYSROOT=${WASI_SDK}/share/wasi-sysroot
11
11
# WASI_SDK=${WASI_SDK:-/Volumes/PortableSSD/git/component-linking-demo/wasi-sdk/build/install/opt/wasi-sdk}
12
12
# CC=${WASI_SDK}/bin/clang
13
13
14
- # WASI_SYSROOT=${WASI_SDK}/share/wasi-sysroot
14
+ WASI_SYSROOT=${WASI_SDK} /share/wasi-sysroot
15
15
# WASI_SYSROOT=/Users/yamamoto/git/wasi-libc/sysroot
16
16
17
17
# LLVM_HOME=/Volumes/PortableSSD/llvm/llvm
18
- # LLVM_HOME=/Volumes/PortableSSD/llvm/build
18
+ LLVM_HOME=/Volumes/PortableSSD/llvm/build
19
19
# LLVM_HOME=/Volumes/PortableSSD/git/component-linking-demo/wasi-sdk/build/install/opt/wasi-sdk
20
20
# RESOURCE_DIR=/Volumes/PortableSSD/llvm/llvm/lib/clang/17
21
- # RESOURCE_DIR=${WASI_SDK}/lib/clang/17
22
- # CC=${LLVM_HOME}/bin/clang
23
- # CFLAGS="${CFLAGS} --sysroot ${WASI_SYSROOT}"
24
- # CFLAGS="${CFLAGS} -resource-dir ${RESOURCE_DIR}"
21
+ RESOURCE_DIR=${WASI_SDK} /lib/clang/18
22
+ CC=${LLVM_HOME} /bin/clang
23
+ CFLAGS=" ${CFLAGS} --sysroot ${WASI_SYSROOT} "
24
+ CFLAGS=" ${CFLAGS} -resource-dir ${RESOURCE_DIR} "
25
25
26
26
# built with
27
27
# TOYWASM_ENABLE_DYLD=ON
@@ -38,13 +38,15 @@ CFLAGS="${CFLAGS} -Os"
38
38
39
39
CLINKFLAGS=" -Xlinker --experimental-pic"
40
40
# CLIBLINKFLAGS="-shared -fvisibility=default -mexec-model=reactor"
41
- CLIBLINKFLAGS=" -shared -fvisibility=default"
41
+ # CLIBLINKFLAGS="-shared -fvisibility=default"
42
+ # we have undefined symbols like func_in_main etc
43
+ CLIBLINKFLAGS=" -shared -fvisibility=default -Wl,--unresolved-symbols=import-dynamic"
42
44
43
45
# CRT1=$(${CC} --print-file-name crt1-reactor.o)
44
46
45
47
CPICFLAGS=" ${CFLAGS} -fPIC"
46
48
47
- ${CC} ${CPICFLAGS} ${CLINKFLAGS} ${CLIBLINKFLAGS} -o libbar.so bar.c
49
+ ${CC} ${CPICFLAGS} ${CLINKFLAGS} ${CLIBLINKFLAGS} -Wl,-mllvm,-debug - o libbar.so bar.c
48
50
# see the comment in native.sh
49
51
${CC} ${CPICFLAGS} ${CLINKFLAGS} ${CLIBLINKFLAGS} -o libfoo.so foo.c libbar.so
50
52
${CC} ${CPICFLAGS} ${CLINKFLAGS} ${CLIBLINKFLAGS} -o libbaz.so baz.c
@@ -77,20 +79,26 @@ PIC=-fPIC
77
79
# https://github.com/llvm/llvm-project/blob/b01adc6bed7e5b924dd8a097be0aa893f4823905/lld/wasm/Driver.cpp#L309-L313
78
80
${CC} -v ${CFLAGS} ${CLINKFLAGS} \
79
81
${PIC} \
82
+ -v \
80
83
-nodefaultlibs \
84
+ -Xlinker -Bdynamic \
81
85
-Xlinker --export-if-defined=__main_argc_argv \
82
- -Xlinker --unresolved-symbols=import-dynamic \
83
86
-Xlinker --export-table \
84
87
-Xlinker --growable-table \
85
88
-Xlinker --export=__stack_pointer \
86
89
-Xlinker --export=__heap_base \
87
90
-Xlinker --export=__heap_end \
91
+ -Xlinker -mllvm \
92
+ -Xlinker -debug \
88
93
-z stack-size=16384 \
89
94
-o main.wasi.non-pie \
90
95
main.c \
91
96
main2.c \
92
97
libfoo.so libbar.so \
93
- ${WASI_SYSROOT} /lib/wasm32-wasi/libdl.so
98
+ ${WASI_SYSROOT} /lib/wasm32-wasi/libdl.so \
99
+ ${WASI_SYSROOT} /lib/wasm32-wasi/libc.so \
100
+ -Xlinker -Bstatic
101
+
94
102
95
103
# note: specify --dyld-path for toywasm libdl.so before the one for wasi-libc
96
104
# so that dyld picks up the former.
0 commit comments