class PDBSymbol

Declaration

class PDBSymbol { /* full declaration omitted */ };

Description

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

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:71

Member Variables

protected const llvm::pdb::IPDBSession& Session
protected std::unique_ptr<IPDBRawSymbol> OwnedRawSymbol
protected llvm::pdb::IPDBRawSymbol* RawSymbol = nullptr

Method Overview

  • protected PDBSymbol(const llvm::pdb::IPDBSession & PDBSession)
  • protected PDBSymbol(llvm::pdb::PDBSymbol && Other)
  • public static std::unique_ptr<PDBSymbol> create(const llvm::pdb::IPDBSession & PDBSession, std::unique_ptr<IPDBRawSymbol> RawSymbol)
  • public static std::unique_ptr<PDBSymbol> create(const llvm::pdb::IPDBSession & PDBSession, llvm::pdb::IPDBRawSymbol & RawSymbol)
  • public template <typename ConcreteT>static std::unique_ptr<ConcreteT> createAs(const llvm::pdb::IPDBSession & PDBSession, std::unique_ptr<IPDBRawSymbol> RawSymbol)
  • public template <typename ConcreteT>static std::unique_ptr<ConcreteT> createAs(const llvm::pdb::IPDBSession & PDBSession, llvm::pdb::IPDBRawSymbol & RawSymbol)
  • private static std::unique_ptr<PDBSymbol> createSymbol(const llvm::pdb::IPDBSession & PDBSession, llvm::pdb::PDB_SymType Tag)
  • public void defaultDump(llvm::raw_ostream & OS, int Indent, llvm::pdb::PdbSymbolIdField ShowFlags, llvm::pdb::PdbSymbolIdField RecurseFlags) const
  • public virtual void dump(llvm::pdb::PDBSymDumper & Dumper) const
  • public void dumpChildStats() const
  • public void dumpProperties() const
  • public virtual void dumpRight(llvm::pdb::PDBSymDumper & Dumper) const
  • public template <typename T>std::unique_ptr<ConcreteSymbolEnumerator<T>> findAllChildren() const
  • public std::unique_ptr<IPDBEnumSymbols> findAllChildren(llvm::pdb::PDB_SymType Type) const
  • public std::unique_ptr<IPDBEnumSymbols> findAllChildren() const
  • public std::unique_ptr<IPDBEnumSymbols> findChildren(llvm::pdb::PDB_SymType Type, llvm::StringRef Name, llvm::pdb::PDB_NameSearchFlags Flags) const
  • public std::unique_ptr<IPDBEnumSymbols> findChildrenByRVA(llvm::pdb::PDB_SymType Type, llvm::StringRef Name, llvm::pdb::PDB_NameSearchFlags Flags, uint32_t RVA) const
  • public std::unique_ptr<IPDBEnumSymbols> findInlineFramesByRVA(uint32_t RVA) const
  • public std::unique_ptr<IPDBEnumSymbols> findInlineFramesByVA(uint64_t VA) const
  • public std::unique_ptr<IPDBEnumLineNumbers> findInlineeLinesByRVA(uint32_t RVA, uint32_t Length) const
  • public std::unique_ptr<IPDBEnumLineNumbers> findInlineeLinesByVA(uint64_t VA, uint32_t Length) const
  • public template <typename T>std::unique_ptr<T> findOneChild() const
  • public std::unique_ptr<IPDBEnumSymbols> getChildStats(llvm::pdb::TagStats & Stats) const
  • protected template <typename ConcreteType>std::unique_ptr<ConcreteType> getConcreteSymbolByIdHelper(uint32_t Id) const
  • public std::string getName() const
  • public const llvm::pdb::IPDBRawSymbol & getRawSymbol() const
  • public llvm::pdb::IPDBRawSymbol & getRawSymbol()
  • public const llvm::pdb::IPDBSession & getSession() const
  • public uint32_t getSymIndexId() const
  • public llvm::pdb::PDB_SymType getSymTag() const
  • protected std::unique_ptr<PDBSymbol> getSymbolByIdHelper(uint32_t Id) const
  • public virtual ~PDBSymbol()

Methods

PDBSymbol(
    const llvm::pdb::IPDBSession& PDBSession)

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:76

Parameters

const llvm::pdb::IPDBSession& PDBSession

PDBSymbol(llvm::pdb::PDBSymbol&& Other)

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:77

Parameters

llvm::pdb::PDBSymbol&& Other

static std::unique_ptr<PDBSymbol> create(
    const llvm::pdb::IPDBSession& PDBSession,
    std::unique_ptr<IPDBRawSymbol> RawSymbol)

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:81

Parameters

const llvm::pdb::IPDBSession& PDBSession
std::unique_ptr<IPDBRawSymbol> RawSymbol

static std::unique_ptr<PDBSymbol> create(
    const llvm::pdb::IPDBSession& PDBSession,
    llvm::pdb::IPDBRawSymbol& RawSymbol)

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:83

Parameters

const llvm::pdb::IPDBSession& PDBSession
llvm::pdb::IPDBRawSymbol& RawSymbol

