Skip to content

Commit 326b3da

Browse files
committed
Fix initialization setup issue
1 parent 25a1a73 commit 326b3da

File tree

3 files changed

+16
-9
lines changed

3 files changed

+16
-9
lines changed

interpreter/cling/include/cling/Interpreter/DynamicLibraryManager.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,10 @@ namespace cling {
131131
return;
132132
auto pos = prepend ? m_SearchPaths.begin() : m_SearchPaths.end();
133133
m_SearchPaths.insert(pos, SearchPathInfo{dir.str(), isUser});
134-
// m_DyldController->addScanPath(dir.str(),
135-
// isUser ? llvm::orc::PathType::User
136-
// : llvm::orc::PathType::System);
134+
if (m_DyldController)
135+
m_DyldController->addScanPath(dir.str(),
136+
isUser ? llvm::orc::PathType::User
137+
: llvm::orc::PathType::System);
137138
}
138139
}
139140

interpreter/cling/lib/Interpreter/DynamicLibraryManagerSymbol.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1341,14 +1341,20 @@ namespace cling {
13411341

13421342
void DynamicLibraryManager::initializeDyld(
13431343
std::function<bool(llvm::StringRef)> shouldPermanentlyIgnore) {
1344-
//assert(!m_Dyld && "Already initialized!");
1344+
// assert(!m_Dyld && "Already initialized!");
1345+
// if (m_Dyld)
1346+
// delete m_Dyld;
13451347
if (m_DyldController)
13461348
m_DyldController.reset();
13471349

13481350
llvm::orc::LibraryResolver::Setup S =
13491351
llvm::orc::LibraryResolver::Setup::create({});
1350-
S.shouldScan = [&](llvm::StringRef lib) -> bool {
1351-
return !shouldPermanentlyIgnore(lib);
1352+
S.shouldScan = [&, shouldPermanentlyIgnore](llvm::StringRef lib) -> bool {
1353+
if (shouldPermanentlyIgnore) {
1354+
return !shouldPermanentlyIgnore(lib) || !isLibraryLoaded(lib);
1355+
}
1356+
// fallback behavior if no callback provided
1357+
return !isLibraryLoaded(lib);
13521358
};
13531359
m_DyldController = llvm::orc::LibraryResolutionDriver::create(S);
13541360

@@ -1377,16 +1383,15 @@ namespace cling {
13771383
std::string res = "";
13781384
std::vector<std::string> sym;
13791385
sym.push_back(mangledName.str());
1380-
llvm::orc::SearchPolicy policy = {
1386+
llvm::orc::SearchConfig config;
1387+
config.policy = {
13811388
{{llvm::orc::LibraryManager::State::Queried, llvm::orc::PathType::User},
13821389
{llvm::orc::LibraryManager::State::Unloaded,
13831390
llvm::orc::PathType::User},
13841391
{llvm::orc::LibraryManager::State::Queried,
13851392
llvm::orc::PathType::System},
13861393
{llvm::orc::LibraryManager::State::Unloaded,
13871394
llvm::orc::PathType::System}}};
1388-
llvm::orc::SearchConfig config;
1389-
config.policy = policy;
13901395
config.options.FilterFlags =
13911396
llvm::orc::SymbolEnumeratorOptions::IgnoreUndefined;
13921397
m_DyldController->resolveSymbols(

interpreter/llvm-project/llvm/lib/ExecutionEngine/Orc/Shared/LibraryScanner.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ bool ObjectFileLoader::isArchitectureCompatible(const object::ObjectFile &Obj) {
6969
return false;
7070

7171
if (ObjTriple.getEnvironment() != Triple::UnknownEnvironment &&
72+
HostTriple.getEnvironment() != Triple::UnknownEnvironment &&
7273
HostTriple.getEnvironment() != ObjTriple.getEnvironment())
7374
return false;
7475

0 commit comments

Comments
 (0)