class DWARFUnit

Declaration

class DWARFUnit { /* full declaration omitted */ };

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:194

Method Overview

Methods

DWARFUnit(llvm::DWARFContext& Context,
          const llvm::DWARFSection& Section,
          const llvm::DWARFUnitHeader& Header,
          const llvm::DWARFDebugAbbrev* DA,
          const llvm::DWARFSection* RS,
          const llvm::DWARFSection* LocSection,
          llvm::StringRef SS,
          const llvm::DWARFSection& SOS,
          const llvm::DWARFSection* AOS,
          const llvm::DWARFSection& LS,
          bool LE,
          bool IsDWO,
          const llvm::DWARFUnitVector& UnitVector)

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:267

Parameters

llvm::DWARFContext& Context
const llvm::DWARFSection& Section
const llvm::DWARFUnitHeader& Header
const llvm::DWARFDebugAbbrev* DA
const llvm::DWARFSection* RS
const llvm::DWARFSection* LocSection
llvm::StringRef SS
const llvm::DWARFSection& SOS
const llvm::DWARFSection* AOS
const llvm::DWARFSection& LS
bool LE
bool IsDWO
const llvm::DWARFUnitVector& UnitVector

void clear()

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:338

Expected<llvm::DWARFAddressRangesVector>
collectAddressRanges()

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:444

Expected<Optional<
    llvm::StrOffsetsContributionDescriptor>>
determineStringOffsetsTableContribution(
    llvm::DWARFDataExtractor& DA)

Description

Find the unit's contribution to the string offsets table and determine its length and form. The given offset is expected to be derived from the unit DIE's DW_AT_str_offsets_base attribute.

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:257

Parameters

llvm::DWARFDataExtractor& DA

Expected<Optional<
    llvm::StrOffsetsContributionDescriptor>>
determineStringOffsetsTableContributionDWO(
    llvm::DWARFDataExtractor& DA)

Description

Find the unit's contribution to the string offsets table and determine its length and form. The given offset is expected to be 0 in a dwo file or, in a dwp file, the start of the unit's contribution to the string offsets table section (as determined by the index table).

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:264

Parameters

llvm::DWARFDataExtractor& DA

llvm::DWARFUnit::die_iterator_range dies()

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:515

virtual void dump(llvm::raw_ostream& OS,
                  llvm::DIDumpOptions DumpOpts)

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:520

Parameters

llvm::raw_ostream& OS
llvm::DIDumpOptions DumpOpts

llvm::Error extractRangeList(
    uint64_t RangeListOffset,
    llvm::DWARFDebugRangeList& RangeList) const

Description

Extract the range list referenced by this compile unit from the .debug_ranges section. If the extraction is unsuccessful, an error is returned. Successful extraction requires that the compile unit has already been extracted.

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:336

Parameters

uint64_t RangeListOffset
llvm::DWARFDebugRangeList& RangeList

Expected<llvm::DWARFLocationExpressionsVector>
findLoclistFromOffset(uint64_t Offset)

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:447

Parameters

uint64_t Offset

Expected<llvm::DWARFAddressRangesVector>
findRnglistFromIndex(uint32_t Index)

Description

Return a vector of address ranges retrieved from an encoded range list whose offset is found via a table lookup given an index (DWARF v5 and later).

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:424

Parameters

uint32_t Index

Expected<llvm::DWARFAddressRangesVector>
findRnglistFromOffset(uint64_t Offset)

Description

Return a vector of address ranges resulting from a (possibly encoded) range list starting at a given offset in the appropriate ranges section.

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:419

Parameters

uint64_t Offset

const llvm::DWARFAbbreviationDeclarationSet*
getAbbreviations() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:355

Optional<object::SectionedAddress>
getAddrOffsetSectionItem(uint32_t Index) const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:321

Parameters

uint32_t Index

uint8_t getAddressByteSize() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:284

llvm::Optional<object::SectionedAddress>
getBaseAddress()

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:394

const char* getCompilationDir()

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:410

llvm::DWARFContext& getContext() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:277

llvm::DWARFDie getDIEAtIndex(unsigned int Index)

Description

Return the DIE object at the given index.

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:481

Parameters

unsigned int Index

llvm::DWARFDie getDIEForOffset(uint64_t Offset)

Description

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.

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:496

Parameters

uint64_t Offset

uint32_t getDIEIndex(const llvm::DWARFDie& D)

Description

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().

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:476

Parameters

const llvm::DWARFDie& D

static uint32_t getDWARF5HeaderSize(
    uint8_t UnitType)

Description

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.

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:379

Parameters

uint8_t UnitType

Optional<uint64_t> getDWOId()

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:411

llvm::DWARFDataExtractor getDebugInfoExtractor()
    const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:324

