LLVM 20.0.0git
Namespaces | Classes | Typedefs | Enumerations | Functions
llvm::codeview Namespace Reference

Namespaces

namespace  detail
 

Classes

class  AnnotationSym
 
class  AppendingTypeTableBuilder
 
class  ArgListRecord
 
class  ArrayRecord
 
class  BaseClassRecord
 
struct  BinaryAnnotationIterator
 
class  BitFieldRecord
 
class  BlockSym
 
class  BPRelativeSym
 
class  BuildInfoRecord
 
class  BuildInfoSym
 
class  CallerSym
 
class  CallSiteInfoSym
 
class  ClassRecord
 
class  CodeViewError
 Base class for errors originating when parsing raw PDB files. More...
 
class  CodeViewRecordIO
 
class  CodeViewRecordStreamer
 
class  CoffGroupSym
 
class  ColumnInfo
 
struct  ColumnNumberEntry
 
class  Compile2Sym
 
class  Compile3Sym
 
class  ConstantSym
 
class  ContinuationRecordBuilder
 
struct  CPURegister
 
struct  CrossModuleExport
 
struct  CrossModuleImport
 
struct  CrossModuleImportItem
 
struct  CVMemberRecord
 
class  CVRecord
 CVRecord is a fat pointer (base + size pair) to a symbol or type record. More...
 
class  CVSymbolDumper
 Dumper for CodeView symbol streams found in COFF object files and PDB files. More...
 
class  CVSymbolVisitor
 
class  DataMemberRecord
 
class  DataSym
 
class  DebugChecksumsSubsection
 
class  DebugChecksumsSubsectionRef
 
class  DebugCrossModuleExportsSubsection
 
class  DebugCrossModuleExportsSubsectionRef
 
class  DebugCrossModuleImportsSubsection
 
class  DebugCrossModuleImportsSubsectionRef
 
class  DebugFrameDataSubsection
 
class  DebugFrameDataSubsectionRef
 
union  DebugInfo
 
class  DebugInlineeLinesSubsection
 
class  DebugInlineeLinesSubsectionRef
 
class  DebugLinesSubsection
 
class  DebugLinesSubsectionRef
 
class  DebugStringTableSubsection
 Represents a read-write view of a CodeView string table. More...
 
class  DebugStringTableSubsectionRef
 Represents a read-only view of a CodeView string table. More...
 
class  DebugSubsection
 
struct  DebugSubsectionHeader
 
class  DebugSubsectionRecord
 
class  DebugSubsectionRecordBuilder
 
class  DebugSubsectionRef
 
class  DebugSubsectionVisitor
 
class  DebugSymbolRVASubsection
 
class  DebugSymbolRVASubsectionRef
 
class  DebugSymbolsSubsection
 
class  DebugSymbolsSubsectionRef
 
class  DebugUnknownSubsectionRef
 
struct  DecodedAnnotation
 
class  DefRangeFramePointerRelFullScopeSym
 
struct  DefRangeFramePointerRelHeader
 
class  DefRangeFramePointerRelSym
 
struct  DefRangeRegisterHeader
 
struct  DefRangeRegisterRelHeader
 
class  DefRangeRegisterRelSym
 
class  DefRangeRegisterSym
 
struct  DefRangeSubfieldRegisterHeader
 
class  DefRangeSubfieldRegisterSym
 
class  DefRangeSubfieldSym
 
class  DefRangeSym
 
class  EndPrecompRecord
 
class  EnumeratorRecord
 
class  EnumRecord
 
class  EnvBlockSym
 
class  ExportSym
 
class  FieldListDeserializer
 
class  FieldListRecord
 
struct  FileChecksumEntry
 
class  FileStaticSym
 
class  FrameCookieSym
 
struct  FrameData
 Data in the SUBSEC_FRAMEDATA subection. More...
 
class  FrameProcSym
 
class  FuncIdRecord
 
class  FunctionId
 
struct  GloballyHashedType
 A globally hashed type represents a hash value that is sufficient to uniquely identify a record across multiple type streams or type sequences. More...
 
class  GlobalTypeTableBuilder
 
struct  GUID
 This represents the 'GUID' type from windows.h. More...
 
class  HeapAllocationSiteSym
 
struct  InlineeSourceLine
 
struct  InlineeSourceLineHeader
 
class  InlineSiteSym
 
class  JumpTableSym
 
class  LabelRecord
 
class  LabelSym
 
class  LazyRandomTypeCollection
 Provides amortized O(1) random access to a CodeView type stream. More...
 
class  Line
 
struct  LineBlockFragmentHeader
 
struct  LineColumnEntry
 
class  LineColumnExtractor
 
struct  LineFragmentHeader
 
class  LineInfo
 
struct  LineNumberEntry
 
class  ListContinuationRecord
 LF_INDEX - Used to chain two large LF_FIELDLIST or LF_METHODLIST records together. More...
 
struct  LocallyHashedType
 A locally hashed type represents a straightforward hash code of a serialized record. More...
 
class  LocalSym
 
struct  LocalVariableAddrGap
 
struct  LocalVariableAddrRange
 
struct  MemberAttributes
 Equvalent to CV_fldattr_t in cvinfo.h. More...
 
class  MemberFuncIdRecord
 
class  MemberFunctionRecord
 
class  MemberPointerInfo
 
class  MergingTypeTableBuilder
 
class  MethodOverloadListRecord
 
class  ModifierRecord
 
class  NestedTypeRecord
 
class  ObjNameSym
 
class  OneMethodRecord
 
class  OverloadedMethodRecord
 For method overload sets. LF_METHOD. More...
 
struct  PCHMergerInfo
 Used to forward information about PCH.OBJ (precompiled) files, when applicable. More...
 
struct  PDB20DebugInfo
 
struct  PDB70DebugInfo
 
class  PointerRecord
 
class  PrecompRecord
 
class  ProcedureRecord
 
class  ProcRefSym
 
class  ProcSym
 
class  PublicSym32
 
struct  PublicSym32Header
 
struct  RecordPrefix
 
class  RegisterSym
 
class  RegRelativeSym
 
class  ScopeEndSym
 
class  SectionSym
 
struct  serialize_array_impl
 
struct  serialize_arrayref_tail_impl
 
struct  serialize_conditional_impl
 
struct  serialize_null_term_string_array_impl
 
struct  serialize_numeric_impl
 
struct  serialize_vector_tail_impl
 
class  SimpleTypeSerializer
 
class  StaticDataMemberRecord
 
class  StringIdRecord
 
class  StringListRecord
 
class  StringsAndChecksums
 
class  StringsAndChecksumsRef
 
class  SymbolDeserializer
 
class  SymbolDumpDelegate
 
class  SymbolRecord
 
class  SymbolRecordMapping
 
class  SymbolSerializer
 
class  SymbolVisitorCallbackPipeline
 
class  SymbolVisitorCallbacks
 
class  SymbolVisitorDelegate
 
class  TagRecord
 
class  ThreadLocalDataSym
 
class  Thunk32Sym
 
struct  TiReference
 
class  TrampolineSym
 
class  TypeCollection
 
class  TypeDeserializer
 
class  TypeDumpVisitor
 Dumper for CodeView type streams found in COFF object files and PDB files. More...
 
class  TypeIndex
 A 32-bit type reference. More...
 
struct  TypeIndexOffset
 
class  TypeRecord
 
class  TypeRecordMapping
 
class  TypeServer2Record
 
class  TypeSymbolEmitter
 
class  TypeTableCollection
 
class  TypeVisitorCallbackPipeline
 
class  TypeVisitorCallbacks
 
class  UdtModSourceLineRecord
 
class  UdtSourceLineRecord
 
class  UDTSym
 
struct  UnionRecord
 
class  UsingNamespaceSym
 
class  VFPtrRecord
 
class  VFTableRecord
 
class  VFTableShapeRecord
 
class  VirtualBaseClassRecord
 

Typedefs

using CVType = CVRecord< TypeLeafKind >
 
using CVSymbol = CVRecord< SymbolKind >
 
using CVSymbolArray = VarStreamArray< CVSymbol >
 
using CVTypeArray = VarStreamArray< CVType >
 
using CVTypeRange = iterator_range< CVTypeArray::Iterator >
 
using DebugSubsectionArray = VarStreamArray< DebugSubsectionRecord >
 

Enumerations

enum class  TypeRecordKind : uint16_t { TYPE_RECORD }
 Distinguishes individual records in .debug$T or .debug$P section or PDB type stream. More...
 
enum  TypeLeafKind : uint16_t
 Duplicate copy of the above enum, but using the official CV names. More...
 
enum class  SymbolRecordKind : uint16_t { SYMBOL_RECORD }
 Distinguishes individual records in the Symbols subsection of a .debug$S section. More...
 
enum  SymbolKind : uint16_t
 Duplicate copy of the above enum, but using the official CV names. More...
 
enum class  CPUType : uint16_t {
  Intel8080 = 0x0 , Intel8086 = 0x1 , Intel80286 = 0x2 , Intel80386 = 0x3 ,
  Intel80486 = 0x4 , Pentium = 0x5 , PentiumPro = 0x6 , Pentium3 = 0x7 ,
  MIPS = 0x10 , MIPS16 = 0x11 , MIPS32 = 0x12 , MIPS64 = 0x13 ,
  MIPSI = 0x14 , MIPSII = 0x15 , MIPSIII = 0x16 , MIPSIV = 0x17 ,
  MIPSV = 0x18 , M68000 = 0x20 , M68010 = 0x21 , M68020 = 0x22 ,
  M68030 = 0x23 , M68040 = 0x24 , Alpha = 0x30 , Alpha21164 = 0x31 ,
  Alpha21164A = 0x32 , Alpha21264 = 0x33 , Alpha21364 = 0x34 , PPC601 = 0x40 ,
  PPC603 = 0x41 , PPC604 = 0x42 , PPC620 = 0x43 , PPCFP = 0x44 ,
  PPCBE = 0x45 , SH3 = 0x50 , SH3E = 0x51 , SH3DSP = 0x52 ,
  SH4 = 0x53 , SHMedia = 0x54 , ARM3 = 0x60 , ARM4 = 0x61 ,
  ARM4T = 0x62 , ARM5 = 0x63 , ARM5T = 0x64 , ARM6 = 0x65 ,
  ARM_XMAC = 0x66 , ARM_WMMX = 0x67 , ARM7 = 0x68 , Omni = 0x70 ,
  Ia64 = 0x80 , Ia64_2 = 0x81 , CEE = 0x90 , AM33 = 0xa0 ,
  M32R = 0xb0 , TriCore = 0xc0 , X64 = 0xd0 , EBC = 0xe0 ,
  Thumb = 0xf0 , ARMNT = 0xf4 , ARM64 = 0xf6 , HybridX86ARM64 = 0xf7 ,
  ARM64EC = 0xf8 , ARM64X = 0xf9 , Unknown = 0xff , D3D11_Shader = 0x100
}
 These values correspond to the CV_CPU_TYPE_e enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/b2fc64ek.aspx. More...
 
