//===- DIContext.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 // //===----------------------------------------------------------------------===// // // This file defines DIContext, an abstract data structure that holds // debug information data. // //===----------------------------------------------------------------------===// #ifndef LLVM_DEBUGINFO_DICONTEXT_H #define LLVM_DEBUGINFO_DICONTEXT_H #include "llvm/ADT/SmallVector.h" #include "llvm/Object/ObjectFile.h" #include "llvm/Support/WithColor.h" #include "llvm/Support/raw_ostream.h" #include <cassert> #include <cstdint> #include <memory> #include <optional> #include <string> #include <tuple> #include <utility> namespace llvm { /// A format-neutral container for source line information. struct DILineInfo { … }; DILineInfoTable; /// A format-neutral container for inlined code description. class DIInliningInfo { … }; /// Container for description of a global variable. struct DIGlobal { … }; struct DILocal { … }; /// A DINameKind is passed to name search methods to specify a /// preference regarding the type of name resolution the caller wants. enum class DINameKind { … }; /// Controls which fields of DILineInfo container should be filled /// with data. struct DILineInfoSpecifier { … }; /// This is just a helper to programmatically construct DIDumpType. enum DIDumpTypeCounter { … }; static_assert …; /// Selects which debug sections get dumped. enum DIDumpType : unsigned { … }; /// Container for dump options that control which debug information will be /// dumped. struct DIDumpOptions { … }; class DIContext { … }; /// An inferface for inquiring the load address of a loaded object file /// to be used by the DIContext implementations when applying relocations /// on the fly. class LoadedObjectInfo { … }; template <typename Derived, typename Base = LoadedObjectInfo> struct LoadedObjectInfoHelper : Base { … }; } // end namespace llvm #endif // LLVM_DEBUGINFO_DICONTEXT_H