summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-jitlink
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2019-12-04 22:45:38 -0800
committerLang Hames <lhames@gmail.com>2019-12-05 01:36:49 -0800
commit4fc68b9b7f3e07ea4425c6111e1a9455cf4aa322 (patch)
treea34b36b9bd3fc33df70ba3f6fcef2f17785ce69c /llvm/tools/llvm-jitlink
parent76a5c8421e04b246892157fe18f1c082c908c5e9 (diff)
downloadbcm5719-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.cpp12
-rw-r--r--llvm/tools/llvm-jitlink/llvm-jitlink.h1
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;
OpenPOWER on IntegriCloud