LLVM  6.0.0svn
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
llvm::DWARFUnit Class Reference

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

Inheritance diagram for llvm::DWARFUnit:
Inheritance graph
[legend]

Public Member Functions

 DWARFUnit (DWARFContext &Context, const DWARFSection &Section, const DWARFDebugAbbrev *DA, const DWARFSection *RS, StringRef SS, const DWARFSection &SOS, const DWARFSection *AOS, const DWARFSection &LS, bool LE, bool IsDWO, const DWARFUnitSectionBase &UnitSection, const DWARFUnitIndex::Entry *IndexEntry=nullptr)
 
virtual ~DWARFUnit ()
 
DWARFContextgetContext () const
 
const DWARFSectiongetLineSection () const
 
StringRef getStringSection () const
 
const DWARFSectiongetStringOffsetSection () const
 
void setAddrOffsetSection (const DWARFSection *AOS, uint32_t Base)
 
void updateAddressDieMap (DWARFDie Die)
 Recursively update address to Die map. More...
 
void setRangesSection (const DWARFSection *RS, uint32_t Base)
 
bool getAddrOffsetSectionItem (uint32_t Index, uint64_t &Result) const
 
bool getStringOffsetSectionItem (uint32_t Index, uint64_t &Result) const
 
DWARFDataExtractor getDebugInfoExtractor () const
 
DataExtractor getStringExtractor () const
 
bool extract (DataExtractor debug_info, uint32_t *offset_ptr)
 
bool extractRangeList (uint32_t RangeListOffset, DWARFDebugRangeList &RangeList) const
 extractRangeList - extracts the range list referenced by this compile unit from .debug_ranges section. More...
 
void clear ()
 
uint32_t getOffset () const
 
uint32_t getNextUnitOffset () const
 
uint32_t getLength () const
 
const DWARFFormParamsgetFormParams () const
 
uint16_t getVersion () const
 
dwarf::DwarfFormat getFormat () const
 
uint8_t getAddressByteSize () const
 
uint8_t getRefAddrByteSize () const
 
uint8_t getDwarfOffsetByteSize () const
 
const DWARFAbbreviationDeclarationSetgetAbbreviations () const
 
uint8_t getUnitType () const
 
llvm::Optional< BaseAddressgetBaseAddress () const
 
void setBaseAddress (BaseAddress BaseAddr)
 
DWARFDie getUnitDIE (bool ExtractUnitDIEOnly=true)
 
const chargetCompilationDir ()
 
Optional< uint64_t > getDWOId ()
 
void collectAddressRanges (DWARFAddressRangesVector &CURanges)
 
DWARFDie getSubroutineForAddress (uint64_t Address)
 Returns subprogram DIE with address range encompassing the provided address. More...
 
void getInlinedChainForAddress (uint64_t Address, SmallVectorImpl< DWARFDie > &InlinedChain)
 getInlinedChainForAddress - fetches inlined chain for a given address. More...
 
const DWARFUnitSectionBasegetUnitSection () const
 getUnitSection - Return the DWARFUnitSection containing this unit. More...
 
unsigned getNumDIEs ()
 Returns the number of DIEs in the unit. More...
 
uint32_t getDIEIndex (const DWARFDie &D)
 Return the index of a DIE inside the unit's DIE vector. More...
 
DWARFDie getDIEAtIndex (unsigned Index)
 Return the DIE object at the given index. More...
 
DWARFDie getParent (const DWARFDebugInfoEntry *Die)
 
DWARFDie getSibling (const DWARFDebugInfoEntry *Die)
 
DWARFDie getFirstChild (const DWARFDebugInfoEntry *Die)
 
DWARFDie getDIEForOffset (uint32_t Offset)
 Return the DIE object for a given offset inside the unit's DIE vector. More...
 
uint32_t getLineTableOffset () const
 
die_iterator_range dies ()
 

Static Public Member Functions

static bool isMatchingUnitTypeAndTag (uint8_t UnitType, dwarf::Tag Tag)
 
