1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- //===-- RuntimeDyldCheckerImpl.h -- RuntimeDyld test framework --*- C++ -*-===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_LIB_EXECUTIONENGINE_RUNTIMEDYLD_RUNTIMEDYLDCHECKERIMPL_H
- #define LLVM_LIB_EXECUTIONENGINE_RUNTIMEDYLD_RUNTIMEDYLDCHECKERIMPL_H
- #include "RuntimeDyldImpl.h"
- namespace llvm {
- class RuntimeDyldCheckerImpl {
- friend class RuntimeDyldChecker;
- friend class RuntimeDyldCheckerExprEval;
- using IsSymbolValidFunction =
- RuntimeDyldChecker::IsSymbolValidFunction;
- using GetSymbolInfoFunction = RuntimeDyldChecker::GetSymbolInfoFunction;
- using GetSectionInfoFunction = RuntimeDyldChecker::GetSectionInfoFunction;
- using GetStubInfoFunction = RuntimeDyldChecker::GetStubInfoFunction;
- using GetGOTInfoFunction = RuntimeDyldChecker::GetGOTInfoFunction;
- public:
- RuntimeDyldCheckerImpl(
- IsSymbolValidFunction IsSymbolValid, GetSymbolInfoFunction GetSymbolInfo,
- GetSectionInfoFunction GetSectionInfo, GetStubInfoFunction GetStubInfo,
- GetGOTInfoFunction GetGOTInfo, support::endianness Endianness,
- MCDisassembler *Disassembler, MCInstPrinter *InstPrinter,
- llvm::raw_ostream &ErrStream);
- bool check(StringRef CheckExpr) const;
- bool checkAllRulesInBuffer(StringRef RulePrefix, MemoryBuffer *MemBuf) const;
- private:
- // StubMap typedefs.
- Expected<JITSymbolResolver::LookupResult>
- lookup(const JITSymbolResolver::LookupSet &Symbols) const;
- bool isSymbolValid(StringRef Symbol) const;
- uint64_t getSymbolLocalAddr(StringRef Symbol) const;
- uint64_t getSymbolRemoteAddr(StringRef Symbol) const;
- uint64_t readMemoryAtAddr(uint64_t Addr, unsigned Size) const;
- StringRef getSymbolContent(StringRef Symbol) const;
- std::pair<uint64_t, std::string> getSectionAddr(StringRef FileName,
- StringRef SectionName,
- bool IsInsideLoad) const;
- std::pair<uint64_t, std::string>
- getStubOrGOTAddrFor(StringRef StubContainerName, StringRef Symbol,
- bool IsInsideLoad, bool IsStubAddr) const;
- Optional<uint64_t> getSectionLoadAddress(void *LocalAddr) const;
- IsSymbolValidFunction IsSymbolValid;
- GetSymbolInfoFunction GetSymbolInfo;
- GetSectionInfoFunction GetSectionInfo;
- GetStubInfoFunction GetStubInfo;
- GetGOTInfoFunction GetGOTInfo;
- support::endianness Endianness;
- MCDisassembler *Disassembler;
- MCInstPrinter *InstPrinter;
- llvm::raw_ostream &ErrStream;
- };
- }
- #endif
|