[libc++abi][WebAssembly] Support Wasm EH
This adds Wasm-specific libc++abi changes to support Wasm exception
Wasm EH requires `__USING_WASM_EXCEPTIONS__` to be defined. Wasm EH's
LSDA handling mostly shares that of SjLj EH.
- In Wasm, a destructor returns its argument.
- Wasm EH currently only has one phase (search) that does both search
and cleanup. So added an additional `set_registers` to support that.
The bulk of these changes was added back in Mar 2020 in
https://github.com/emscripten-core/emscripten/pull/10577 to emscripten
repo and has been used ever since. Now we'd like to upstream this so
that other toolchains that don't use emscripten libraries, e.g., WASI,
can use this too.
Companion patch: D158919
Reviewed By: dschuff, #libc_abi, phosek
Differential Revision: https://reviews.llvm.org/D158918
4 files changed