forked from OSchip/llvm-project
9261ee32dc
This makes Wasm EH work with dynamic linking. So far we were only able to handle destructors, which do not use any tags or LSDA info. 1. This uses `TargetExternalSymbol` for `GCC_except_tableN` symbols, which points to the address of per-function LSDA info. It is more convenient to use than `MCSymbol` because it can take additional target flags. 2. When lowering `wasm_lsda` intrinsic, if PIC is enabled, make the symbol relative to `__memory_base` and generate the `add` node. If PIC is disabled, continue to use the absolute address. 3. Make tag symbols (`__cpp_exception` and `__c_longjmp`) undefined in the backend, because it is hard to make it work with dynamic linking's loading order. Instead, we make all tag symbols undefined in the LLVM backend and import it from JS. 4. Add support for undefined tags to the linker. Companion patches: - https://github.com/WebAssembly/binaryen/pull/4223 - https://github.com/emscripten-core/emscripten/pull/15266 Reviewed By: sbc100 Differential Revision: https://reviews.llvm.org/D111388 |
||
---|---|---|
.. | ||
archive1.ll | ||
archive2.ll | ||
archive3.ll | ||
call-indirect.s | ||
call-ret32.s | ||
comdat-data.s | ||
comdat1.ll | ||
comdat1.s | ||
comdat2.ll | ||
comdat2.s | ||
ctor-ctor.s | ||
ctor-lib.s | ||
ctor-setup-call-def.s | ||
ctor-setup.s | ||
ctor-start.s | ||
custom.ll | ||
debuginfo1.ll | ||
debuginfo2.ll | ||
disallow-feature-foo.yaml | ||
explicit-section.ll | ||
global-ctor-dtor.ll | ||
globals.yaml | ||
hello.s | ||
hidden.s | ||
import-attributes.s | ||
locals-duplicate1.ll | ||
locals-duplicate2.ll | ||
many-funcs.ll | ||
merge-string-debug2.s | ||
no-feature-foo.yaml | ||
optional-symbol.s | ||
require-feature-foo.yaml | ||
ret32.s | ||
ret64.s | ||
sig_mismatch.s | ||
stack-first.s | ||
start.s | ||
strong-symbol.s | ||
tag-section1.ll | ||
tag-section2.ll | ||
undefined-globals.s | ||
use-feature-foo.yaml | ||
weak-alias.ll | ||
weak-symbol1.s | ||
weak-symbol2.s | ||
weak-undefined.s |