Go to the documentation of this file.
9 #ifndef LLVM_DEBUGINFO_DWARF_DWARFVERIFIER_H
10 #define LLVM_DEBUGINFO_DWARF_DWARFVERIFIER_H
24 struct DWARFAddressRange;
26 class DWARFUnitVector;
27 struct DWARFAttribute;
29 class DWARFDataExtractor;
30 class DWARFDebugAbbrev;
42 std::vector<DWARFAddressRange>
Ranges;
88 using ReferenceMap = std::map<uint64_t, std::set<uint64_t>>;
129 bool &isUnitDWARF64);
130 bool verifyName(
const DWARFDie &Die);
147 unsigned verifyUnitContents(
DWARFUnit &Unit,
148 ReferenceMap &UnitLocalReferences,
149 ReferenceMap &CrossUnitReferences);
168 unsigned verifyDebugInfoCallSite(
const DWARFDie &Die);
189 unsigned verifyDebugInfoAttribute(
const DWARFDie &Die,
205 ReferenceMap &UnitLocalReferences,
206 ReferenceMap &CrossUnitReferences);
218 unsigned verifyDebugInfoReferences(
219 const ReferenceMap &,
224 void verifyDebugLineStmtOffsets();
231 void verifyDebugLineRows();
250 unsigned verifyAppleAccelTable(
const DWARFSection *AccelSection,
263 unsigned verifyNameIndexCompleteness(
const DWARFDie &Die,
283 unsigned verifyDebugNames(
const DWARFSection &AccelSection,
346 return std::tie(
LHS.Ranges,
LHS.Die) < std::tie(
RHS.Ranges,
RHS.Die);
351 #endif // LLVM_DEBUGINFO_DWARF_DWARFVERIFIER_H
This is an optimization pass for GlobalISel generic memory operations.
A class that verifies DWARF debug information given a DWARF Context.
std::vector< DWARFAddressRange > Ranges
Sorted DWARFAddressRanges.
DWARFVerifier(raw_ostream &S, DWARFContext &D, DIDumpOptions DumpOpts=DIDumpOptions::getForSingleDIE())
DWARFContext This data structure is the top level entity that deals with dwarf debug information pars...
A single entry in the Name Table (DWARF v5 sect.
This class holds an abstract representation of an Accelerator Table, consisting of a sequence of buck...
bool handleDebugInfo()
Verify the information in the .debug_info and .debug_types sections.
Abbreviation describing the encoding of Name Index entries.
Index attribute and its encoding.
Encapsulates a DWARF attribute value and all of the data required to describe the attribute value.
static DIDumpOptions getForSingleDIE()
Return default option set for printing a single DIE without children.
Represents a single accelerator table within the DWARF v5 .debug_names section.
DWARFSectionKind
The enum of section identifiers to be used in internal interfaces.
bool handleDebugLine()
Verify the information in the .debug_line section.
This class implements an extremely fast bulk output stream that can only output to a stream.
bool handleAccelTables()
Verify the information in accelerator tables, if they exist.
std::set< DieRangeInfo >::const_iterator die_range_info_iterator
An efficient, type-erasing, non-owning reference to a callable.
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
bool handleDebugAbbrev()
Verify the information in any of the following sections, if available: .debug_abbrev,...
bool intersects(const DieRangeInfo &RHS) const
Return true if any range in this object intersects with any range in RHS.
bool operator<(int64_t V1, const APSInt &V2)
UnitType
Constants for unit types in DWARF v5.
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
StringRef - Represent a constant reference to a string, i.e.
DieRangeInfo(std::vector< DWARFAddressRange > Ranges)
Used for unit testing.
add sub stmia L5 ldr r0 bl L_printf $stub Instead of a and a wouldn t it be better to do three moves *Return an aggregate type is even return S
bool handleDebugCUIndex()
Verify the information in the .debug_cu_index section.
bool handleDebugTUIndex()
Verify the information in the .debug_tu_index section.
std::set< DieRangeInfo > Children
Sorted DWARFAddressRangeInfo.
SectionKind - This is a simple POD value that classifies the properties of a section.
A class that keeps the address range information for a single DIE.
bool contains(const DieRangeInfo &RHS) const
Return true if ranges in this object contains all ranges within RHS.
Utility class that carries the DWARF compile/type unit and the debug info entry in an object.
.debug_names section consists of one or more units.
DieRangeInfo(DWARFDie Die)
Optional< DWARFAddressRange > insert(const DWARFAddressRange &R)
Inserts the address range.
Container for dump options that control which debug information will be dumped.
Describe a collection of units.