static uint32_t getDWARF5HeaderSize (uint8_t UnitType)
 Return the number of bytes for the header of a unit of UnitType type. More...
 

Protected Member Functions

virtual bool extractImpl (DataExtractor debug_info, uint32_t *offset_ptr)
 
virtual uint32_t getHeaderSize () const
 Size in bytes of the unit header. More...
 

Detailed Description

Definition at line 168 of file DWARFUnit.h.

Constructor & Destructor Documentation

◆ DWARFUnit()

DWARFUnit::DWARFUnit ( DWARFContext Context,
const DWARFSection Section,
const DWARFDebugAbbrev DA,
const DWARFSection RS,
StringRef  SS,
const DWARFSection SOS,
const DWARFSection AOS,
const DWARFSection LS,
bool  LE,
bool  IsDWO,
const DWARFUnitSectionBase UnitSection,
const DWARFUnitIndex::Entry IndexEntry = nullptr 
)

Definition at line 49 of file DWARFUnit.cpp.

References clear(), and ~DWARFUnit().

◆ ~DWARFUnit()

DWARFUnit::~DWARFUnit ( )
virtualdefault

Referenced by DWARFUnit().

Member Function Documentation

◆ clear()

void DWARFUnit::clear ( )

Definition at line 155 of file DWARFUnit.cpp.

References llvm::dwarf::DWARF32.

Referenced by DWARFUnit(), and extract().

◆ collectAddressRanges()

void DWARFUnit::collectAddressRanges ( DWARFAddressRangesVector CURanges)

◆ dies()

die_iterator_range llvm::DWARFUnit::dies ( )
inline

Definition at line 406 of file DWARFUnit.h.

References llvm::DWARFUnitSectionBase::parseDWO().

◆ extract()

bool DWARFUnit::extract ( DataExtractor  debug_info,
uint32_t offset_ptr 
)

Definition at line 129 of file DWARFUnit.cpp.

References clear(), extractImpl(), and llvm::DataExtractor::isValidOffset().

◆ extractImpl()

bool DWARFUnit::extractImpl ( DataExtractor  debug_info,
uint32_t offset_ptr 
)
protectedvirtual

◆ extractRangeList()

bool DWARFUnit::extractRangeList ( uint32_t  RangeListOffset,
DWARFDebugRangeList RangeList 
) const

extractRangeList - extracts the range list referenced by this compile unit from .debug_ranges section.

Returns true on success. Requires that compile unit is already extracted.

Definition at line 145 of file DWARFUnit.cpp.

References assert(), llvm::DWARFDebugRangeList::extract(), getAddressByteSize(), and llvm::DWARFContext::getDWARFObj().

◆ getAbbreviations()

const DWARFAbbreviationDeclarationSet * DWARFUnit::getAbbreviations ( ) const

◆ getAddressByteSize()

uint8_t llvm::DWARFUnit::getAddressByteSize ( ) const
inline

◆ getAddrOffsetSectionItem()

bool DWARFUnit::getAddrOffsetSectionItem ( uint32_t  Index,
uint64_t &  Result 
) const

◆ getBaseAddress()

llvm::Optional<BaseAddress> llvm::DWARFUnit::getBaseAddress ( ) const
inline

Definition at line 325 of file DWARFUnit.h.

◆ getCompilationDir()

const char * DWARFUnit::getCompilationDir ( )

◆ getContext()

DWARFContext& llvm::DWARFUnit::getContext ( ) const
inline

Definition at line 232 of file DWARFUnit.h.

References Context.

Referenced by dumpAttribute(), and dumpLocation().

◆ getDebugInfoExtractor()

DWARFDataExtractor DWARFUnit::getDebugInfoExtractor ( ) const

◆ getDIEAtIndex()

DWARFDie llvm::DWARFUnit::getDIEAtIndex ( unsigned  Index)
inline

Return the DIE object at the given index.

Definition at line 373 of file DWARFUnit.h.

References assert(), and getParent().

Referenced by llvm::DWARFVerifier::DieRangeInfo::intersects().

◆ getDIEForOffset()