enum  SourceLanguage : uint8_t {
  C = 0x00 , Cpp = 0x01 , Fortran = 0x02 , Masm = 0x03 ,
  Pascal = 0x04 , Basic = 0x05 , Cobol = 0x06 , Link = 0x07 ,
  Cvtres = 0x08 , Cvtpgd = 0x09 , CSharp = 0x0a , VB = 0x0b ,
  ILAsm = 0x0c , Java = 0x0d , JScript = 0x0e , MSIL = 0x0f ,
  HLSL = 0x10 , ObjC = 0x11 , ObjCpp = 0x12 , Swift = 0x13 ,
  AliasObj = 0x14 , Rust = 0x15 , Go = 0x16 , D = 'D' ,
  OldSwift = 'S'
}
 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. More...
 
enum class  CallingConvention : uint8_t {
  NearC = 0x00 , FarC = 0x01 , NearPascal = 0x02 , FarPascal = 0x03 ,
  NearFast = 0x04 , FarFast = 0x05 , NearStdCall = 0x07 , FarStdCall = 0x08 ,
  NearSysCall = 0x09 , FarSysCall = 0x0a , ThisCall = 0x0b , MipsCall = 0x0c ,
  Generic = 0x0d , AlphaCall = 0x0e , PpcCall = 0x0f , SHCall = 0x10 ,
  ArmCall = 0x11 , AM33Call = 0x12 , TriCall = 0x13 , SH5Call = 0x14 ,
  M32RCall = 0x15 , ClrCall = 0x16 , Inline , NearVector = 0x18 ,
  Swift = 0x19
}
 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. More...
 
enum class  ClassOptions : uint16_t {
  None = 0x0000 , Packed = 0x0001 , HasConstructorOrDestructor = 0x0002 , HasOverloadedOperator = 0x0004 ,
  Nested = 0x0008 , ContainsNestedClass = 0x0010 , HasOverloadedAssignmentOperator = 0x0020 , HasConversionOperator = 0x0040 ,
  ForwardReference = 0x0080 , Scoped = 0x0100 , HasUniqueName = 0x0200 , Sealed = 0x0400 ,
  Intrinsic = 0x2000
}
 
enum class  FrameProcedureOptions : uint32_t {
  None = 0x00000000 , HasAlloca = 0x00000001 , HasSetJmp = 0x00000002 , HasLongJmp = 0x00000004 ,
  HasInlineAssembly = 0x00000008 , HasExceptionHandling = 0x00000010 , MarkedInline = 0x00000020 , HasStructuredExceptionHandling = 0x00000040 ,
  Naked = 0x00000080 , SecurityChecks = 0x00000100 , AsynchronousExceptionHandling = 0x00000200 , NoStackOrderingForSecurityChecks = 0x00000400 ,
  Inlined = 0x00000800 , StrictSecurityChecks = 0x00001000 , SafeBuffers = 0x00002000 , EncodedLocalBasePointerMask = 0x0000C000 ,
  EncodedParamBasePointerMask = 0x00030000 , ProfileGuidedOptimization = 0x00040000 , ValidProfileCounts = 0x00080000 , OptimizedForSpeed = 0x00100000 ,
  GuardCfg = 0x00200000 , GuardCfw = 0x00400000
}
 
enum class  FunctionOptions : uint8_t { None = 0x00 , CxxReturnUdt = 0x01 , Constructor = 0x02 , ConstructorWithVirtualBases = 0x04 }
 
enum class  HfaKind : uint8_t { None = 0x00 , Float = 0x01 , Double = 0x02 , Other = 0x03 }
 
enum class  MemberAccess : uint8_t { None = 0 , Private = 1 , Protected = 2 , Public = 3 }
 Source-level access specifier. (CV_access_e) More...
 
enum class  MethodKind : uint8_t {
  Vanilla = 0x00 , Virtual = 0x01 , Static = 0x02 , Friend = 0x03 ,
  IntroducingVirtual = 0x04 , PureVirtual = 0x05 , PureIntroducingVirtual = 0x06
}
 Part of member attribute flags. (CV_methodprop_e) More...
 
enum class  MethodOptions : uint16_t {
  None = 0x0000 , AccessMask = 0x0003 , MethodKindMask = 0x001c , Pseudo = 0x0020 ,
  NoInherit = 0x0040 , NoConstruct = 0x0080 , CompilerGenerated = 0x0100 , Sealed = 0x0200
}
 Equivalent to CV_fldattr_t bitfield. More...
 
enum class  LabelType : uint16_t { Near = 0x0 , Far = 0x4 }
 Equivalent to CV_LABEL_TYPE_e. More...
 
enum class  ModifierOptions : uint16_t { None = 0x0000 , Const = 0x0001 , Volatile = 0x0002 , Unaligned = 0x0004 }
 Equivalent to CV_modifier_t. More...
 
enum  : uint32_t { SubsectionIgnoreFlag = 0x80000000 }
 
enum class  DebugSubsectionKind : uint32_t {
  None = 0 , Symbols = 0xf1 , Lines = 0xf2 , StringTable = 0xf3 ,
  FileChecksums = 0xf4 , FrameData = 0xf5 , InlineeLines = 0xf6 , CrossScopeImports = 0xf7 ,
  CrossScopeExports = 0xf8 , ILLines = 0xf9 , FuncMDTokenMap = 0xfa , TypeMDTokenMap = 0xfb ,
  MergedAssemblyInput = 0xfc , CoffSymbolRVA = 0xfd , XfgHashType = 0xff , XfgHashVirtual = 0x100
}
 
enum class  PointerKind : uint8_t {
  Near16 = 0x00 , Far16 = 0x01 , Huge16 = 0x02 , BasedOnSegment = 0x03 ,
  BasedOnValue = 0x04 , BasedOnSegmentValue = 0x05 , BasedOnAddress = 0x06 , BasedOnSegmentAddress = 0x07 ,
  BasedOnType = 0x08 , BasedOnSelf = 0x09 , Near32 = 0x0a , Far32 = 0x0b ,
  Near64 = 0x0c
}
 Equivalent to CV_ptrtype_e. More...
 
enum class  PointerMode : uint8_t {
  Pointer = 0x00 , LValueReference = 0x01 , PointerToDataMember = 0x02 , PointerToMemberFunction = 0x03 ,
  RValueReference = 0x04
}
 Equivalent to CV_ptrmode_e. More...
 
enum class  PointerOptions : uint32_t {
  None = 0x00000000 , Flat32 = 0x00000100 , Volatile = 0x00000200 , Const = 0x00000400 ,
  Unaligned = 0x00000800 , Restrict = 0x00001000 , WinRTSmartPointer = 0x00080000 , LValueRefThisPointer = 0x00100000 ,
  RValueRefThisPointer = 0x00200000
}
 Equivalent to misc lfPointerAttr bitfields. More...
 
enum class  PointerToMemberRepresentation : uint16_t {
  Unknown = 0x00 , SingleInheritanceData = 0x01 , MultipleInheritanceData = 0x02 , VirtualInheritanceData = 0x03 ,
  GeneralData = 0x04 , SingleInheritanceFunction = 0x05 , MultipleInheritanceFunction = 0x06 , VirtualInheritanceFunction = 0x07 ,
  GeneralFunction = 0x08
}
 Equivalent to CV_pmtype_e. More...
 
enum class  VFTableSlotKind : uint8_t {
  Near16 = 0x00 , Far16 = 0x01 , This = 0x02 , Outer = 0x03 ,
  Meta = 0x04 , Near = 0x05 , Far = 0x06
}
 
enum class  WindowsRTClassKind : uint8_t { None = 0x00 , RefClass = 0x01 , ValueClass = 0x02 , Interface = 0x03 }
 
enum class  LocalSymFlags : uint16_t {
  None = 0 , IsParameter = 1 << 0 , IsAddressTaken = 1 << 1 , IsCompilerGenerated = 1 << 2 ,
  IsAggregate = 1 << 3 , IsAggregated = 1 << 4 , IsAliased = 1 << 5 , IsAlias = 1 << 6 ,
  IsReturnValue = 1 << 7 , IsOptimizedOut = 1 << 8 , IsEnregisteredGlobal = 1 << 9 , IsEnregisteredStatic = 1 << 10
}
 Corresponds to CV_LVARFLAGS bitfield. More...
 
enum class  PublicSymFlags : uint32_t {
  None = 0 , Code = 1 << 0 , Function = 1 << 1 , Managed = 1 << 2 ,
  MSIL = 1 << 3
}
 Corresponds to the CV_PUBSYMFLAGS bitfield. More...
 
enum class  ProcSymFlags : uint8_t {
  None = 0 , HasFP = 1 << 0 , HasIRET = 1 << 1 , HasFRET = 1 << 2 ,
  IsNoReturn = 1 << 3 , IsUnreachable = 1 << 4 , HasCustomCallingConv = 1 << 5 , IsNoInline = 1 << 6 ,
  HasOptimizedDebugInfo = 1 << 7
}
 Corresponds to the CV_PROCFLAGS bitfield. More...
 
enum class  CompileSym2Flags : uint32_t {
  None = 0 , SourceLanguageMask = 0xFF , EC = 1 << 8 , NoDbgInfo = 1 << 9 ,
  LTCG = 1 << 10 , NoDataAlign = 1 << 11 , ManagedPresent = 1 << 12 , SecurityChecks = 1 << 13 ,
  HotPatch = 1 << 14 , CVTCIL = 1 << 15 , MSILModule = 1 << 16
}
 Corresponds to COMPILESYM2::Flags bitfield. More...
 
enum class  CompileSym3Flags : uint32_t {
  None = 0 , SourceLanguageMask = 0xFF , EC = 1 << 8 , NoDbgInfo = 1 << 9 ,
  LTCG = 1 << 10 , NoDataAlign = 1 << 11 , ManagedPresent = 1 << 12 , SecurityChecks = 1 << 13 ,
  HotPatch = 1 << 14 , CVTCIL = 1 << 15 , MSILModule = 1 << 16 , Sdl = 1 << 17 ,
  PGO = 1 << 18 , Exp = 1 << 19
}
 Corresponds to COMPILESYM3::Flags bitfield. More...
 
enum class  ExportFlags : uint16_t {
  None = 0 , IsConstant = 1 << 0 , IsData = 1 << 1 , IsPrivate = 1 << 2 ,
  HasNoName = 1 << 3 , HasExplicitOrdinal = 1 << 4 , IsForwarder = 1 << 5
}
 
