//===--- unittests/DebugInfo/DWARF/DwarfGenerator.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 // //===----------------------------------------------------------------------===// // // A file that can generate DWARF debug info for unit tests. // //===----------------------------------------------------------------------===// #ifndef LLVM_UNITTESTS_DEBUG_INFO_DWARF_DWARFGENERATOR_H #define LLVM_UNITTESTS_DEBUG_INFO_DWARF_DWARFGENERATOR_H #include "llvm/ADT/SmallString.h" #include "llvm/ADT/StringRef.h" #include "llvm/CodeGen/DIE.h" #include "llvm/DebugInfo/DWARF/DWARFDebugLine.h" #include "llvm/Support/Error.h" #include <memory> #include <string> #include <vector> namespace llvm { class AsmPrinter; class DIE; class DIEAbbrev; class DwarfStringPool; class MCAsmBackend; class MCAsmInfo; class MCCodeEmitter; class MCContext; struct MCDwarfLineTableParams; class MCInstrInfo; class MCRegisterInfo; class MCStreamer; class MCSubtargetInfo; class raw_fd_ostream; class TargetLoweringObjectFile; class TargetMachine; class Triple; namespace dwarfgen { class Generator; class CompileUnit; /// A DWARF debug information entry class used to generate DWARF DIEs. /// /// This class is used to quickly generate DWARF debug information by creating /// child DIEs or adding attributes to the current DIE. Instances of this class /// are created from the compile unit (dwarfgen::CompileUnit::getUnitDIE()) or /// by calling dwarfgen::DIE::addChild(...) and using the returned DIE object. class DIE { … }; /// A DWARF compile unit used to generate DWARF compile/type units. /// /// Instances of these classes are created by instances of the Generator /// class. All information required to generate a DWARF compile unit is /// contained inside this class. class CompileUnit { … }; /// A DWARF line unit-like class used to generate DWARF line units. /// /// Instances of this class are created by instances of the Generator class. class LineTable { … }; /// A DWARF generator. /// /// Generate DWARF for unit tests by creating any instance of this class and /// calling Generator::addCompileUnit(), and then getting the dwarfgen::DIE from /// the returned compile unit and adding attributes and children to each DIE. class Generator { … }; } // end namespace dwarfgen } // end namespace llvm #endif // LLVM_UNITTESTS_DEBUG_INFO_DWARF_DWARFGENERATOR_H