diff options
author | Lang Hames <lhames@gmail.com> | 2019-12-04 22:45:38 -0800 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2019-12-05 01:36:49 -0800 |
commit | 4fc68b9b7f3e07ea4425c6111e1a9455cf4aa322 (patch) | |
tree | a34b36b9bd3fc33df70ba3f6fcef2f17785ce69c /llvm/tools/llvm-jitlink | |
parent | 76a5c8421e04b246892157fe18f1c082c908c5e9 (diff) | |
download | bcm5719-llvm-4fc68b9b7f3e07ea4425c6111e1a9455cf4aa322.tar.gz bcm5719-llvm-4fc68b9b7f3e07ea4425c6111e1a9455cf4aa322.zip |
[ORC] Remove the automagic Main JITDylib fram ExecutionSession.
This patch removes the magic "main" JITDylib from ExecutionEngine. The main
JITDylib was created automatically at ExecutionSession construction time, and
all subsequently created JITDylibs were added to the main JITDylib's
links-against list by default. This saves a couple of lines of boilerplate for
simple JIT setups, but this isn't worth introducing magical behavior for.
ORCv2 clients should now construct their own main JITDylib using
ExecutionSession::createJITDylib and set up its linkages manually using
JITDylib::setSearchOrder (or related methods in JITDylib).
Diffstat (limited to 'llvm/tools/llvm-jitlink')
-rw-r--r-- | llvm/tools/llvm-jitlink/llvm-jitlink.cpp | 12 | ||||
-rw-r--r-- | llvm/tools/llvm-jitlink/llvm-jitlink.h | 1 |
2 files changed, 7 insertions, 6 deletions
diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp index 0e0953d37b6..f5b841811cb 100644 --- a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp +++ b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp @@ -397,7 +397,8 @@ static std::unique_ptr<jitlink::JITLinkMemoryManager> createMemoryManager() { } Session::Session(Triple TT) - : MemMgr(createMemoryManager()), ObjLayer(ES, *MemMgr), TT(std::move(TT)) { + : MainJD(ES.createJITDylib("<main>")), MemMgr(createMemoryManager()), + ObjLayer(ES, *MemMgr), TT(std::move(TT)) { /// Local ObjectLinkingLayer::Plugin class to forward modifyPassConfig to the /// Session. @@ -560,7 +561,7 @@ Error loadProcessSymbols(Session &S) { auto FilterMainEntryPoint = [InternedEntryPointName](SymbolStringPtr Name) { return Name != InternedEntryPointName; }; - S.ES.getMainJITDylib().addGenerator( + S.MainJD.addGenerator( ExitOnErr(orc::DynamicLibrarySearchGenerator::GetForCurrentProcess( GlobalPrefix, FilterMainEntryPoint))); @@ -589,10 +590,9 @@ Error loadObjects(Session &S) { LLVM_DEBUG(dbgs() << "Creating JITDylibs...\n"); { // Create a "main" JITLinkDylib. - auto &MainJD = S.ES.getMainJITDylib(); - IdxToJLD[0] = &MainJD; - S.JDSearchOrder.push_back(&MainJD); - LLVM_DEBUG(dbgs() << " 0: " << MainJD.getName() << "\n"); + IdxToJLD[0] = &S.MainJD; + S.JDSearchOrder.push_back(&S.MainJD); + LLVM_DEBUG(dbgs() << " 0: " << S.MainJD.getName() << "\n"); // Add any extra JITLinkDylibs from the command line. std::string JDNamePrefix("lib"); diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink.h b/llvm/tools/llvm-jitlink/llvm-jitlink.h index f94a50993c1..005f7f211e9 100644 --- a/llvm/tools/llvm-jitlink/llvm-jitlink.h +++ b/llvm/tools/llvm-jitlink/llvm-jitlink.h @@ -26,6 +26,7 @@ namespace llvm { struct Session { orc::ExecutionSession ES; + orc::JITDylib &MainJD; std::unique_ptr<jitlink::JITLinkMemoryManager> MemMgr; orc::ObjectLinkingLayer ObjLayer; std::vector<orc::JITDylib *> JDSearchOrder; |