enum class  BinaryAnnotationsOpCode : uint32_t {
  Invalid , CodeOffset , ChangeCodeOffsetBase , ChangeCodeOffset ,
  ChangeCodeLength , ChangeFile , ChangeLineOffset , ChangeLineEndDelta ,
  ChangeRangeKind , ChangeColumnStart , ChangeColumnEndDelta , ChangeCodeOffsetAndLineOffset ,
  ChangeCodeLengthAndCodeOffset , ChangeColumnEnd
}
 
enum class  FrameCookieKind : uint8_t { Copy , XorStackPointer , XorFramePointer , XorR13 }
 
enum class  RegisterId : uint16_t { CV_REGISTERS_ALL , CV_REGISTER }
 
enum class  EncodedFramePtrReg : uint8_t { None = 0 , StackPtr = 1 , FramePtr = 2 , BasePtr = 3 }
 Two-bit value indicating which register is the designated frame pointer register. More...
 
enum class  ThunkOrdinal : uint8_t {
  Standard , ThisAdjustor , Vcall , Pcode ,
  UnknownLoad , TrampIncremental , BranchIsland
}
 These values correspond to the THUNK_ORDINAL enumeration. More...
 
enum class  TrampolineType : uint16_t { TrampIncremental , BranchIsland }
 
enum class  FileChecksumKind : uint8_t { None , MD5 , SHA1 , SHA256 }
 
enum  LineFlags : uint16_t { LF_None = 0 , LF_HaveColumns = 1 }
 
enum class  CodeViewContainer { ObjectFile , Pdb }
 
enum class  JumpTableEntrySize : uint16_t {
  Int8 = 0 , UInt8 = 1 , Int16 = 2 , UInt16 = 3 ,
  Int32 = 4 , UInt32 = 5 , Pointer = 6 , UInt8ShiftLeft = 7 ,
  UInt16ShiftLeft = 8 , Int8ShiftLeft = 9 , Int16ShiftLeft = 10
}
 
enum class  cv_error_code {
  unspecified = 1 , insufficient_buffer , operation_unsupported , corrupt_record ,
  no_records , unknown_member_record
}
 
enum class  ContinuationRecordKind { FieldList , MethodOverloadList }
 
enum  VisitorDataSource { VDS_BytesPresent , VDS_BytesExternal }
 
enum class  InlineeLinesSignature : uint32_t { Normal , ExtraFiles }
 
enum  : unsigned { MaxRecordLength = 0xFF00 }
 Limit on the size of all codeview symbol and type records, including the RecordPrefix. More...
 
enum  : uint16_t { MaxDefRange = 0xf000 }
 
enum class  GlobalTypeHashAlg : uint16_t { SHA1 = 0 , SHA1_8 , BLAKE3 }
 
enum class  SimpleTypeKind : uint32_t {
  None = 0x0000 , Void = 0x0003 , NotTranslated = 0x0007 , HResult = 0x0008 ,
  SignedCharacter = 0x0010 , UnsignedCharacter = 0x0020 , NarrowCharacter = 0x0070 , WideCharacter = 0x0071 ,
  Character16 = 0x007a , Character32 = 0x007b , Character8 = 0x007c , SByte = 0x0068 ,
  Byte = 0x0069 , Int16Short = 0x0011 , UInt16Short = 0x0021 , Int16 = 0x0072 ,
  UInt16 = 0x0073 , Int32Long = 0x0012 , UInt32Long = 0x0022 , Int32 = 0x0074 ,
  UInt32 = 0x0075 , Int64Quad = 0x0013 , UInt64Quad = 0x0023 , Int64 = 0x0076 ,
  UInt64 = 0x0077 , Int128Oct = 0x0014 , UInt128Oct = 0x0024 , Int128 = 0x0078 ,
  UInt128 = 0x0079 , Float16 = 0x0046 , Float32 = 0x0040 , Float32PartialPrecision = 0x0045 ,
  Float48 = 0x0044 , Float64 = 0x0041 , Float80 = 0x0042 , Float128 = 0x0043 ,
  Complex16 = 0x0056 , Complex32 = 0x0050 , Complex32PartialPrecision = 0x0055 , Complex48 = 0x0054 ,
  Complex64 = 0x0051 , Complex80 = 0x0052 , Complex128 = 0x0053 , Boolean8 = 0x0030 ,
  Boolean16 = 0x0031 , Boolean32 = 0x0032 , Boolean64 = 0x0033 , Boolean128 = 0x0034
}
 
enum class  SimpleTypeMode : uint32_t {
  Direct = 0x00000000 , NearPointer = 0x00000100 , FarPointer = 0x00000200 , HugePointer = 0x00000300 ,
  NearPointer32 = 0x00000400 , FarPointer32 = 0x00000500 , NearPointer64 = 0x00000600 , NearPointer128 = 0x00000700
}
 
enum class  TiRefKind { TypeRef , IndexRef }
 

Functions

RegisterId decodeFramePtrReg (EncodedFramePtrReg EncodedReg, CPUType CPU)
 
EncodedFramePtrReg encodeFramePtrReg (RegisterId Reg, CPUType CPU)
 
uint32_t alignOf (CodeViewContainer Container)
 
const std::error_category & CVErrorCategory ()
 
std::error_code make_error_code (cv_error_code E)
 
template<typename Record , typename Func >
Error forEachCodeViewRecord (ArrayRef< uint8_t > StreamBuffer, Func F)
 
template<typename Kind >
Expected< CVRecord< Kind > > readCVRecordFromStream (BinaryStreamRef Stream, uint32_t Offset)
 Read a complete record from a stream at a random offset.
 
Error visitTypeRecord (CVType &Record, TypeIndex Index, TypeVisitorCallbacks &Callbacks, VisitorDataSource Source=VDS_BytesPresent)
 
Error visitTypeRecord (CVType &Record, TypeVisitorCallbacks &Callbacks, VisitorDataSource Source=VDS_BytesPresent)
 
Error visitMemberRecord (CVMemberRecord Record, TypeVisitorCallbacks &Callbacks, VisitorDataSource Source=VDS_BytesPresent)
 
Error visitMemberRecord (TypeLeafKind Kind, ArrayRef< uint8_t > Record, TypeVisitorCallbacks &Callbacks)
 
Error visitMemberRecordStream (ArrayRef< uint8_t > FieldList, TypeVisitorCallbacks &Callbacks)
 
Error visitTypeStream (const CVTypeArray &Types, TypeVisitorCallbacks &Callbacks, VisitorDataSource Source=VDS_BytesPresent)
 
Error visitTypeStream (CVTypeRange Types, TypeVisitorCallbacks &Callbacks)
 
Error visitTypeStream (TypeCollection &Types, TypeVisitorCallbacks &Callbacks)
 
Error visitDebugSubsection (const DebugSubsectionRecord &R, DebugSubsectionVisitor &V, const StringsAndChecksumsRef &State)
 
template<typename T >
Error visitDebugSubsections (T &&FragmentRange, DebugSubsectionVisitor &V)
 
template<typename T >
Error visitDebugSubsections (T &&FragmentRange, DebugSubsectionVisitor &V, const DebugStringTableSubsectionRef &Strings)
 
template<typename T >
Error visitDebugSubsections (T &&FragmentRange, DebugSubsectionVisitor &V, const DebugStringTableSubsectionRef &Strings, const DebugChecksumsSubsectionRef &Checksums)
 
ArrayRef< EnumEntry< SymbolKind > > getSymbolTypeNames ()
 
ArrayRef< EnumEntry< TypeLeafKind > > getTypeLeafNames ()
 
ArrayRef< EnumEntry< uint16_t > > getRegisterNames (CPUType Cpu)
 
ArrayRef< EnumEntry< uint32_t > > getPublicSymFlagNames ()
 
ArrayRef< EnumEntry< uint8_t > > getProcSymFlagNames ()
 
ArrayRef< EnumEntry< uint16_t > > getLocalFlagNames ()
 
ArrayRef< EnumEntry< uint8_t > > getFrameCookieKindNames ()
 
ArrayRef< EnumEntry< SourceLanguage > > getSourceLanguageNames ()
 
ArrayRef< EnumEntry< uint32_t > > getCompileSym2FlagNames ()
 
ArrayRef< EnumEntry< uint32_t > > getCompileSym3FlagNames ()
 
ArrayRef< EnumEntry< uint32_t > > getFileChecksumNames ()
 
ArrayRef< EnumEntry< unsigned > > getCPUTypeNames ()
 
ArrayRef< EnumEntry< uint32_t > > getFrameProcSymFlagNames ()
 
ArrayRef< EnumEntry< uint16_t > > getExportSymFlagNames ()
 
ArrayRef< EnumEntry< uint32_t > > getModuleSubstreamKindNames ()
 
ArrayRef< EnumEntry< uint8_t > > getThunkOrdinalNames ()
 
ArrayRef< EnumEntry< uint16_t > > getTrampolineNames ()
 
ArrayRef< EnumEntry< COFF::SectionCharacteristics > > getImageSectionCharacteristicNames ()
 
ArrayRef< EnumEntry< uint16_t > > getClassOptionNames ()
 
ArrayRef< EnumEntry< uint8_t > > getMemberAccessNames ()
 
ArrayRef< EnumEntry< uint16_t > > getMethodOptionNames ()
 
ArrayRef< EnumEntry< uint16_t > > getMemberKindNames ()
 
ArrayRef< EnumEntry< uint8_t > > getPtrKindNames ()
 
ArrayRef< EnumEntry< uint8_t > > getPtrModeNames ()
 
ArrayRef< EnumEntry< uint16_t > > getPtrMemberRepNames ()
 
ArrayRef< EnumEntry< uint16_t > > getTypeModifierNames ()
 
ArrayRef< EnumEntry< uint8_t > > getCallingConventions ()
 
ArrayRef< EnumEntry< uint8_t > > getFunctionOptionEnum ()
 
ArrayRef< EnumEntry< uint16_t > > getLabelTypeEnum ()
 
ArrayRef< EnumEntry< uint16_t > > getJumpTableEntrySizeNames ()
 
detail::GuidAdapter fmt_guid (StringRef Item)
 
detail::GuidAdapter fmt_guid (ArrayRef< uint8_t > Item)
 
bool operator== (const FunctionId &A, const FunctionId &B)
 
bool operator!= (const FunctionId &A, const FunctionId &B)
 
bool operator< (const FunctionId &A, const FunctionId &B)
 
bool operator<= (const FunctionId &A, const FunctionId &B)
 
bool operator> (const FunctionId &A, const FunctionId &B)
 
bool operator>= (const FunctionId &A, const FunctionId &B)
 
bool operator== (const GUID &LHS, const GUID &RHS)
 
bool operator< (const GUID &LHS, const GUID &RHS)
 
