60 #define FACTORY_SYMTAG_CASE(Tag, Type) \ 61 case PDB_SymType::Tag: \ 62 return std::unique_ptr<PDBSymbol>(new Type(PDBSession)); 64 std::unique_ptr<PDBSymbol>
102 std::unique_ptr<PDBSymbol>
104 std::unique_ptr<IPDBRawSymbol>
RawSymbol) {
105 auto SymbolPtr = createSymbol(PDBSession, RawSymbol->getSymTag());
106 SymbolPtr->RawSymbol = RawSymbol.get();
107 SymbolPtr->OwnedRawSymbol = std::move(RawSymbol);
113 auto SymbolPtr = createSymbol(PDBSession, RawSymbol.
getSymTag());
134 for (
auto &Stat : Stats) {
135 outs() << Stat.first <<
": " << Stat.second <<
"\n";
147 std::unique_ptr<IPDBEnumSymbols>
152 std::unique_ptr<IPDBEnumSymbols>
158 std::unique_ptr<IPDBEnumSymbols>
164 std::unique_ptr<IPDBEnumSymbols>
169 std::unique_ptr<IPDBEnumSymbols>
175 while (
auto Child = Result->getNext()) {
176 ++Stats[Child->getSymTag()];
197 OS << Name <<
": " << Value;
IPDBSession defines an interface used to provide a context for querying debug information from a debu...
IPDBRawSymbol * RawSymbol
This class represents lattice values for constants.
virtual std::unique_ptr< IPDBEnumSymbols > findChildren(PDB_SymType Type) const =0
virtual PDB_SymType getSymTag() const =0
PDBSymbolCustom represents symbols that are compiler-specific and do not fit anywhere else in the lex...
raw_ostream & indent(unsigned NumSpaces)
indent - Insert 'NumSpaces' spaces.
PDB_NameSearchFlags
Defines flags used for enumerating child symbols.
virtual std::unique_ptr< IPDBEnumSymbols > findChildrenByRVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags, uint32_t RVA) const =0
std::unique_ptr< ConcreteSymbolEnumerator< T > > findAllChildren() const
amdgpu Simplify well known AMD library false Value Value const Twine & Name
std::unordered_map< PDB_SymType, int > TagStats
block placement Basic Block Placement Stats
virtual SymIndexId getSymIndexId() const =0
std::unique_ptr< IPDBEnumSymbols > getChildStats(TagStats &Stats) const
virtual std::unique_ptr< PDBSymbol > getSymbolById(SymIndexId SymbolId) const =0
Class to represent array types.
Class to represent pointers.
PDB_SymType
These values correspond to the SymTagEnum enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/bkedss5f.aspx.
void defaultDump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowFlags, PdbSymbolIdField RecurseFlags) const
raw_ostream & outs()
This returns a reference to a raw_ostream for standard output.
The instances of the Type class are immutable: once they are created, they are never changed...
virtual std::unique_ptr< IPDBEnumSymbols > findInlineFramesByRVA(uint32_t RVA) const =0
IPDBRawSymbol defines an interface used to represent an arbitrary symbol.
virtual void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields, PdbSymbolIdField RecurseIdFields) const =0
std::unique_ptr< IPDBEnumSymbols > findChildren(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags) const
void dumpSymbolIdField(raw_ostream &OS, StringRef Name, SymIndexId Value, int Indent, const IPDBSession &Session, PdbSymbolIdField FieldId, PdbSymbolIdField ShowFlags, PdbSymbolIdField RecurseFlags)
PDBSymbol(const IPDBSession &PDBSession)
std::unique_ptr< PDBSymbol > getSymbolByIdHelper(uint32_t Id) const
PDB_SymType getSymTag() const
PDBSymbol defines the base of the inheritance hierarchy for concrete symbol types (e...
#define FACTORY_SYMTAG_CASE(Tag, Type)
const IPDBSession & Session
std::unique_ptr< IPDBEnumSymbols > findChildrenByRVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags, uint32_t RVA) const
void dumpProperties() const
std::unique_ptr< IPDBEnumSymbols > findInlineFramesByRVA(uint32_t RVA) const
uint32_t getSymIndexId() const
LLVM Value Representation.
This class implements an extremely fast bulk output stream that can only output to a stream...
static std::unique_ptr< PDBSymbol > create(const IPDBSession &PDBSession, std::unique_ptr< IPDBRawSymbol > RawSymbol)
StringRef - Represent a constant reference to a string, i.e.
void dumpChildStats() const