LLVM  3.7.0
Public Member Functions | List of all members
llvm::DwarfDebug Class Reference

Collects and handles dwarf debug information. More...

#include <DwarfDebug.h>

Inheritance diagram for llvm::DwarfDebug:
[legend]
Collaboration diagram for llvm::DwarfDebug:
[legend]

Public Member Functions

 DwarfDebug (AsmPrinter *A, Module *M)
 
 ~DwarfDebug () override
 
void beginModule ()
 Emit all Dwarf sections that should come prior to the content. More...
 
void endModule () override
 Emit all Dwarf sections that should come after the content. More...
 
void beginFunction (const MachineFunction *MF) override
 Gather pre-function debug information. More...
 
void endFunction (const MachineFunction *MF) override
 Gather and emit post-function debug information. More...
 
void beginInstruction (const MachineInstr *MI) override
 Process beginning of an instruction. More...
 
void endInstruction () override
 Process end of an instruction. More...
 
void addDwarfTypeUnitType (DwarfCompileUnit &CU, StringRef Identifier, DIE &Die, const DICompositeType *CTy)
 Add a DIE to the set of types that we're going to pull into type units. More...
 
void addArangeLabel (SymbolCU SCU)
 Add a label so that arange data can be generated for it. More...
 
void setSymbolSize (const MCSymbol *Sym, uint64_t Size) override
 For symbols that have a size designated (e.g. More...
 
bool useGNUTLSOpcode () const
 Returns whether to use DW_OP_GNU_push_tls_address, instead of the standard DW_OP_form_tls_address opcode. More...
 
bool useDwarfAccelTables () const
 Returns whether or not to emit tables that dwarf consumers can use to accelerate lookup. More...
 
bool useSplitDwarf () const
 Returns whether or not to change the current debug info for the split dwarf proposal support. More...
 
unsigned getDwarfVersion () const
 Returns the Dwarf Version. More...
 
const DwarfCompileUnitgetPrevCU () const
 Returns the previous CU that was being updated. More...
 
void setPrevCU (const DwarfCompileUnit *PrevCU)
 
const DebugLocStreamgetDebugLocs () const
 Returns the entries for the .debug_loc section. More...
 
void emitDebugLocEntry (ByteStreamer &Streamer, const DebugLocStream::Entry &Entry)
 Emit an entry for the debug loc section. More...
 
void emitDebugLocEntryLocation (const DebugLocStream::Entry &Entry)
 Emit the location for a debug loc entry, including the size header. More...
 
template<typename T >
Tresolve (TypedDINodeRef< T > Ref) const
 Find the MDNode for the given reference. More...
 
const DITypeIdentifierMapgetTypeIdentifierMap () const
 Return the TypeIdentifierMap. More...
 
DwarfCompileUnitlookupUnit (const DIE *CU) const
 Find the DwarfCompileUnit for the given CU Die. More...
 
bool isSubprogramContext (const MDNode *Context)
 isSubprogramContext - Return true if Context is either a subprogram or another context nested inside a subprogram. More...
 
void addSubprogramNames (const DISubprogram *SP, DIE &Die)
 
AddressPoolgetAddressPool ()
 
void addAccelName (StringRef Name, const DIE &Die)
 
void addAccelObjC (StringRef Name, const DIE &Die)
 
void addAccelNamespace (StringRef Name, const DIE &Die)
 
void addAccelType (StringRef Name, const DIE &Die, char Flags)
 
const MachineFunctiongetCurrentFunction () const
 
iterator_range
< ImportedEntityMap::const_iterator
findImportedEntitiesForScope (const MDNode *Scope) const
 
bool isLexicalScopeDIENull (LexicalScope *Scope)
 A helper function to check whether the DIE for a given Scope is going to be null. More...
 
MCSymbolgetLabelBeforeInsn (const MachineInstr *MI)
 Return Label preceding the instruction. More...
 
MCSymbolgetLabelAfterInsn (const MachineInstr *MI)
 Return Label immediately following the instruction. More...
 
SmallPtrSet< const MDNode *, 16 > & getProcessedSPNodes ()
 
- Public Member Functions inherited from llvm::AsmPrinterHandler
virtual ~AsmPrinterHandler ()
 Pin vtable to this file. More...
 
virtual void markFunctionEnd ()
 

Detailed Description

Collects and handles dwarf debug information.

Definition at line 207 of file DwarfDebug.h.

Constructor & Destructor Documentation

DwarfDebug::DwarfDebug ( AsmPrinter A,
Module M 
)
DwarfDebug::~DwarfDebug ( )
override

Definition at line 246 of file DwarfDebug.cpp.

Member Function Documentation

void DwarfDebug::addAccelName ( StringRef  Name,
const DIE Die 
)
void DwarfDebug::addAccelNamespace ( StringRef  Name,
const DIE Die 
)
void DwarfDebug::addAccelObjC ( StringRef  Name,
const DIE Die 
)
void DwarfDebug::addAccelType ( StringRef  Name,
const DIE Die,
char  Flags 
)
void llvm::DwarfDebug::addArangeLabel ( SymbolCU  SCU)
inline

Add a label so that arange data can be generated for it.

Definition at line 553 of file DwarfDebug.h.

Referenced by llvm::DwarfCompileUnit::addLabelAddress(), llvm::DwarfCompileUnit::addLocalLabelAddress(), and llvm::DwarfCompileUnit::getOrCreateGlobalVariableDIE().

void DwarfDebug::addDwarfTypeUnitType ( DwarfCompileUnit CU,
StringRef  Identifier,
DIE Die,
const DICompositeType CTy 
)
void DwarfDebug::addSubprogramNames ( const DISubprogram SP,
DIE Die 
)
void DwarfDebug::beginFunction ( const MachineFunction MF)
overridevirtual
void DwarfDebug::beginInstruction ( const MachineInstr MI)
overridevirtual
void DwarfDebug::beginModule ( )
void DwarfDebug::emitDebugLocEntry ( ByteStreamer Streamer,
const DebugLocStream::Entry Entry 
)

Emit an entry for the debug loc section.

This can be used to handle an entry that's going to be emitted into the debug loc section.

Definition at line 1462 of file DwarfDebug.cpp.

References llvm::ByteStreamer::EmitInt8(), llvm::DebugLocStream::getBytes(), and llvm::DebugLocStream::getComments().

Referenced by emitDebugLocEntryLocation().

void DwarfDebug::emitDebugLocEntryLocation ( const DebugLocStream::Entry Entry)

Emit the location for a debug loc entry, including the size header.

Definition at line 1545 of file DwarfDebug.cpp.

References emitDebugLocEntry(), and llvm::DebugLocStream::getBytes().

void DwarfDebug::endFunction ( const MachineFunction MF)
overridevirtual
void DwarfDebug::endInstruction ( )
overridevirtual
void DwarfDebug::endModule ( )
overridevirtual

Emit all Dwarf sections that should come after the content.

Implements llvm::AsmPrinterHandler.

Definition at line 600 of file DwarfDebug.cpp.

References llvm::AddressPool::emit(), GenerateARangeSection, GenerateGnuPubSections, llvm::MachineModuleInfo::hasDebugInfo(), useDwarfAccelTables(), and useSplitDwarf().

iterator_range<ImportedEntityMap::const_iterator> llvm::DwarfDebug::findImportedEntitiesForScope ( const MDNode Scope) const
inline
AddressPool& llvm::DwarfDebug::getAddressPool ( )
inline
const MachineFunction* llvm::DwarfDebug::getCurrentFunction ( ) const
inline

Definition at line 623 of file DwarfDebug.h.

Referenced by llvm::DwarfCompileUnit::updateSubprogramScopeDIE().

const DebugLocStream& llvm::DwarfDebug::getDebugLocs ( ) const
inline

Returns the entries for the .debug_loc section.

Definition at line 583 of file DwarfDebug.h.

Referenced by llvm::DIELocList::EmitValue().

unsigned llvm::DwarfDebug::getDwarfVersion ( ) const
inline
MCSymbol * DwarfDebug::getLabelAfterInsn ( const MachineInstr MI)

Return Label immediately following the instruction.

Definition at line 952 of file DwarfDebug.cpp.

Referenced by llvm::DwarfCompileUnit::attachRangesOrLowHighPC(), and isLexicalScopeDIENull().

MCSymbol * DwarfDebug::getLabelBeforeInsn ( const MachineInstr MI)

Return Label preceding the instruction.

Definition at line 945 of file DwarfDebug.cpp.

References llvm::Label.

Referenced by llvm::DwarfCompileUnit::attachRangesOrLowHighPC().

const DwarfCompileUnit* llvm::DwarfDebug::getPrevCU ( ) const
inline

Returns the previous CU that was being updated.

Definition at line 579 of file DwarfDebug.h.

Referenced by llvm::DwarfCompileUnit::addRange().

SmallPtrSet<const MDNode *, 16>& llvm::DwarfDebug::getProcessedSPNodes ( )
inline

Definition at line 645 of file DwarfDebug.h.

Referenced by llvm::DwarfCompileUnit::constructSubprogramScopeDIE().

const DITypeIdentifierMap& llvm::DwarfDebug::getTypeIdentifierMap ( ) const
inline

Return the TypeIdentifierMap.

Definition at line 599 of file DwarfDebug.h.

Referenced by llvm::DbgVariable::getType(), and llvm::DbgVariable::isBlockByrefVariable().

bool DwarfDebug::isLexicalScopeDIENull ( LexicalScope Scope)

A helper function to check whether the DIE for a given Scope is going to be null.

Check whether we should create a DIE for the given Scope, return true if we don't create a DIE (the corresponding DIE is null).

Definition at line 317 of file DwarfDebug.cpp.

References llvm::SmallVectorBase::empty(), llvm::SmallVectorTemplateCommon< T, typename >::front(), getLabelAfterInsn(), llvm::LexicalScope::getRanges(), llvm::LexicalScope::isAbstractScope(), Ranges, and llvm::SmallVectorTemplateCommon< T, typename >::size().

Referenced by llvm::DwarfCompileUnit::constructLexicalScopeDIE(), and llvm::DwarfCompileUnit::constructScopeDIE().

bool DwarfDebug::isSubprogramContext ( const MDNode Context)

isSubprogramContext - Return true if Context is either a subprogram or another context nested inside a subprogram.

Definition at line 305 of file DwarfDebug.cpp.

References resolve().

DwarfCompileUnit* llvm::DwarfDebug::lookupUnit ( const DIE CU) const
inline

Find the DwarfCompileUnit for the given CU Die.

Definition at line 604 of file DwarfDebug.h.

Referenced by llvm::DIEEntry::EmitValue().

template<typename T >
T* llvm::DwarfDebug::resolve ( TypedDINodeRef< T Ref) const
inline
void llvm::DwarfDebug::setPrevCU ( const DwarfCompileUnit PrevCU)
inline

Definition at line 580 of file DwarfDebug.h.

Referenced by llvm::DwarfCompileUnit::addRange().

void llvm::DwarfDebug::setSymbolSize ( const MCSymbol Sym,
uint64_t  Size 
)
inlineoverridevirtual

For symbols that have a size designated (e.g.

common symbols), this tracks that size.

Implements llvm::AsmPrinterHandler.

Definition at line 557 of file DwarfDebug.h.

bool llvm::DwarfDebug::useDwarfAccelTables ( ) const
inline

Returns whether or not to emit tables that dwarf consumers can use to accelerate lookup.

Definition at line 569 of file DwarfDebug.h.

Referenced by addAccelName(), addAccelNamespace(), addAccelObjC(), addAccelType(), and endModule().

bool llvm::DwarfDebug::useGNUTLSOpcode ( ) const
inline

Returns whether to use DW_OP_GNU_push_tls_address, instead of the standard DW_OP_form_tls_address opcode.

Definition at line 563 of file DwarfDebug.h.

Referenced by llvm::DwarfCompileUnit::getOrCreateGlobalVariableDIE().

bool llvm::DwarfDebug::useSplitDwarf ( ) const
inline

Returns whether or not to change the current debug info for the split dwarf proposal support.

Definition at line 573 of file DwarfDebug.h.

Referenced by addDwarfTypeUnitType(), llvm::DwarfCompileUnit::addLabelAddress(), llvm::DwarfUnit::addOpAddress(), llvm::DIEEntry::EmitValue(), llvm::DIELocList::EmitValue(), endModule(), and llvm::DwarfCompileUnit::getOrCreateGlobalVariableDIE().


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