bool operator<= (const GUID &LHS, const GUID &RHS)
 
bool operator> (const GUID &LHS, const GUID &RHS)
 
bool operator>= (const GUID &LHS, const GUID &RHS)
 
bool operator!= (const GUID &LHS, const GUID &RHS)
 
raw_ostreamoperator<< (raw_ostream &OS, const GUID &Guid)
 
std::string computeTypeName (TypeCollection &Types, TypeIndex Index)
 
StringRef getSymbolName (CVSymbol Sym)
 
StringRef getBytesAsCharacters (ArrayRef< uint8_t > LeafData)
 Reinterpret a byte array as an array of characters.
 
StringRef getBytesAsCString (ArrayRef< uint8_t > LeafData)
 
Error consume (BinaryStreamReader &Reader)
 
Error consume (BinaryStreamReader &Reader, APSInt &Num)
 Decodes a numeric "leaf" value.
 
Error consume_numeric (BinaryStreamReader &Reader, uint64_t &Value)
 Decodes a numeric leaf value that is known to be a particular type.
 
Error consume (BinaryStreamReader &Reader, uint32_t &Item)
 Decodes signed and unsigned fixed-length integers.
 
Error consume (BinaryStreamReader &Reader, int32_t &Item)
 
Error consume (BinaryStreamReader &Reader, StringRef &Item)
 Decodes a null terminated string.
 
Error consume (StringRef &Data, APSInt &Num)
 
Error consume (StringRef &Data, uint32_t &Item)
 
template<typename T >
Error consume (BinaryStreamReader &Reader, T *&Item)
 Decodes an arbitrary object whose layout matches that of the underlying byte sequence, and returns a pointer to the object.
 
template<typename T , typename U >
serialize_conditional_impl< T, U > serialize_conditional (T &Item, U Func)
 
template<typename T , typename U >
serialize_array_impl< T, U > serialize_array (ArrayRef< T > &Item, U Func)
 
serialize_null_term_string_array_impl serialize_null_term_string_array (std::vector< StringRef > &Item)
 
template<typename T >
serialize_vector_tail_impl< Tserialize_array_tail (std::vector< T > &Item)
 
template<typename T >
serialize_arrayref_tail_impl< Tserialize_array_tail (ArrayRef< T > &Item)
 
template<typename T >
serialize_numeric_impl< Tserialize_numeric (T &Item)
 
template<typename T , typename U >
Error consume (BinaryStreamReader &Reader, const serialize_conditional_impl< T, U > &Item)
 
template<typename T , typename U >
Error consume (BinaryStreamReader &Reader, const serialize_array_impl< T, U > &Item)
 
Error consume (BinaryStreamReader &Reader, const serialize_null_term_string_array_impl &Item)
 
template<typename T >
Error consume (BinaryStreamReader &Reader, const serialize_vector_tail_impl< T > &Item)
 
template<typename T >
Error consume (BinaryStreamReader &Reader, const serialize_arrayref_tail_impl< T > &Item)
 
template<typename T >
Error consume (BinaryStreamReader &Reader, const serialize_numeric_impl< T > &Item)
 
template<typename T , typename U , typename... Args>
Error consume (BinaryStreamReader &Reader, T &&X, U &&Y, Args &&... Rest)
 
Expected< CVSymbolreadSymbolFromStream (BinaryStreamRef Stream, uint32_t Offset)
 
bool symbolOpensScope (SymbolKind Kind)
 Return true if this symbol opens a scope.
 
bool symbolEndsScope (SymbolKind Kind)
 Return true if this ssymbol ends a scope.
 
uint32_t getScopeEndOffset (const CVSymbol &Symbol)
 Given a symbol P for which symbolOpensScope(P) == true, return the corresponding end offset.
 
uint32_t getScopeParentOffset (const CVSymbol &Symbol)
 
CVSymbolArray limitSymbolArrayToScope (const CVSymbolArray &Symbols, uint32_t ScopeBegin)
 
void printTypeIndex (ScopedPrinter &Printer, StringRef FieldName, TypeIndex TI, TypeCollection &Types)
 
void discoverTypeIndices (ArrayRef< uint8_t > RecordData, SmallVectorImpl< TiReference > &Refs)
 
void discoverTypeIndices (const CVType &Type, SmallVectorImpl< TiReference > &Refs)
 
void discoverTypeIndices (const CVType &Type, SmallVectorImpl< TypeIndex > &Indices)
 
void discoverTypeIndices (ArrayRef< uint8_t > RecordData, SmallVectorImpl< TypeIndex > &Indices)
 
bool discoverTypeIndicesInSymbol (const CVSymbol &Symbol, SmallVectorImpl< TiReference > &Refs)
 Discover type indices in symbol records.
 
bool discoverTypeIndicesInSymbol (ArrayRef< uint8_t > RecordData, SmallVectorImpl< TiReference > &Refs)
 
bool discoverTypeIndicesInSymbol (ArrayRef< uint8_t > RecordData, SmallVectorImpl< TypeIndex > &Indices)
 
bool isUdtForwardRef (CVType CVT)
 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.
 
TypeIndex getModifiedType (const CVType &CVT)
 Given a CVType which is assumed to be an LF_MODIFIER, return the TypeIndex of the type that the LF_MODIFIER modifies.
 
bool isIdRecord (TypeLeafKind K)
 Return true if this record should be in the IPI stream of a PDB.
 
bool isAggregate (CVType CVT)
 Given an arbitrary codeview type, determine if it is an LF_STRUCTURE, LF_CLASS, LF_INTERFACE, LF_UNION.
 
uint64_t getSizeInBytesForTypeIndex (TypeIndex TI)
 Given an arbitrary codeview type index, determine its size.
 
uint64_t getSizeInBytesForTypeRecord (CVType CVT)
 Given an arbitrary codeview type, return the type's size in the case of aggregate (LF_STRUCTURE, LF_CLASS, LF_INTERFACE, LF_UNION).
 
Error mergeTypeRecords (MergingTypeTableBuilder &Dest, SmallVectorImpl< TypeIndex > &SourceToDest, const CVTypeArray &Types)
 Merge one set of type records into another.
 
Error mergeIdRecords (MergingTypeTableBuilder &Dest, ArrayRef< TypeIndex > Types, SmallVectorImpl< TypeIndex > &SourceToDest, const CVTypeArray &Ids)
 Merge one set of id records into another.
 
Error mergeTypeAndIdRecords (MergingTypeTableBuilder &DestIds, MergingTypeTableBuilder &DestTypes, SmallVectorImpl< TypeIndex > &SourceToDest, const CVTypeArray &IdsAndTypes, std::optional< PCHMergerInfo > &PCHInfo)
 Merge a unified set of type and id records, splitting them into separate output streams.
 
Error mergeTypeAndIdRecords (GlobalTypeTableBuilder &DestIds, GlobalTypeTableBuilder &DestTypes, SmallVectorImpl< TypeIndex > &SourceToDest, const CVTypeArray &IdsAndTypes, ArrayRef< GloballyHashedType > Hashes, std::optional< PCHMergerInfo > &PCHInfo)
 
Error mergeTypeRecords (GlobalTypeTableBuilder &Dest, SmallVectorImpl< TypeIndex > &SourceToDest, const CVTypeArray &Types, ArrayRef< GloballyHashedType > Hashes, std::optional< PCHMergerInfo > &PCHInfo)
 
Error mergeIdRecords (GlobalTypeTableBuilder &Dest, ArrayRef< TypeIndex > Types, SmallVectorImpl< TypeIndex > &SourceToDest, const CVTypeArray &Ids, ArrayRef< GloballyHashedType > Hashes)
 

Typedef Documentation

◆ CVSymbol

Definition at line 65 of file CVRecord.h.

◆ CVSymbolArray

Definition at line 126 of file CVRecord.h.

◆ CVType

Definition at line 64 of file CVRecord.h.

◆ CVTypeArray

Definition at line 127 of file CVRecord.h.

◆ CVTypeRange

Definition at line 128 of file CVRecord.h.

◆ DebugSubsectionArray

Definition at line 89 of file DebugSubsectionRecord.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum : uint32_t
Enumerator
SubsectionIgnoreFlag 

Definition at line 320 of file CodeView.h.

◆ anonymous enum

anonymous enum : unsigned

Limit on the size of all codeview symbol and type records, including the RecordPrefix.

MSVC does not emit any records larger than this.

Enumerator
MaxRecordLength 

Definition at line 30 of file RecordSerialization.h.

◆ anonymous enum

anonymous enum : uint16_t
Enumerator
MaxDefRange 

Definition at line 454 of file SymbolRecord.h.

◆ BinaryAnnotationsOpCode

Enumerator
Invalid 
CodeOffset 
ChangeCodeOffsetBase 
ChangeCodeOffset 
ChangeCodeLength 
ChangeFile 
ChangeLineOffset 
ChangeLineEndDelta 
ChangeRangeKind 
ChangeColumnStart 
ChangeColumnEndDelta 
ChangeCodeOffsetAndLineOffset 
ChangeCodeLengthAndCodeOffset 
ChangeColumnEnd 

Definition at line 503 of file CodeView.h.

◆ 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.

Enumerator
NearC 
FarC 
NearPascal 
FarPascal 
NearFast 
FarFast 
NearStdCall 
FarStdCall 
NearSysCall 
FarSysCall 
ThisCall 
MipsCall 
Generic 
AlphaCall 
PpcCall 
SHCall 
ArmCall 
AM33Call 
TriCall 
SH5Call 
M32RCall 
ClrCall 
Inline 
NearVector 
Swift 

Definition at line 184 of file CodeView.h.

◆ ClassOptions

Enumerator
None 
Packed 
HasConstructorOrDestructor 
HasOverloadedOperator 
Nested 
ContainsNestedClass 
HasOverloadedAssignmentOperator 
HasConversionOperator 
ForwardReference 
Scoped 
HasUniqueName 
Sealed 
Intrinsic 

Definition at line 213 of file CodeView.h.

◆ CodeViewContainer

Enumerator
ObjectFile 
Pdb 

Definition at line 619 of file CodeView.h.

◆ CompileSym2Flags

Corresponds to COMPILESYM2::Flags bitfield.

Enumerator
None 
SourceLanguageMask 
EC 
NoDbgInfo 
LTCG 
NoDataAlign 
ManagedPresent 
SecurityChecks 
HotPatch 
CVTCIL 
MSILModule 

Definition at line 457 of file CodeView.h.

◆ CompileSym3Flags

Corresponds to COMPILESYM3::Flags bitfield.

Enumerator
None 
SourceLanguageMask 
EC 
NoDbgInfo 
LTCG 
NoDataAlign 
ManagedPresent 
SecurityChecks 
HotPatch 
CVTCIL 
MSILModule 
Sdl 
PGO 
Exp 

