LLVM  8.0.0svn
Classes | Public Member Functions | List of all members
llvm::DWARFVerifier Class Reference

A class that verifies DWARF debug information given a DWARF Context. More...

#include "llvm/DebugInfo/DWARF/DWARFVerifier.h"

Classes

struct  DieRangeInfo
 A class that keeps the address range information for a single DIE. More...
 

Public Member Functions

 DWARFVerifier (raw_ostream &S, DWARFContext &D, DIDumpOptions DumpOpts=DIDumpOptions::getForSingleDIE())
 
bool handleDebugAbbrev ()
 Verify the information in any of the following sections, if available: .debug_abbrev, debug_abbrev.dwo. More...
 
bool handleDebugInfo ()
 Verify the information in the .debug_info and .debug_types sections. More...
 
bool handleDebugLine ()
 Verify the information in the .debug_line section. More...
 
bool handleAccelTables ()
 Verify the information in accelerator tables, if they exist. More...
 

Detailed Description

A class that verifies DWARF debug information given a DWARF Context.

Definition at line 36 of file DWARFVerifier.h.

Constructor & Destructor Documentation

◆ DWARFVerifier()

llvm::DWARFVerifier::DWARFVerifier ( raw_ostream S,
DWARFContext D,
DIDumpOptions  DumpOpts = DIDumpOptions::getForSingleDIE() 
)
inline

Member Function Documentation

◆ handleAccelTables()

bool DWARFVerifier::handleAccelTables ( )

Verify the information in accelerator tables, if they exist.

Any errors are reported to the stream that was this object was constructed with.

Returns
true if the existing Apple-style accelerator tables verify successfully, false otherwise.

Definition at line 1373 of file DWARFVerifier.cpp.

References D, llvm::DWARFSection::Data, llvm::DWARFDie::dump(), llvm::StringRef::empty(), llvm::WithColor::error(), llvm::DWARFObject::getAppleNamespacesSection(), llvm::DWARFObject::getAppleNamesSection(), llvm::DWARFObject::getAppleObjCSection(), llvm::DWARFObject::getAppleTypesSection(), llvm::DWARFObject::getDebugNamesSection(), llvm::DWARFObject::getStringSection(), llvm::WithColor::note(), and llvm::WithColor::warning().

Referenced by DWARFVerifier(), and llvm::DWARFContext::verify().

◆ handleDebugAbbrev()

bool DWARFVerifier::handleDebugAbbrev ( )

Verify the information in any of the following sections, if available: .debug_abbrev, debug_abbrev.dwo.

Any errors are reported to the stream that was this object was constructed with.

Returns
true if .debug_abbrev and .debug_abbrev.dwo verify successfully, false otherwise.

Definition at line 247 of file DWARFVerifier.cpp.

References llvm::DWARFUnitVector::addUnit(), llvm::StringRef::empty(), llvm::DWARFUnitHeader::extract(), llvm::DWARFObject::getAbbrevDWOSection(), llvm::DWARFObject::getAbbrevSection(), llvm::DWARFObject::getAppleObjCSection(), llvm::DWARFObject::getLineSection(), llvm::DWARFObject::getRangeSection(), llvm::DWARFObject::getStringOffsetSection(), llvm::DWARFObject::getStringSection(), llvm::DataExtractor::isValidOffset(), and llvm_unreachable.

Referenced by DWARFVerifier(), and llvm::DWARFContext::verify().

◆ handleDebugInfo()

bool DWARFVerifier::handleDebugInfo ( )

Verify the information in the .debug_info and .debug_types sections.

Any errors are reported to the stream that this object was constructed with.

Returns
true if all sections verify successfully, false otherwise.

Definition at line 330 of file DWARFVerifier.cpp.

References llvm::DILineInfoSpecifier::AbsoluteFilePath, llvm::any_of(), assert(), llvm::DWARFAttribute::Attr, llvm::dwarf::AttributeString(), llvm::DWARFVerifier::DieRangeInfo::Children, llvm::consumeError(), llvm::DWARFVerifier::DieRangeInfo::contains(), D, llvm::DWARFSection::Data, llvm::Data, llvm::DWARFVerifier::DieRangeInfo::Die, llvm::DWARFDie::dump(), llvm::dump(), llvm::DWARFDebugLine::Row::dumpTableHeader(), llvm::DW_SECT_INFO, llvm::DW_SECT_TYPES, llvm::StringMap< ValueTy, AllocatorTy >::end(), error, llvm::DWARFDie::find(), llvm::StringMap< ValueTy, AllocatorTy >::find(), llvm::DWARFObject::forEachTypesSections(), llvm::format(), llvm::formatv(), llvm::dwarf::FormEncodingString(), llvm::DWARFUnit::getAddressByteSize(), llvm::DWARFDie::getAddressRanges(), llvm::DWARFFormValue::getAsBlock(), llvm::DWARFFormValue::getAsReference(), llvm::DWARFFormValue::getAsSectionOffset(), llvm::DWARFDie::getAttributeValueAsReferencedDie(), llvm::DWARFDie::getDwarfUnit(), llvm::DWARFFormValue::getForm(), llvm::DWARFObject::getInfoSection(), llvm::DWARFObject::getLineSection(), llvm::DWARFUnit::getNextUnitOffset(), llvm::DWARFDie::getOffset(), llvm::DWARFObject::getRangeSection(), llvm::DWARFFormValue::getRawUValue(), llvm::DWARFObject::getStringSection(), llvm::DWARFDie::getTag(), llvm::DWARFUnit::getVersion(), llvm::DWARFVerifier::DieRangeInfo::insert(), llvm::DWARFExpression::Operation::isError(), llvm::dwarf::isType(), llvm::DWARFDie::isValid(), llvm::DWARFVerifier::DieRangeInfo::Ranges, ReportError(), llvm::StringRef::size(), llvm::dwarf::TagString(), llvm::dwarf::toSectionOffset(), llvm::toStringRef(), and llvm::DWARFAttribute::Value.

Referenced by DWARFVerifier(), and llvm::DWARFContext::verify().

◆ handleDebugLine()

bool DWARFVerifier::handleDebugLine ( )

Verify the information in the .debug_line section.

Any errors are reported to the stream that was this object was constructed with.

Returns
true if the .debug_line verifies successfully, false otherwise.

Definition at line 712 of file DWARFVerifier.cpp.

References E, error, llvm::format(), llvm::formatv(), llvm::DataExtractor::getCStr(), llvm::DWARFDie::getTag(), llvm::max(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::reserve(), llvm::dwarf::TagString(), and llvm::dwarf::toString().

Referenced by DWARFVerifier(), and llvm::DWARFContext::verify().


The documentation for this class was generated from the following files: