#ifndef LIB_EXECUTIONENGINE_JITLINK_ELFLINKGRAPHBUILDER_H
#define LIB_EXECUTIONENGINE_JITLINK_ELFLINKGRAPHBUILDER_H
#include "llvm/ExecutionEngine/JITLink/JITLink.h"
#include "llvm/Object/ELF.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/FormatVariadic.h"
#define DEBUG_TYPE …
namespace llvm {
namespace jitlink {
class ELFLinkGraphBuilderBase { … };
template <typename ELFT>
class ELFLinkGraphBuilder : public ELFLinkGraphBuilderBase { … };
template <typename ELFT>
ELFLinkGraphBuilder<ELFT>::ELFLinkGraphBuilder(
const ELFFile &Obj, Triple TT, SubtargetFeatures Features,
StringRef FileName, LinkGraph::GetEdgeKindNameFunction GetEdgeKindName)
: … { … }
template <typename ELFT>
Expected<std::unique_ptr<LinkGraph>> ELFLinkGraphBuilder<ELFT>::buildGraph() { … }
template <typename ELFT>
Expected<std::pair<Linkage, Scope>>
ELFLinkGraphBuilder<ELFT>::getSymbolLinkageAndScope(
const typename ELFT::Sym &Sym, StringRef Name) { … }
template <typename ELFT> Error ELFLinkGraphBuilder<ELFT>::prepare() { … }
template <typename ELFT> Error ELFLinkGraphBuilder<ELFT>::graphifySections() { … }
template <typename ELFT> Error ELFLinkGraphBuilder<ELFT>::graphifySymbols() { … }
template <typename ELFT>
template <typename RelocHandlerFunction>
Error ELFLinkGraphBuilder<ELFT>::forEachRelaRelocation(
const typename ELFT::Shdr &RelSect, RelocHandlerFunction &&Func) { … }
template <typename ELFT>
template <typename RelocHandlerFunction>
Error ELFLinkGraphBuilder<ELFT>::forEachRelRelocation(
const typename ELFT::Shdr &RelSect, RelocHandlerFunction &&Func) { … }
}
}
#undef DEBUG_TYPE
#endif