Definition at line 473 of file CodeView.h.

◆ ContinuationRecordKind

Enumerator
FieldList 
MethodOverloadList 

Definition at line 24 of file ContinuationRecordBuilder.h.

◆ CPUType

enum class llvm::codeview::CPUType : uint16_t
strong

These values correspond to the CV_CPU_TYPE_e enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/b2fc64ek.aspx.

Enumerator
Intel8080 
Intel8086 
Intel80286 
Intel80386 
Intel80486 
Pentium 
PentiumPro 
Pentium3 
MIPS 
MIPS16 
MIPS32 
MIPS64 
MIPSI 
MIPSII 
MIPSIII 
MIPSIV 
MIPSV 
M68000 
M68010 
M68020 
M68030 
M68040 
Alpha 
Alpha21164 
Alpha21164A 
Alpha21264 
Alpha21364 
PPC601 
PPC603 
PPC604 
PPC620 
PPCFP 
PPCBE 
SH3 
SH3E 
SH3DSP 
SH4 
SHMedia 
ARM3 
ARM4 
ARM4T 
ARM5 
ARM5T 
ARM6 
ARM_XMAC 
ARM_WMMX 
ARM7 
Omni 
Ia64 
Ia64_2 
CEE 
AM33 
M32R 
TriCore 
X64 
EBC 
Thumb 
ARMNT 
ARM64 
HybridX86ARM64 
ARM64EC 
ARM64X 
Unknown 
D3D11_Shader 

Definition at line 76 of file CodeView.h.

◆ cv_error_code

enum class llvm::codeview::cv_error_code
strong
Enumerator
unspecified 
insufficient_buffer 
operation_unsupported 
corrupt_record 
no_records 
unknown_member_record 

Definition at line 16 of file CodeViewError.h.

◆ DebugSubsectionKind

Enumerator
None 
Symbols 
Lines 
StringTable 
FileChecksums 
FrameData 
InlineeLines 
CrossScopeImports 
CrossScopeExports 
ILLines 
FuncMDTokenMap 
TypeMDTokenMap 
MergedAssemblyInput 
CoffSymbolRVA 
XfgHashType 
XfgHashVirtual 

Definition at line 322 of file CodeView.h.

◆ EncodedFramePtrReg

Two-bit value indicating which register is the designated frame pointer register.

Appears in the S_FRAMEPROC record flags.

Enumerator
None 
StackPtr 
FramePtr 
BasePtr 

Definition at line 551 of file CodeView.h.

◆ ExportFlags

Enumerator
None 
IsConstant 
IsData 
IsPrivate 
HasNoName 
HasExplicitOrdinal 
IsForwarder 

Definition at line 491 of file CodeView.h.

◆ FileChecksumKind

Enumerator
None 
MD5 
SHA1 
SHA256 

Definition at line 576 of file CodeView.h.

◆ FrameCookieKind

Enumerator
Copy 
XorStackPointer 
XorFramePointer 
XorR13 

Definition at line 521 of file CodeView.h.

◆ FrameProcedureOptions

Enumerator
None 
HasAlloca 
HasSetJmp 
HasLongJmp 
HasInlineAssembly 
HasExceptionHandling 
MarkedInline 
HasStructuredExceptionHandling 
Naked 
SecurityChecks 
AsynchronousExceptionHandling 
NoStackOrderingForSecurityChecks 
Inlined 
StrictSecurityChecks 
SafeBuffers 
EncodedLocalBasePointerMask 
EncodedParamBasePointerMask 
ProfileGuidedOptimization 
ValidProfileCounts 
OptimizedForSpeed 
GuardCfg 
GuardCfw 

Definition at line 230 of file CodeView.h.

◆ FunctionOptions

Enumerator
None 
CxxReturnUdt 
Constructor 
ConstructorWithVirtualBases 

Definition at line 256 of file CodeView.h.

◆ GlobalTypeHashAlg

Enumerator
SHA1 
SHA1_8 
BLAKE3 

Definition at line 62 of file TypeHashing.h.

◆ HfaKind

enum class llvm::codeview::HfaKind : uint8_t
strong
Enumerator
None 
Float 
Double 
Other 

Definition at line 264 of file CodeView.h.

◆ InlineeLinesSignature

Enumerator
Normal 
ExtraFiles 

Definition at line 30 of file DebugInlineeLinesSubsection.h.

◆ JumpTableEntrySize

Enumerator
Int8 
UInt8 
Int16 
UInt16 
Int32 
UInt32 
Pointer 
UInt8ShiftLeft 
UInt16ShiftLeft 
Int8ShiftLeft 
Int16ShiftLeft 

Definition at line 636 of file CodeView.h.

◆ LabelType

enum class llvm::codeview::LabelType : uint16_t
strong

Equivalent to CV_LABEL_TYPE_e.

Enumerator
Near 
Far 

Definition at line 304 of file CodeView.h.

◆ LineFlags

Enumerator
LF_None 
LF_HaveColumns 

Definition at line 578 of file CodeView.h.

◆ LocalSymFlags

Corresponds to CV_LVARFLAGS bitfield.

Enumerator
None 
IsParameter 
IsAddressTaken 
IsCompilerGenerated 
IsAggregate 
IsAggregated 
IsAliased 
IsAlias 
IsReturnValue 
IsOptimizedOut 
IsEnregisteredGlobal 
IsEnregisteredStatic 

Definition at line 416 of file CodeView.h.

◆ MemberAccess

Source-level access specifier. (CV_access_e)

Enumerator
None 
Private 
Protected 
Public 

Definition at line 272 of file CodeView.h.

◆ MethodKind

enum class llvm::codeview::MethodKind : uint8_t
strong

Part of member attribute flags. (CV_methodprop_e)

Enumerator
Vanilla 
Virtual 
Static 
Friend 
IntroducingVirtual 
PureVirtual 
PureIntroducingVirtual 

Definition at line 280 of file CodeView.h.

◆ MethodOptions

Equivalent to CV_fldattr_t bitfield.

Enumerator
None 
AccessMask 
MethodKindMask 
Pseudo 
NoInherit 
NoConstruct 
CompilerGenerated 
Sealed 

Definition at line 291 of file CodeView.h.

◆ ModifierOptions

Equivalent to CV_modifier_t.

TODO: Add flag for _Atomic modifier

Enumerator
None 
Const 
Volatile 
Unaligned 

Definition at line 311 of file CodeView.h.

◆ PointerKind

enum class llvm::codeview::PointerKind : uint8_t
strong

Equivalent to CV_ptrtype_e.

Enumerator
Near16 
Far16 
Huge16 
BasedOnSegment 
BasedOnValue 
BasedOnSegmentValue 
BasedOnAddress 
BasedOnSegmentAddress 
BasedOnType 
BasedOnSelf 
Near32 
Far32 
Near64 

Definition at line 346 of file CodeView.h.

◆ PointerMode

enum class llvm::codeview::PointerMode : uint8_t
strong

Equivalent to CV_ptrmode_e.

Enumerator
Pointer 
LValueReference 
PointerToDataMember 
PointerToMemberFunction 
RValueReference 

Definition at line 363 of file CodeView.h.

◆ PointerOptions

Equivalent to misc lfPointerAttr bitfields.

Enumerator
None 
Flat32 
Volatile 
Const 
Unaligned 
Restrict 
WinRTSmartPointer 
LValueRefThisPointer 
RValueRefThisPointer 

Definition at line 372 of file CodeView.h.

◆ PointerToMemberRepresentation

Equivalent to CV_pmtype_e.

Enumerator
Unknown 
SingleInheritanceData 
MultipleInheritanceData 
VirtualInheritanceData 
GeneralData 
SingleInheritanceFunction 
MultipleInheritanceFunction 
VirtualInheritanceFunction 
GeneralFunction 

Definition at line 386 of file CodeView.h.

◆ ProcSymFlags

Corresponds to the CV_PROCFLAGS bitfield.

Enumerator
None 
HasFP 
HasIRET 
HasFRET 
IsNoReturn 
IsUnreachable 
HasCustomCallingConv 
IsNoInline 
HasOptimizedDebugInfo 

Definition at line 443 of file CodeView.h.

◆ PublicSymFlags

Corresponds to the CV_PUBSYMFLAGS bitfield.

Enumerator
None 
Code 
Function 
Managed 
MSIL 

Definition at line 433 of file CodeView.h.

◆ RegisterId

enum class llvm::codeview::RegisterId : uint16_t
strong
Enumerator
CV_REGISTERS_ALL 
CV_REGISTER 

Definition at line 529 of file CodeView.h.

◆ SimpleTypeKind

Enumerator
None 
Void 
NotTranslated 
HResult 
SignedCharacter 
UnsignedCharacter 
NarrowCharacter 
WideCharacter 
Character16 
Character32 
Character8 
SByte 
Byte 
Int16Short 
UInt16Short 
Int16 
UInt16 
Int32Long 
UInt32Long 
Int32 
UInt32 
Int64Quad 
UInt64Quad 
Int64 
UInt64 
Int128Oct 
UInt128Oct 
Int128 
UInt128 
Float16 
Float32 
Float32PartialPrecision 
Float48 
Float64 
Float80 
Float128 
Complex16 
Complex32 
Complex32PartialPrecision 
Complex48 
Complex64 
Complex80 
Complex128 
Boolean8 
Boolean16 
Boolean32 
Boolean64 
Boolean128 

Definition at line 26 of file TypeIndex.h.

◆ SimpleTypeMode

Enumerator
Direct 
NearPointer 
FarPointer 
HugePointer 
NearPointer32 
FarPointer32 
NearPointer64 
NearPointer128 

Definition at line 82 of file TypeIndex.h.

◆ 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.

Enumerator
Cpp 
Fortran 
Masm 
Pascal 
Basic 
Cobol 
Link 
Cvtres 
Cvtpgd 
CSharp 
VB 
ILAsm 
Java 
JScript 
MSIL 
HLSL 
ObjC 
ObjCpp 
Swift 
AliasObj 
Rust 
Go 

The DMD compiler emits 'D' for the CV source language.

Microsoft does not have an enumerator for it yet.

OldSwift 

The Swift compiler used to emit 'S' for the CV source language, but current versions emit the enumerator defined above.

Definition at line 146 of file CodeView.h.

◆ SymbolKind

Duplicate copy of the above enum, but using the official CV names.

Useful for reference purposes and when dealing with unknown record types.

Definition at line 48 of file CodeView.h.

◆ SymbolRecordKind

Distinguishes individual records in the Symbols subsection of a .debug$S section.

Equivalent to SYM_ENUM_e in cvinfo.h.

Enumerator
SYMBOL_RECORD 

Definition at line 41 of file CodeView.h.

◆ ThunkOrdinal

These values correspond to the THUNK_ORDINAL enumeration.

