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