//===---- llvm-jitlink.h - Session and format-specific decls ----*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // Utilities for remote-JITing with LLI. // //===----------------------------------------------------------------------===// #ifndef LLVM_TOOLS_LLVM_JITLINK_LLVM_JITLINK_H #define LLVM_TOOLS_LLVM_JITLINK_LLVM_JITLINK_H #include "llvm/ADT/Triple.h" #include "llvm/ExecutionEngine/Orc/Core.h" #include "llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h" #include "llvm/ExecutionEngine/RuntimeDyldChecker.h" #include "llvm/Support/Error.h" #include "llvm/Support/raw_ostream.h" #include namespace llvm { struct Session { orc::ExecutionSession ES; orc::JITDylib &MainJD; orc::ObjectLinkingLayer ObjLayer; std::vector JDSearchOrder; Triple TT; Session(Triple TT); void dumpSessionInfo(raw_ostream &OS); void modifyPassConfig(const Triple &FTT, jitlink::PassConfiguration &PassConfig); using MemoryRegionInfo = RuntimeDyldChecker::MemoryRegionInfo; struct FileInfo { StringMap SectionInfos; StringMap StubInfos; StringMap GOTEntryInfos; }; using SymbolInfoMap = StringMap; using FileInfoMap = StringMap; Expected findFileInfo(StringRef FileName); Expected findSectionInfo(StringRef FileName, StringRef SectionName); Expected findStubInfo(StringRef FileName, StringRef TargetName); Expected findGOTEntryInfo(StringRef FileName, StringRef TargetName); bool isSymbolRegistered(StringRef Name); Expected findSymbolInfo(StringRef SymbolName, Twine ErrorMsgStem); SymbolInfoMap SymbolInfos; FileInfoMap FileInfos; uint64_t SizeBeforePruning = 0; uint64_t SizeAfterFixups = 0; }; Error registerMachOStubsAndGOT(Session &S, jitlink::LinkGraph &G); } // end namespace llvm #endif // LLVM_TOOLS_LLVM_JITLINK_LLVM_JITLINK_H