Enumerator
Standard 
ThisAdjustor 
Vcall 
Pcode 
UnknownLoad 
TrampIncremental 
BranchIsland 

Definition at line 563 of file CodeView.h.

◆ TiRefKind

enum class llvm::codeview::TiRefKind
strong
Enumerator
TypeRef 
IndexRef 

Definition at line 19 of file TypeIndexDiscovery.h.

◆ TrampolineType

Enumerator
TrampIncremental 
BranchIsland 

Definition at line 573 of file CodeView.h.

◆ TypeLeafKind

Duplicate copy of the above enum, but using the official CV names.

Useful for reference purposes and when dealing with unknown record types.

Definition at line 34 of file CodeView.h.

◆ 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.

Enumerator
TYPE_RECORD 

Definition at line 27 of file CodeView.h.

◆ VFTableSlotKind

Enumerator
Near16 
Far16 
This 
Outer 
Meta 
Near 
Far 

Definition at line 398 of file CodeView.h.

◆ VisitorDataSource

Enumerator
VDS_BytesPresent 
VDS_BytesExternal 

Definition at line 24 of file CVTypeVisitor.h.

◆ WindowsRTClassKind

Enumerator
None 
RefClass 
ValueClass 
Interface 

Definition at line 408 of file CodeView.h.

Function Documentation

◆ alignOf()

uint32_t llvm::codeview::alignOf ( CodeViewContainer  Container)
inline

◆ computeTypeName()

std::string llvm::codeview::computeTypeName ( TypeCollection Types,
TypeIndex  Index 
)

◆ consume() [1/15]

Error llvm::codeview::consume ( BinaryStreamReader Reader)
inline

Definition at line 45 of file RecordSerialization.h.

References llvm::Error::success().

◆ consume() [2/15]

Error llvm::codeview::consume ( BinaryStreamReader Reader,
APSInt Num 
)

Decodes a numeric "leaf" value.

These are integer literals encountered in the type stream. If the value is positive and less than LF_NUMERIC (1 << 15), it is emitted directly in Data. Otherwise, it has a tag like LF_CHAR that indicates the bitwidth and sign of the numeric data.

Definition at line 36 of file RecordSerialization.cpp.

References EC, N, llvm::BinaryStreamReader::readInteger(), and llvm::Error::success().

◆ consume() [3/15]

template<typename T , typename U >
Error llvm::codeview::consume ( BinaryStreamReader Reader,
const serialize_array_impl< T, U > &  Item 
)

◆ consume() [4/15]

template<typename T >
Error llvm::codeview::consume ( BinaryStreamReader Reader,
const serialize_arrayref_tail_impl< T > &  Item 
)

◆ consume() [5/15]

template<typename T , typename U >
Error llvm::codeview::consume ( BinaryStreamReader Reader,
const serialize_conditional_impl< T, U > &  Item 
)

◆ consume() [6/15]

Error llvm::codeview::consume ( BinaryStreamReader Reader,
const serialize_null_term_string_array_impl Item 
)
inline

◆ consume() [7/15]

template<typename T >
Error llvm::codeview::consume ( BinaryStreamReader Reader,
const serialize_numeric_impl< T > &  Item 
)

◆ consume() [8/15]

template<typename T >
Error llvm::codeview::consume ( BinaryStreamReader Reader,
const serialize_vector_tail_impl< T > &  Item 
)

◆ consume() [9/15]

Error llvm::codeview::consume ( BinaryStreamReader Reader,
int32_t &  Item 
)

Definition at line 139 of file RecordSerialization.cpp.

References llvm::BinaryStreamReader::readInteger().

◆ consume() [10/15]

Error llvm::codeview::consume ( BinaryStreamReader Reader,
StringRef Item 
)

Decodes a null terminated string.

Definition at line 143 of file RecordSerialization.cpp.

References llvm::BinaryStreamReader::empty(), and llvm::BinaryStreamReader::readCString().

◆ consume() [11/15]

template<typename T , typename U , typename... Args>
Error llvm::codeview::consume ( BinaryStreamReader Reader,
T &&  X,
U &&  Y,
Args &&...  Rest 
)

Definition at line 220 of file RecordSerialization.h.

References llvm::consume, EC, X, and Y.

◆ consume() [12/15]

template<typename T >
Error llvm::codeview::consume ( BinaryStreamReader Reader,
T *&  Item 
)

Decodes an arbitrary object whose layout matches that of the underlying byte sequence, and returns a pointer to the object.

Definition at line 68 of file RecordSerialization.h.

References llvm::BinaryStreamReader::readObject().

◆ consume() [13/15]

Error llvm::codeview::consume ( BinaryStreamReader Reader,
uint32_t Item 
)

Decodes signed and unsigned fixed-length integers.

Definition at line 126 of file RecordSerialization.cpp.

References llvm::BinaryStreamReader::readInteger().

◆ consume() [14/15]

Error llvm::codeview::consume ( StringRef Data,
APSInt Num 
)

◆ consume() [15/15]

Error llvm::codeview::consume ( StringRef Data,
uint32_t Item 
)

◆ consume_numeric()

Error llvm::codeview::consume_numeric ( BinaryStreamReader Reader,
uint64_t Value 
)

Decodes a numeric leaf value that is known to be a particular type.

Decode a numeric leaf value that is known to be a uint64_t.

Definition at line 114 of file RecordSerialization.cpp.

References llvm::consume, EC, N, and llvm::Error::success().

Referenced by llvm::codeview::serialize_numeric_impl< T >::deserialize().

◆ CVErrorCategory()

const std::error_category & llvm::codeview::CVErrorCategory ( )

Definition at line 44 of file CodeViewError.cpp.

Referenced by make_error_code().

◆ decodeFramePtrReg()

RegisterId llvm::codeview::decodeFramePtrReg ( EncodedFramePtrReg  EncodedReg,
CPUType  CPU 
)

◆ discoverTypeIndices() [1/4]

void llvm::codeview::discoverTypeIndices ( ArrayRef< uint8_t RecordData,
SmallVectorImpl< TiReference > &  Refs 
)

◆ discoverTypeIndices() [2/4]

void llvm::codeview::discoverTypeIndices ( ArrayRef< uint8_t RecordData,
SmallVectorImpl< TypeIndex > &  Indices 
)

Definition at line 487 of file TypeIndexDiscovery.cpp.

References discoverTypeIndices(), and resolveTypeIndexReferences().

◆ discoverTypeIndices() [3/4]

void llvm::codeview::discoverTypeIndices ( const CVType Type,
SmallVectorImpl< TiReference > &  Refs 
)

Definition at line 458 of file TypeIndexDiscovery.cpp.

References discoverTypeIndices().

◆ discoverTypeIndices() [4/4]

void llvm::codeview::discoverTypeIndices ( const CVType Type,
SmallVectorImpl< TypeIndex > &  Indices 
)

Definition at line 482 of file TypeIndexDiscovery.cpp.

References discoverTypeIndices().

◆ discoverTypeIndicesInSymbol() [1/3]

bool llvm::codeview::discoverTypeIndicesInSymbol ( ArrayRef< uint8_t RecordData,
SmallVectorImpl< TiReference > &  Refs 
)

◆ discoverTypeIndicesInSymbol() [2/3]

bool llvm::codeview::discoverTypeIndicesInSymbol ( ArrayRef< uint8_t RecordData,
SmallVectorImpl< TypeIndex > &  Indices 
)

◆ discoverTypeIndicesInSymbol() [3/3]

bool llvm::codeview::discoverTypeIndicesInSymbol ( const CVSymbol Symbol,
SmallVectorImpl< TiReference > &  Refs 
)

Discover type indices in symbol records.

Returns false if this is an unknown record.

Definition at line 502 of file TypeIndexDiscovery.cpp.

References Sym.

Referenced by discoverTypeIndicesInSymbol().

◆ encodeFramePtrReg()

EncodedFramePtrReg llvm::codeview::encodeFramePtrReg ( RegisterId  Reg,
CPUType  CPU 
)

◆ fmt_guid() [1/2]

detail::GuidAdapter llvm::codeview::fmt_guid ( ArrayRef< uint8_t Item)
inline

Definition at line 45 of file Formatters.h.

◆ fmt_guid() [2/2]

detail::GuidAdapter llvm::codeview::fmt_guid ( StringRef  Item)
inline

Definition at line 41 of file Formatters.h.

◆ forEachCodeViewRecord()

template<typename Record , typename Func >
Error llvm::codeview::forEachCodeViewRecord ( ArrayRef< uint8_t StreamBuffer,
Func  F 
)

◆ getBytesAsCharacters()

StringRef llvm::codeview::getBytesAsCharacters ( ArrayRef< uint8_t LeafData)

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.

Definition at line 27 of file RecordSerialization.cpp.

References llvm::ArrayRef< T >::data(), and llvm::ArrayRef< T >::size().

Referenced by getBytesAsCString(), llvm::codeview::TypeDumpVisitor::visitMemberEnd(), and llvm::codeview::TypeDumpVisitor::visitTypeEnd().

◆ getBytesAsCString()

StringRef llvm::codeview::getBytesAsCString ( ArrayRef< uint8_t LeafData)

Definition at line 32 of file RecordSerialization.cpp.

References getBytesAsCharacters(), and llvm::StringRef::split().

◆ getCallingConventions()

ArrayRef< EnumEntry< uint8_t > > llvm::codeview::getCallingConventions ( )

Definition at line 568 of file EnumTables.cpp.

References CallingConventions.

◆ getClassOptionNames()

ArrayRef< EnumEntry< uint16_t > > llvm::codeview::getClassOptionNames ( )

Definition at line 536 of file EnumTables.cpp.

References ClassOptionNames.

◆ getCompileSym2FlagNames()

ArrayRef< EnumEntry< uint32_t > > llvm::codeview::getCompileSym2FlagNames ( )

Definition at line 495 of file EnumTables.cpp.

References CompileSym2FlagNames.

◆ getCompileSym3FlagNames()

ArrayRef< EnumEntry< uint32_t > > llvm::codeview::getCompileSym3FlagNames ( )

◆ getCPUTypeNames()

ArrayRef< EnumEntry< unsigned > > llvm::codeview::getCPUTypeNames ( )

Definition at line 507 of file EnumTables.cpp.

References CPUTypeNames.

Referenced by llvm::logicalview::LVSymbolVisitor::visitKnownRecord().

◆ getExportSymFlagNames()

ArrayRef< EnumEntry< uint16_t > > llvm::codeview::getExportSymFlagNames ( )

Definition at line 515 of file EnumTables.cpp.

References ExportSymFlagNames.

◆ getFileChecksumNames()

ArrayRef< EnumEntry< uint32_t > > llvm::codeview::getFileChecksumNames ( )

