//===--------- DWARFRecordSectionSplitter.h - JITLink -----------*- 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 // //===----------------------------------------------------------------------===// #ifndef LLVM_EXECUTIONENGINE_JITLINK_DWARFRECORDSECTIONSPLITTER_H #define LLVM_EXECUTIONENGINE_JITLINK_DWARFRECORDSECTIONSPLITTER_H #include "llvm/ExecutionEngine/JITLink/JITLink.h" namespace llvm { namespace jitlink { /// A LinkGraph pass that splits blocks in a section that follows the DWARF /// Record format into sub-blocks where each header gets its own block. /// When splitting EHFrames, DWARFRecordSectionSplitter should not be run /// without EHFrameEdgeFixer, which is responsible for adding FDE-to-CIE edges. class DWARFRecordSectionSplitter { public: DWARFRecordSectionSplitter(StringRef SectionName); Error operator()(LinkGraph &G); private: Error processBlock(LinkGraph &G, Block &B, LinkGraph::SplitBlockCache &Cache); StringRef SectionName; }; } // namespace jitlink } // namespace llvm #endif // LLVM_EXECUTIONENGINE_JITLINK_DWARFRECORDSECTIONSPLITTER_H