llvm::codeview

Types

NameDescription
AnnotationSym
AppendingTypeTableBuilder
ArgListRecord
ArrayRecord
BPRelativeSym
BaseClassRecord
BinaryAnnotationIterator
BitFieldRecord
BlockSym
BuildInfoRecord
BuildInfoSym
CPURegister
CVMemberRecord
CVRecord CVRecord is a fat pointer (base + size pair) to a symbol or type record. Carrying the size separately instead of trusting the size stored in the record prefix provides some extra safety and flexibility.
CVSymbolDumper Dumper for CodeView symbol streams found in COFF object files and PDB files.
CVSymbolVisitor
CallSiteInfoSym
CallerSym
ClassRecord
CodeViewError Base class for errors originating when parsing raw PDB files
CodeViewRecordIO
CodeViewRecordStreamer
CoffGroupSym
ColumnInfo
ColumnNumberEntry
Compile2Sym
Compile3Sym
ConstantSym
ContinuationRecordBuilder
CrossModuleExport
CrossModuleImport
CrossModuleImportItem
DataMemberRecord
DataSym
DebugChecksumsSubsection
DebugChecksumsSubsectionRef
DebugCrossModuleExportsSubsection
DebugCrossModuleExportsSubsectionRef
DebugCrossModuleImportsSubsection
DebugCrossModuleImportsSubsectionRef
DebugFrameDataSubsection
DebugFrameDataSubsectionRef
DebugInfo
DebugInlineeLinesSubsection
DebugInlineeLinesSubsectionRef
DebugLinesSubsection
DebugLinesSubsectionRef
DebugStringTableSubsection Represents a read-write view of a CodeView string table. DebugStringTableSubsection owns the underlying storage for the table, and is capable of serializing the string table into a format understood by DebugStringTableSubsectionRef.
DebugStringTableSubsectionRef Represents a read-only view of a CodeView string table. This is a very simple flat buffer consisting of null-terminated strings, where strings are retrieved by their offset in the buffer. DebugStringTableSubsectionRef does not own the underlying storage for the buffer.
DebugSubsection
DebugSubsectionHeader
DebugSubsectionRecord
DebugSubsectionRecordBuilder
DebugSubsectionRef
DebugSubsectionVisitor
DebugSymbolRVASubsection
DebugSymbolRVASubsectionRef
DebugSymbolsSubsection
DebugSymbolsSubsectionRef
DebugUnknownSubsectionRef
DecodedAnnotation
DefRangeFramePointerRelFullScopeSym
DefRangeFramePointerRelHeader
DefRangeFramePointerRelSym
DefRangeRegisterHeader
DefRangeRegisterRelHeader
DefRangeRegisterRelIndirHeader
DefRangeRegisterRelIndirSym S_DEFRANGE_REGISTER_REL_INDIR
DefRangeRegisterRelSym
DefRangeRegisterSym
DefRangeSubfieldRegisterHeader
DefRangeSubfieldRegisterSym
DefRangeSubfieldSym
DefRangeSym
EndPrecompRecord
EnumRecord
EnumeratorRecord
EnvBlockSym
ExportSym
FieldListDeserializer
FieldListRecord
FileChecksumEntry
FileStaticSym
FrameCookieSym
FrameData Data in the SUBSEC_FRAMEDATA subection.
FrameProcSym
FuncIdRecord
FunctionId
GUID This represents the 'GUID' type from windows.h.
GlobalTypeTableBuilder
GloballyHashedType A globally hashed type represents a hash value that is sufficient to uniquely identify a record across multiple type streams or type sequences. This works by, for any given record A which references B, replacing the TypeIndex that refers to B with a previously-computed global hash for B. As this is a recursive algorithm (e.g. the global hash of B also depends on the global hashes of the types that B refers to), a global hash can uniquely identify that A occurs in another stream that has a completely different graph structure. Although the hash itself is slower to compute, probing is much faster with a globally hashed type, because the hash itself is considered "as good as" the original type. Since type records can be quite large, this makes the equality comparison of the hash much faster than equality comparison of a full record.
HeapAllocationSiteSym
HotPatchFuncSym
InlineSiteSym
InlineeSourceLine
InlineeSourceLineHeader
JumpTableSym
LabelRecord
LabelSym
LazyRandomTypeCollection Provides amortized O(1) random access to a CodeView type stream. Normally to access a type from a type stream, you must know its byte offset into the type stream, because type records are variable-lengthed. However, this is not the way we prefer to access them. For example, given a symbol record one of the fields may be the TypeIndex of the symbol's type record. Or given a type record such as an array type, there might be a TypeIndex for the element type. Sequential access is perfect when we're just dumping every entry, but it's very poor for real world usage.
Line
LineBlockFragmentHeader
LineColumnEntry
LineColumnExtractor
LineFragmentHeader
LineInfo
LineNumberEntry
ListContinuationRecord LF_INDEX - Used to chain two large LF_FIELDLIST or LF_METHODLIST records together. The first will end in an LF_INDEX record that points to the next.
LocalSym
LocalVariableAddrGap
LocalVariableAddrRange
LocallyHashedType A locally hashed type represents a straightforward hash code of a serialized record. The record is simply serialized, and then the bytes are hashed by a standard algorithm. This is sufficient for the case of de-duplicating records within a single sequence of types, because if two records both have a back-reference to the same type in the same stream, they will both have the same numeric value for the TypeIndex of the back reference.
MemberAttributes Equvalent to CV_fldattr_t in cvinfo.h.
MemberFuncIdRecord
MemberFunctionRecord
MemberPointerInfo
MergingTypeTableBuilder
MethodOverloadListRecord
ModifierRecord
NestedTypeRecord
ObjNameSym
OneMethodRecord
OverloadedMethodRecord For method overload sets. LF_METHOD
PCHMergerInfo Used to forward information about PCH.OBJ (precompiled) files, when applicable.
PDB20DebugInfo
PDB70DebugInfo
PointerRecord
PrecompRecord
ProcRefSym
ProcSym
ProcedureRecord
PublicSym32
PublicSym32Header
RecordPrefix
RegRelativeIndirSym S_REGREL32_INDIR
RegRelativeSym
RegisterSym
ScopeEndSym
SectionSym
SimpleTypeSerializer
StaticDataMemberRecord
StringIdRecord
StringListRecord
StringsAndChecksums
StringsAndChecksumsRef
SymbolDeserializer
SymbolDumpDelegate
SymbolRecord
SymbolRecordMapping
SymbolSerializer
SymbolVisitorCallbackPipeline
SymbolVisitorCallbacks
SymbolVisitorDelegate
TagRecord
ThreadLocalDataSym
Thunk32Sym
TiReference
TrampolineSym
TypeCollection
TypeDeserializer
TypeDumpVisitor Dumper for CodeView type streams found in COFF object files and PDB files.
TypeIndex A 32-bit type reference. Types are indexed by their order of appearance in .debug$T plus 0x1000. Type indices less than 0x1000 are "simple" types, composed of a SimpleTypeMode byte followed by a SimpleTypeKind byte.
TypeIndexOffset
TypeRecord
TypeRecordMapping
TypeServer2Record
TypeSymbolEmitter
TypeTableCollection
TypeVisitorCallbackPipeline
TypeVisitorCallbacks
UDTSym
UdtModSourceLineRecord
UdtSourceLineRecord
UnionRecord
UsingNamespaceSym
VFPtrRecord
VFTableRecord
VFTableShapeRecord
VirtualBaseClassRecord
serialize_array_impl
serialize_arrayref_tail_impl
serialize_conditional_impl
serialize_null_term_string_array_impl
serialize_numeric_impl
serialize_vector_tail_impl

