• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/llvm/lib/DebugInfo/DWARF/

Lines Matching refs:Die

165     auto Die = Unit.getDIEAtIndex(I);
167 if (Die.getTag() == DW_TAG_null)
170 for (auto AttrValue : Die.attributes()) {
171 NumUnitErrors += verifyDebugInfoAttribute(Die, AttrValue);
172 NumUnitErrors += verifyDebugInfoForm(Die, AttrValue);
175 NumUnitErrors += verifyDebugInfoCallSite(Die);
178 DWARFDie Die = Unit.getUnitDIE(/* ExtractUnitDIEOnly = */ false);
179 if (!Die) {
185 if (!dwarf::isUnitType(Die.getTag())) {
187 << dwarf::TagString(Die.getTag()) << ".\n";
192 if (!DWARFUnit::isMatchingUnitTypeAndTag(UnitType, Die.getTag())) {
194 << ") and root DIE (" << dwarf::TagString(Die.getTag())
202 if (Die.getTag() == dwarf::DW_TAG_skeleton_unit && Die.hasChildren()) {
208 NumUnitErrors += verifyDieRanges(Die, RI);
213 unsigned DWARFVerifier::verifyDebugInfoCallSite(const DWARFDie &Die) {
214 if (Die.getTag() != DW_TAG_call_site && Die.getTag() != DW_TAG_GNU_call_site)
217 DWARFDie Curr = Die.getParent();
218 for (; Curr.isValid() && !Curr.isSubprogramDIE(); Curr = Die.getParent()) {
228 Die.dump(OS);
240 Die.dump(OS, /*indent*/ 1);
362 unsigned DWARFVerifier::verifyDieRanges(const DWARFDie &Die,
366 if (!Die.isValid())
369 auto RangesOrError = Die.getAddressRanges();
380 DieRangeInfo RI(Die);
388 // In such a case, when the Die is the CU, the ranges will overlap, and we
401 if (!IsObjectFile || IsMachOObject || Die.getTag() != DW_TAG_compile_unit) {
425 dump(Die, 2) << '\n';
433 dump(Die);
434 dump(IntersectingChild->Die) << '\n';
439 !(Die.getTag() == DW_TAG_subprogram &&
440 ParentRI.Die.getTag() == DW_TAG_subprogram);
444 dump(ParentRI.Die);
445 dump(Die, 2) << '\n';
449 for (DWARFDie Child : Die)
455 unsigned DWARFVerifier::verifyDebugInfoAttribute(const DWARFDie &Die,
461 dump(Die) << '\n';
470 unsigned DwarfVersion = Die.getDwarfUnit()->getVersion();
495 Die.getLocations(DW_AT_location)) {
496 DWARFUnit *U = Die.getDwarfUnit();
513 if (auto ReferencedDie = Die.getAttributeValueAsReferencedDie(Attr)) {
514 auto DieTag = Die.getTag();
534 DWARFDie TypeDie = Die.getAttributeValueAsReferencedDie(DW_AT_type);
547 unsigned DWARFVerifier::verifyDebugInfoForm(const DWARFDie &Die,
550 auto DieCU = Die.getDwarfUnit();
571 Die.dump(OS, 0, DumpOpts);
572 dump(Die) << '\n';
576 ReferenceToDIEOffsets[*RefVal].insert(Die.getOffset());
591 dump(Die) << '\n';
595 ReferenceToDIEOffsets[*RefVal].insert(Die.getOffset());
606 dump(Die) << '\n';
616 auto DieCU = Die.getDwarfUnit();
622 dump(Die) << '\n';
634 dump(Die) << '\n';
645 dump(Die) << '\n';
677 auto Die = CU->getUnitDIE();
681 auto StmtSectionOffset = toSectionOffset(Die.find(DW_AT_stmt_list));
691 dump(Die) << '\n';
706 << format("0x%08" PRIx64, Die.getOffset())
709 dump(Die) << '\n';
713 StmtListToDie[LineTableOffset] = Die;
719 auto Die = CU->getUnitDIE();
736 *toSectionOffset(Die.find(DW_AT_stmt_list)))
755 *toSectionOffset(Die.find(DW_AT_stmt_list)))
772 *toSectionOffset(Die.find(DW_AT_stmt_list)))
789 *toSectionOffset(Die.find(DW_AT_stmt_list)))
897 auto Die = DCtx.getDIEForOffset(Offset);
898 if (!Die) {
916 if ((Tag != dwarf::DW_TAG_null) && (Die.getTag() != Tag)) {
919 << dwarf::TagString(Die.getTag()) << " of DIE[" << HashDataIdx
1297 static bool isVariableIndexable(const DWARFDie &Die, DWARFContext &DCtx) {
1299 Die.getLocations(DW_AT_location);
1304 DWARFUnit *U = Die.getDwarfUnit();
1322 const DWARFDie &Die, const DWARFDebugNames::NameIndex &NI) {
1324 // First check, if the Die should be indexed. The code follows the DWARF v5
1329 if (Die.find(DW_AT_declaration))
1339 auto IncludeLinkageName = Die.getTag() == DW_TAG_subprogram ||
1340 Die.getTag() == DW_TAG_inlined_subroutine;
1341 auto EntryNames = getNames(Die, IncludeLinkageName);
1350 switch (Die.getTag()) {
1386 if (Die.findRecursively(
1397 if (isVariableIndexable(Die, DCtx))
1405 // Now we know that our Die should be present in the Index. Let's check if
1408 uint64_t DieUnitOffset = Die.getOffset() - Die.getDwarfUnit()->getOffset();
1415 NI.getUnitOffset(), Die.getOffset(), Die.getTag(),
1459 for (const DWARFDebugInfoEntry &Die : CU->dies())
1460 NumErrors += verifyNameIndexCompleteness(DWARFDie(CU, &Die), *NI);
1494 raw_ostream &DWARFVerifier::dump(const DWARFDie &Die, unsigned indent) const {
1495 Die.dump(OS, indent, DumpOpts);