DWARFDie llvm::DWARFUnit::getDIEForOffset ( uint32_t  Offset)
inline

Return the DIE object for a given offset inside the unit's DIE vector.

The unit needs to have its DIEs extracted for this method to work.

Definition at line 386 of file DWARFUnit.h.

References assert(), and llvm::lower_bound().

Referenced by llvm::DWARFTypeUnit::dump().

◆ getDIEIndex()

uint32_t llvm::DWARFUnit::getDIEIndex ( const DWARFDie D)
inline

Return the index of a DIE inside the unit's DIE vector.

It is illegal to call this method with a DIE that hasn't be created by this unit. In other word, it's illegal to call this method on a DIE that isn't accessible by following children/sibling links starting from this unit's getUnitDIE().

Definition at line 368 of file DWARFUnit.h.

References llvm::DWARFDie::getDebugInfoEntry().

◆ getDWARF5HeaderSize()

static uint32_t llvm::DWARFUnit::getDWARF5HeaderSize ( uint8_t  UnitType)
inlinestatic

Return the number of bytes for the header of a unit of UnitType type.

This function must be called with a valid unit type which in DWARF5 is defined as one of the following six types.

Definition at line 310 of file DWARFUnit.h.

References llvm_unreachable.

◆ getDwarfOffsetByteSize()

uint8_t llvm::DWARFUnit::getDwarfOffsetByteSize ( ) const
inline

◆ getDWOId()

Optional< uint64_t > DWARFUnit::getDWOId ( )

◆ getFirstChild()

DWARFDie DWARFUnit::getFirstChild ( const DWARFDebugInfoEntry Die)

Definition at line 453 of file DWARFUnit.cpp.

References llvm::DWARFDebugInfoEntry::hasChildren(), and I.

◆ getFormat()

dwarf::DwarfFormat llvm::DWARFUnit::getFormat ( ) const
inline

Definition at line 277 of file DWARFUnit.h.

References llvm::DWARFFormParams::Format.

◆ getFormParams()

const DWARFFormParams& llvm::DWARFUnit::getFormParams ( ) const
inline

◆ getHeaderSize()

virtual uint32_t llvm::DWARFUnit::getHeaderSize ( ) const
inlineprotectedvirtual

Size in bytes of the unit header.

Reimplemented in llvm::DWARFTypeUnit.

Definition at line 220 of file DWARFUnit.h.

References llvm::AArch64CC::LE, llvm::AArch64CC::LS, and llvm::ARMBuildAttrs::Section.

Referenced by getDWOId(), and llvm::DWARFTypeUnit::getHeaderSize().

◆ getInlinedChainForAddress()

void DWARFUnit::getInlinedChainForAddress ( uint64_t  Address,
SmallVectorImpl< DWARFDie > &  InlinedChain 
)

getInlinedChainForAddress - fetches inlined chain for a given address.

Returns empty chain if there is no subprogram containing address. The chain is valid as long as parsed compile unit DIEs are not cleared.

Definition at line 389 of file DWARFUnit.cpp.

References assert(), llvm::SmallVectorBase::empty(), llvm::DWARFDie::getParent(), getSubroutineForAddress(), llvm::DWARFDie::isSubroutineDIE(), and llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back().

Referenced by getFunctionNameAndStartLineForAddress(), and llvm::DWARFContext::getInliningInfoForAddress().

◆ getLength()

uint32_t llvm::DWARFUnit::getLength ( ) const
inline

◆ getLineSection()

const DWARFSection& llvm::DWARFUnit::getLineSection ( ) const
inline

Definition at line 234 of file DWARFUnit.h.

Referenced by llvm::DWARFContext::getLineTableForUnit().

◆ getLineTableOffset()

uint32_t llvm::DWARFUnit::getLineTableOffset ( ) const
inline

◆ getNextUnitOffset()

uint32_t llvm::DWARFUnit::getNextUnitOffset ( ) const
inline

◆ getNumDIEs()

unsigned llvm::DWARFUnit::getNumDIEs ( )
inline

Returns the number of DIEs in the unit.

Parses the unit if necessary.

Definition at line 357 of file DWARFUnit.h.

Referenced by llvm::DWARFVerifier::DieRangeInfo::intersects().

◆ getOffset()

uint32_t llvm::DWARFUnit::getOffset ( ) const
inline

Definition at line 271 of file DWARFUnit.h.

Referenced by llvm::DWARFCompileUnit::dump(), llvm::DWARFTypeUnit::dump(), and getDWOId().

◆ getParent()

DWARFDie DWARFUnit::getParent ( const DWARFDebugInfoEntry Die)

Definition at line 414 of file DWARFUnit.cpp.

References llvm::Depth, llvm::DWARFDebugInfoEntry::getDepth(), getUnitDIE(), and I.

◆ getRefAddrByteSize()

uint8_t llvm::DWARFUnit::getRefAddrByteSize ( ) const
inline

◆ getSibling()

DWARFDie DWARFUnit::getSibling ( const DWARFDebugInfoEntry Die)

◆ getStringExtractor()

DataExtractor llvm::DWARFUnit::getStringExtractor ( ) const
inline

Definition at line 258 of file DWARFUnit.h.

References clear(), and extract.

◆ getStringOffsetSection()

const DWARFSection& llvm::DWARFUnit::getStringOffsetSection ( ) const
inline

Definition at line 236 of file DWARFUnit.h.

◆ getStringOffsetSectionItem()

bool DWARFUnit::getStringOffsetSectionItem ( uint32_t  Index,
uint64_t &  Result 
) const

◆ getStringSection()

StringRef llvm::DWARFUnit::getStringSection ( ) const
inline

Definition at line 235 of file DWARFUnit.h.

◆ getSubroutineForAddress()

DWARFDie DWARFUnit::getSubroutineForAddress ( uint64_t  Address)

Returns subprogram DIE with address range encompassing the provided address.

The pointer is alive as long as parsed compile unit DIEs are not cleared.

Definition at line 374 of file DWARFUnit.cpp.

References getUnitDIE(), and updateAddressDieMap().

Referenced by llvm::DWARFContext::getDIEsForAddress(), and getInlinedChainForAddress().

◆ getUnitDIE()

DWARFDie llvm::DWARFUnit::getUnitDIE ( bool  ExtractUnitDIEOnly = true)
inline

◆ getUnitSection()

const DWARFUnitSectionBase& llvm::DWARFUnit::getUnitSection ( ) const
inline

getUnitSection - Return the DWARFUnitSection containing this unit.

Definition at line 353 of file DWARFUnit.h.

◆ getUnitType()

uint8_t llvm::DWARFUnit::getUnitType ( ) const
inline

Definition at line 286 of file DWARFUnit.h.

Referenced by llvm::DWARFCompileUnit::dump(), and llvm::DWARFTypeUnit::dump().

◆ getVersion()

uint16_t llvm::DWARFUnit::getVersion ( ) const
inline

◆ isMatchingUnitTypeAndTag()

static bool llvm::DWARFUnit::isMatchingUnitTypeAndTag ( uint8_t  UnitType,
dwarf::Tag  Tag 
)
inlinestatic

Definition at line 288 of file DWARFUnit.h.

References llvm::dwarf::isUnitType().

Referenced by llvm::DWARFVerifier::DieRangeInfo::intersects().

◆ setAddrOffsetSection()

void llvm::DWARFUnit::setAddrOffsetSection ( const DWARFSection AOS,
uint32_t  Base 
)
inline

Definition at line 240 of file DWARFUnit.h.

◆ setBaseAddress()

void llvm::DWARFUnit::setBaseAddress ( BaseAddress  BaseAddr)
inline

Definition at line 327 of file DWARFUnit.h.

Referenced by getDWOId().

◆ setRangesSection()

void llvm::DWARFUnit::setRangesSection ( const DWARFSection RS,
uint32_t  Base 
)
inline

Definition at line 248 of file DWARFUnit.h.

◆ updateAddressDieMap()

void DWARFUnit::updateAddressDieMap ( DWARFDie  Die)

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