wasm-micro-runtime icon indicating copy to clipboard operation
wasm-micro-runtime copied to clipboard

Exception support: Compatibility with LLVM 17

Open fredldotme opened this issue 1 year ago • 3 comments
trafficstars

The problem:

WAMR with its current exception-handling branch has some support for it but various things happened in the meantime: new proposals getting made, and probably implemented.

So much so that the current LLVM 17 upstream stable is unable to function properly as a compilation toolchain for exception-handling support, not even with this fork of it: https://github.com/fredldotme/llvm-project

How to test:

  • Build and check out this repository on Linux or macOS: https://github.com/fredldotme/Tide
  • Manual intervention: Enable EXCEPTION=ON in bootstrap.sh
  • Bootstrap the environment with this script

Invoking bash bootstrap.sh on macOS/bash boostrap.sh --linux on GNU/Linux should then lead you to getting a full Clang environment set up that is able to build WASI using CMake (without Emscripten).

The status quo:

Right now running two binaries creates two different results, both failing in proper exception handling:

  • { printf("Hello\n"); throw; } results in an exception from the WAMR environment rather than the WASM binary
  • More sophisticated C++ linking against libcxx{,abi} might cause it to get code emitted which has unknown label errors thrown at WAMR runtime.

fredldotme avatar Jan 26 '24 00:01 fredldotme

Hi, @yamt, I found that you wanted to help look into this issue (https://github.com/bytecodealliance/wasm-micro-runtime/issues/1884#issuecomment-1916055375) and had submitted several PRs before, eg. #3106, #3107, not sure whether the issue is resolved now? Thanks.

wenyongh avatar Apr 26 '24 03:04 wenyongh

Hi, @yamt, I found that you wanted to help look into this issue (#1884 (comment)) and had submitted several PRs before, eg. #3106, #3107, not sure whether the issue is resolved now? Thanks.

it certainly has a better chance to work than before. at least i'm sure trivial cases compiled with LLVM 17 work.

@fredldotme can you confirm if/when you have time? thank you.

yamt avatar Apr 26 '24 04:04 yamt

I have indeed been able to compile and run code with exceptions on my Clang iPad enablement branch and execute it using WAMR on the tablet itself! Great job! I was wondering about more sophisticated test cases but when I encounter them I surely would like to report them.

fredldotme avatar Apr 28 '24 17:04 fredldotme