Thanks Dylan!

The __cxa_uncaught_exception issue sounds like an unknown bug - can you
please file an issue with a testcase?

I agree we should add more docs on the differences between the backends,
good idea! I opened https://github.com/emscripten-core/emscripten/pull/9119

- Alon


On Fri, Jul 26, 2019 at 10:08 AM Dylan Staley <[email protected]>
wrote:

> Hello again! I just wanted to drop a note detailing my experiences
> building Telegram's Database Library (https://github.com/tdlib/td) with
> the new WASM backend. Overall the experience was a bit rough, mainly due to
> errors that did not occur using fastcomp, primarily the new strict pthreads
> checking and lack of support for Position Independent Code.
>
> To get TdLib building, I had to make the following changes:
>
> diff --git a/CMakeLists.txt b/CMakeLists.txt
> index 3ec8c456..96736d4f 100644
> --- a/CMakeLists.txt
> +++ b/CMakeLists.txt
> @@ -36,7 +36,7 @@ set(CMAKE_MODULE_PATH
> "${CMAKE_CURRENT_SOURCE_DIR}/CMake" "${CMAKE_MODULE_PATH}"
>
>  set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
>
> -set(CMAKE_POSITION_INDEPENDENT_CODE ON)
> +# set(CMAKE_POSITION_INDEPENDENT_CODE ON)
>
>  enable_testing()
>
> @@ -98,8 +98,8 @@ if (EMSCRIPTEN)
>      set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s WASM=0 -Wno-almost-asm")
>    else()
>      set(TD_EMSCRIPTEN td_wasm)
> -    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s WASM=1")
> -    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s WASM=1")
> +    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s WASM=1 -s
> ERROR_ON_UNDEFINED_SYMBOLS=0")
> +    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s WASM=1 -s
> ERROR_ON_UNDEFINED_SYMBOLS=0")
>    endif()
>  endif()
>
> diff --git a/example/web/build-openssl.sh b/example/web/build-openssl.sh
> index faf4f657..0031bef8 100755
> --- a/example/web/build-openssl.sh
> +++ b/example/web/build-openssl.sh
> @@ -12,7 +12,7 @@ echo "Unpacking OpenSSL sources..."
>  tar xzf $OPENSSL.tar.gz || exit 1
>  cd openssl-$OPENSSL
>
> -emconfigure ./Configure linux-generic32 no-shared no-dso no-engine
> no-unit-test no-ui || exit 1
> +emconfigure ./Configure linux-generic32 no-threads no-pic no-asm
> no-shared no-dso no-engine no-unit-test no-ui || exit 1
>  sed -i.bak 's/CROSS_COMPILE=.*/CROSS_COMPILE=/g' Makefile || exit 1
>  sed -i.bak 's/-ldl //g' Makefile || exit 1
>  echo "Building OpenSSL..."
>
> These changes disabled threading and PIC when building OpenSSL, and also
> disabled the error on undefined symbols. The latter change was necessary as
> I was running into "error: undefined symbol: __cxa_uncaught_exception".
>
> Once those changes were made, I was able to successfully compile TdLib to
> WASM! Sadly I didn't see any significant size changes: the original
> fastcomp WASM module was 7.7 MB, and the new module was 7.5 MB. While the
> module seems to load and perform some actions correctly, the WebSocket
> connections are closed before a connection is established, so I wasn't able
> to make any calls to the Telegram API. I'm not a C++ developer, so I
> probably can't debug that particular issue and will have to wait for the
> Telegram developers to take a look.
>
> I just wanted to share my experiences trying to compile a non-trivial WASM
> library with the new upstream backend. The only suggestions I can make are
> to add warnings to the fastcomp compiler for things that won't be supported
> in the new backend, such as linking a library built with threads support
> with a library that doesn't support it.
>
> --
> You received this message because you are subscribed to the Google Groups
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/emscripten-discuss/bcd7836d-555a-4a68-aeb5-8f7c07510877%40googlegroups.com
> <https://groups.google.com/d/msgid/emscripten-discuss/bcd7836d-555a-4a68-aeb5-8f7c07510877%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpTca6GqVPwxvsVPUuNOyZrjY7-zk3KSjRRb8E2bvgUq%3DQ%40mail.gmail.com.

Reply via email to