The SymbolData<'t> enum is the primary way to interact with parsed PDB symbols. It contains the structured representation of various symbol types found in the stream.
Common variants include:
Procedure(ProcedureSymbol<'t>): Represents functions or methods.Data(DataSymbol<'t>): Represents static data like global variables.Public(PublicSymbol<'t>): Represents public symbols with mangled names.Constant(ConstantSymbol<'t>): Represents constant values.UserDefinedType(UserDefinedTypeSymbol<'t>): Represents UDTs.InlineSite(InlineSiteSymbol<'t>): Represents the callsite of an inlined function.ScopeEnd: A marker for the end of a scope.
You can use the .name() method on any SymbolData variant to attempt to retrieve a RawString<'t> name if the symbol type supports it.
#[non_exhaustive]
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum SymbolData<'t> {
ScopeEnd,
ObjName(ObjNameSymbol<'t>),
RegisterVariable(RegisterVariableSymbol<'t>),
Constant(ConstantSymbol<'t>),
UserDefinedType(UserDefinedTypeSymbol<'t>),
MultiRegisterVariable(MultiRegisterVariableSymbol<'t>),
Data(DataSymbol<'t>),
Public(PublicSymbol<'t>),
Procedure(ProcedureSymbol<'t>),
ThreadStorage(ThreadStorageSymbol<'t>),
CompileFlags(CompileFlagsSymbol<'t>),
UsingNamespace(UsingNamespaceSymbol<'t>),
ProcedureReference(ProcedureReferenceSymbol<'t>),
DataReference(DataReferenceSymbol<'t>),
AnnotationReference(AnnotationReferenceSymbol<'t>),
Trampoline(TrampolineSymbol),
Export(ExportSymbol<'t>),
Local(LocalSymbol<'t>),
BuildInfo(BuildInfoSymbol),
InlineSite(InlineSiteSymbol<'t>),
InlineSiteEnd,
ProcedureEnd,
Label(LabelSymbol<'t>),
Block(BlockSymbol<'t>),
RegisterRelative(RegisterRelativeSymbol<'t>),
Thunk(ThunkSymbol<'t>),
SeparatedCode(SeparatedCodeSymbol),
}