Definition at line 503 of file EnumTables.cpp.

References FileChecksumNames.

◆ getFrameCookieKindNames()

ArrayRef< EnumEntry< uint8_t > > llvm::codeview::getFrameCookieKindNames ( )

Definition at line 487 of file EnumTables.cpp.

References FrameCookieKinds.

◆ getFrameProcSymFlagNames()

ArrayRef< EnumEntry< uint32_t > > llvm::codeview::getFrameProcSymFlagNames ( )

Definition at line 511 of file EnumTables.cpp.

References FrameProcSymFlagNames.

◆ getFunctionOptionEnum()

ArrayRef< EnumEntry< uint8_t > > llvm::codeview::getFunctionOptionEnum ( )

Definition at line 572 of file EnumTables.cpp.

References FunctionOptionEnum.

◆ getImageSectionCharacteristicNames()

ArrayRef< EnumEntry< COFF::SectionCharacteristics > > llvm::codeview::getImageSectionCharacteristicNames ( )

Definition at line 532 of file EnumTables.cpp.

References ImageSectionCharacteristicNames.

◆ getJumpTableEntrySizeNames()

ArrayRef< EnumEntry< uint16_t > > llvm::codeview::getJumpTableEntrySizeNames ( )

◆ getLabelTypeEnum()

ArrayRef< EnumEntry< uint16_t > > llvm::codeview::getLabelTypeEnum ( )

Definition at line 576 of file EnumTables.cpp.

References LabelTypeEnum.

◆ getLocalFlagNames()

ArrayRef< EnumEntry< uint16_t > > llvm::codeview::getLocalFlagNames ( )

Definition at line 483 of file EnumTables.cpp.

References LocalFlags.

Referenced by llvm::logicalview::LVSymbolVisitor::visitKnownRecord().

◆ getMemberAccessNames()

ArrayRef< EnumEntry< uint8_t > > llvm::codeview::getMemberAccessNames ( )

Definition at line 540 of file EnumTables.cpp.

References MemberAccessNames.

◆ getMemberKindNames()

ArrayRef< EnumEntry< uint16_t > > llvm::codeview::getMemberKindNames ( )

Definition at line 548 of file EnumTables.cpp.

References MemberKindNames.

◆ getMethodOptionNames()

ArrayRef< EnumEntry< uint16_t > > llvm::codeview::getMethodOptionNames ( )

Definition at line 544 of file EnumTables.cpp.

References MethodOptionNames.

◆ getModifiedType()

TypeIndex llvm::codeview::getModifiedType ( const CVType CVT)

Given a CVType which is assumed to be an LF_MODIFIER, return the TypeIndex of the type that the LF_MODIFIER modifies.

Definition at line 47 of file TypeRecordHelpers.cpp.

References assert(), discoverTypeIndices(), llvm::SmallVectorTemplateCommon< T, typename >::front(), and llvm::codeview::CVRecord< Kind >::kind().

Referenced by llvm::pdb::NativeEnumTypes::NativeEnumTypes(), and llvm::logicalview::LVLogicalVisitor::visitKnownRecord().

◆ getModuleSubstreamKindNames()

ArrayRef< EnumEntry< uint32_t > > llvm::codeview::getModuleSubstreamKindNames ( )

Definition at line 519 of file EnumTables.cpp.

References ModuleSubstreamKindNames.

◆ getProcSymFlagNames()

ArrayRef< EnumEntry< uint8_t > > llvm::codeview::getProcSymFlagNames ( )

Definition at line 479 of file EnumTables.cpp.

References ProcSymFlagNames.

Referenced by llvm::logicalview::LVSymbolVisitor::visitKnownRecord().

◆ getPtrKindNames()

ArrayRef< EnumEntry< uint8_t > > llvm::codeview::getPtrKindNames ( )

Definition at line 552 of file EnumTables.cpp.

References PtrKindNames.

◆ getPtrMemberRepNames()

ArrayRef< EnumEntry< uint16_t > > llvm::codeview::getPtrMemberRepNames ( )

Definition at line 560 of file EnumTables.cpp.

References PtrMemberRepNames.

◆ getPtrModeNames()

ArrayRef< EnumEntry< uint8_t > > llvm::codeview::getPtrModeNames ( )

Definition at line 556 of file EnumTables.cpp.

References PtrModeNames.

◆ getPublicSymFlagNames()

ArrayRef< EnumEntry< uint32_t > > llvm::codeview::getPublicSymFlagNames ( )

Definition at line 475 of file EnumTables.cpp.

References PublicSymFlagNames.

◆ getRegisterNames()

ArrayRef< EnumEntry< uint16_t > > llvm::codeview::getRegisterNames ( CPUType  Cpu)

◆ getScopeEndOffset()

uint32_t llvm::codeview::getScopeEndOffset ( const CVSymbol Symbol)

Given a symbol P for which symbolOpensScope(P) == true, return the corresponding end offset.

Definition at line 23 of file SymbolRecordHelpers.cpp.

References assert(), llvm::Block, llvm::codeview::ProcSym::End, llvm::codeview::InlineSiteSym::End, Sym, and symbolOpensScope().

Referenced by limitSymbolArrayToScope(), and llvm::codeview::CVSymbolVisitor::visitSymbolStreamFiltered().

◆ getScopeParentOffset()

uint32_t llvm::codeview::getScopeParentOffset ( const CVSymbol Symbol)

◆ getSizeInBytesForTypeIndex()

uint64_t llvm::codeview::getSizeInBytesForTypeIndex ( TypeIndex  TI)

◆ getSizeInBytesForTypeRecord()

uint64_t llvm::codeview::getSizeInBytesForTypeRecord ( CVType  CVT)

Given an arbitrary codeview type, return the type's size in the case of aggregate (LF_STRUCTURE, LF_CLASS, LF_INTERFACE, LF_UNION).

Definition at line 171 of file TypeRecordHelpers.cpp.

References llvm::codeview::CVRecord< Kind >::kind(), and llvm::codeview::CVRecord< Kind >::length().

Referenced by llvm::logicalview::LVLogicalVisitor::visitKnownRecord().

◆ getSourceLanguageNames()

ArrayRef< EnumEntry< SourceLanguage > > llvm::codeview::getSourceLanguageNames ( )

Definition at line 491 of file EnumTables.cpp.

References SourceLanguages.

Referenced by llvm::logicalview::LVSymbolVisitor::visitKnownRecord().

◆ getSymbolName()

StringRef llvm::codeview::getSymbolName ( CVSymbol  Sym)

◆ getSymbolTypeNames()

ArrayRef< EnumEntry< SymbolKind > > llvm::codeview::getSymbolTypeNames ( )

◆ getThunkOrdinalNames()

ArrayRef< EnumEntry< uint8_t > > llvm::codeview::getThunkOrdinalNames ( )

Definition at line 523 of file EnumTables.cpp.

References ThunkOrdinalNames.

◆ getTrampolineNames()

ArrayRef< EnumEntry< uint16_t > > llvm::codeview::getTrampolineNames ( )

Definition at line 527 of file EnumTables.cpp.

References TrampolineNames.

◆ getTypeLeafNames()

ArrayRef< EnumEntry< TypeLeafKind > > llvm::codeview::getTypeLeafNames ( )

Definition at line 462 of file EnumTables.cpp.

References TypeLeafNames.

◆ getTypeModifierNames()

ArrayRef< EnumEntry< uint16_t > > llvm::codeview::getTypeModifierNames ( )

Definition at line 564 of file EnumTables.cpp.

References TypeModifierNames.

◆ isAggregate()

bool llvm::codeview::isAggregate ( CVType  CVT)
inline

Given an arbitrary codeview type, determine if it is an LF_STRUCTURE, LF_CLASS, LF_INTERFACE, LF_UNION.

Definition at line 46 of file TypeRecordHelpers.h.

References llvm::codeview::CVRecord< Kind >::kind().

Referenced by llvm::logicalview::LVLogicalVisitor::visitKnownRecord().

◆ isIdRecord()

bool llvm::codeview::isIdRecord ( TypeLeafKind  K)
inline

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.

Definition at line 29 of file TypeRecordHelpers.h.

◆ isUdtForwardRef()

bool llvm::codeview::isUdtForwardRef ( CVType  CVT)

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.

Definition at line 27 of file TypeRecordHelpers.cpp.

References llvm::codeview::CVRecord< Kind >::kind().

Referenced by llvm::pdb::TpiStream::findFullDeclForForwardRef(), llvm::pdb::SymbolCache::findSymbolByTypeIndex(), and llvm::pdb::NativeEnumTypes::NativeEnumTypes().

◆ limitSymbolArrayToScope()

CVSymbolArray llvm::codeview::limitSymbolArrayToScope ( const CVSymbolArray Symbols,
uint32_t  ScopeBegin 
)

◆ make_error_code()

std::error_code llvm::codeview::make_error_code ( cv_error_code  E)
inline

Definition at line 36 of file CodeViewError.h.

References CVErrorCategory(), and E.

◆ mergeIdRecords() [1/2]

Error llvm::codeview::mergeIdRecords ( GlobalTypeTableBuilder Dest,
ArrayRef< TypeIndex Types,
SmallVectorImpl< TypeIndex > &  SourceToDest,
const CVTypeArray Ids,
ArrayRef< GloballyHashedType Hashes 
)

Definition at line 471 of file TypeStreamMerger.cpp.

◆ mergeIdRecords() [2/2]

Error llvm::codeview::mergeIdRecords ( MergingTypeTableBuilder Dest,
ArrayRef< TypeIndex Types,
SmallVectorImpl< TypeIndex > &  SourceToDest,
const CVTypeArray Ids 
)

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.

Parameters
DestThe table to store the re-written id records into.
TypesThe mapping to use for the type records that these id records refer to.
SourceToDestA vector, indexed by the TypeIndex in the source id stream, that contains the index of the corresponding id record in the destination stream.
IdsThe collection of id records to merge in.
Returns
Error::success() if the operation succeeded, otherwise an appropriate error code.

Definition at line 437 of file TypeStreamMerger.cpp.

◆ mergeTypeAndIdRecords() [1/2]

Error llvm::codeview::mergeTypeAndIdRecords ( GlobalTypeTableBuilder DestIds,
GlobalTypeTableBuilder DestTypes,
SmallVectorImpl< TypeIndex > &  SourceToDest,
const CVTypeArray IdsAndTypes,
ArrayRef< GloballyHashedType Hashes,
std::optional< PCHMergerInfo > &  PCHInfo 
)

Definition at line 453 of file TypeStreamMerger.cpp.

◆ mergeTypeAndIdRecords() [2/2]

Error llvm::codeview::mergeTypeAndIdRecords ( MergingTypeTableBuilder DestIds,
MergingTypeTableBuilder DestTypes,
SmallVectorImpl< TypeIndex > &  SourceToDest,
const CVTypeArray IdsAndTypes,
std::optional< PCHMergerInfo > &  PCHInfo 
)

