summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ExecutionEngine
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2018-10-01 00:59:28 +0000
committerLang Hames <lhames@gmail.com>2018-10-01 00:59:28 +0000
commit47d0a37704ebc529ad2ab8a46e12a06e88df3207 (patch)
treecdd23207f9f71204487625e1bc2e6889535fb740 /llvm/lib/ExecutionEngine
parentd89c273a2ee4349704dc2e21b7037f01f6bde60a (diff)
downloadbcm5719-llvm-47d0a37704ebc529ad2ab8a46e12a06e88df3207.tar.gz
bcm5719-llvm-47d0a37704ebc529ad2ab8a46e12a06e88df3207.zip
[ORC] Add convenience methods for creating DynamicLibraryFallbackGenerators for
libraries on disk, and for the current process. Avoids more boilerplate during JIT construction. llvm-svn: 343430
Diffstat (limited to 'llvm/lib/ExecutionEngine')
-rw-r--r--llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp b/llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp
index e9e27453c32..29c3f4e5636 100644
--- a/llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp
@@ -174,6 +174,15 @@ DynamicLibraryFallbackGenerator::DynamicLibraryFallbackGenerator(
: Dylib(std::move(Dylib)), Allow(std::move(Allow)),
GlobalPrefix(DL.getGlobalPrefix()) {}
+Expected<DynamicLibraryFallbackGenerator> DynamicLibraryFallbackGenerator::Load(
+ const char *FileName, const DataLayout &DL, SymbolPredicate Allow) {
+ std::string ErrMsg;
+ auto Lib = sys::DynamicLibrary::getPermanentLibrary(FileName, &ErrMsg);
+ if (!Lib.isValid())
+ return make_error<StringError>(std::move(ErrMsg), inconvertibleErrorCode());
+ return DynamicLibraryFallbackGenerator(std::move(Lib), DL, std::move(Allow));
+}
+
SymbolNameSet DynamicLibraryFallbackGenerator::
operator()(JITDylib &JD, const SymbolNameSet &Names) {
orc::SymbolNameSet Added;
OpenPOWER on IntegriCloud