10 #ifndef LLVM_DEBUGINFO_DWARFDEBUGINFOENTRY_H
11 #define LLVM_DEBUGINFO_DWARFDEBUGINFOENTRY_H
15 #include "llvm/Support/DataTypes.h"
19 class DWARFDebugAranges;
20 class DWARFCompileUnit;
24 struct DWARFDebugInfoEntryInlinedChain;
41 : Offset(0), ParentIdx(0), SiblingIdx(0), AbbrevDecl(0) {}
44 unsigned indent = 0)
const;
46 uint16_t attr, uint16_t form,
unsigned indent = 0)
const;
53 uint32_t
getTag()
const {
return AbbrevDecl ? AbbrevDecl->
getTag() : 0; }
54 bool isNULL()
const {
return AbbrevDecl == 0; }
71 return ParentIdx > 0 ?
this - ParentIdx : 0;
74 return ParentIdx > 0 ?
this - ParentIdx : 0;
79 return SiblingIdx > 0 ?
this + SiblingIdx : 0;
82 return SiblingIdx > 0 ?
this + SiblingIdx : 0;
98 ParentIdx =
this - parent;
106 SiblingIdx = sibling -
this;
120 const char *FailValue)
const;
123 uint64_t FailValue)
const;
127 uint64_t FailValue)
const;
130 uint64_t FailValue)
const;
134 uint64_t FailValue)
const;
139 uint64_t &HighPC)
const;
143 uint32_t CUOffsetInAranges)
const;
146 const uint64_t Address)
const;
157 uint32_t &CallLine, uint32_t &CallColumn)
const;
void dumpAttribute(raw_ostream &OS, const DWARFUnit *u, uint32_t *offset_ptr, uint16_t attr, uint16_t form, unsigned indent=0) const
uint64_t getAttributeValueAsAddress(const DWARFUnit *U, const uint16_t Attr, uint64_t FailValue) const
DWARFDebugInfoEntryInlinedChain getInlinedChainForAddress(const DWARFUnit *U, const uint64_t Address) const
const DWARFDebugInfoEntryMinimal * getFirstChild() const
const char * getSubroutineName(const DWARFUnit *U) const
const char * getAttributeValueAsString(const DWARFUnit *U, const uint16_t Attr, const char *FailValue) const
void setSibling(DWARFDebugInfoEntryMinimal *sibling)
bool addressRangeContainsAddress(const DWARFUnit *U, const uint64_t Address) const
SmallVector< DWARFDebugInfoEntryMinimal, 4 > DIEs
DWARFDebugInfoEntryMinimal * getFirstChild()
uint64_t getAttributeValueAsReference(const DWARFUnit *U, const uint16_t Attr, uint64_t FailValue) const
const DWARFAbbreviationDeclaration * getAbbreviationDeclarationPtr() const
DWARFDebugInfoEntryMinimal * getSibling()
DWARFDebugInfoEntryMinimal - A DIE with only the minimum required data.
const DWARFDebugInfoEntryMinimal * getSibling() const
DWARFDebugInfoEntryInlinedChain()
void buildAddressRangeTable(const DWARFUnit *U, DWARFDebugAranges *DebugAranges, uint32_t CUOffsetInAranges) const
uint64_t getAttributeValueAsUnsignedConstant(const DWARFUnit *U, const uint16_t Attr, uint64_t FailValue) const
uint64_t getAttributeValueAsSectionOffset(const DWARFUnit *U, const uint16_t Attr, uint64_t FailValue) const
const DWARFDebugInfoEntryMinimal * getParent() const
uint32_t getOffset() const
void getCallerFrame(const DWARFUnit *U, uint32_t &CallFile, uint32_t &CallLine, uint32_t &CallColumn) const
uint32_t getNumAttributes() const
void setParent(DWARFDebugInfoEntryMinimal *parent)
uint32_t getNumAttributes() const
void dump(raw_ostream &OS, const DWARFUnit *u, unsigned recurseDepth, unsigned indent=0) const
DWARFDebugInfoEntryMinimal * getParent()
bool isSubroutineDIE() const
bool getLowAndHighPC(const DWARFUnit *U, uint64_t &LowPC, uint64_t &HighPC) const
DWARFDebugInfoEntryMinimal()
bool isSubprogramDIE() const
Returns true if DIE represents a subprogram (not inlined).
bool getAttributeValue(const DWARFUnit *U, const uint16_t Attr, DWARFFormValue &FormValue) const
bool extractFast(const DWARFUnit *U, uint32_t *OffsetPtr)