LLVM: include/llvm/DebugInfo/PDB/PDBTypes.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9#ifndef LLVM_DEBUGINFO_PDB_PDBTYPES_H
10#define LLVM_DEBUGINFO_PDB_PDBTYPES_H
11
17#include
18#include
19#include
20#include
21#include
22
23namespace llvm {
24namespace pdb {
25
27
68
77
78
79
84
85
98
99
100
101
115
116
117
118
120
121
122
124
150
151
152
153
156
158
160
162
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
213 };
214};
215
216
217
218
219
221
222
223
225
226
227
240
241
242
289
290
291
307
308
309
311
312
313
322
323
324
332
333
334
358
359
360
361
384
386
393
410
413
426 Value.Single = V;
427 }
429 Value.Double = V;
430 }
435 Value.UInt16 = V;
436 }
438 Value.UInt32 = V;
439 }
441 Value.UInt64 = V;
442 }
443
447
450 delete[] Value.String;
451 }
452
454 union {
468
470 switch (Type) {
480 return true;
481 default:
482 return false;
483 }
484 }
485
486#define VARIANT_WIDTH(Enum, NumBits) \
487 case PDB_VariantType::Enum: \
488 return NumBits;
489
491 switch (Type) {
503 default:
504 assert(false && "Variant::toAPSInt called on non-numeric type");
505 return 0u;
506 }
507 }
508
509#undef VARIANT_WIDTH
510
511#define VARIANT_APSINT(Enum, NumBits, IsUnsigned) \
512 case PDB_VariantType::Enum: \
513 return APSInt( \
514 APInt(NumBits, static_cast<uint64_t>(Value.Enum), !IsUnsigned), \
515 IsUnsigned);
516
518 switch (Type) {
528 default:
529 assert(false && "Variant::toAPSInt called on non-integral type");
531 }
532 }
533
534#undef VARIANT_APSINT
535
537
538 switch (Type) {
547 default:
548 assert(false && "Variant::toAPFloat called on non-floating-point type");
550 }
551 }
552
553#define VARIANT_EQUAL_CASE(Enum) \
554 case PDB_VariantType::Enum: \
555 return Value.Enum == Other.Value.Enum;
556
559 return false;
560 switch (Type) {
573 default:
574 return true;
575 }
576 }
577
578#undef VARIANT_EQUAL_CASE
579
582 if (this == &Other)
583 return *this;
585 delete[] Value.String;
589 Other.Value.String != nullptr) {
590 Value.String = new char[strlen(Other.Value.String) + 1];
591 ::strcpy(Value.String, Other.Value.String);
592 }
593 return *this;
594 }
595};
596
597}
598}
599
600template <> struct std::hash<llvm::pdb::PDB_SymType> {
602 return std::hash()(static_cast<int>(Arg));
603 }
604};
605
606#endif
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
This file declares a class to represent arbitrary precision floating point values and provide a varie...
#define VARIANT_APSINT(Enum, NumBits, IsUnsigned)
Definition PDBTypes.h:511
#define VARIANT_WIDTH(Enum, NumBits)
Definition PDBTypes.h:486
#define VARIANT_EQUAL_CASE(Enum)
Definition PDBTypes.h:553
static const fltSemantics & IEEEsingle()
static APFloat getZero(const fltSemantics &Sem, bool Negative=false)
Factory for Positive and Negative Zero.
An arbitrary precision integer that knows its signedness.
LLVM Value Representation.
IPDBDataStream defines an interface used to represent a stream consisting of a name and a series of r...
IPDBInjectedSource defines an interface used to represent source files which were injected directly i...
IPDBSectionContrib defines an interface used to represent section contributions whose information are...
IPDBSession defines an interface used to provide a context for querying debug information from a debu...
IPDBSourceFile defines an interface used to represent source files whose information are stored in th...
PDBSymbolCustom represents symbols that are compiler-specific and do not fit anywhere else in the lex...
PDBSymbol defines the base of the inheritance hierarchy for concrete symbol types (e....
CPUType
These values correspond to the CV_CPU_TYPE_e enumeration, and are documented here: https://msdn....
CallingConvention
These values correspond to the CV_call_e enumeration, and are documented at the following locations: ...
SourceLanguage
These values correspond to the CV_CFL_LANG enumeration in the Microsoft Debug Interface Access SDK,...
PDB_Checksum
Specifies the hash algorithm that a source file from a PDB was hashed with.
Definition PDBTypes.h:119
@ MD5
Definition PDBTypes.h:119
@ SHA1
Definition PDBTypes.h:119
@ SHA256
Definition PDBTypes.h:119
PDB_MemoryType
These values correspond to the MemoryTypeEnum enumeration, and are documented here: https://msdn....
Definition PDBTypes.h:325
@ Stack
Definition PDBTypes.h:328
@ HeapCode
Definition PDBTypes.h:329
@ Code
Definition PDBTypes.h:326
@ Any
Definition PDBTypes.h:330
uint32_t SymIndexId
Definition PDBTypes.h:26
PDB_Machine
Definition PDBTypes.h:125
@ M32R
Definition PDBTypes.h:136
@ ArmNT
Definition PDBTypes.h:132
@ PowerPC
Definition PDBTypes.h:140
@ SH4
Definition PDBTypes.h:145
@ Ia64
Definition PDBTypes.h:135
@ PowerPCFP
Definition PDBTypes.h:141
@ Invalid
Definition PDBTypes.h:126
@ Arm
Definition PDBTypes.h:130
@ Am33
Definition PDBTypes.h:128
@ SH5
Definition PDBTypes.h:146
@ R4000
Definition PDBTypes.h:142
@ MipsFpu16
Definition PDBTypes.h:139
@ Thumb
Definition PDBTypes.h:147
@ x86
Definition PDBTypes.h:134
@ Mips16
Definition PDBTypes.h:137
@ WceMipsV2
Definition PDBTypes.h:148
@ Arm64
Definition PDBTypes.h:131
@ SH3DSP
Definition PDBTypes.h:144
@ SH3
Definition PDBTypes.h:143
@ MipsFpu
Definition PDBTypes.h:138
@ Amd64
Definition PDBTypes.h:129
@ Ebc
Definition PDBTypes.h:133
PDB_NameSearchFlags
Defines flags used for enumerating child symbols.
Definition PDBTypes.h:102
@ NS_CaseRegex
Definition PDBTypes.h:112
@ NS_Default
Definition PDBTypes.h:103
@ NS_CaseInFileNameExt
Definition PDBTypes.h:111
@ NS_UndecoratedName
Definition PDBTypes.h:108
@ NS_CaseInsensitive
Definition PDBTypes.h:105
@ NS_CaseSensitive
Definition PDBTypes.h:104
@ NS_CaseInRex
Definition PDBTypes.h:113
@ NS_FileNameExtMatch
Definition PDBTypes.h:106
@ NS_Regex
Definition PDBTypes.h:107
IPDBEnumChildren< IPDBLineNumber > IPDBEnumLineNumbers
Definition PDBTypes.h:72
PDB_TableType
An enumeration indicating the type of data contained in this table.
Definition PDBTypes.h:86
@ Dbg
Definition PDBTypes.h:96
@ SectionContribs
Definition PDBTypes.h:91
@ Symbols
Definition PDBTypes.h:88
@ InputAssemblyFiles
Definition PDBTypes.h:95
@ SourceFiles
Definition PDBTypes.h:89
@ InjectedSources
Definition PDBTypes.h:93
@ TableInvalid
Definition PDBTypes.h:87
@ FrameData
Definition PDBTypes.h:94
@ LineNumbers
Definition PDBTypes.h:90
@ Segments
Definition PDBTypes.h:92
PDB_BuiltinType
These values correspond to the Basictype enumeration, and are documented here: https://msdn....
Definition PDBTypes.h:335
@ UInt
Definition PDBTypes.h:341
@ Complex
Definition PDBTypes.h:350
@ Int
Definition PDBTypes.h:340
@ BSTR
Definition PDBTypes.h:352
@ Char32
Definition PDBTypes.h:355
@ Float
Definition PDBTypes.h:342
@ Currency
Definition PDBTypes.h:347
@ Bitfield
Definition PDBTypes.h:351
@ ULong
Definition PDBTypes.h:346
@ Date
Definition PDBTypes.h:348
@ WCharT
Definition PDBTypes.h:339
@ Void
Definition PDBTypes.h:337
@ Long
Definition PDBTypes.h:345
@ BCD
Definition PDBTypes.h:343
@ Char
Definition PDBTypes.h:338
@ Char16
Definition PDBTypes.h:354
@ HResult
Definition PDBTypes.h:353
@ Char8
Definition PDBTypes.h:356
PDB_MemberAccess
Definition PDBTypes.h:385
@ Public
Definition PDBTypes.h:385
@ Private
Definition PDBTypes.h:385
@ Protected
Definition PDBTypes.h:385
IPDBEnumChildren< IPDBInjectedSource > IPDBEnumInjectedSources
Definition PDBTypes.h:74
PDB_UdtType
These values correspond to the UdtKind enumeration, and are documented here: https://msdn....
Definition PDBTypes.h:310
@ Interface
Definition PDBTypes.h:310
@ Struct
Definition PDBTypes.h:310
@ Class
Definition PDBTypes.h:310
@ Union
Definition PDBTypes.h:310
PDB_SymType
These values correspond to the SymTagEnum enumeration, and are documented here: https://msdn....
Definition PDBTypes.h:243
@ Export
Definition PDBTypes.h:283
@ PublicSymbol
Definition PDBTypes.h:254
@ HLSLType
Definition PDBTypes.h:280
@ CompilandEnv
Definition PDBTypes.h:248
@ Caller
Definition PDBTypes.h:281
@ FunctionArg
Definition PDBTypes.h:264
@ BaseInterface
Definition PDBTypes.h:277
@ Compiland
Definition PDBTypes.h:246
@ UDT
Definition PDBTypes.h:255
@ HeapAllocationSite
Definition PDBTypes.h:284
@ InlineSite
Definition PDBTypes.h:276
@ BaseClass
Definition PDBTypes.h:262
@ CoffGroup
Definition PDBTypes.h:285
@ VectorType
Definition PDBTypes.h:278
@ Annotation
Definition PDBTypes.h:252
@ FuncDebugStart
Definition PDBTypes.h:265
@ VTable
Definition PDBTypes.h:269
@ Typedef
Definition PDBTypes.h:261
@ FuncDebugEnd
Definition PDBTypes.h:266
@ MatrixType
Definition PDBTypes.h:279
@ ManagedType
Definition PDBTypes.h:273
@ Function
Definition PDBTypes.h:249
@ Custom
Definition PDBTypes.h:270
@ Friend
Definition PDBTypes.h:263
@ Dimension
Definition PDBTypes.h:274
@ VTableShape
Definition PDBTypes.h:268
@ Label
Definition PDBTypes.h:253
@ BuiltinType
Definition PDBTypes.h:260
@ UsingNamespace
Definition PDBTypes.h:267
@ FunctionSig
Definition PDBTypes.h:257
@ Inlinee
Definition PDBTypes.h:286
@ Callee
Definition PDBTypes.h:282
@ ArrayType
Definition PDBTypes.h:259
@ Enum
Definition PDBTypes.h:256
@ Thunk
Definition PDBTypes.h:271
@ CallSite
Definition PDBTypes.h:275
@ Exe
Definition PDBTypes.h:245
@ CompilandDetails
Definition PDBTypes.h:247
@ CustomType
Definition PDBTypes.h:272
@ Block
Definition PDBTypes.h:250
@ PointerType
Definition PDBTypes.h:258
@ Data
Definition PDBTypes.h:251
IPDBEnumChildren< IPDBDataStream > IPDBEnumDataStreams
Definition PDBTypes.h:71
PDB_VariantType
Definition PDBTypes.h:394
@ UInt32
Definition PDBTypes.h:405
@ Int16
Definition PDBTypes.h:398
@ String
Definition PDBTypes.h:408
@ Bool
Definition PDBTypes.h:407
@ Int64
Definition PDBTypes.h:400
@ Int32
Definition PDBTypes.h:399
@ UInt64
Definition PDBTypes.h:406
@ Single
Definition PDBTypes.h:401
@ Int8
Definition PDBTypes.h:397
@ Unknown
Definition PDBTypes.h:396
@ Empty
Definition PDBTypes.h:395
@ Double
Definition PDBTypes.h:402
@ UInt16
Definition PDBTypes.h:404
@ UInt8
Definition PDBTypes.h:403
IPDBEnumChildren< IPDBSectionContrib > IPDBEnumSectionContribs
Definition PDBTypes.h:75
PDB_LocType
These values correspond to the LocationType enumeration, and are documented here: https://msdn....
Definition PDBTypes.h:292
@ MetaData
Definition PDBTypes.h:302
@ TLS
Definition PDBTypes.h:295
@ Enregistered
Definition PDBTypes.h:298
@ RegRel
Definition PDBTypes.h:296
@ BitField
Definition PDBTypes.h:299
@ ThisRel
Definition PDBTypes.h:297
@ Static
Definition PDBTypes.h:294
@ Slot
Definition PDBTypes.h:300
@ Null
Definition PDBTypes.h:293
@ IlRel
Definition PDBTypes.h:301
@ RegRelAliasIndir
Definition PDBTypes.h:304
PDB_DataKind
These values correspond to the DataKind enumeration, and are documented here: https://msdn....
Definition PDBTypes.h:228
@ StaticMember
Definition PDBTypes.h:237
@ FileStatic
Definition PDBTypes.h:234
@ Global
Definition PDBTypes.h:235
@ Local
Definition PDBTypes.h:230
@ StaticLocal
Definition PDBTypes.h:231
@ ObjectPtr
Definition PDBTypes.h:233
@ Member
Definition PDBTypes.h:236
@ Param
Definition PDBTypes.h:232
@ Constant
Definition PDBTypes.h:238
PDB_ReaderType
Specifies which PDB reader implementation is to be used.
Definition PDBTypes.h:80
@ DIA
Definition PDBTypes.h:81
@ Native
Definition PDBTypes.h:82
IPDBEnumChildren< PDBSymbol > IPDBEnumSymbols
Definition PDBTypes.h:69
IPDBEnumChildren< IPDBTable > IPDBEnumTables
Definition PDBTypes.h:73
PDB_UndnameFlags
These values correspond to the flags that can be combined to control the return of an undecorated nam...
Definition PDBTypes.h:362
@ Undname_NameOnly
Definition PDBTypes.h:377
@ Undname_NoECSU
Definition PDBTypes.h:380
@ Undname_NoAccessSpec
Definition PDBTypes.h:372
@ Undname_NoAllocModel
Definition PDBTypes.h:367
@ Undname_NoMsKeywords
Definition PDBTypes.h:365
@ Undname_NoFuncReturns
Definition PDBTypes.h:366
@ Undname_NoMemberType
Definition PDBTypes.h:374
@ Undname_NoAllocLang
Definition PDBTypes.h:368
@ Undname_Reserved2
Definition PDBTypes.h:370
@ Undname_NoPTR64
Definition PDBTypes.h:382
@ Undname_HaveParams
Definition PDBTypes.h:379
@ Undname_NoIdentCharCheck
Definition PDBTypes.h:381
@ Undname_32BitDecode
Definition PDBTypes.h:376
@ Undname_Complete
Definition PDBTypes.h:363
@ Undname_NoLeadingUnderscores
Definition PDBTypes.h:364
@ Undname_NoThrowSig
Definition PDBTypes.h:373
@ Undname_NoThisType
Definition PDBTypes.h:371
@ Undname_TypeOnly
Definition PDBTypes.h:378
@ Undname_Reserved1
Definition PDBTypes.h:369
@ Undname_NoReturnUDTModel
Definition PDBTypes.h:375
IPDBEnumChildren< IPDBFrameData > IPDBEnumFrameData
Definition PDBTypes.h:76
codeview::CPUType PDB_Cpu
These values correspond to the CV_CPU_TYPE_e enumeration, and are documented here: https://msdn....
Definition PDBTypes.h:123
codeview::SourceLanguage PDB_Lang
These values correspond to the CV_CFL_LANG enumeration, and are documented here: https://msdn....
Definition PDBTypes.h:224
IPDBEnumChildren< IPDBSourceFile > IPDBEnumSourceFiles
Definition PDBTypes.h:70
PDB_StackFrameType
These values correspond to the StackFrameTypeEnum enumeration, and are documented here: https://msdn....
Definition PDBTypes.h:314
@ EBP
Definition PDBTypes.h:318
@ KernelTrap
Definition PDBTypes.h:316
@ KernelTSS
Definition PDBTypes.h:317
codeview::CallingConvention PDB_CallingConv
These values correspond to the CV_call_e enumeration, and are documented at the following locations: ...
Definition PDBTypes.h:220
This is an optimization pass for GlobalISel generic memory operations.
Definition PDBTypes.h:154
@ None
Definition PDBTypes.h:157
@ Huffman
Definition PDBTypes.h:161
@ DotNet
Definition PDBTypes.h:212
@ LZ
Definition PDBTypes.h:163
@ RunLengthEncoded
Definition PDBTypes.h:159
Definition PDBTypes.h:411
bool operator==(const Variant &Other) const
Definition PDBTypes.h:557
Variant(uint32_t V)
Definition PDBTypes.h:437
int64_t Int64
Definition PDBTypes.h:459
~Variant()
Definition PDBTypes.h:448
bool isIntegralType() const
Definition PDBTypes.h:469
Variant(int16_t V)
Definition PDBTypes.h:416
Variant(int8_t V)
Definition PDBTypes.h:415
PDB_VariantType Type
Definition PDBTypes.h:453
Variant(bool V)
Definition PDBTypes.h:414
float Single
Definition PDBTypes.h:460
APFloat toAPFloat() const
Definition PDBTypes.h:536
uint16_t UInt16
Definition PDBTypes.h:463
uint32_t UInt32
Definition PDBTypes.h:464
Variant & operator=(const Variant &Other)
Definition PDBTypes.h:581
Variant(uint64_t V)
Definition PDBTypes.h:440
Variant(int32_t V)
Definition PDBTypes.h:419
Variant(double V)
Definition PDBTypes.h:428
Variant(int64_t V)
Definition PDBTypes.h:422
APSInt toAPSInt() const
Definition PDBTypes.h:517
unsigned getBitWidth() const
Definition PDBTypes.h:490
uint64_t UInt64
Definition PDBTypes.h:465
Variant(float V)
Definition PDBTypes.h:425
bool operator!=(const Variant &Other) const
Definition PDBTypes.h:580
uint8_t UInt8
Definition PDBTypes.h:462
int32_t Int32
Definition PDBTypes.h:458
int8_t Int8
Definition PDBTypes.h:456
Variant(const Variant &Other)
Definition PDBTypes.h:444
char * String
Definition PDBTypes.h:466
double Double
Definition PDBTypes.h:461
bool Bool
Definition PDBTypes.h:455
int16_t Int16
Definition PDBTypes.h:457
Variant(uint8_t V)
Definition PDBTypes.h:431
Variant(uint16_t V)
Definition PDBTypes.h:434
union llvm::pdb::Variant::@200246275201367176165230176113371323105013167275 Value
Definition PDBTypes.h:387
uint32_t Build
Definition PDBTypes.h:390
uint32_t Major
Definition PDBTypes.h:388
uint32_t Minor
Definition PDBTypes.h:389
uint32_t QFE
Definition PDBTypes.h:391
std::size_t operator()(const llvm::pdb::PDB_SymType &Arg) const
Definition PDBTypes.h:601