//===- DWARFLinker.h --------------------------------------------*- 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_DWARFLINKER_CLASSIC_DWARFLINKER_H #define LLVM_DWARFLINKER_CLASSIC_DWARFLINKER_H #include "llvm/ADT/AddressRanges.h" #include "llvm/ADT/DenseMap.h" #include "llvm/CodeGen/AccelTable.h" #include "llvm/CodeGen/NonRelocatableStringpool.h" #include "llvm/DWARFLinker/Classic/DWARFLinkerCompileUnit.h" #include "llvm/DWARFLinker/DWARFLinkerBase.h" #include "llvm/DWARFLinker/IndexedValuesMap.h" #include "llvm/DebugInfo/DWARF/DWARFContext.h" #include "llvm/DebugInfo/DWARF/DWARFDebugLine.h" #include "llvm/DebugInfo/DWARF/DWARFDebugRangeList.h" #include "llvm/DebugInfo/DWARF/DWARFDie.h" #include "llvm/DebugInfo/DWARF/DWARFExpression.h" #include <map> namespace llvm { class DWARFExpression; class DWARFUnit; class DataExtractor; template <typename T> class SmallVectorImpl; namespace dwarf_linker { namespace classic { class DeclContextTree; Offset2UnitMap; DebugDieValuePool; /// DwarfEmitter presents interface to generate all debug info tables. class DwarfEmitter { … }; class DwarfStreamer; UnitListTy; /// The core of the Dwarf linking logic. /// /// The generation of the dwarf information from the object files will be /// driven by the selection of 'root DIEs', which are DIEs that /// describe variables or functions that resolves to the corresponding /// code section(and thus have entries in the Addresses map). All the debug /// information that will be generated(the DIEs, but also the line /// tables, ranges, ...) is derived from that set of root DIEs. /// /// The root DIEs are identified because they contain relocations that /// points to code section(the low_pc for a function, the location for /// a variable). These relocations are called ValidRelocs in the /// AddressesInfo and are gathered as a very first step when we start /// processing a object file. class DWARFLinker : public DWARFLinkerBase { … }; } // end of namespace classic } // end of namespace dwarf_linker } // end of namespace llvm #endif // LLVM_DWARFLINKER_CLASSIC_DWARFLINKER_H