Line data Source code
1 : //===-- RuntimeDyldCOFF.h - Run-time dynamic linker for MC-JIT ---*- C++ -*-==//
2 : //
3 : // The LLVM Compiler Infrastructure
4 : //
5 : // This file is distributed under the University of Illinois Open Source
6 : // License. See LICENSE.TXT for details.
7 : //
8 : //===----------------------------------------------------------------------===//
9 : //
10 : // COFF support for MC-JIT runtime dynamic linker.
11 : //
12 : //===----------------------------------------------------------------------===//
13 :
14 : #ifndef LLVM_RUNTIME_DYLD_COFF_H
15 : #define LLVM_RUNTIME_DYLD_COFF_H
16 :
17 : #include "RuntimeDyldImpl.h"
18 :
19 : #define DEBUG_TYPE "dyld"
20 :
21 : using namespace llvm;
22 :
23 : namespace llvm {
24 :
25 : // Common base class for COFF dynamic linker support.
26 : // Concrete subclasses for each target can be found in ./Targets.
27 : class RuntimeDyldCOFF : public RuntimeDyldImpl {
28 :
29 : public:
30 : std::unique_ptr<RuntimeDyld::LoadedObjectInfo>
31 : loadObject(const object::ObjectFile &Obj) override;
32 : bool isCompatibleFile(const object::ObjectFile &Obj) const override;
33 :
34 : static std::unique_ptr<RuntimeDyldCOFF>
35 : create(Triple::ArchType Arch, RuntimeDyld::MemoryManager &MemMgr,
36 : JITSymbolResolver &Resolver);
37 :
38 : protected:
39 : RuntimeDyldCOFF(RuntimeDyld::MemoryManager &MemMgr,
40 : JITSymbolResolver &Resolver)
41 4 : : RuntimeDyldImpl(MemMgr, Resolver) {}
42 : uint64_t getSymbolOffset(const SymbolRef &Sym);
43 : };
44 :
45 : } // end namespace llvm
46 :
47 : #undef DEBUG_TYPE
48 :
49 : #endif
|