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