brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · c648117 Raw
64 lines · c
1//===----- XCOFFLinkGraphBuilder.h - XCOFF LinkGraph builder ----*- 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-exception6//7//===----------------------------------------------------------------------===//8//9// Generic XCOFF LinkGraph building code.10//11//===----------------------------------------------------------------------===//12 13#ifndef LIB_EXECUTIONENGINE_JITLINK_XCOFFLINKGRAPHBUILDER_H14#define LIB_EXECUTIONENGINE_JITLINK_XCOFFLINKGRAPHBUILDER_H15 16#include "llvm/ExecutionEngine/JITLink/JITLink.h"17#include "llvm/ExecutionEngine/Orc/SymbolStringPool.h"18#include "llvm/Object/ObjectFile.h"19#include "llvm/Object/XCOFFObjectFile.h"20#include "llvm/TargetParser/SubtargetFeature.h"21#include <memory>22 23namespace llvm {24namespace jitlink {25 26class XCOFFLinkGraphBuilder {27public:28  virtual ~XCOFFLinkGraphBuilder() = default;29  Expected<std::unique_ptr<LinkGraph>> buildGraph();30 31public:32  XCOFFLinkGraphBuilder(const object::XCOFFObjectFile &Obj,33                        std::shared_ptr<orc::SymbolStringPool> SSP, Triple TT,34                        SubtargetFeatures Features,35                        LinkGraph::GetEdgeKindNameFunction GetEdgeKindName);36  LinkGraph &getGraph() const { return *G; }37  const object::XCOFFObjectFile &getObject() const { return Obj; }38 39private:40  Error processSections();41  Error processCsectsAndSymbols();42  Error processRelocations();43 44private:45  const object::XCOFFObjectFile &Obj;46  std::unique_ptr<LinkGraph> G;47 48  Section *UndefSection;49 50  struct SectionEntry {51    jitlink::Section *Section;52    object::SectionRef SectionData;53  };54 55  DenseMap<uint16_t, SectionEntry> SectionTable;56  DenseMap<uint32_t, Block *> CsectTable;57  DenseMap<uint32_t, Symbol *> SymbolIndexTable;58};59 60} // namespace jitlink61} // namespace llvm62 63#endif // LIB_EXECUTIONENGINE_JITLINK_XCOFFLINKGRAPHBUILDER_H64