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