|
LLVM 24.0.0git
|
PDBSymbol defines the base of the inheritance hierarchy for concrete symbol types (e.g. More...
#include "llvm/DebugInfo/PDB/PDBSymbol.h"
Static Public Member Functions | |
| static std::unique_ptr< PDBSymbol > | create (const IPDBSession &PDBSession, std::unique_ptr< IPDBRawSymbol > RawSymbol) |
| static std::unique_ptr< PDBSymbol > | create (const IPDBSession &PDBSession, IPDBRawSymbol &RawSymbol) |
| template<typename ConcreteT> | |
| static std::unique_ptr< ConcreteT > | createAs (const IPDBSession &PDBSession, std::unique_ptr< IPDBRawSymbol > RawSymbol) |
| template<typename ConcreteT> | |
| static std::unique_ptr< ConcreteT > | createAs (const IPDBSession &PDBSession, IPDBRawSymbol &RawSymbol) |
Protected Member Functions | |
| PDBSymbol (const IPDBSession &PDBSession) | |
| PDBSymbol (PDBSymbol &&Other) | |
| std::unique_ptr< PDBSymbol > | getSymbolByIdHelper (uint32_t Id) const |
| template<typename ConcreteType> | |
| std::unique_ptr< ConcreteType > | getConcreteSymbolByIdHelper (uint32_t Id) const |
Protected Attributes | |
| const IPDBSession & | Session |
| std::unique_ptr< IPDBRawSymbol > | OwnedRawSymbol |
| IPDBRawSymbol * | RawSymbol = nullptr |
PDBSymbol defines the base of the inheritance hierarchy for concrete symbol types (e.g.
functions, executables, vtables, etc). All concrete symbol types inherit from PDBSymbol and expose the exact set of methods that are valid for that particular symbol type, as described in the Microsoft reference "Lexical and Class Hierarchy of Symbol Types": https://msdn.microsoft.com/en-us/library/370hs6k4.aspx
Definition at line 72 of file PDBSymbol.h.
|
explicitprotected |
|
protected |
Definition at line 53 of file PDBSymbol.cpp.
References llvm::move(), llvm::Other, PDBSymbol(), RawSymbol, and Session.
|
virtualdefault |
|
static |
Definition at line 109 of file PDBSymbol.cpp.
References RawSymbol.
|
static |
Definition at line 101 of file PDBSymbol.cpp.
References RawSymbol.
Referenced by createAs(), createAs(), llvm::pdb::DIASession::findSymbolByAddress(), llvm::pdb::DIASession::findSymbolByRVA(), llvm::pdb::DIASession::findSymbolBySectOffset(), llvm::pdb::DIAEnumSymbols::getChildAtIndex(), llvm::pdb::DIASession::getGlobalScope(), llvm::pdb::DIAEnumSymbols::getNext(), llvm::pdb::DIASession::getSymbolById(), and llvm::pdb::SymbolCache::getSymbolById().
|
inlinestatic |
Definition at line 95 of file PDBSymbol.h.
References create(), RawSymbol, and llvm::unique_dyn_cast_or_null().
|
inlinestatic |
Definition at line 89 of file PDBSymbol.h.
References create(), RawSymbol, and llvm::unique_dyn_cast_or_null().
Referenced by llvm::pdb::DIASectionContrib::getCompiland(), llvm::pdb::NativeSession::getGlobalScope(), and llvm::pdb::DIARawSymbol::getVirtualBaseTableType().
| void PDBSymbol::defaultDump | ( | raw_ostream & | OS, |
| int | Indent, | ||
| PdbSymbolIdField | ShowFlags, | ||
| PdbSymbolIdField | RecurseFlags ) const |
|
pure virtual |
Dumps the contents of a symbol a raw_ostream.
By default this will just call dump() on the underlying RawSymbol, which allows us to discover unknown properties, but individual implementations of PDBSymbol may override the behavior to only dump known fields.
Implemented in llvm::pdb::PDBSymbolAnnotation, llvm::pdb::PDBSymbolBlock, llvm::pdb::PDBSymbolCompiland, llvm::pdb::PDBSymbolCompilandDetails, llvm::pdb::PDBSymbolCompilandEnv, llvm::pdb::PDBSymbolCustom, llvm::pdb::PDBSymbolData, llvm::pdb::PDBSymbolExe, llvm::pdb::PDBSymbolFunc, llvm::pdb::PDBSymbolFuncDebugEnd, llvm::pdb::PDBSymbolFuncDebugStart, llvm::pdb::PDBSymbolLabel, llvm::pdb::PDBSymbolPublicSymbol, llvm::pdb::PDBSymbolThunk, llvm::pdb::PDBSymbolTypeArray, llvm::pdb::PDBSymbolTypeBaseClass, llvm::pdb::PDBSymbolTypeBuiltin, llvm::pdb::PDBSymbolTypeCustom, llvm::pdb::PDBSymbolTypeDimension, llvm::pdb::PDBSymbolTypeEnum, llvm::pdb::PDBSymbolTypeFriend, llvm::pdb::PDBSymbolTypeFunctionArg, llvm::pdb::PDBSymbolTypeFunctionSig, llvm::pdb::PDBSymbolTypeManaged, llvm::pdb::PDBSymbolTypePointer, llvm::pdb::PDBSymbolTypeTypedef, llvm::pdb::PDBSymbolTypeUDT, llvm::pdb::PDBSymbolTypeVTable, llvm::pdb::PDBSymbolTypeVTableShape, and llvm::pdb::PDBSymbolUsingNamespace.
| void PDBSymbol::dumpChildStats | ( | ) | const |
Definition at line 128 of file PDBSymbol.cpp.
References llvm::raw_ostream::flush(), getChildStats(), llvm::outs(), and Stats.
| void PDBSymbol::dumpProperties | ( | ) | const |
Definition at line 122 of file PDBSymbol.cpp.
References llvm::pdb::All, defaultDump(), llvm::raw_ostream::flush(), llvm::pdb::None, and llvm::outs().
|
inlinevirtual |
For certain PDBSymbolTypes, dumps additional information for the type that normally goes on the right side of the symbol.
Reimplemented in llvm::pdb::PDBSymbolTypeArray, llvm::pdb::PDBSymbolTypeFunctionSig, and llvm::pdb::PDBSymbolTypePointer.
Definition at line 111 of file PDBSymbol.h.
|
inline |
Definition at line 129 of file PDBSymbol.h.
References RawSymbol.
Referenced by findAllChildren(), findOneChild(), getChildStats(), llvm::pdb::PDBSymbolCompiland::getSourceFileFullPath(), and llvm::pdb::UDTLayoutBase::initializeChildren().
| std::unique_ptr< IPDBEnumSymbols > PDBSymbol::findAllChildren | ( | ) | const |
Definition at line 141 of file PDBSymbol.cpp.
References findAllChildren(), and llvm::pdb::None.
| std::unique_ptr< IPDBEnumSymbols > PDBSymbol::findAllChildren | ( | PDB_SymType | Type | ) | const |
Definition at line 146 of file PDBSymbol.cpp.
References RawSymbol, and llvm::pdb::Type.
| std::unique_ptr< IPDBEnumSymbols > PDBSymbol::findChildren | ( | PDB_SymType | Type, |
| StringRef | Name, | ||
| PDB_NameSearchFlags | Flags ) const |
Definition at line 151 of file PDBSymbol.cpp.
References RawSymbol, and llvm::pdb::Type.
| std::unique_ptr< IPDBEnumSymbols > PDBSymbol::findChildrenByRVA | ( | PDB_SymType | Type, |
| StringRef | Name, | ||
| PDB_NameSearchFlags | Flags, | ||
| uint32_t | RVA ) const |
Definition at line 157 of file PDBSymbol.cpp.
References RawSymbol, and llvm::pdb::Type.
| std::unique_ptr< IPDBEnumLineNumbers > PDBSymbol::findInlineeLinesByRVA | ( | uint32_t | RVA, |
| uint32_t | Length ) const |
Definition at line 178 of file PDBSymbol.cpp.
References llvm::Length, and RawSymbol.
| std::unique_ptr< IPDBEnumLineNumbers > PDBSymbol::findInlineeLinesByVA | ( | uint64_t | VA, |
| uint32_t | Length ) const |
Definition at line 173 of file PDBSymbol.cpp.
References llvm::Length, and RawSymbol.
| std::unique_ptr< IPDBEnumSymbols > PDBSymbol::findInlineFramesByRVA | ( | uint32_t | RVA | ) | const |
Definition at line 168 of file PDBSymbol.cpp.
References RawSymbol.
| std::unique_ptr< IPDBEnumSymbols > PDBSymbol::findInlineFramesByVA | ( | uint64_t | VA | ) | const |
Definition at line 163 of file PDBSymbol.cpp.
References RawSymbol.
Definition at line 121 of file PDBSymbol.h.
References llvm::Enumerator, and findAllChildren().
Referenced by llvm::pdb::PDBSymbolExe::getPointerByteSize(), and llvm::pdb::PDBSymbolCompiland::getSourceFileFullPath().
| std::unique_ptr< IPDBEnumSymbols > PDBSymbol::getChildStats | ( | TagStats & | Stats | ) | const |
Definition at line 185 of file PDBSymbol.cpp.
References findAllChildren(), and Stats.
Referenced by dumpChildStats().
|
inlineprotected |
Definition at line 165 of file PDBSymbol.h.
References getSymbolByIdHelper(), and llvm::unique_dyn_cast_or_null().
| std::string PDBSymbol::getName | ( | ) | const |
Definition at line 182 of file PDBSymbol.cpp.
References RawSymbol.
Referenced by llvm::pdb::PDBSymbolFunc::isDestructor().
|
inline |
Definition at line 155 of file PDBSymbol.h.
References RawSymbol.
|
inline |
Definition at line 154 of file PDBSymbol.h.
References RawSymbol.
|
inline |
Definition at line 157 of file PDBSymbol.h.
References Session.
Definition at line 197 of file PDBSymbol.cpp.
References Session.
Referenced by getConcreteSymbolByIdHelper().
| uint32_t PDBSymbol::getSymIndexId | ( | ) | const |
Definition at line 139 of file PDBSymbol.cpp.
References RawSymbol.
| PDB_SymType PDBSymbol::getSymTag | ( | ) | const |
Definition at line 138 of file PDBSymbol.cpp.
References RawSymbol.
|
protected |
Definition at line 170 of file PDBSymbol.h.
|
protected |
Definition at line 171 of file PDBSymbol.h.
Referenced by create(), create(), createAs(), createAs(), defaultDump(), findAllChildren(), findAllChildren(), findChildren(), findChildrenByRVA(), findInlineeLinesByRVA(), findInlineeLinesByVA(), findInlineFramesByRVA(), findInlineFramesByVA(), llvm::pdb::PDBSymbolCompilandDetails::getBackEndVersion(), llvm::pdb::PDBSymbolData::getCompilandId(), llvm::pdb::PDBSymbolCustom::getDataBytes(), llvm::pdb::PDBSymbolCompilandDetails::getFrontEndVersion(), llvm::pdb::PDBSymbolData::getLineNumbers(), getName(), getRawSymbol(), getRawSymbol(), llvm::pdb::PDBSymbolCompiland::getSourceFileFullPath(), getSymIndexId(), getSymTag(), llvm::pdb::PDBSymbolCompilandEnv::getValue(), and PDBSymbol().
|
protected |
Definition at line 169 of file PDBSymbol.h.
Referenced by llvm::pdb::PDBSymbolFunc::getArguments(), llvm::pdb::PDBSymbolTypeFunctionSig::getArguments(), llvm::pdb::PDBSymbolData::getCompilandId(), llvm::pdb::PDBSymbolData::getLineNumbers(), getSession(), llvm::pdb::PDBSymbolCompiland::getSourceFileFullPath(), getSymbolByIdHelper(), PDBSymbol(), and PDBSymbol().