Type Aliases

Name
CVSymbol
CVSymbolArray
CVType
CVTypeArray
CVTypeRange
DebugSubsectionArray

Enums

NameDescription
Unnamed enum
Unnamed enum Limit on the size of all codeview symbol and type records, including the RecordPrefix. MSVC does not emit any records larger than this.
Unnamed enum
BinaryAnnotationsOpCode
CPUType These values correspond to the CV_CPU_TYPE_e enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/b2fc64ek.aspx
CallingConvention These values correspond to the CV_call_e enumeration, and are documented at the following locations: https://msdn.microsoft.com/en-us/library/b2fc64ek.aspx https://msdn.microsoft.com/en-us/library/windows/desktop/ms680207(v=vs.85).aspx
ClassOptions
CodeViewContainer
CompileSym2Flags Corresponds to COMPILESYM2::Flags bitfield.
CompileSym3Flags Corresponds to COMPILESYM3::Flags bitfield.
ContinuationRecordKind
DebugSubsectionKind
EncodedFramePtrReg Two-bit value indicating which register is the designated frame pointer register. Appears in the S_FRAMEPROC record flags.
ExportFlags
FileChecksumKind
FrameCookieKind
FrameProcedureOptions
FunctionOptions
GlobalTypeHashAlg
HfaKind
InlineeLinesSignature
JumpTableEntrySize
LabelType Equivalent to CV_LABEL_TYPE_e.
LineFlags
LocalSymFlags Corresponds to CV_LVARFLAGS bitfield.
MemberAccess Source-level access specifier. (CV_access_e)
MethodKind Part of member attribute flags. (CV_methodprop_e)
MethodOptions Equivalent to CV_fldattr_t bitfield.
ModifierOptions Equivalent to CV_modifier_t. TODO: Add flag for _Atomic modifier
PointerKind Equivalent to CV_ptrtype_e.
PointerMode Equivalent to CV_ptrmode_e.
PointerOptions Equivalent to misc lfPointerAttr bitfields.
PointerToMemberRepresentation Equivalent to CV_pmtype_e.
ProcSymFlags Corresponds to the CV_PROCFLAGS bitfield.
PublicSymFlags Corresponds to the CV_PUBSYMFLAGS bitfield.
RegisterId
SimpleTypeKind
SimpleTypeMode
SourceLanguage These values correspond to the CV_CFL_LANG enumeration in the Microsoft Debug Interface Access SDK, and are documented here: https://learn.microsoft.com/en-us/visualstudio/debugger/debug-interface-access/cv-cfl-lang
SymbolKind Duplicate copy of the above enum, but using the official CV names. Useful for reference purposes and when dealing with unknown record types.
SymbolRecordKind Distinguishes individual records in the Symbols subsection of a .debug$S section. Equivalent to SYM_ENUM_e in cvinfo.h.
ThunkOrdinal These values correspond to the THUNK_ORDINAL enumeration.
TiRefKind
TrampolineType
TypeLeafKind Duplicate copy of the above enum, but using the official CV names. Useful for reference purposes and when dealing with unknown record types.
TypeRecordKind Distinguishes individual records in .debug\(T or .debug\)P section or PDB type stream. The documentation and headers talk about this as the "leaf" type.
VFTableSlotKind
VisitorDataSource
WindowsRTClassKind
cv_error_code

