PPeter S. Housel[ORC][ORC_RT] Handle ELF .init_array with non-default priority
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[test][ORC-RT] Disable elfnix_platform tests on non-x86_64 platforms ORC ELFNixPlatform currently only supports x86_64. | 4 年前 | |
[test][ORC-RT] Disable elfnix_platform tests on non-x86_64 platforms ORC ELFNixPlatform currently only supports x86_64. | 4 年前 | |
[test][ORC-RT] Disable x86_64 tests when target arch does not match When cross-compiling, these tests will fail. For now leave the host arch check that was already there since I don't know why it was added. | 4 年前 | |
[ORC][ORC_RT] Integrate ORC platforms with LLJIT and lli This change enables integrating orc::LLJIT with the ORCv2 platforms (MachOPlatform and ELFNixPlatform) and the compiler-rt orc runtime. Changes include: - Adding SPS wrapper functions for the orc runtime's dlfcn emulation functions, allowing initialization and deinitialization to be invoked by LLJIT. - Changing the LLJIT code generation default to add UseInitArray so that .init_array constructors are generated for ELF platforms. - Integrating the ORCv2 Platforms into lli, and adding a PlatformSupport implementation to the LLJIT instance used by lli which implements initialization and deinitialization by calling the new wrapper functions in the runtime. Reviewed By: lhames Differential Revision: https://reviews.llvm.org/D126492 | 4 年前 | |
[ORC][ORC_RT] Integrate ORC platforms with LLJIT and lli This change enables integrating orc::LLJIT with the ORCv2 platforms (MachOPlatform and ELFNixPlatform) and the compiler-rt orc runtime. Changes include: - Adding SPS wrapper functions for the orc runtime's dlfcn emulation functions, allowing initialization and deinitialization to be invoked by LLJIT. - Changing the LLJIT code generation default to add UseInitArray so that .init_array constructors are generated for ELF platforms. - Integrating the ORCv2 Platforms into lli, and adding a PlatformSupport implementation to the LLJIT instance used by lli which implements initialization and deinitialization by calling the new wrapper functions in the runtime. Reviewed By: lhames Differential Revision: https://reviews.llvm.org/D126492 | 4 年前 | |
[ORC][ORC_RT] Handle ELF .init_array with non-default priority ELF-based platforms currently support defining multiple static initializer table sections with differing priorities, for example .init_array.0 or .init_array.100; the default .init_array corresponds to a priority of 65535. When building a shared library or executable, the system linker normally sorts these sections and combines them into a single .init_array section. This change adds the capability to recognize ELF static initializers with priorities other than the default, and to properly sort them by priority, to Orc and the Orc runtime. Reviewed By: lhames Differential Revision: https://reviews.llvm.org/D127056 | 4 年前 | |
[Orc] Support atexit in Orc(JITLink) There is a bug reported at https://bugs.llvm.org/show_bug.cgi?id=48938 After looking through the glibc, I found the atexit(f) is the same as __cxa_atexit(f, NULL, NULL). In orc runtime, we identify different JITDylib by their dso_handle value, so that a NULL dso_handle is invalid. So in this patch, I added a PlatformJDDSOHandle to ELFNixRuntimeState, and functions which are registered by atexit will be registered at PlatformJD. Reviewed By: lhames Differential Revision: https://reviews.llvm.org/D111413 | 4 年前 | |
[ORC][ORC-RT] Reapply "Introduce ELF/*nix Platform and runtime..." with fixes. This reapplies e256445bfff, which was reverted in 45ac5f54418 due to bot errors (e.g. https://lab.llvm.org/buildbot/#/builders/112/builds/8599). The issue that caused the bot failure was fixed in 2e6a4fce356. | 4 年前 | |
[ORC][ORC-RT] Reapply "Introduce ELF/*nix Platform and runtime..." with fixes. This reapplies e256445bfff, which was reverted in 45ac5f54418 due to bot errors (e.g. https://lab.llvm.org/buildbot/#/builders/112/builds/8599). The issue that caused the bot failure was fixed in 2e6a4fce356. | 4 年前 | |
[JITLink] Add initial native TLS support to ELFNix platform This patch use the same way as the https://reviews.llvm.org/rGfe1fa43f16beac1506a2e73a9f7b3c81179744eb to handle the thread local variable. It allocates 2 * pointerSize space in GOT to represent the thread key and data address. Instead of using the _tls_get_addr function, I customed a function __orc_rt_elfnix_tls_get_addr to get the address of thread local varible. Currently, this is a wip patch, only one TLS relocation R_X86_64_TLSGD is supported and I need to add the corresponding test cases. To allocate the TLS descriptor in GOT, I need to get the edge kind information in PerGraphGOTAndPLTStubBuilder, So I add a Edge::Kind K argument in some functions in PerGraphGOTAndPLTStubBuilder.h. If it is not suitable, I can think further to solve this problem. Differential Revision: https://reviews.llvm.org/D109293 | 4 年前 |