LLVM
13.0.0git
|
#include "CodeGen/AsmPrinter/DwarfCompileUnit.h"
Classes | |
struct | BaseTypeRef |
struct | GlobalExpr |
A pair of GlobalVariable and DIExpression. More... | |
Public Types | |
using | InlinedEntity = DbgValueHistoryMap::InlinedEntity |
Find abstract variable associated with Var. More... | |
Public Member Functions | |
DwarfCompileUnit (unsigned UID, const DICompileUnit *Node, AsmPrinter *A, DwarfDebug *DW, DwarfFile *DWU, UnitKind Kind=UnitKind::Full) | |
bool | hasRangeLists () const |
unsigned | getUniqueID () const |
DwarfCompileUnit * | getSkeleton () const |
bool | includeMinimalInlineScopes () const |
void | initStmtList () |
void | applyStmtList (DIE &D) |
Apply the DW_AT_stmt_list from this compile unit to the specified DIE. More... | |
MCSymbol * | getLineTableStartSym () const |
Get line table start symbol for this unit. More... | |
DIE * | getOrCreateGlobalVariableDIE (const DIGlobalVariable *GV, ArrayRef< GlobalExpr > GlobalExprs) |
Get or create global variable DIE. More... | |
DIE * | getOrCreateCommonBlock (const DICommonBlock *CB, ArrayRef< GlobalExpr > GlobalExprs) |
void | addLocationAttribute (DIE *ToDIE, const DIGlobalVariable *GV, ArrayRef< GlobalExpr > GlobalExprs) |
void | addLabelAddress (DIE &Die, dwarf::Attribute Attribute, const MCSymbol *Label) |
addLabelAddress - Add a dwarf label attribute data and value using either DW_FORM_addr or DW_FORM_GNU_addr_index. More... | |
void | addLocalLabelAddress (DIE &Die, dwarf::Attribute Attribute, const MCSymbol *Label) |
addLocalLabelAddress - Add a dwarf label attribute data and value using DW_FORM_addr only. More... | |
DwarfCompileUnit & | getCU () override |
unsigned | getOrCreateSourceID (const DIFile *File) override |
Look up the source ID for the given file. More... | |
void | addImportedEntity (const DIImportedEntity *IE) |
void | addRange (RangeSpan Range) |
addRange - Add an address range to the list of ranges for this unit. More... | |
void | attachLowHighPC (DIE &D, const MCSymbol *Begin, const MCSymbol *End) |
DIE & | updateSubprogramScopeDIE (const DISubprogram *SP) |
Find DIE for the given subprogram and attach appropriate DW_AT_low_pc and DW_AT_high_pc attributes. More... | |
void | constructScopeDIE (LexicalScope *Scope, SmallVectorImpl< DIE * > &FinalChildren) |
void | addScopeRangeList (DIE &ScopeDIE, SmallVector< RangeSpan, 2 > Range) |
A helper function to construct a RangeSpanList for a given lexical scope. More... | |
void | attachRangesOrLowHighPC (DIE &D, SmallVector< RangeSpan, 2 > Ranges) |
void | attachRangesOrLowHighPC (DIE &D, const SmallVectorImpl< InsnRange > &Ranges) |
DIE * | constructInlinedScopeDIE (LexicalScope *Scope) |
This scope represents inlined body of a function. More... | |
DIE * | constructLexicalScopeDIE (LexicalScope *Scope) |
Construct new DW_TAG_lexical_block for this scope and attach DW_AT_low_pc/DW_AT_high_pc labels. More... | |
DIE * | constructVariableDIE (DbgVariable &DV, bool Abstract=false) |
constructVariableDIE - Construct a DIE for the given DbgVariable. More... | |
DIE * | constructVariableDIE (DbgVariable &DV, const LexicalScope &Scope, DIE *&ObjectPointer) |
DIE * | constructLabelDIE (DbgLabel &DL, const LexicalScope &Scope) |
Construct a DIE for the given DbgLabel. More... | |
DIE * | createScopeChildrenDIE (LexicalScope *Scope, SmallVectorImpl< DIE * > &Children, bool *HasNonScopeChildren=nullptr) |
A helper function to create children of a Scope DIE. More... | |
void | createBaseTypeDIEs () |
DIE & | constructSubprogramScopeDIE (const DISubprogram *Sub, LexicalScope *Scope) |
Construct a DIE for this subprogram scope. More... | |
DIE * | createAndAddScopeChildren (LexicalScope *Scope, DIE &ScopeDIE) |
void | constructAbstractSubprogramScopeDIE (LexicalScope *Scope) |
bool | useGNUAnalogForDwarf5Feature () const |
Whether to use the GNU analog for a DWARF5 tag, attribute, or location atom. More... | |
dwarf::Tag | getDwarf5OrGNUTag (dwarf::Tag Tag) const |
This takes a DWARF 5 tag and returns it or a GNU analog. More... | |
dwarf::Attribute | getDwarf5OrGNUAttr (dwarf::Attribute Attr) const |
This takes a DWARF 5 attribute and returns it or a GNU analog. More... | |
dwarf::LocationAtom | getDwarf5OrGNULocationAtom (dwarf::LocationAtom Loc) const |
This takes a DWARF 5 location atom and either returns it or a GNU analog. More... | |
DIE & | constructCallSiteEntryDIE (DIE &ScopeDIE, DIE *CalleeDIE, bool IsTail, const MCSymbol *PCAddr, const MCSymbol *CallAddr, unsigned CallReg) |
Construct a call site entry DIE describing a call within Scope to a callee described by CalleeDIE . More... | |
void | constructCallSiteParmEntryDIEs (DIE &CallSiteDIE, SmallVector< DbgCallSiteParam, 4 > &Params) |
Construct call site parameter DIEs for the CallSiteDIE . More... | |
DIE * | constructImportedEntityDIE (const DIImportedEntity *Module) |
Construct import_module DIE. More... | |
void | finishSubprogramDefinition (const DISubprogram *SP) |
void | finishEntityDefinition (const DbgEntity *Entity) |
DbgEntity * | getExistingAbstractEntity (const DINode *Node) |
void | createAbstractEntity (const DINode *Node, LexicalScope *Scope) |
void | setSkeleton (DwarfCompileUnit &Skel) |
Set the skeleton unit associated with this unit. More... | |
unsigned | getHeaderSize () const override |
Compute the size of a header for this unit, not including the initial length field. More... | |
unsigned | getLength () |
void | emitHeader (bool UseOffsets) override |
Emit the header for this unit, not including the initial length field. More... | |
void | addAddrTableBase () |
Add the DW_AT_addr_base attribute to the unit DIE. More... | |
MCSymbol * | getLabelBegin () const |
MCSymbol * | getMacroLabelBegin () const |
void | addGlobalName (StringRef Name, const DIE &Die, const DIScope *Context) override |
Add a new global name to the compile unit. More... | |
void | addGlobalNameForTypeUnit (StringRef Name, const DIScope *Context) |
Add a new global name present in a type unit to this compile unit. More... | |
void | addGlobalType (const DIType *Ty, const DIE &Die, const DIScope *Context) override |
Add a new global type to the compile unit. More... | |
void | addGlobalTypeUnitType (const DIType *Ty, const DIScope *Context) |
Add a new global type present in a type unit to this compile unit. More... | |
const StringMap< const DIE * > & | getGlobalNames () const |
const StringMap< const DIE * > & | getGlobalTypes () const |
void | addVariableAddress (const DbgVariable &DV, DIE &Die, MachineLocation Location) |
Add DW_AT_location attribute for a DbgVariable based on provided MachineLocation. More... | |
void | addAddress (DIE &Die, dwarf::Attribute Attribute, const MachineLocation &Location) |
Add an address attribute to a die based on the location provided. More... | |
void | addComplexAddress (const DbgVariable &DV, DIE &Die, dwarf::Attribute Attribute, const MachineLocation &Location) |
Start with the address based on the location provided, and generate the DWARF information necessary to find the actual variable (navigating the extra location information encoded in the type) based on the starting location. More... | |
void | addLocationList (DIE &Die, dwarf::Attribute Attribute, unsigned Index) |
Add a Dwarf loclistptr attribute data and value. More... | |
void | applyVariableAttributes (const DbgVariable &Var, DIE &VariableDie) |
void | addExpr (DIELoc &Die, dwarf::Form Form, const MCExpr *Expr) |
Add a Dwarf expression attribute data and value. More... | |
void | applySubprogramAttributesToDefinition (const DISubprogram *SP, DIE &SPDie) |
void | applyLabelAttributes (const DbgLabel &Label, DIE &LabelDie) |
const SmallVectorImpl< RangeSpan > & | getRanges () const |
getRanges - Get the list of ranges for this unit. More... | |
SmallVector< RangeSpan, 2 > | takeRanges () |
void | setBaseAddress (const MCSymbol *Base) |
const MCSymbol * | getBaseAddress () const |
uint64_t | getDWOId () const |
void | setDWOId (uint64_t DwoId) |
bool | hasDwarfPubSections () const |
void | addBaseTypeRef (DIEValueList &Die, int64_t Idx) |
![]() | |
AsmPrinter * | getAsmPrinter () const |
MCSymbol * | getEndLabel () const |
uint16_t | getLanguage () const |
const DICompileUnit * | getCUNode () const |
DwarfDebug & | getDwarfDebug () const |
bool | hasContent () const |
Return true if this compile unit has something to write out. More... | |
std::string | getParentContextString (const DIScope *Context) const |
Get string containing language specific context for a global name. More... | |
DIE * | getDIE (const DINode *D) const |
Returns the DIE map slot for the specified debug variable. More... | |
DIELoc * | getDIELoc () |
Returns a fresh newly allocated DIELoc. More... | |
void | insertDIE (const DINode *Desc, DIE *D) |
Insert DIE into the map. More... | |
void | insertDIE (DIE *D) |
void | addFlag (DIE &Die, dwarf::Attribute Attribute) |
Add a flag that is true to the DIE. More... | |
void | addUInt (DIEValueList &Die, dwarf::Attribute Attribute, Optional< dwarf::Form > Form, uint64_t Integer) |
Add an unsigned integer attribute data and value. More... | |
void | addUInt (DIEValueList &Block, dwarf::Form Form, uint64_t Integer) |
void | addSInt (DIEValueList &Die, dwarf::Attribute Attribute, Optional< dwarf::Form > Form, int64_t Integer) |
Add an signed integer attribute data and value. More... | |
void | addSInt (DIELoc &Die, Optional< dwarf::Form > Form, int64_t Integer) |
void | addString (DIE &Die, dwarf::Attribute Attribute, StringRef Str) |
Add a string attribute data and value. More... | |
DIEValueList::value_iterator | addLabel (DIEValueList &Die, dwarf::Attribute Attribute, dwarf::Form Form, const MCSymbol *Label) |
Add a Dwarf label attribute data and value. More... | |
void | addLabel (DIELoc &Die, dwarf::Form Form, const MCSymbol *Label) |
void | addSectionOffset (DIE &Die, dwarf::Attribute Attribute, uint64_t Integer) |
Add an offset into a section attribute data and value. More... | |
void | addOpAddress (DIELoc &Die, const MCSymbol *Sym) |
Add a dwarf op address data and value using the form given and an op of either DW_FORM_addr or DW_FORM_GNU_addr_index. More... | |
void | addPoolOpAddress (DIEValueList &Die, const MCSymbol *Label) |
void | addLabelDelta (DIEValueList &Die, dwarf::Attribute Attribute, const MCSymbol *Hi, const MCSymbol *Lo) |
Add a label delta attribute data and value. More... | |
void | addDIEEntry (DIE &Die, dwarf::Attribute Attribute, DIE &Entry) |
Add a DIE attribute data and value. More... | |
void | addDIEEntry (DIE &Die, dwarf::Attribute Attribute, DIEEntry Entry) |
Add a DIE attribute data and value. More... | |
void | addDIETypeSignature (DIE &Die, uint64_t Signature) |
Add a type's DW_AT_signature and set the declaration flag. More... | |
void | addBlock (DIE &Die, dwarf::Attribute Attribute, DIELoc *Loc) |
Add block data. More... | |
void | addBlock (DIE &Die, dwarf::Attribute Attribute, DIEBlock *Block) |
Add block data. More... | |
void | addBlock (DIE &Die, dwarf::Attribute Attribute, dwarf::Form Form, DIEBlock *Block) |
void | addSourceLine (DIE &Die, unsigned Line, const DIFile *File) |
Add location information to specified debug information entry. More... | |
void | addSourceLine (DIE &Die, const DILocalVariable *V) |
void | addSourceLine (DIE &Die, const DIGlobalVariable *G) |
void | addSourceLine (DIE &Die, const DISubprogram *SP) |
void | addSourceLine (DIE &Die, const DILabel *L) |
void | addSourceLine (DIE &Die, const DIType *Ty) |
void | addSourceLine (DIE &Die, const DIObjCProperty *Ty) |
void | addConstantValue (DIE &Die, const ConstantInt *CI, const DIType *Ty) |
Add constant value entry in variable DIE. More... | |
void | addConstantValue (DIE &Die, const APInt &Val, const DIType *Ty) |
void | addConstantValue (DIE &Die, const APInt &Val, bool Unsigned) |
void | addConstantValue (DIE &Die, uint64_t Val, const DIType *Ty) |
void | addConstantValue (DIE &Die, bool Unsigned, uint64_t Val) |
void | addConstantFPValue (DIE &Die, const ConstantFP *CFP) |
Add constant value entry in variable DIE. More... | |
void | addLinkageName (DIE &Die, StringRef LinkageName) |
Add a linkage name, if it isn't empty. More... | |
void | addTemplateParams (DIE &Buffer, DINodeArray TParams) |
Add template parameters in buffer. More... | |
void | addThrownTypes (DIE &Die, DINodeArray ThrownTypes) |
Add thrown types. More... | |
void | addType (DIE &Entity, const DIType *Ty, dwarf::Attribute Attribute=dwarf::DW_AT_type) |
Add a new type attribute to the specified entity. More... | |
DIE * | getOrCreateNameSpace (const DINamespace *NS) |
DIE * | getOrCreateModule (const DIModule *M) |
DIE * | getOrCreateSubprogramDIE (const DISubprogram *SP, bool Minimal=false) |
void | applySubprogramAttributes (const DISubprogram *SP, DIE &SPDie, bool SkipSPAttributes=false) |
DIE * | createTypeDIE (const DIScope *Context, DIE &ContextDIE, const DIType *Ty) |
Creates type DIE with specific context. More... | |
DIE * | getOrCreateTypeDIE (const MDNode *TyNode) |
Find existing DIE or create new DIE for the given type. More... | |
DIE * | getOrCreateContextDIE (const DIScope *Context) |
Get context owner's DIE. More... | |
void | constructContainingTypeDIEs () |
Construct DIEs for types that contain vtables. More... | |
void | constructSubprogramArguments (DIE &Buffer, DITypeRefArray Args) |
Construct function argument DIEs. More... | |
DIE & | createAndAddDIE (unsigned Tag, DIE &Parent, const DINode *N=nullptr) |
Create a DIE with the given Tag, add the DIE to its parent, and call insertDIE if MD is not null. More... | |
bool | useSegmentedStringOffsetsTable () const |
void | addStringOffsetsStart () |
Add the DW_AT_str_offsets_base attribute to the unit DIE. More... | |
void | addRnglistsBase () |
Add the DW_AT_rnglists_base attribute to the unit DIE. More... | |
void | constructTypeDIE (DIE &Buffer, const DICompositeType *CTy) |
DIE::value_iterator | addSectionDelta (DIE &Die, dwarf::Attribute Attribute, const MCSymbol *Hi, const MCSymbol *Lo) |
addSectionDelta - Add a label delta attribute data and value. More... | |
DIE::value_iterator | addSectionLabel (DIE &Die, dwarf::Attribute Attribute, const MCSymbol *Label, const MCSymbol *Sec) |
Add a Dwarf section label attribute data and value. More... | |
DIE * | createTypeDIE (const DICompositeType *Ty) |
Get context owner's DIE. More... | |
![]() | |
DIEUnit (dwarf::Tag UnitTag) | |
DIEUnit (const DIEUnit &RHS)=delete | |
DIEUnit (DIEUnit &&RHS)=delete | |
void | operator= (const DIEUnit &RHS)=delete |
void | operator= (const DIEUnit &&RHS)=delete |
void | setSection (MCSection *Section) |
Set the section that this DIEUnit will be emitted into. More... | |
MCSection * | getSection () const |
Return the section that this DIEUnit will be emitted into. More... | |
void | setDebugSectionOffset (uint64_t O) |
uint64_t | getDebugSectionOffset () const |
DIE & | getUnitDie () |
const DIE & | getUnitDie () const |
Public Attributes | |
std::vector< BaseTypeRef > | ExprRefedBaseTypes |
Additional Inherited Members | |
![]() | |
DwarfUnit (dwarf::Tag, const DICompileUnit *Node, AsmPrinter *A, DwarfDebug *DW, DwarfFile *DWU) | |
bool | applySubprogramDefinitionAttributes (const DISubprogram *SP, DIE &SPDie) |
bool | isShareableAcrossCUs (const DINode *D) const |
Check whether the DIE for this MDNode can be shared across CUs. More... | |
~DwarfUnit () | |
DIE * | getOrCreateStaticMemberDIE (const DIDerivedType *DT) |
Create new static data member DIE. More... | |
void | emitCommonHeader (bool UseOffsets, dwarf::UnitType UT) |
Emit the common part of the header for this unit. More... | |
![]() | |
virtual | ~DIEUnit ()=default |
.debug_info or .debug_types absolute section offset. More... | |
![]() | |
const DICompileUnit * | CUNode |
MDNode for the compile unit. More... | |
BumpPtrAllocator | DIEValueAllocator |
AsmPrinter * | Asm |
Target of Dwarf emission. More... | |
MCSymbol * | EndLabel = nullptr |
Emitted at the end of the CU and used to compute the CU Length field. More... | |
DwarfDebug * | DD |
DwarfFile * | DU |
DIE * | IndexTyDie |
An anonymous type for index type. Owned by DIEUnit. More... | |
DenseMap< const MDNode *, DIE * > | MDNodeToDieMap |
Tracks the mapping of unit level debug information variables to debug information entries. More... | |
std::vector< DIEBlock * > | DIEBlocks |
A list of all the DIEBlocks in use. More... | |
std::vector< DIELoc * > | DIELocs |
A list of all the DIELocs in use. More... | |
DenseMap< DIE *, const DINode * > | ContainingTypeMap |
This map is used to keep track of subprogram DIEs that need DW_AT_containing_type attribute. More... | |
Definition at line 47 of file DwarfCompileUnit.h.
Find abstract variable associated with Var.
Definition at line 277 of file DwarfCompileUnit.h.
DwarfCompileUnit::DwarfCompileUnit | ( | unsigned | UID, |
const DICompileUnit * | Node, | ||
AsmPrinter * | A, | ||
DwarfDebug * | DW, | ||
DwarfFile * | DWU, | ||
UnitKind | Kind = UnitKind::Full |
||
) |
Definition at line 58 of file DwarfCompileUnit.cpp.
void DwarfCompileUnit::addAddress | ( | DIE & | Die, |
dwarf::Attribute | Attribute, | ||
const MachineLocation & | Location | ||
) |
Add an address attribute to a die based on the location provided.
Definition at line 1356 of file DwarfCompileUnit.cpp.
References llvm::DwarfUnit::addBlock(), llvm::DwarfExpression::addExpression(), llvm::DwarfExpression::addMachineRegExpression(), llvm::DwarfUnit::addUInt(), llvm::DwarfUnit::Asm, llvm::DwarfUnit::DIEValueAllocator, llvm::DIEDwarfExpression::finalize(), llvm::MachineLocation::getReg(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), llvm::MachineLocation::isIndirect(), llvm::AsmPrinter::MF, move, llvm::DwarfExpression::setMemoryLocationKind(), llvm::DwarfExpression::TagOffset, and TRI.
Referenced by addVariableAddress(), constructCallSiteEntryDIE(), constructCallSiteParmEntryDIEs(), and updateSubprogramScopeDIE().
void DwarfCompileUnit::addAddrTableBase | ( | ) |
Add the DW_AT_addr_base attribute to the unit DIE.
Definition at line 1470 of file DwarfCompileUnit.cpp.
References llvm::DwarfUnit::addSectionLabel(), llvm::DwarfUnit::Asm, llvm::DwarfUnit::DD, llvm::DwarfDebug::getAddressPool(), llvm::MCSection::getBeginSymbol(), llvm::MCObjectFileInfo::getDwarfAddrSection(), llvm::DwarfDebug::getDwarfVersion(), llvm::AddressPool::getLabel(), llvm::AsmPrinter::getObjFileLowering(), and llvm::DIEUnit::getUnitDie().
void DwarfCompileUnit::addBaseTypeRef | ( | DIEValueList & | Die, |
int64_t | Idx | ||
) |
Definition at line 1479 of file DwarfCompileUnit.cpp.
References llvm::DIEValueList::addValue(), and llvm::DwarfUnit::DIEValueAllocator.
void DwarfCompileUnit::addComplexAddress | ( | const DbgVariable & | DV, |
DIE & | Die, | ||
dwarf::Attribute | Attribute, | ||
const MachineLocation & | Location | ||
) |
Start with the address based on the location provided, and generate the DWARF information necessary to find the actual variable (navigating the extra location information encoded in the type) based on the starting location.
Start with the address based on the location provided, and generate the DWARF information necessary to find the actual variable given the extra address information encoded in the DbgVariable, starting from the starting location.
Add the DWARF information to the die.
Definition at line 1381 of file DwarfCompileUnit.cpp.
References llvm::DwarfUnit::addBlock(), llvm::DwarfExpression::addExpression(), llvm::DwarfExpression::addFragmentOffset(), llvm::DwarfExpression::addMachineRegExpression(), llvm::DwarfUnit::addUInt(), llvm::DwarfUnit::Asm, llvm::DwarfExpression::beginEntryValueExpression(), llvm::DwarfUnit::DIEValueAllocator, llvm::DIEDwarfExpression::finalize(), llvm::MachineLocation::getReg(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::DbgVariable::getSingleExpression(), llvm::MachineFunction::getSubtarget(), llvm::DIExpression::isEntryValue(), llvm::AsmPrinter::MF, move, llvm::DwarfExpression::setLocation(), llvm::DwarfExpression::TagOffset, and TRI.
Referenced by addVariableAddress().
void DwarfCompileUnit::addExpr | ( | DIELoc & | Die, |
dwarf::Form | Form, | ||
const MCExpr * | Expr | ||
) |
Add a Dwarf expression attribute data and value.
Definition at line 1444 of file DwarfCompileUnit.cpp.
References llvm::DIEValueList::addValue(), and llvm::DwarfUnit::DIEValueAllocator.
Referenced by addLocationAttribute().
|
overridevirtual |
Add a new global name to the compile unit.
addGlobalName - Add a new global name to the compile unit.
Implements llvm::DwarfUnit.
Definition at line 1306 of file DwarfCompileUnit.cpp.
References Context, llvm::DwarfUnit::getParentContextString(), and hasDwarfPubSections().
Referenced by applySubprogramAttributesToDefinition(), getOrCreateCommonBlock(), and getOrCreateGlobalVariableDIE().
Add a new global name present in a type unit to this compile unit.
Definition at line 1314 of file DwarfCompileUnit.cpp.
References Context, llvm::DwarfUnit::getParentContextString(), llvm::DIEUnit::getUnitDie(), hasDwarfPubSections(), and move.
Referenced by llvm::DwarfTypeUnit::addGlobalName().
|
overridevirtual |
Add a new global type to the compile unit.
Add a new global type to the unit.
Implements llvm::DwarfUnit.
Definition at line 1327 of file DwarfCompileUnit.cpp.
References Context, llvm::DIType::getName(), llvm::DwarfUnit::getParentContextString(), hasDwarfPubSections(), and llvm::StringRef::str().
Add a new global type present in a type unit to this compile unit.
Definition at line 1335 of file DwarfCompileUnit.cpp.
References Context, llvm::DIType::getName(), llvm::DwarfUnit::getParentContextString(), llvm::DIEUnit::getUnitDie(), hasDwarfPubSections(), move, and llvm::StringRef::str().
Referenced by llvm::DwarfTypeUnit::addGlobalType().
|
inline |
Definition at line 172 of file DwarfCompileUnit.h.
References assert(), and llvm::ARM_PROC::IE.
void DwarfCompileUnit::addLabelAddress | ( | DIE & | Die, |
dwarf::Attribute | Attribute, | ||
const MCSymbol * | Label | ||
) |
addLabelAddress - Add a dwarf label attribute data and value using either DW_FORM_addr or DW_FORM_GNU_addr_index.
addLabelAddress - Add a dwarf label attribute data and value using DW_FORM_addr or DW_FORM_GNU_addr_index.
Definition at line 68 of file DwarfCompileUnit.cpp.
References llvm::DwarfDebug::addArangeLabel(), llvm::DwarfUnit::addBlock(), addLocalLabelAddress(), llvm::DwarfUnit::addPoolOpAddress(), llvm::DIEValueList::addValue(), assert(), llvm::DwarfUnit::DD, llvm::DwarfUnit::DIEValueAllocator, llvm::DwarfDebug::getAddressPool(), llvm::DwarfDebug::getDwarfVersion(), llvm::AddressPool::getIndex(), llvm::DwarfDebug::getSectionLabel(), llvm::DwarfDebug::useAddrOffsetExpressions(), llvm::DwarfDebug::useAddrOffsetForm(), and llvm::DwarfDebug::useSplitDwarf().
Referenced by constructCallSiteEntryDIE(), and finishEntityDefinition().
void DwarfCompileUnit::addLocalLabelAddress | ( | DIE & | Die, |
dwarf::Attribute | Attribute, | ||
const MCSymbol * | Label | ||
) |
addLocalLabelAddress - Add a dwarf label attribute data and value using DW_FORM_addr only.
Definition at line 108 of file DwarfCompileUnit.cpp.
References llvm::DwarfDebug::addArangeLabel(), llvm::DIEValueList::addValue(), llvm::DwarfUnit::DD, and llvm::DwarfUnit::DIEValueAllocator.
Referenced by addLabelAddress().
void DwarfCompileUnit::addLocationAttribute | ( | DIE * | ToDIE, |
const DIGlobalVariable * | GV, | ||
ArrayRef< GlobalExpr > | GlobalExprs | ||
) |
Definition at line 201 of file DwarfCompileUnit.cpp.
References llvm::DwarfDebug::addAccelName(), llvm::DwarfDebug::addArangeLabel(), llvm::DwarfUnit::addBlock(), llvm::DwarfUnit::addConstantValue(), addExpr(), llvm::DwarfUnit::addLinkageName(), llvm::DwarfUnit::addOpAddress(), llvm::DwarfUnit::addUInt(), llvm::DwarfUnit::Asm, assert(), llvm::DwarfUnit::CUNode, llvm::DwarfUnit::DD, llvm::DwarfUnit::DIEValueAllocator, llvm::DIExpression::extractAddressClass(), llvm::AArch64CC::GE, llvm::DwarfDebug::getAddressPool(), llvm::AsmPrinter::getDataLayout(), llvm::TargetLoweringObjectFile::getDebugThreadLocalSymbol(), llvm::DIExpression::getElement(), llvm::AddressPool::getIndex(), llvm::DIGlobalVariable::getLinkageName(), llvm::DIVariable::getName(), llvm::AsmPrinter::getObjFileLowering(), llvm::DataLayout::getPointerSize(), llvm::AsmPrinter::getSymbol(), llvm::TargetMachine::getTargetTriple(), llvm::DIExpression::isConstant(), llvm::Triple::isNVPTX(), llvm::TargetLoweringObjectFile::supportDebugThreadLocalLocation(), llvm::AsmPrinter::TM, llvm::DwarfDebug::tuneForGDB(), llvm::DwarfDebug::useAllLinkageNames(), llvm::TargetMachine::useEmulatedTLS(), llvm::DwarfDebug::useGNUTLSOpcode(), and llvm::DwarfDebug::useSplitDwarf().
Referenced by getOrCreateCommonBlock(), and getOrCreateGlobalVariableDIE().
void DwarfCompileUnit::addLocationList | ( | DIE & | Die, |
dwarf::Attribute | Attribute, | ||
unsigned | Index | ||
) |
Add a Dwarf loclistptr attribute data and value.
Definition at line 1409 of file DwarfCompileUnit.cpp.
References llvm::DIEValueList::addValue(), llvm::DwarfUnit::DD, llvm::DwarfUnit::DIEValueAllocator, llvm::DwarfDebug::getDwarfSectionOffsetForm(), llvm::DwarfDebug::getDwarfVersion(), and Index.
void DwarfCompileUnit::addRange | ( | RangeSpan | Range | ) |
addRange - Add an address range to the list of ranges for this unit.
Definition at line 348 of file DwarfCompileUnit.cpp.
References llvm::RangeSpan::Begin, llvm::DwarfUnit::DD, llvm::RangeSpan::End, llvm::DwarfDebug::getPrevCU(), llvm::MCSymbol::getSection(), llvm::DwarfDebug::insertSectionLabel(), and llvm::DwarfDebug::setPrevCU().
Referenced by addScopeRangeList(), and llvm::DwarfDebug::endFunctionImpl().
void DwarfCompileUnit::addScopeRangeList | ( | DIE & | ScopeDIE, |
SmallVector< RangeSpan, 2 > | Range | ||
) |
A helper function to construct a RangeSpanList for a given lexical scope.
Definition at line 556 of file DwarfCompileUnit.cpp.
References addRange(), llvm::DwarfUnit::addSectionDelta(), llvm::DwarfUnit::addSectionLabel(), llvm::DwarfUnit::addUInt(), llvm::DwarfUnit::Asm, llvm::DwarfUnit::DD, llvm::DwarfUnit::DU, llvm::MCSection::getBeginSymbol(), llvm::MCObjectFileInfo::getDwarfRangesSection(), llvm::DwarfDebug::getDwarfVersion(), llvm::AsmPrinter::getObjFileLowering(), Index, List, and move.
Referenced by attachRangesOrLowHighPC().
void DwarfCompileUnit::addVariableAddress | ( | const DbgVariable & | DV, |
DIE & | Die, | ||
MachineLocation | Location | ||
) |
Add DW_AT_location attribute for a DbgVariable based on provided MachineLocation.
Definition at line 1347 of file DwarfCompileUnit.cpp.
References addAddress(), addComplexAddress(), and llvm::DbgVariable::hasComplexAddress().
Definition at line 1434 of file DwarfCompileUnit.cpp.
References llvm::DwarfUnit::addSourceLine(), and llvm::DwarfUnit::addString().
Referenced by constructLabelDIE(), and finishEntityDefinition().
void DwarfCompileUnit::applyStmtList | ( | DIE & | D | ) |
Apply the DW_AT_stmt_list from this compile unit to the specified DIE.
Definition at line 388 of file DwarfCompileUnit.cpp.
References llvm::DwarfUnit::addSectionLabel(), llvm::DwarfUnit::Asm, D, llvm::MCSection::getBeginSymbol(), llvm::MCObjectFileInfo::getDwarfLineSection(), and llvm::AsmPrinter::getObjFileLowering().
void DwarfCompileUnit::applySubprogramAttributesToDefinition | ( | const DISubprogram * | SP, |
DIE & | SPDie | ||
) |
Definition at line 1449 of file DwarfCompileUnit.cpp.
References addGlobalName(), llvm::DwarfUnit::applySubprogramAttributes(), Context, llvm::DIScope::getName(), llvm::DIScope::getScope(), and includeMinimalInlineScopes().
Referenced by constructAbstractSubprogramScopeDIE(), and finishSubprogramDefinition().
void DwarfCompileUnit::applyVariableAttributes | ( | const DbgVariable & | Var, |
DIE & | VariableDie | ||
) |
Definition at line 1417 of file DwarfCompileUnit.cpp.
References llvm::DwarfUnit::addFlag(), llvm::DwarfUnit::addSourceLine(), llvm::DwarfUnit::addString(), llvm::DwarfUnit::addType(), llvm::DwarfUnit::addUInt(), llvm::DbgVariable::getName(), llvm::DbgVariable::getType(), llvm::DbgVariable::getVariable(), and llvm::DbgVariable::isArtificial().
Referenced by finishEntityDefinition().
Definition at line 394 of file DwarfCompileUnit.cpp.
Referenced by attachRangesOrLowHighPC().
void DwarfCompileUnit::attachRangesOrLowHighPC | ( | DIE & | D, |
const SmallVectorImpl< InsnRange > & | Ranges | ||
) |
Definition at line 604 of file DwarfCompileUnit.cpp.
References llvm::DwarfUnit::Asm, attachRangesOrLowHighPC(), llvm::DwarfUnit::DD, llvm::DwarfUnit::EndLabel, llvm::DebugHandlerBase::getLabelAfterInsn(), llvm::DebugHandlerBase::getLabelBeforeInsn(), llvm::ilist_node_with_parent< NodeTy, ParentTy, Options >::getNextNode(), llvm::MachineBasicBlock::getSectionIDNum(), llvm::MachineBasicBlock::isEndSection(), List, MBB, llvm::AsmPrinter::MBBSectionRanges, move, and llvm::MachineBasicBlock::sameSection().
void DwarfCompileUnit::attachRangesOrLowHighPC | ( | DIE & | D, |
SmallVector< RangeSpan, 2 > | Ranges | ||
) |
Definition at line 589 of file DwarfCompileUnit.cpp.
References addScopeRangeList(), llvm::DwarfDebug::alwaysUseRanges(), assert(), attachLowHighPC(), llvm::RangeSpan::Begin, llvm::DwarfUnit::DD, llvm::RangeSpan::End, llvm::DwarfDebug::getSectionLabel(), move, and llvm::DwarfDebug::useRangesSection().
Referenced by attachRangesOrLowHighPC(), constructInlinedScopeDIE(), constructLexicalScopeDIE(), and updateSubprogramScopeDIE().
void DwarfCompileUnit::constructAbstractSubprogramScopeDIE | ( | LexicalScope * | Scope | ) |
Definition at line 1015 of file DwarfCompileUnit.cpp.
References llvm::DwarfUnit::addDIEEntry(), llvm::DwarfUnit::addUInt(), applySubprogramAttributesToDefinition(), llvm::DwarfUnit::createAndAddDIE(), createAndAddScopeChildren(), llvm::DwarfUnit::DD, llvm::dwarf::DW_INL_inlined, llvm::DwarfUnit::getOrCreateContextDIE(), llvm::DwarfUnit::getOrCreateSubprogramDIE(), llvm::DIE::getUnitDie(), llvm::DIEUnit::getUnitDie(), includeMinimalInlineScopes(), llvm::DwarfDebug::lookupCU(), and llvm::None.
DIE & DwarfCompileUnit::constructCallSiteEntryDIE | ( | DIE & | ScopeDIE, |
DIE * | CalleeDIE, | ||
bool | IsTail, | ||
const MCSymbol * | PCAddr, | ||
const MCSymbol * | CallAddr, | ||
unsigned | CallReg | ||
) |
Construct a call site entry DIE describing a call within Scope
to a callee described by CalleeDIE
.
CalleeDIE
is a declaration or definition subprogram DIE for the callee. For indirect calls CalleeDIE
is set to nullptr. IsTail
specifies whether the call is a tail call. PCAddr
points to the PC value after the call instruction. CallAddr
points to the PC value at the call instruction (or is null). CallReg
is a register location for an indirect call. For direct calls the CallReg
is set to 0.
Definition at line 1105 of file DwarfCompileUnit.cpp.
References addAddress(), llvm::DwarfUnit::addDIEEntry(), llvm::DwarfUnit::addFlag(), addLabelAddress(), assert(), llvm::DwarfUnit::createAndAddDIE(), getDwarf5OrGNUAttr(), getDwarf5OrGNUTag(), and useGNUAnalogForDwarf5Feature().
void DwarfCompileUnit::constructCallSiteParmEntryDIEs | ( | DIE & | CallSiteDIE, |
SmallVector< DbgCallSiteParam, 4 > & | Params | ||
) |
Construct call site parameter DIEs for the CallSiteDIE
.
The Params
were collected by the collectCallSiteParameters. Note: The order of parameters does not matter, since debuggers recognize call site parameters by the DW_AT_location attribute.
Definition at line 1160 of file DwarfCompileUnit.cpp.
References addAddress(), llvm::DwarfUnit::addBlock(), llvm::DIE::addChild(), llvm::DwarfUnit::Asm, llvm::DwarfUnit::DIEValueAllocator, llvm::DwarfDebug::emitDebugLocValue(), llvm::DIEDwarfExpression::finalize(), llvm::DIE::get(), getDwarf5OrGNUAttr(), getDwarf5OrGNUTag(), llvm::DwarfUnit::insertDIE(), and llvm::DwarfExpression::setCallSiteParamValueFlag().
DIE * DwarfCompileUnit::constructImportedEntityDIE | ( | const DIImportedEntity * | Module | ) |
Construct import_module DIE.
Definition at line 1184 of file DwarfCompileUnit.cpp.
References llvm::DwarfUnit::addDIEEntry(), llvm::DwarfUnit::addSourceLine(), llvm::DwarfUnit::addString(), assert(), llvm::DwarfUnit::DIEValueAllocator, llvm::DIE::get(), llvm::DwarfUnit::getDIE(), llvm::Module::getName(), getOrCreateGlobalVariableDIE(), llvm::DwarfUnit::getOrCreateModule(), llvm::DwarfUnit::getOrCreateNameSpace(), llvm::DwarfUnit::getOrCreateSubprogramDIE(), llvm::DwarfUnit::getOrCreateTypeDIE(), llvm::DwarfUnit::insertDIE(), M, and T.
Referenced by createScopeChildrenDIE().
DIE * DwarfCompileUnit::constructInlinedScopeDIE | ( | LexicalScope * | Scope | ) |
This scope represents inlined body of a function.
Construct DIE to represent this concrete inlined copy of the function.
Definition at line 640 of file DwarfCompileUnit.cpp.
References llvm::DwarfUnit::addDIEEntry(), llvm::DwarfDebug::addSubprogramNames(), llvm::DwarfUnit::addUInt(), assert(), attachRangesOrLowHighPC(), llvm::DwarfUnit::CUNode, llvm::DwarfUnit::DD, llvm::DwarfUnit::DIEValueAllocator, llvm::SIInstrFlags::DS, llvm::DIE::get(), llvm::getDISubprogram(), llvm::DwarfDebug::getDwarfVersion(), getOrCreateSourceID(), and llvm::None.
Referenced by constructScopeDIE().
DIE * DwarfCompileUnit::constructLabelDIE | ( | DbgLabel & | DL, |
const LexicalScope & | Scope | ||
) |
Construct a DIE for the given DbgLabel.
Definition at line 694 of file DwarfCompileUnit.cpp.
References applyLabelAttributes(), llvm::DwarfUnit::DIEValueAllocator, DL, llvm::DIE::get(), and llvm::DwarfUnit::insertDIE().
Referenced by createScopeChildrenDIE().
DIE * DwarfCompileUnit::constructLexicalScopeDIE | ( | LexicalScope * | Scope | ) |
Construct new DW_TAG_lexical_block for this scope and attach DW_AT_low_pc/DW_AT_high_pc labels.
Definition at line 674 of file DwarfCompileUnit.cpp.
References attachRangesOrLowHighPC(), llvm::DwarfUnit::DD, llvm::DwarfUnit::DIEValueAllocator, llvm::DIE::get(), and llvm::DwarfDebug::isLexicalScopeDIENull().
Referenced by constructScopeDIE().
void DwarfCompileUnit::constructScopeDIE | ( | LexicalScope * | Scope, |
SmallVectorImpl< DIE * > & | FinalChildren | ||
) |
Definition at line 502 of file DwarfCompileUnit.cpp.
References llvm::DIE::addChild(), assert(), constructInlinedScopeDIE(), constructLexicalScopeDIE(), createScopeChildrenDIE(), llvm::DwarfUnit::DD, llvm::SIInstrFlags::DS, I, llvm::SmallVectorImpl< T >::insert(), llvm::DwarfDebug::isLexicalScopeDIENull(), and move.
Referenced by createScopeChildrenDIE().
DIE & DwarfCompileUnit::constructSubprogramScopeDIE | ( | const DISubprogram * | Sub, |
LexicalScope * | Scope | ||
) |
Construct a DIE for this subprogram scope.
Definition at line 974 of file DwarfCompileUnit.cpp.
References llvm::DIE::addChild(), llvm::DwarfUnit::addDIEEntry(), assert(), createAndAddScopeChildren(), llvm::DwarfUnit::DIEValueAllocator, llvm::DIE::get(), includeMinimalInlineScopes(), llvm::DITypeRefArray::size(), and updateSubprogramScopeDIE().
Referenced by llvm::DwarfDebug::endFunctionImpl().
DIE * DwarfCompileUnit::constructVariableDIE | ( | DbgVariable & | DV, |
bool | Abstract = false |
||
) |
constructVariableDIE - Construct a DIE for the given DbgVariable.
Definition at line 688 of file DwarfCompileUnit.cpp.
References D, and llvm::DbgEntity::setDIE().
Referenced by constructVariableDIE(), and createScopeChildrenDIE().
DIE * DwarfCompileUnit::constructVariableDIE | ( | DbgVariable & | DV, |
const LexicalScope & | Scope, | ||
DIE *& | ObjectPointer | ||
) |
Definition at line 826 of file DwarfCompileUnit.cpp.
References constructVariableDIE(), and llvm::DbgVariable::isObjectPointer().
void DwarfCompileUnit::createAbstractEntity | ( | const DINode * | Node, |
LexicalScope * | Scope | ||
) |
Definition at line 1258 of file DwarfCompileUnit.cpp.
DIE * DwarfCompileUnit::createAndAddScopeChildren | ( | LexicalScope * | Scope, |
DIE & | ScopeDIE | ||
) |
Definition at line 1002 of file DwarfCompileUnit.cpp.
References llvm::DIE::addChild(), createScopeChildrenDIE(), I, and move.
Referenced by constructAbstractSubprogramScopeDIE(), and constructSubprogramScopeDIE().
void DwarfCompileUnit::createBaseTypeDIEs | ( | ) |
Definition at line 1484 of file DwarfCompileUnit.cpp.
References llvm::DIE::addChildFront(), llvm::DwarfUnit::addString(), llvm::DwarfUnit::addUInt(), llvm::dwarf::AttributeEncodingString(), llvm::DwarfUnit::DIEValueAllocator, ExprRefedBaseTypes, llvm::DIE::get(), llvm::DIEUnit::getUnitDie(), llvm::None, llvm::reverse(), and llvm::Twine::toStringRef().
DIE * DwarfCompileUnit::createScopeChildrenDIE | ( | LexicalScope * | Scope, |
SmallVectorImpl< DIE * > & | Children, | ||
bool * | HasNonScopeChildren = nullptr |
||
) |
A helper function to create children of a Scope DIE.
Definition at line 938 of file DwarfCompileUnit.cpp.
References assert(), constructImportedEntityDIE(), constructLabelDIE(), constructScopeDIE(), constructVariableDIE(), DL, llvm::DwarfUnit::DU, llvm::DwarfFile::getScopeLabels(), llvm::DwarfFile::getScopeVariables(), llvm::ARM_PROC::IE, includeMinimalInlineScopes(), llvm::AArch64CC::LS, and sortLocalVars().
Referenced by constructScopeDIE(), and createAndAddScopeChildren().
|
overridevirtual |
Emit the header for this unit, not including the initial length field.
Implements llvm::DwarfUnit.
Definition at line 1273 of file DwarfCompileUnit.cpp.
References llvm::DwarfUnit::Asm, llvm::AsmPrinter::createTempSymbol(), llvm::DwarfUnit::DD, llvm::DwarfUnit::emitCommonHeader(), llvm::AsmPrinter::emitInt64(), llvm::DwarfDebug::getDwarfVersion(), getDWOId(), llvm::AsmPrinter::OutStreamer, llvm::DwarfDebug::useSectionsAsReferences(), and llvm::DwarfDebug::useSplitDwarf().
Label may be used to generate DW_AT_low_pc, so put it outside if/else block.
Definition at line 1226 of file DwarfCompileUnit.cpp.
References llvm::DwarfUnit::addDIEEntry(), addLabelAddress(), applyLabelAttributes(), applyVariableAttributes(), llvm::DbgEntity::getDIE(), llvm::DbgEntity::getEntity(), getExistingAbstractEntity(), and llvm_unreachable.
void DwarfCompileUnit::finishSubprogramDefinition | ( | const DISubprogram * | SP | ) |
Definition at line 1212 of file DwarfCompileUnit.cpp.
References llvm::DwarfUnit::addDIEEntry(), applySubprogramAttributesToDefinition(), assert(), D, llvm::DwarfUnit::getDIE(), includeMinimalInlineScopes(), and lookup().
Definition at line 360 of file DwarfCompileUnit.h.
|
inlineoverridevirtual |
Implements llvm::DwarfUnit.
Definition at line 168 of file DwarfCompileUnit.h.
Referenced by getOrCreateCommonBlock().
dwarf::Attribute DwarfCompileUnit::getDwarf5OrGNUAttr | ( | dwarf::Attribute | Attr | ) | const |
This takes a DWARF 5 attribute and returns it or a GNU analog.
Definition at line 1072 of file DwarfCompileUnit.cpp.
References llvm_unreachable, and useGNUAnalogForDwarf5Feature().
Referenced by constructCallSiteEntryDIE(), and constructCallSiteParmEntryDIEs().
dwarf::LocationAtom DwarfCompileUnit::getDwarf5OrGNULocationAtom | ( | dwarf::LocationAtom | Loc | ) | const |
This takes a DWARF 5 location atom and either returns it or a GNU analog.
Definition at line 1094 of file DwarfCompileUnit.cpp.
References llvm_unreachable, and useGNUAnalogForDwarf5Feature().
dwarf::Tag DwarfCompileUnit::getDwarf5OrGNUTag | ( | dwarf::Tag | Tag | ) | const |
This takes a DWARF 5 tag and returns it or a GNU analog.
Definition at line 1058 of file DwarfCompileUnit.cpp.
References llvm_unreachable, and useGNUAnalogForDwarf5Feature().
Referenced by constructCallSiteEntryDIE(), and constructCallSiteParmEntryDIEs().
|
inline |
Definition at line 362 of file DwarfCompileUnit.h.
Referenced by emitHeader().
Definition at line 1250 of file DwarfCompileUnit.cpp.
Referenced by finishEntityDefinition().
Definition at line 324 of file DwarfCompileUnit.h.
Definition at line 325 of file DwarfCompileUnit.h.
|
inlineoverridevirtual |
Compute the size of a header for this unit, not including the initial length field.
Reimplemented from llvm::DwarfUnit.
Definition at line 284 of file DwarfCompileUnit.h.
References llvm::DwarfUnit::DD, llvm::DwarfDebug::getDwarfVersion(), llvm::DwarfUnit::getHeaderSize(), and llvm::DwarfDebug::useSplitDwarf().
Referenced by getLength().
|
inline |
Definition at line 301 of file DwarfCompileUnit.h.
References assert().
Referenced by llvm::emitDWARF5AccelTable().
|
inline |
Definition at line 291 of file DwarfCompileUnit.h.
References llvm::DwarfUnit::Asm, getHeaderSize(), llvm::DIE::getSize(), llvm::DIEUnit::getUnitDie(), and llvm::AsmPrinter::getUnitLengthFieldByteSize().
|
inline |
Get line table start symbol for this unit.
Definition at line 129 of file DwarfCompileUnit.h.
|
inline |
Definition at line 306 of file DwarfCompileUnit.h.
DIE * DwarfCompileUnit::getOrCreateCommonBlock | ( | const DICommonBlock * | CB, |
ArrayRef< GlobalExpr > | GlobalExprs | ||
) |
Definition at line 329 of file DwarfCompileUnit.cpp.
References addGlobalName(), addLocationAttribute(), llvm::DwarfUnit::addSourceLine(), llvm::DwarfUnit::addString(), llvm::DwarfUnit::createAndAddDIE(), llvm::StringRef::empty(), getCU(), llvm::DICommonBlock::getDecl(), llvm::DwarfUnit::getDIE(), llvm::DICommonBlock::getFile(), llvm::DICommonBlock::getLineNo(), llvm::DICommonBlock::getName(), llvm::DwarfUnit::getOrCreateContextDIE(), and llvm::DICommonBlock::getScope().
Referenced by getOrCreateGlobalVariableDIE().
DIE * DwarfCompileUnit::getOrCreateGlobalVariableDIE | ( | const DIGlobalVariable * | GV, |
ArrayRef< GlobalExpr > | GlobalExprs | ||
) |
Get or create global variable DIE.
Definition at line 137 of file DwarfCompileUnit.cpp.
References llvm::DwarfUnit::addDIEEntry(), llvm::DwarfUnit::addFlag(), addGlobalName(), addLocationAttribute(), llvm::DwarfUnit::addSourceLine(), llvm::DwarfUnit::addString(), llvm::DwarfUnit::addTemplateParams(), llvm::DwarfUnit::addType(), llvm::DwarfUnit::addUInt(), assert(), llvm::DwarfUnit::createAndAddDIE(), llvm::DIVariable::getAlignInBytes(), llvm::DwarfUnit::getDIE(), llvm::DIGlobalVariable::getDisplayName(), llvm::DIVariable::getName(), getOrCreateCommonBlock(), llvm::DwarfUnit::getOrCreateContextDIE(), llvm::DwarfUnit::getOrCreateStaticMemberDIE(), llvm::DIVariable::getScope(), llvm::DIGlobalVariable::getStaticDataMemberDeclaration(), llvm::DINode::getTag(), llvm::DIGlobalVariable::getTemplateParams(), llvm::DIVariable::getType(), llvm::DIGlobalVariable::isDefinition(), and llvm::DIGlobalVariable::isLocalToUnit().
Referenced by constructImportedEntityDIE().
Look up the source ID for the given file.
If none currently exists, create a new ID and insert it in the line table.
Implements llvm::DwarfUnit.
Definition at line 122 of file DwarfCompileUnit.cpp.
References llvm::DwarfUnit::Asm, llvm::DwarfUnit::DD, File, llvm::DwarfDebug::getMD5AsBytes(), getUniqueID(), llvm::None, and llvm::AsmPrinter::OutStreamer.
Referenced by constructInlinedScopeDIE().
|
inline |
getRanges - Get the list of ranges for this unit.
Definition at line 356 of file DwarfCompileUnit.h.
|
inline |
Definition at line 117 of file DwarfCompileUnit.h.
References llvm::Skeleton.
Referenced by llvm::DwarfDebug::endFunctionImpl().
|
inline |
Definition at line 115 of file DwarfCompileUnit.h.
Referenced by getOrCreateSourceID(), and initStmtList().
bool DwarfCompileUnit::hasDwarfPubSections | ( | ) | const |
Definition at line 1288 of file DwarfCompileUnit.cpp.
References llvm::Apple, llvm::DwarfUnit::CUNode, llvm::DwarfUnit::DD, llvm::DICompileUnit::Default, llvm::DwarfDebug::getAccelTableKind(), llvm::DwarfDebug::getDwarfVersion(), llvm::DICompileUnit::getNameTableKind(), llvm::DICompileUnit::GNU, includeMinimalInlineScopes(), llvm::DICompileUnit::isDebugDirectivesOnly(), llvm_unreachable, llvm::DICompileUnit::None, and llvm::DwarfDebug::tuneForGDB().
Referenced by addGlobalName(), addGlobalNameForTypeUnit(), addGlobalType(), and addGlobalTypeUnitType().
|
inline |
Definition at line 114 of file DwarfCompileUnit.h.
bool DwarfCompileUnit::includeMinimalInlineScopes | ( | ) | const |
Definition at line 1465 of file DwarfCompileUnit.cpp.
References llvm::DwarfUnit::DD, llvm::DwarfUnit::getCUNode(), llvm::DICompileUnit::getEmissionKind(), llvm::DICompileUnit::LineTablesOnly, and llvm::DwarfDebug::useSplitDwarf().
Referenced by applySubprogramAttributesToDefinition(), constructAbstractSubprogramScopeDIE(), constructSubprogramScopeDIE(), createScopeChildrenDIE(), finishSubprogramDefinition(), hasDwarfPubSections(), and updateSubprogramScopeDIE().
void DwarfCompileUnit::initStmtList | ( | ) |
Definition at line 367 of file DwarfCompileUnit.cpp.
References llvm::DwarfUnit::addSectionLabel(), llvm::DwarfUnit::Asm, llvm::DwarfUnit::CUNode, llvm::DwarfUnit::DD, llvm::MCSection::getBeginSymbol(), llvm::MCObjectFileInfo::getDwarfLineSection(), llvm::AsmPrinter::getObjFileLowering(), getUniqueID(), llvm::DIEUnit::getUnitDie(), llvm::DICompileUnit::isDebugDirectivesOnly(), llvm::AsmPrinter::OutStreamer, and llvm::DwarfDebug::useSectionsAsReferences().
Definition at line 359 of file DwarfCompileUnit.h.
|
inline |
Definition at line 363 of file DwarfCompileUnit.h.
|
inline |
Set the skeleton unit associated with this unit.
Definition at line 282 of file DwarfCompileUnit.h.
References llvm::Skeleton.
|
inline |
Definition at line 357 of file DwarfCompileUnit.h.
References move.
DIE & DwarfCompileUnit::updateSubprogramScopeDIE | ( | const DISubprogram * | SP | ) |
Find DIE for the given subprogram and attach appropriate DW_AT_low_pc and DW_AT_high_pc attributes.
If there are global variables in this scope then create and insert DIEs for these variables.
Definition at line 411 of file DwarfCompileUnit.cpp.
References addAddress(), llvm::DwarfDebug::addArangeLabel(), llvm::DwarfUnit::addBlock(), llvm::DwarfExpression::addExpression(), llvm::DwarfUnit::addFlag(), llvm::DwarfUnit::addLabel(), llvm::DwarfUnit::addSInt(), llvm::DwarfDebug::addSubprogramNames(), llvm::DwarfUnit::addUInt(), llvm::DwarfExpression::addWasmLocation(), llvm::DwarfUnit::Asm, assert(), attachRangesOrLowHighPC(), llvm::TargetFrameLowering::DwarfFrameBase::CFA, llvm::DwarfUnit::CUNode, llvm::DwarfUnit::DD, llvm::DwarfUnit::DIEValueAllocator, llvm::TargetOptions::DisableFramePointerElim(), llvm::DIEDwarfExpression::finalize(), llvm::Triple::getArch(), llvm::DwarfDebug::getCurrentFunction(), llvm::TargetFrameLowering::getDwarfFrameBase(), llvm::AsmPrinter::GetExternalSymbolSymbol(), llvm::TargetSubtargetInfo::getFrameLowering(), llvm::DwarfUnit::getOrCreateSubprogramDIE(), llvm::MachineFunction::getSubtarget(), llvm::AsmPrinter::getSubtargetInfo(), llvm::MachineFunction::getTarget(), llvm::MCSubtargetInfo::getTargetTriple(), includeMinimalInlineScopes(), llvm::TargetFrameLowering::DwarfFrameBase::WasmFrameBase::Index, llvm::Register::isPhysicalRegister(), llvm::TargetFrameLowering::DwarfFrameBase::Kind, llvm::TargetFrameLowering::DwarfFrameBase::WasmFrameBase::Kind, llvm::TargetFrameLowering::DwarfFrameBase::Location, llvm::AsmPrinter::MBBSectionRanges, llvm::AsmPrinter::MF, move, llvm::TargetMachine::Options, llvm::TargetFrameLowering::DwarfFrameBase::Reg, llvm::TargetFrameLowering::DwarfFrameBase::Register, llvm::WebAssembly::TI_GLOBAL_RELOC, llvm::DwarfDebug::useAppleExtensionAttributes(), llvm::Triple::wasm64, llvm::wasm::WASM_SYMBOL_TYPE_GLOBAL, llvm::wasm::WASM_TYPE_I32, llvm::wasm::WASM_TYPE_I64, llvm::TargetFrameLowering::DwarfFrameBase::WasmFrameBase, and llvm::TargetFrameLowering::DwarfFrameBase::WasmLoc.
Referenced by constructSubprogramScopeDIE().
bool DwarfCompileUnit::useGNUAnalogForDwarf5Feature | ( | ) | const |
Whether to use the GNU analog for a DWARF5 tag, attribute, or location atom.
Only applicable when emitting otherwise DWARF4-compliant debug info.
Definition at line 1054 of file DwarfCompileUnit.cpp.
References llvm::DwarfUnit::DD, llvm::DwarfDebug::getDwarfVersion(), and llvm::DwarfDebug::tuneForLLDB().
Referenced by constructCallSiteEntryDIE(), getDwarf5OrGNUAttr(), getDwarf5OrGNULocationAtom(), and getDwarf5OrGNUTag().
std::vector<BaseTypeRef> llvm::DwarfCompileUnit::ExprRefedBaseTypes |
Definition at line 145 of file DwarfCompileUnit.h.
Referenced by createBaseTypeDIEs().