Functions

NameDescription
CVErrorCategory
alignOf
computeTypeName
consume consume overloads
consume_numeric Decodes a numeric leaf value that is known to be a particular type.
decodeFramePtrReg
discoverTypeIndices
discoverTypeIndicesInSymbol Discover type indices in symbol records. Returns false if this is an unknown record.
encodeFramePtrReg
fmt_guid
forEachCodeViewRecord
getBytesAsCString
getBytesAsCharacters Reinterpret a byte array as an array of characters. Does not interpret as a C string, as StringRef has several helpers (split) that make that easy.
getCPUTypeNames
getCallingConventions
getClassOptionNames
getCompileSym2FlagNames
getCompileSym3FlagNames
getExportSymFlagNames
getFileChecksumNames
getFrameCookieKindNames
getFrameProcSymFlagNames
getFunctionOptionEnum
getImageSectionCharacteristicNames
getJumpTableEntrySizeNames
getLabelTypeEnum
getLocalFlagNames
getMemberAccessNames
getMemberKindNames
getMethodOptionNames
getModifiedType Given a CVType which is assumed to be an LF_MODIFIER, return the TypeIndex of the type that the LF_MODIFIER modifies.
getModuleSubstreamKindNames
getProcSymFlagNames
getPtrKindNames
getPtrMemberRepNames
getPtrModeNames
getPublicSymFlagNames
getRegisterNames
getScopeEndOffset Given a symbol P for which symbolOpensScope(P) == true, return the corresponding end offset.
getScopeParentOffset
getSizeInBytesForTypeIndex Given an arbitrary codeview type index, determine its size.
getSizeInBytesForTypeRecord Given an arbitrary codeview type, return the type's size in the case of aggregate (LF_STRUCTURE, LF_CLASS, LF_INTERFACE, LF_UNION).
getSourceLanguageNames
getSymbolName
getSymbolTypeNames
getThunkOrdinalNames
getTrampolineNames
getTypeLeafNames
getTypeModifierNames
isAggregate Given an arbitrary codeview type, determine if it is an LF_STRUCTURE, LF_CLASS, LF_INTERFACE, LF_UNION.
isIdRecord Return true if this record should be in the IPI stream of a PDB. In an object file, these record kinds will appear mixed into the .debug$T section.
isUdtForwardRef Given an arbitrary codeview type, determine if it is an LF_STRUCTURE, LF_CLASS, LF_INTERFACE, LF_UNION, or LF_ENUM with the forward ref class option.
limitSymbolArrayToScope
make_error_code
mergeIdRecords Merge one set of id records into another. This method assumes that all records are id records, and there are no Type records present. However, since Id records can refer back to Type records, this method assumes that the referenced type records have also been merged into another type stream (for example using the above method), and accepts the mapping from source to dest for that stream so that it can re-write the type record mappings accordingly.
mergeTypeAndIdRecords Merge a unified set of type and id records, splitting them into separate output streams.
mergeTypeRecords Merge one set of type records into another. This method assumes that all records are type records, and there are no Id records present.
operator& Bitwise conjunction operators
operator&= Bitwise conjunction assignment operators
operator+ Addition operator
operator- Subtraction operators
operator| Bitwise disjunction operators
operator|= Bitwise disjunction assignment operators
operator~ Bitwise negation operators
printTypeIndex
readCVRecordFromStream Read a complete record from a stream at a random offset.
readSymbolFromStream
serialize_array
serialize_array_tail
serialize_conditional
serialize_null_term_string_array
serialize_numeric
symbolEndsScope Return true if this ssymbol ends a scope.
symbolOpensScope Return true if this symbol opens a scope. This implies that the symbol has "parent" and "end" fields, which contain the offset of the S_END or S_INLINESITE_END record.
visitDebugSubsection
visitDebugSubsections
visitMemberRecord
visitMemberRecordStream
visitTypeRecord
visitTypeStream
operator<< Stream insertion operator
operator== Equality operators
operator!= Inequality operators
operator< Less-than operators
operator<= Less-than-or-equal operators
operator> Greater-than operators
operator>= Greater-than-or-equal operators

Using Declarations

Name
little32_t
ulittle16_t
ulittle32_t