Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[wasm] wasm-ld: error: unknown file type: libFoo.bc #20404

Closed
emepetres opened this issue Sep 17, 2020 · 1 comment
Closed

[wasm] wasm-ld: error: unknown file type: libFoo.bc #20404

emepetres opened this issue Sep 17, 2020 · 1 comment

Comments

@emepetres
Copy link

Hi, I'm trying to statically link a .bc library (compiled with emcc) using packager.exe, but ninja last step is failing with wasm-ld: error: unknown file type: libFoo.bc. This used to work in previous versions of mono.

If I use the extension ".a", the error slightly change to emcc: error: libFoo.a: Unknown format, not a static library!

Steps to Reproduce

  1. emcc foo.c -std=c++17 -s LEGALIZE_JS_FFI=0 -r -o $CDIR/libFoo.bc -s WASM=1 -s DISABLE_EXCEPTION_CATCHING=0
  2. mono $HOME/mono/sdks/wasm/packager.exe --emscripten-sdkdir=$HOME/mono/sdks/builds/toolchains/emsdk --enable-fs --mono-sdkdir=$HOME/mono/sdks/out --appdir=$HOME/.build/bin --builddir=$HOME/.build/obj --template=$HOME/.build/publish/runtime.js --debug --debugrt --linker --link-descriptor=$HOME/.build/link-descriptor.xml --pinvoke-libs=libFoo --native-lib=libFoo.bc HelloFoo.dll

Current Behavior

Ninja build fails on last step

