1283625Sdim//===-- RuntimeDyldCOFF.h - Run-time dynamic linker for MC-JIT ---*- C++ -*-==// 2283625Sdim// 3283625Sdim// The LLVM Compiler Infrastructure 4283625Sdim// 5283625Sdim// This file is distributed under the University of Illinois Open Source 6283625Sdim// License. See LICENSE.TXT for details. 7283625Sdim// 8283625Sdim//===----------------------------------------------------------------------===// 9283625Sdim// 10283625Sdim// COFF support for MC-JIT runtime dynamic linker. 11283625Sdim// 12283625Sdim//===----------------------------------------------------------------------===// 13283625Sdim 14283625Sdim#ifndef LLVM_RUNTIME_DYLD_COFF_H 15283625Sdim#define LLVM_RUNTIME_DYLD_COFF_H 16283625Sdim 17283625Sdim#include "RuntimeDyldImpl.h" 18283625Sdim#include "llvm/ADT/DenseMap.h" 19283625Sdim 20283625Sdim#define DEBUG_TYPE "dyld" 21283625Sdim 22283625Sdimusing namespace llvm; 23283625Sdim 24283625Sdimnamespace llvm { 25283625Sdim 26283625Sdim// Common base class for COFF dynamic linker support. 27283625Sdim// Concrete subclasses for each target can be found in ./Targets. 28283625Sdimclass RuntimeDyldCOFF : public RuntimeDyldImpl { 29283625Sdim 30283625Sdimpublic: 31283625Sdim std::unique_ptr<RuntimeDyld::LoadedObjectInfo> 32283625Sdim loadObject(const object::ObjectFile &Obj) override; 33283625Sdim bool isCompatibleFile(const object::ObjectFile &Obj) const override; 34283625Sdim 35283625Sdim static std::unique_ptr<RuntimeDyldCOFF> 36283625Sdim create(Triple::ArchType Arch, RuntimeDyld::MemoryManager &MemMgr, 37283625Sdim RuntimeDyld::SymbolResolver &Resolver); 38283625Sdim 39283625Sdimprotected: 40283625Sdim RuntimeDyldCOFF(RuntimeDyld::MemoryManager &MemMgr, 41283625Sdim RuntimeDyld::SymbolResolver &Resolver) 42283625Sdim : RuntimeDyldImpl(MemMgr, Resolver) {} 43283625Sdim uint64_t getSymbolOffset(const SymbolRef &Sym); 44283625Sdim}; 45283625Sdim 46283625Sdim} // end namespace llvm 47283625Sdim 48283625Sdim#undef DEBUG_TYPE 49283625Sdim 50283625Sdim#endif 51