uint8_t getDwarfOffsetByteSize() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:286

uint8_t getDwarfStringOffsetsByteSize() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:345

llvm::DWARFDie getFirstChild(
    const llvm::DWARFDebugInfoEntry* Die)

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:489

Parameters

const llvm::DWARFDebugInfoEntry* Die

const dwarf::FormParams& getFormParams() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:280

const llvm::DWARFUnitHeader& getHeader() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:248

uint32_t getHeaderSize() const

Description

Size in bytes of the parsed unit header.

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:251

const llvm::DWARFSection& getInfoSection() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:278

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

Description

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.

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:457

Parameters

uint64_t Address
SmallVectorImpl<llvm::DWARFDie>& InlinedChain

llvm::DWARFDie getLastChild(
    const llvm::DWARFDebugInfoEntry* Die)

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:490

Parameters

const llvm::DWARFDebugInfoEntry* Die

uint64_t getLength() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:289

const llvm::DWARFSection& getLineSection() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:293

uint32_t getLineTableOffset() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:508

uint64_t getLocSectionBase() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:316

const llvm::DWARFLocationTable& getLocationTable()

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:330

Optional<uint64_t> getLoclistOffset(
    uint32_t Index)

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:437

Parameters

uint32_t Index

uint64_t getNextUnitOffset() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:292

llvm::DWARFDie getNonSkeletonUnitDIE(
    bool ExtractUnitDIEOnly = true)

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:403

Parameters

bool ExtractUnitDIEOnly = true

unsigned int getNumDIEs()

Description

Returns the number of DIEs in the unit. Parses the unit if necessary.

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:465

uint64_t getOffset() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:279

llvm::DWARFDie getParent(
    const llvm::DWARFDebugInfoEntry* Die)

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:486

Parameters

const llvm::DWARFDebugInfoEntry* Die

llvm::DWARFDie getPreviousSibling(
    const llvm::DWARFDebugInfoEntry* Die)

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:488

Parameters

const llvm::DWARFDebugInfoEntry* Die

uint8_t getRefAddrByteSize() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:285

Optional<uint64_t> getRnglistOffset(
    uint32_t Index)

Description

Return a rangelist's offset based on an index. The index designates an entry in the rangelist table's offset array and is supplied by DW_FORM_rnglistx.

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:429

Parameters

uint32_t Index

llvm::DWARFDie getSibling(
    const llvm::DWARFDebugInfoEntry* Die)

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:487

Parameters

const llvm::DWARFDebugInfoEntry* Die

llvm::DataExtractor getStringExtractor() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:326

const llvm::DWARFSection& getStringOffsetSection()
    const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:295

Optional<uint64_t> getStringOffsetSectionItem(
    uint32_t Index) const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:322

Parameters

uint32_t Index

uint64_t getStringOffsetsBase() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:350

const Optional<
    llvm::StrOffsetsContributionDescriptor>&
getStringOffsetsTableContribution() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:341

llvm::StringRef getStringSection() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:294

llvm::DWARFDie getSubroutineForAddress(
    uint64_t Address)

Description

Returns subprogram DIE with address range encompassing the provided address. The pointer is alive as long as parsed compile unit DIEs are not cleared.

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:452

Parameters

uint64_t Address

llvm::DWARFDie getUnitDIE(
    bool ExtractUnitDIEOnly = true)

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:396

Parameters

bool ExtractUnitDIEOnly = true

uint8_t getUnitType() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:290

const llvm::DWARFUnitVector& getUnitVector() const

Description

Return the DWARFUnitVector containing this unit.

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:461

uint16_t getVersion() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:283

bool isDWOUnit() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:276

static bool isMatchingUnitTypeAndTag(
    uint8_t UnitType,
    dwarf::Tag Tag)

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:357

Parameters

uint8_t UnitType
dwarf::Tag Tag

bool isTypeUnit() const

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:291

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

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:299

Parameters

const llvm::DWARFSection* AOS
uint32_t Base

void setDWOId(uint64_t NewID)

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:415

Parameters

uint64_t NewID

void setLocSection(const llvm::DWARFSection* LS,
                   uint64_t Base)

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:311

Parameters

const llvm::DWARFSection* LS
uint64_t Base

void setRangesSection(
    const llvm::DWARFSection* RS,
    uint64_t Base)

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:307

Parameters

const llvm::DWARFSection* RS
uint64_t Base

llvm::Error tryExtractDIEsIfNeeded(bool CUDieOnly)

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:522

Parameters

bool CUDieOnly

void updateAddressDieMap(llvm::DWARFDie Die)

Description

Recursively update address to Die map.

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:305

Parameters

llvm::DWARFDie Die

virtual ~DWARFUnit()

Declared at: llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h:274