[92/92] bash -c 'source ./emsdk_env.sh && emcc -Oz -g -s USE_ZLIB=1 -s FORCE_FILESYSTEM=1 -s ASSERTIONS=1 -s DISABLE_EXCEPTION_CATCHING=0 -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_MEMORY=134217728 -s NO_EXIT_RUNTIME=1 -s ERROR_ON_UNDEFINED_SYMBOLS=1 -s "EXTRA_EXPORTED_RUNTIME_METHODS=['ccall', 'cwrap', 'setValue', 'getValue', 'UTF8ToString']" -s "EXPORTED_FUNCTIONS=['___cxa_is_pointer_type', '___cxa_can_catch']" -s "DEFAULT_LIBRARY_FUNCS_TO_INCLUDE=['setThrew', 'memset']" -O0  -o /home/jcarnero/.build/bin/dotnet.js --js-library /home/jcarnero/mono/sdks/wasm/src/library_mono.js --js-library /home/jcarnero/mono/sdks/wasm/src/dotnet_support.js --js-library /home/jcarnero/mono/sdks/wasm/src/binding_support.js driver.o pinvoke.o zlib-helper.o corebindings.o libFoo.bc /home/jcarnero/mono/sdks/out/wasm-runtime-release/lib/libmono-ee-interp.a /home/jcarnero/mono/sdks/out/wasm-runtime-release/lib/libmono-ilgen.a /home/jcarnero/mono/sdks/out/wasm-runtime-release/lib/libmono-icall-table.a /home/jcarnero/mono/sdks/out/wasm-runtime-release/lib/libmonosgen-2.0.a /home/jcarnero/mono/sdks/out/wasm-runtime-release/lib/libmono-native.a'  && /home/jcarnero/mono/sdks/builds/toolchains/emsdk/upstream/bin/wasm-opt --strip-dwarf /home/jcarnero/.build/bin/dotnet.wasm -o /home/jcarnero/.build/bin/dotnet.wasm
FAILED: /home/jcarnero/.build/bin/dotnet.js /home/jcarnero/.build/bin/dotnet.wasm 
bash -c 'source ./emsdk_env.sh && emcc -Oz -g -s USE_ZLIB=1 -s FORCE_FILESYSTEM=1 -s ASSERTIONS=1 -s DISABLE_EXCEPTION_CATCHING=0 -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_MEMORY=134217728 -s NO_EXIT_RUNTIME=1 -s ERROR_ON_UNDEFINED_SYMBOLS=1 -s "EXTRA_EXPORTED_RUNTIME_METHODS=['ccall', 'cwrap', 'setValue', 'getValue', 'UTF8ToString']" -s "EXPORTED_FUNCTIONS=['___cxa_is_pointer_type', '___cxa_can_catch']" -s "DEFAULT_LIBRARY_FUNCS_TO_INCLUDE=['setThrew', 'memset']" -O0  -o /home/jcarnero/.build/bin/dotnet.js --js-library /home/jcarnero/mono/sdks/wasm/src/library_mono.js --js-library /home/jcarnero/mono/sdks/wasm/src/dotnet_support.js --js-library /home/jcarnero/mono/sdks/wasm/src/binding_support.js driver.o pinvoke.o zlib-helper.o corebindings.o libFoo.bc /home/jcarnero/mono/sdks/out/wasm-runtime-release/lib/libmono-ee-interp.a /home/jcarnero/mono/sdks/out/wasm-runtime-release/lib/libmono-ilgen.a /home/jcarnero/mono/sdks/out/wasm-runtime-release/lib/libmono-icall-table.a /home/jcarnero/mono/sdks/out/wasm-runtime-release/lib/libmonosgen-2.0.a /home/jcarnero/mono/sdks/out/wasm-runtime-release/lib/libmono-native.a'  && /home/jcarnero/mono/sdks/builds/toolchains/emsdk/upstream/bin/wasm-opt --strip-dwarf /home/jcarnero/.build/bin/dotnet.wasm -o /home/jcarnero/.build/bin/dotnet.wasm
wasm-ld: error: unknown file type: libFoo.bc
emcc: error: '/home/jcarnero/mono/sdks/builds/toolchains/emsdk/upstream/bin/wasm-ld -o /tmp/emscripten_temp_t9pnbzm6/dotnet.wasm driver.o -L/home/jcarnero/mono/sdks/builds/toolchains/emsdk/upstream/emscripten/system/local/lib pinvoke.o -L/home/jcarnero/mono/sdks/builds/toolchains/emsdk/upstream/emscripten/system/lib zlib-helper.o -L/home/jcarnero/mono/sdks/builds/toolchains/emsdk/upstream/emscripten/cache/wasm corebindings.o libFoo.bc /home/jcarnero/mono/sdks/out/wasm-runtime-release/lib/libmono-ee-interp.a /home/jcarnero/mono/sdks/out/wasm-runtime-release/lib/libmono-ilgen.a /home/jcarnero/mono/sdks/out/wasm-runtime-release/lib/libmono-icall-table.a /home/jcarnero/mono/sdks/out/wasm-runtime-release/lib/libmonosgen-2.0.a /home/jcarnero/mono/sdks/out/wasm-runtime-release/lib/libmono-native.a /home/jcarnero/mono/sdks/builds/toolchains/emsdk/upstream/emscripten/cache/wasm/libz.a /home/jcarnero/mono/sdks/builds/toolchains/emsdk/upstream/emscripten/cache/wasm/libc.a /home/jcarnero/mono/sdks/builds/toolchains/emsdk/upstream/emscripten/cache/wasm/libcompiler_rt.a /home/jcarnero/mono/sdks/builds/toolchains/emsdk/upstream/emscripten/cache/wasm/libc++.a /home/jcarnero/mono/sdks/builds/toolchains/emsdk/upstream/emscripten/cache/wasm/libc++abi.a /home/jcarnero/mono/sdks/builds/toolchains/emsdk/upstream/emscripten/cache/wasm/libdlmalloc.a /home/jcarnero/mono/sdks/builds/toolchains/emsdk/upstream/emscripten/cache/wasm/libpthread_stub.a /home/jcarnero/mono/sdks/builds/toolchains/emsdk/upstream/emscripten/cache/wasm/libc_rt_wasm.a /home/jcarnero/mono/sdks/builds/toolchains/emsdk/upstream/emscripten/cache/wasm/libsockets.a -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-cxx-exceptions -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --allow-undefined --import-memory --import-table --export __cxa_is_pointer_type --export __cxa_can_catch --export malloc --export free --export stackSave --export stackRestore --export stackAlloc --export __data_end --export __wasm_call_ctors --export fflush --export __errno_location --export memalign --export memset --export htonl --export htons --export ntohs --export _ZSt18uncaught_exceptionv --export setThrew --export usleep --export _get_tzname --export _get_daylight --export _get_timezone --export emscripten_main_thread_process_queued_calls -z stack-size=5242880 --initial-memory=134217728 --no-entry --max-memory=2147483648 --global-base=1024' failed (1)
ninja: build stopped: subcommand failed.

Expected Behavior

ninja build ends sucessfully

On which platforms did you notice this

[ ] macOS
[x] Linux (WSL1)
[ ] Windows

Version Used:

commit 163f458 (HEAD -> master, origin/master, origin/HEAD)
Author: monojenkins jo.shields+jenkins@xamarin.com
Date: Wed Sep 16 11:24:16 2020 -0400

@emepetres
Copy link
Author

emepetres commented Sep 22, 2020

Thanks to @vargaz on discord, I solved it downgrading emscripten to 1.40.0 under the mono sdk.

However, I feel that this downgrade should be automatically done at make -j -C sdks/wasm runtime, or at least documented on the wasm mono sdk readme.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant