diff options
Diffstat (limited to 'contrib/llvm-project/llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp')
| -rw-r--r-- | contrib/llvm-project/llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/contrib/llvm-project/llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp b/contrib/llvm-project/llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp index 8d5608cc4d4c..3952445bb1aa 100644 --- a/contrib/llvm-project/llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp +++ b/contrib/llvm-project/llvm/lib/ExecutionEngine/Orc/ExecutionUtils.cpp @@ -218,19 +218,23 @@ void ItaniumCXAAtExitSupport::runAtExits(void *DSOHandle) {  }  DynamicLibrarySearchGenerator::DynamicLibrarySearchGenerator( -    sys::DynamicLibrary Dylib, char GlobalPrefix, SymbolPredicate Allow) +    sys::DynamicLibrary Dylib, char GlobalPrefix, SymbolPredicate Allow, +    AddAbsoluteSymbolsFn AddAbsoluteSymbols)      : Dylib(std::move(Dylib)), Allow(std::move(Allow)), +      AddAbsoluteSymbols(std::move(AddAbsoluteSymbols)),        GlobalPrefix(GlobalPrefix) {}  Expected<std::unique_ptr<DynamicLibrarySearchGenerator>>  DynamicLibrarySearchGenerator::Load(const char *FileName, char GlobalPrefix, -                                    SymbolPredicate Allow) { +                                    SymbolPredicate Allow, +                                    AddAbsoluteSymbolsFn AddAbsoluteSymbols) {    std::string ErrMsg;    auto Lib = sys::DynamicLibrary::getPermanentLibrary(FileName, &ErrMsg);    if (!Lib.isValid())      return make_error<StringError>(std::move(ErrMsg), inconvertibleErrorCode());    return std::make_unique<DynamicLibrarySearchGenerator>( -      std::move(Lib), GlobalPrefix, std::move(Allow)); +      std::move(Lib), GlobalPrefix, std::move(Allow), +      std::move(AddAbsoluteSymbols));  }  Error DynamicLibrarySearchGenerator::tryToGenerate( @@ -261,6 +265,8 @@ Error DynamicLibrarySearchGenerator::tryToGenerate(    if (NewSymbols.empty())      return Error::success(); +  if (AddAbsoluteSymbols) +    return AddAbsoluteSymbols(JD, std::move(NewSymbols));    return JD.define(absoluteSymbols(std::move(NewSymbols)));  }  | 
