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 20using namespace llvm; 21 22namespace llvm { 23 24// Common base class for COFF dynamic linker support. 25// Concrete subclasses for each target can be found in ./Targets. 26class RuntimeDyldCOFF : public RuntimeDyldImpl { 27 28public: 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 37protected: 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