Merge a unified set of type and id records, splitting them into separate output streams.

Parameters
DestIdsThe table to store the re-written id records into.
DestTypesthe table to store the re-written type records into.
SourceToDestA vector, indexed by the TypeIndex in the source id stream, that contains the index of the corresponding id record in the destination stream.
IdsAndTypesThe collection of id records to merge in.
Returns
Error::success() if the operation succeeded, otherwise an appropriate error code.

Definition at line 445 of file TypeStreamMerger.cpp.

◆ mergeTypeRecords() [1/2]

Error llvm::codeview::mergeTypeRecords ( GlobalTypeTableBuilder Dest,
SmallVectorImpl< TypeIndex > &  SourceToDest,
const CVTypeArray Types,
ArrayRef< GloballyHashedType Hashes,
std::optional< PCHMergerInfo > &  PCHInfo 
)

Definition at line 462 of file TypeStreamMerger.cpp.

◆ mergeTypeRecords() [2/2]

Error llvm::codeview::mergeTypeRecords ( MergingTypeTableBuilder Dest,
SmallVectorImpl< TypeIndex > &  SourceToDest,
const CVTypeArray Types 
)

Merge one set of type records into another.

This method assumes that all records are type records, and there are no Id records present.

Parameters
DestThe table to store the re-written type records into.
SourceToDestA vector, indexed by the TypeIndex in the source type stream, that contains the index of the corresponding type record in the destination stream.
TypesThe collection of types to merge in.
Returns
Error::success() if the operation succeeded, otherwise an appropriate error code.

Definition at line 430 of file TypeStreamMerger.cpp.

◆ operator!=() [1/2]

bool llvm::codeview::operator!= ( const FunctionId A,
const FunctionId B 
)
inline

Definition at line 33 of file FunctionId.h.

References A, and B.

◆ operator!=() [2/2]

bool llvm::codeview::operator!= ( const GUID LHS,
const GUID RHS 
)
inline

Definition at line 45 of file GUID.h.

References LHS, and RHS.

◆ operator<() [1/2]

bool llvm::codeview::operator< ( const FunctionId A,
const FunctionId B 
)
inline

Definition at line 37 of file FunctionId.h.

References A, and B.

◆ operator<() [2/2]

bool llvm::codeview::operator< ( const GUID LHS,
const GUID RHS 
)
inline

Definition at line 29 of file GUID.h.

References LHS, and RHS.

◆ operator<<()

raw_ostream & llvm::codeview::operator<< ( raw_ostream OS,
const GUID Guid 
)

Definition at line 57 of file Formatters.cpp.

References A, llvm::Guid, and OS.

◆ operator<=() [1/2]

bool llvm::codeview::operator<= ( const FunctionId A,
const FunctionId B 
)
inline

Definition at line 41 of file FunctionId.h.

References A, and B.

◆ operator<=() [2/2]

bool llvm::codeview::operator<= ( const GUID LHS,
const GUID RHS 
)
inline

Definition at line 33 of file GUID.h.

References LHS, and RHS.

◆ operator==() [1/2]

bool llvm::codeview::operator== ( const FunctionId A,
const FunctionId B 
)
inline

Definition at line 29 of file FunctionId.h.

References A, B, and llvm::operator==().

◆ operator==() [2/2]

bool llvm::codeview::operator== ( const GUID LHS,
const GUID RHS 
)
inline

Definition at line 25 of file GUID.h.

References LHS, memcmp, llvm::operator==(), and RHS.

◆ operator>() [1/2]

bool llvm::codeview::operator> ( const FunctionId A,
const FunctionId B 
)
inline

Definition at line 45 of file FunctionId.h.

References A, and B.

◆ operator>() [2/2]

bool llvm::codeview::operator> ( const GUID LHS,
const GUID RHS 
)
inline

Definition at line 37 of file GUID.h.

References LHS, and RHS.

◆ operator>=() [1/2]

bool llvm::codeview::operator>= ( const FunctionId A,
const FunctionId B 
)
inline

Definition at line 49 of file FunctionId.h.

References A, and B.

◆ operator>=() [2/2]

bool llvm::codeview::operator>= ( const GUID LHS,
const GUID RHS 
)
inline

Definition at line 41 of file GUID.h.

References LHS, and RHS.

◆ printTypeIndex()

void llvm::codeview::printTypeIndex ( ScopedPrinter Printer,
StringRef  FieldName,
TypeIndex  TI,
TypeCollection Types 
)

◆ readCVRecordFromStream()

template<typename Kind >
Expected< CVRecord< Kind > > llvm::codeview::readCVRecordFromStream ( BinaryStreamRef  Stream,
uint32_t  Offset 
)
inline

Read a complete record from a stream at a random offset.

Definition at line 92 of file CVRecord.h.

References corrupt_record, EC, llvm::Offset, llvm::BinaryStreamReader::readBytes(), llvm::BinaryStreamReader::readObject(), and llvm::BinaryStreamReader::setOffset().

◆ readSymbolFromStream()

Expected< CVSymbol > llvm::codeview::readSymbolFromStream ( BinaryStreamRef  Stream,
uint32_t  Offset 
)

Definition at line 151 of file RecordSerialization.cpp.

References llvm::Offset.

◆ serialize_array()

template<typename T , typename U >
serialize_array_impl< T, U > llvm::codeview::serialize_array ( ArrayRef< T > &  Item,
Func 
)

Definition at line 161 of file RecordSerialization.h.

◆ serialize_array_tail() [1/2]

template<typename T >
serialize_arrayref_tail_impl< T > llvm::codeview::serialize_array_tail ( ArrayRef< T > &  Item)

Definition at line 176 of file RecordSerialization.h.

◆ serialize_array_tail() [2/2]

template<typename T >
serialize_vector_tail_impl< T > llvm::codeview::serialize_array_tail ( std::vector< T > &  Item)

Definition at line 171 of file RecordSerialization.h.

◆ serialize_conditional()

template<typename T , typename U >
serialize_conditional_impl< T, U > llvm::codeview::serialize_conditional ( T Item,
Func 
)

Definition at line 86 of file RecordSerialization.h.

◆ serialize_null_term_string_array()

serialize_null_term_string_array_impl llvm::codeview::serialize_null_term_string_array ( std::vector< StringRef > &  Item)
inline

Definition at line 166 of file RecordSerialization.h.

◆ serialize_numeric()

template<typename T >
serialize_numeric_impl< T > llvm::codeview::serialize_numeric ( T Item)

Definition at line 180 of file RecordSerialization.h.

◆ symbolEndsScope()

bool llvm::codeview::symbolEndsScope ( SymbolKind  Kind)
inline

Return true if this ssymbol ends a scope.

Definition at line 39 of file SymbolRecordHelpers.h.

Referenced by llvm::logicalview::LVSymbolVisitor::visitSymbolEnd(), and llvm::codeview::CVSymbolVisitor::visitSymbolStreamFiltered().

◆ symbolOpensScope()

bool llvm::codeview::symbolOpensScope ( SymbolKind  Kind)
inline

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.

Definition at line 20 of file SymbolRecordHelpers.h.

Referenced by getScopeEndOffset(), getScopeParentOffset(), limitSymbolArrayToScope(), llvm::logicalview::LVSymbolVisitor::visitSymbolBegin(), and llvm::codeview::CVSymbolVisitor::visitSymbolStreamFiltered().

◆ visitDebugSubsection()

Error llvm::codeview::visitDebugSubsection ( const DebugSubsectionRecord R,
DebugSubsectionVisitor V,
const StringsAndChecksumsRef State 
)

◆ visitDebugSubsections() [1/3]

template<typename T >
Error llvm::codeview::visitDebugSubsections ( T &&  FragmentRange,
DebugSubsectionVisitor V 
)

◆ visitDebugSubsections() [2/3]

template<typename T >
Error llvm::codeview::visitDebugSubsections ( T &&  FragmentRange,
DebugSubsectionVisitor V,
const DebugStringTableSubsectionRef Strings 
)

◆ visitDebugSubsections() [3/3]

template<typename T >
Error llvm::codeview::visitDebugSubsections ( T &&  FragmentRange,
DebugSubsectionVisitor V,
const DebugStringTableSubsectionRef Strings,
const DebugChecksumsSubsectionRef Checksums 
)

◆ visitMemberRecord() [1/2]

Error llvm::codeview::visitMemberRecord ( CVMemberRecord  Record,
TypeVisitorCallbacks Callbacks,
VisitorDataSource  Source = VDS_BytesPresent 
)

Definition at line 255 of file CVTypeVisitor.cpp.

◆ visitMemberRecord() [2/2]

Error llvm::codeview::visitMemberRecord ( TypeLeafKind  Kind,
ArrayRef< uint8_t Record,
TypeVisitorCallbacks Callbacks 
)

Definition at line 262 of file CVTypeVisitor.cpp.

References VDS_BytesPresent, and visitMemberRecord().

◆ visitMemberRecordStream()

Error llvm::codeview::visitMemberRecordStream ( ArrayRef< uint8_t FieldList,
TypeVisitorCallbacks Callbacks 
)

Definition at line 271 of file CVTypeVisitor.cpp.

References FieldList, and VDS_BytesPresent.

◆ visitTypeRecord() [1/2]

Error llvm::codeview::visitTypeRecord ( CVType Record,
TypeIndex  Index,
TypeVisitorCallbacks Callbacks,
VisitorDataSource  Source = VDS_BytesPresent 
)

Definition at line 219 of file CVTypeVisitor.cpp.

Referenced by computeTypeName().

◆ visitTypeRecord() [2/2]

Error llvm::codeview::visitTypeRecord ( CVType Record,
TypeVisitorCallbacks Callbacks,
VisitorDataSource  Source = VDS_BytesPresent 
)

Definition at line 226 of file CVTypeVisitor.cpp.

◆ visitTypeStream() [1/3]

Error llvm::codeview::visitTypeStream ( const CVTypeArray Types,
TypeVisitorCallbacks Callbacks,
VisitorDataSource  Source = VDS_BytesPresent 
)

Definition at line 233 of file CVTypeVisitor.cpp.

◆ visitTypeStream() [2/3]

Error llvm::codeview::visitTypeStream ( CVTypeRange  Types,
TypeVisitorCallbacks Callbacks 
)

Definition at line 240 of file CVTypeVisitor.cpp.

References VDS_BytesPresent.

◆ visitTypeStream() [3/3]

Error llvm::codeview::visitTypeStream ( TypeCollection Types,
TypeVisitorCallbacks Callbacks 
)

Definition at line 246 of file CVTypeVisitor.cpp.

References VDS_BytesPresent.