template <typename ConcreteT>
static std::unique_ptr<ConcreteT> createAs(
    const llvm::pdb::IPDBSession& PDBSession,
    std::unique_ptr<IPDBRawSymbol> RawSymbol)

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:88

Templates

ConcreteT

Parameters

const llvm::pdb::IPDBSession& PDBSession
std::unique_ptr<IPDBRawSymbol> RawSymbol

template <typename ConcreteT>
static std::unique_ptr<ConcreteT> createAs(
    const llvm::pdb::IPDBSession& PDBSession,
    llvm::pdb::IPDBRawSymbol& RawSymbol)

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:94

Templates

ConcreteT

Parameters

const llvm::pdb::IPDBSession& PDBSession
llvm::pdb::IPDBRawSymbol& RawSymbol

static std::unique_ptr<PDBSymbol> createSymbol(
    const llvm::pdb::IPDBSession& PDBSession,
    llvm::pdb::PDB_SymType Tag)

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:72

Parameters

const llvm::pdb::IPDBSession& PDBSession
llvm::pdb::PDB_SymType Tag

void defaultDump(
    llvm::raw_ostream& OS,
    int Indent,
    llvm::pdb::PdbSymbolIdField ShowFlags,
    llvm::pdb::PdbSymbolIdField RecurseFlags)
    const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:112

Parameters

llvm::raw_ostream& OS
int Indent
llvm::pdb::PdbSymbolIdField ShowFlags
llvm::pdb::PdbSymbolIdField RecurseFlags

virtual void dump(
    llvm::pdb::PDBSymDumper& Dumper) const

Description

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.

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:106

Parameters

llvm::pdb::PDBSymDumper& Dumper

void dumpChildStats() const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:115

void dumpProperties() const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:114

virtual void dumpRight(
    llvm::pdb::PDBSymDumper& Dumper) const

Description

For certain PDBSymbolTypes, dumps additional information for the type that normally goes on the right side of the symbol.

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:110

Parameters

llvm::pdb::PDBSymDumper& Dumper

template <typename T>
std::unique_ptr<ConcreteSymbolEnumerator<T>>
findAllChildren() const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:128

Templates

T

std::unique_ptr<IPDBEnumSymbols> findAllChildren(
    llvm::pdb::PDB_SymType Type) const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:134

Parameters

llvm::pdb::PDB_SymType Type

std::unique_ptr<IPDBEnumSymbols> findAllChildren()
    const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:135

std::unique_ptr<IPDBEnumSymbols> findChildren(
    llvm::pdb::PDB_SymType Type,
    llvm::StringRef Name,
    llvm::pdb::PDB_NameSearchFlags Flags) const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:138

Parameters

llvm::pdb::PDB_SymType Type
llvm::StringRef Name
llvm::pdb::PDB_NameSearchFlags Flags

std::unique_ptr<IPDBEnumSymbols>
findChildrenByRVA(
    llvm::pdb::PDB_SymType Type,
    llvm::StringRef Name,
    llvm::pdb::PDB_NameSearchFlags Flags,
    uint32_t RVA) const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:140

Parameters

llvm::pdb::PDB_SymType Type
llvm::StringRef Name
llvm::pdb::PDB_NameSearchFlags Flags
uint32_t RVA

std::unique_ptr<IPDBEnumSymbols>
findInlineFramesByRVA(uint32_t RVA) const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:145

Parameters

uint32_t RVA

std::unique_ptr<IPDBEnumSymbols>
findInlineFramesByVA(uint64_t VA) const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:144

Parameters

uint64_t VA

std::unique_ptr<IPDBEnumLineNumbers>
findInlineeLinesByRVA(uint32_t RVA,
                      uint32_t Length) const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:149

Parameters

uint32_t RVA
uint32_t Length

std::unique_ptr<IPDBEnumLineNumbers>
findInlineeLinesByVA(uint64_t VA,
                     uint32_t Length) const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:147

Parameters

uint64_t VA
uint32_t Length

template <typename T>
std::unique_ptr<T> findOneChild() const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:120

Templates

T

std::unique_ptr<IPDBEnumSymbols> getChildStats(
    llvm::pdb::TagStats& Stats) const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:158

Parameters

llvm::pdb::TagStats& Stats

template <typename ConcreteType>
std::unique_ptr<ConcreteType>
getConcreteSymbolByIdHelper(uint32_t Id) const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:164

Templates

ConcreteType

Parameters

uint32_t Id

std::string getName() const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:151

const llvm::pdb::IPDBRawSymbol& getRawSymbol()
    const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:153

llvm::pdb::IPDBRawSymbol& getRawSymbol()

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:154

const llvm::pdb::IPDBSession& getSession() const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:156

uint32_t getSymIndexId() const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:118

llvm::pdb::PDB_SymType getSymTag() const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:117

std::unique_ptr<PDBSymbol> getSymbolByIdHelper(
    uint32_t Id) const

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:161

Parameters

uint32_t Id

virtual ~PDBSymbol()

Declared at: llvm/include/llvm/DebugInfo/PDB/PDBSymbol.h:100