commit | 93200eab3a3e09259ca79c5bc6605212bb38dae4 | [log] [tgz] |
---|---|---|
author | Heejin Ahn <aheejin@gmail.com> | Wed Sep 29 14:17:14 2021 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Tue Oct 12 23:30:25 2021 -0700 |
tree | 61013d162ddc5d70661f5140b78c1178613b283f | |
parent | 1db776d9120a5432e1c4b17f054bdfd46ef78b7d [diff] |
[WebAssembly] Make EH work with dynamic linking 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 GitOrigin-RevId: 9261ee32dc41ae6f2ebf0608c3cec22daf5ec494
This directory and its subdirectories contain source code for the LLVM Linker, a modular cross platform linker which is built as part of the LLVM compiler infrastructure project.
lld is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt.
In order to make sure various developers can evaluate patches over the same tests, we create a collection of self contained programs.
It is hosted at https://s3-us-west-2.amazonaws.com/linker-tests/lld-speed-test.tar.xz
The current sha256 is 10eec685463d5a8bbf08d77f4ca96282161d396c65bd97dc99dbde644a31610f
.