diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2018-07-28 10:51:19 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2018-07-28 10:51:19 +0000 | 
| commit | eb11fae6d08f479c0799db45860a98af528fa6e7 (patch) | |
| tree | 44d492a50c8c1a7eb8e2d17ea3360ec4d066f042 /lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp | |
| parent | b8a2042aa938069e862750553db0e4d82d25822c (diff) | |
Notes
Diffstat (limited to 'lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp')
| -rw-r--r-- | lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp | 27 | 
1 files changed, 22 insertions, 5 deletions
| diff --git a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp index 5bc7434e703f..fa8906869b3a 100644 --- a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp +++ b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp @@ -688,12 +688,13 @@ RuntimeDyldCheckerImpl::RuntimeDyldCheckerImpl(RuntimeDyld &RTDyld,  bool RuntimeDyldCheckerImpl::check(StringRef CheckExpr) const {    CheckExpr = CheckExpr.trim(); -  DEBUG(dbgs() << "RuntimeDyldChecker: Checking '" << CheckExpr << "'...\n"); +  LLVM_DEBUG(dbgs() << "RuntimeDyldChecker: Checking '" << CheckExpr +                    << "'...\n");    RuntimeDyldCheckerExprEval P(*this, ErrStream);    bool Result = P.evaluate(CheckExpr);    (void)Result; -  DEBUG(dbgs() << "RuntimeDyldChecker: '" << CheckExpr << "' " -               << (Result ? "passed" : "FAILED") << ".\n"); +  LLVM_DEBUG(dbgs() << "RuntimeDyldChecker: '" << CheckExpr << "' " +                    << (Result ? "passed" : "FAILED") << ".\n");    return Result;  } @@ -731,7 +732,14 @@ bool RuntimeDyldCheckerImpl::checkAllRulesInBuffer(StringRef RulePrefix,  bool RuntimeDyldCheckerImpl::isSymbolValid(StringRef Symbol) const {    if (getRTDyld().getSymbol(Symbol))      return true; -  return !!getRTDyld().Resolver.findSymbol(Symbol); +  JITSymbolResolver::LookupSet Symbols({Symbol}); +  auto Result = getRTDyld().Resolver.lookup(Symbols); +  if (!Result) { +    logAllUnhandledErrors(Result.takeError(), errs(), "RTDyldChecker: "); +    return false; +  } +  assert(Result->count(Symbol) && "Missing symbol result"); +  return true;  }  uint64_t RuntimeDyldCheckerImpl::getSymbolLocalAddr(StringRef Symbol) const { @@ -742,7 +750,16 @@ uint64_t RuntimeDyldCheckerImpl::getSymbolLocalAddr(StringRef Symbol) const {  uint64_t RuntimeDyldCheckerImpl::getSymbolRemoteAddr(StringRef Symbol) const {    if (auto InternalSymbol = getRTDyld().getSymbol(Symbol))      return InternalSymbol.getAddress(); -  return cantFail(getRTDyld().Resolver.findSymbol(Symbol).getAddress()); + +  JITSymbolResolver::LookupSet Symbols({Symbol}); +  auto Result = getRTDyld().Resolver.lookup(Symbols); +  if (!Result) { +    logAllUnhandledErrors(Result.takeError(), errs(), "RTDyldChecker: "); +    return 0; +  } +  auto I = Result->find(Symbol); +  assert(I != Result->end() && "Missing symbol result"); +  return I->second.getAddress();  }  uint64_t RuntimeDyldCheckerImpl::readMemoryAtAddr(uint64_t SrcAddr, | 
