diff options
author | Lang Hames <lhames@gmail.com> | 2021-08-27 07:52:40 +1000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2021-08-27 14:41:58 +1000 |
commit | b749ef9e2241542c0b57f2fe77db200ef444df5c (patch) | |
tree | d0737b4b0e00f7050f88d40224232d77ea497214 /llvm/tools/llvm-jitlink/llvm-jitlink.cpp | |
parent | 2e6a4fce356ac5ba2e88dac1b8ba6a1dfd033f0e (diff) | |
download | llvm-b749ef9e2241542c0b57f2fe77db200ef444df5c.zip llvm-b749ef9e2241542c0b57f2fe77db200ef444df5c.tar.gz llvm-b749ef9e2241542c0b57f2fe77db200ef444df5c.tar.bz2 |
[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.
Diffstat (limited to 'llvm/tools/llvm-jitlink/llvm-jitlink.cpp')
-rw-r--r-- | llvm/tools/llvm-jitlink/llvm-jitlink.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp index ac2f378..dd97baf 100644 --- a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp +++ b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp @@ -16,6 +16,7 @@ #include "llvm/BinaryFormat/Magic.h" #include "llvm/ExecutionEngine/Orc/DebugObjectManagerPlugin.h" +#include "llvm/ExecutionEngine/Orc/ELFNixPlatform.h" #include "llvm/ExecutionEngine/Orc/EPCDebugObjectRegistrar.h" #include "llvm/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.h" #include "llvm/ExecutionEngine/Orc/EPCEHFrameRegistrar.h" @@ -927,6 +928,14 @@ Session::Session(std::unique_ptr<ExecutorProcessControl> EPC, Error &Err) Err = P.takeError(); return; } + } else if (TT.isOSBinFormatELF() && !OrcRuntime.empty()) { + if (auto P = + ELFNixPlatform::Create(ES, ObjLayer, *MainJD, OrcRuntime.c_str())) + ES.setPlatform(std::move(*P)); + else { + Err = P.takeError(); + return; + } } else if (!NoExec && !TT.isOSWindows() && !TT.isOSBinFormatMachO()) { ObjLayer.addPlugin(std::make_unique<EHFrameRegistrationPlugin>( ES, ExitOnErr(EPCEHFrameRegistrar::Create(this->ES)))); |