LLVM: lib/DebugInfo/PDB/DIA/DIARawSymbol.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

25

26using namespace llvm;

28

29namespace {

30Variant VariantFromVARIANT(const VARIANT &V) {

32 switch (V.vt) {

33 case VT_I1:

34 Result.Value.Int8 = V.cVal;

36 break;

37 case VT_I2:

38 Result.Value.Int16 = V.iVal;

40 break;

41 case VT_I4:

42 Result.Value.Int32 = V.intVal;

44 break;

45 case VT_I8:

46 Result.Value.Int64 = V.llVal;

48 break;

49 case VT_UI1:

50 Result.Value.UInt8 = V.bVal;

52 break;

53 case VT_UI2:

54 Result.Value.UInt16 = V.uiVal;

56 break;

57 case VT_UI4:

58 Result.Value.UInt32 = V.uintVal;

60 break;

61 case VT_UI8:

62 Result.Value.UInt64 = V.ullVal;

64 break;

65 case VT_BOOL:

66 Result.Value.Bool = (V.boolVal == VARIANT_TRUE) ? true : false;

68 break;

69 case VT_R4:

70 Result.Value.Single = V.fltVal;

72 break;

73 case VT_R8:

74 Result.Value.Double = V.dblVal;

76 break;

77 case VT_BSTR: {

78 const char *SrcBytes = reinterpret_cast<const char *>(V.bstrVal);

80 std::string Result8;

82 Result.Value.String = nullptr;

83 Result.Value.String = new char[Result8.length() + 1];

84 ::strcpy(Result.Value.String, Result8.c_str());

86 break;

87 }

88 default:

90 break;

91 }

93}

94

95template

97 HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {

99 if (S_OK == (Symbol->*Method)(&Value))

100 return static_cast<ArgType>(Value);

101

102 return ArgType();

103}

104

105template <typename ArgType, typename RetType>

107 HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {

109 if (S_OK == (Symbol->*Method)(&Value))

110 return static_cast<RetType>(Value);

111

112 return RetType();

113}

114

115std::string

117 HRESULT (__stdcall IDiaSymbol::*Method)(BSTR *)) {

119}

120

123 HRESULT (__stdcall IDiaSymbol::*Method)(GUID *)) {

125 if (S_OK != (Symbol->*Method)(&Result))

127

129 "GUID is the wrong size!");

131 ::memcpy(&IdResult, &Result, sizeof(GUID));

132 return IdResult;

133}

134

135template <typename PrintType, typename ArgType>

137 IDiaSymbol *Symbol,

138 HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {

140 if (S_OK == (Symbol->*Method)(&Value))

142}

143

145 IDiaSymbol *Symbol,

146 HRESULT (__stdcall IDiaSymbol::*Method)(DWORD *),

150 if (S_OK == (Symbol->*Method)(&Value))

152 RecurseFlags);

153}

154

155template

157 IDiaSymbol *Symbol,

158 HRESULT (__stdcall IDiaSymbol::*Method)(ArgType *)) {

160 if (S_OK == (Symbol->*Method)(&Value))

162}

163

165 IDiaSymbol *Symbol,

166 HRESULT (__stdcall IDiaSymbol::*Method)(BSTR *)) {

168 if (S_OK != (Symbol->*Method)(&Value))

169 return;

170 const char *Bytes = reinterpret_cast<const char *>(Value);

175 ::SysFreeString(Value);

176}

177

179 IDiaSymbol *Symbol,

180 HRESULT (__stdcall IDiaSymbol::*Method)(VARIANT *)) {

182 Value.vt = VT_EMPTY;

183 if (S_OK != (Symbol->*Method)(&Value))

184 return;

186

188}

189}

190

191namespace llvm {

193 StringRef GuidBytes(reinterpret_cast<const char *>(&G), sizeof(G));

195 A.format(OS, "");

196 return OS;

197}

198}

199

201 CComPtr DiaSymbol)

202 : Session(PDBSession), Symbol(DiaSymbol) {}

203

204#define RAW_ID_METHOD_DUMP(Stream, Method, Session, FieldId, ShowFlags, \

205 RecurseFlags) \

206 DumpDIAIdValue(Stream, Indent, StringRef{#Method}, Symbol, \

207 &IDiaSymbol::get_##Method, Session, FieldId, ShowFlags, \

208 RecurseFlags);

209

210#define RAW_METHOD_DUMP(Stream, Method) \

211 DumpDIAValue(Stream, Indent, StringRef{#Method}, Symbol, \

212 &IDiaSymbol::get_##Method);

213

214#define RAW_METHOD_DUMP_AS(Stream, Method, Type) \

215 DumpDIAValueAs(Stream, Indent, StringRef{#Method}, Symbol, \

216 &IDiaSymbol::get_##Method);

217

222 ShowIdFields, RecurseIdFields);

224

241 ShowIdFields, RecurseIdFields);

251 RecurseIdFields);

255 RAW_METHOD_DUMP(OS, liveRangeStartRelativeVirtualAddress);

290 RecurseIdFields);

295 RecurseIdFields);

395}

396

397std::unique_ptr

399 enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);

400

401 CComPtr DiaEnumerator;

402 if (S_OK !=

403 Symbol->findChildrenEx(EnumVal, nullptr, nsNone, &DiaEnumerator)) {

404 if (S_OK != Symbol->findChildren(EnumVal, nullptr, nsNone, &DiaEnumerator))

405 return nullptr;

406 }

407

408 return std::make_unique(Session, DiaEnumerator);

409}

410

411std::unique_ptr

416

417 enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);

418 DWORD CompareFlags = static_cast<DWORD>(Flags);

419 wchar_t *Name16Str = reinterpret_cast<wchar_t *>(Name16.data());

420

421 CComPtr DiaEnumerator;

422 if (S_OK !=

423 Symbol->findChildrenEx(EnumVal, Name16Str, CompareFlags, &DiaEnumerator))

424 return nullptr;

425

426 return std::make_unique(Session, DiaEnumerator);

427}

428

429std::unique_ptr

435

436 enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);

437

438 DWORD CompareFlags = static_cast<DWORD>(Flags);

439 wchar_t *Name16Str = reinterpret_cast<wchar_t *>(Name16.data());

440

441 CComPtr DiaEnumerator;

442 if (S_OK != Symbol->findChildrenExByAddr(EnumVal, Name16Str, CompareFlags,

443 Section, Offset, &DiaEnumerator))

444 return nullptr;

445

446 return std::make_unique(Session, DiaEnumerator);

447}

448

449std::unique_ptr

454

455 enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);

456

457 DWORD CompareFlags = static_cast<DWORD>(Flags);

458 wchar_t *Name16Str = reinterpret_cast<wchar_t *>(Name16.data());

459

460 CComPtr DiaEnumerator;

461 if (S_OK != Symbol->findChildrenExByVA(EnumVal, Name16Str, CompareFlags, VA,

462 &DiaEnumerator))

463 return nullptr;

464

465 return std::make_unique(Session, DiaEnumerator);

466}

467

468std::unique_ptr

473

474 enum SymTagEnum EnumVal = static_cast<enum SymTagEnum>(Type);

475 DWORD CompareFlags = static_cast<DWORD>(Flags);

476 wchar_t *Name16Str = reinterpret_cast<wchar_t *>(Name16.data());

477

478 CComPtr DiaEnumerator;

479 if (S_OK != Symbol->findChildrenExByRVA(EnumVal, Name16Str, CompareFlags, RVA,

480 &DiaEnumerator))

481 return nullptr;

482

483 return std::make_unique(Session, DiaEnumerator);

484}

485

486std::unique_ptr

488 CComPtr DiaEnumerator;

489 if (S_OK != Symbol->findInlineFramesByAddr(Section, Offset, &DiaEnumerator))

490 return nullptr;

491

492 return std::make_unique(Session, DiaEnumerator);

493}

494

495std::unique_ptr

497 CComPtr DiaEnumerator;

498 if (S_OK != Symbol->findInlineFramesByRVA(RVA, &DiaEnumerator))

499 return nullptr;

500

501 return std::make_unique(Session, DiaEnumerator);

502}

503

504std::unique_ptr

506 CComPtr DiaEnumerator;

507 if (S_OK != Symbol->findInlineFramesByVA(VA, &DiaEnumerator))

508 return nullptr;

509

510 return std::make_unique(Session, DiaEnumerator);

511}

512

514 CComPtr DiaEnumerator;

515 if (S_OK != Symbol->findInlineeLines(&DiaEnumerator))

516 return nullptr;

517

518 return std::make_unique(DiaEnumerator);

519}

520

521std::unique_ptr

524 CComPtr DiaEnumerator;

525 if (S_OK !=

526 Symbol->findInlineeLinesByAddr(Section, Offset, Length, &DiaEnumerator))

527 return nullptr;

528

529 return std::make_unique(DiaEnumerator);

530}

531

532std::unique_ptr

534 CComPtr DiaEnumerator;

535 if (S_OK != Symbol->findInlineeLinesByRVA(RVA, Length, &DiaEnumerator))

536 return nullptr;

537

538 return std::make_unique(DiaEnumerator);

539}

540

541std::unique_ptr

543 CComPtr DiaEnumerator;

544 if (S_OK != Symbol->findInlineeLinesByVA(VA, Length, &DiaEnumerator))

545 return nullptr;

546

547 return std::make_unique(DiaEnumerator);

548}

549

552

554 Symbol->get_dataBytes(0, &DataSize, nullptr);

556 return;

557

560}

561

563 CComBSTR Result16;

564 if (S_OK != Symbol->get_undecoratedNameEx((DWORD)Flags, &Result16))

565 return std::string();

566

567 const char *SrcBytes = reinterpret_cast<const char *>(Result16.m_str);

569 std::string Result8;

571 return std::string();

572 return Result8;

573}

574

577 &IDiaSymbol::get_access);

578}

579

583

587

591

595

602

606

610

614

617 &IDiaSymbol::get_baseType);

618}

619

623

626 Symbol, &IDiaSymbol::get_callingConvention);

627}

628

632

636

640

644

651

655

659

663

666 &IDiaSymbol::get_liveRangeStartAddressOffset);

667}

668

671 &IDiaSymbol::get_liveRangeStartAddressSection);

672}

673

676 Symbol, &IDiaSymbol::get_liveRangeStartRelativeVirtualAddress);

677}

678

681 Symbol, &IDiaSymbol::get_localBasePointerRegisterId);

682}

683

687

691

695

698 &IDiaSymbol::get_numberOfAcceleratorPointerTags);

699}

700

704

708

712

716

720

724

728

732

736

740

743 Symbol, &IDiaSymbol::get_registerId);

744}

745

749

753

757

761

765

769

773

775 CComPtr LineNumber;

776 if (FAILED(Symbol->getSrcLineOnTypeDefn(&LineNumber)) || !LineNumber)

777 return nullptr;

778

779 return std::make_unique(LineNumber);

780}

781

785

789

793

797

801

804 &IDiaSymbol::get_targetRelativeVirtualAddress);

805}

806

810

814

818

822

826

830

834

838

842

846

849 Value.vt = VT_EMPTY;

850 if (S_OK != Symbol->get_value(&Value))

852

853 return VariantFromVARIANT(Value);

854}

855

859

863

867

868std::unique_ptr

870 CComPtr TableType;

871 if (FAILED(Symbol->get_virtualBaseTableType(&TableType)) || !TableType)

872 return nullptr;

873

874 auto RawVT = std::make_unique(Session, TableType);

875 auto Pointer =

878}

879

882 &IDiaSymbol::get_dataKind);

883}

884

887 &IDiaSymbol::get_symTag);

888}

889

893

897

901

905

908 &IDiaSymbol::get_locationType);

909}

910

913 &IDiaSymbol::get_machineType);

914}

915

918 Symbol, &IDiaSymbol::get_thunkOrdinal);

919}

920

924

928

932

935 &IDiaSymbol::get_udtKind);

936}

937

941

945

949

953

957

961

965

969

973

977

981

985

989

993

997

1001

1005

1009

1013

1017

1021

1025

1029

1033

1037

1041

1045

1049

1053

1057

1061

1065

1068 &IDiaSymbol::get_isAcceleratorGroupSharedLocal);

1069}

1070

1073 &IDiaSymbol::get_isAcceleratorPointerTagLiveRange);

1074}

1075

1079

1083

1087

1091

1095

1099

1103

1107

1111

1115

1119

1123

1127

1130 &IDiaSymbol::get_isLocationControlFlowDependent);

1131}

1132

1136

1140

1144

1148

1152

1156

1160

1164

1168

1171 &IDiaSymbol::get_isPointerBasedOnSymbolValue);

1172}

1173

1177

1181

1185

1189

1193

1197

1201

1205

1209

1213

1217

1221

1225

1229

1235

1239

1243

1247

1251

1255

1259

1263

1267

static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")

ArgType PrivateGetDIAValue(IDiaFrameData *FrameData, HRESULT(__stdcall IDiaFrameData::*Method)(ArgType *))

#define RAW_METHOD_DUMP_AS(Stream, Method, Type)

Definition DIARawSymbol.cpp:214

#define RAW_METHOD_DUMP(Stream, Method)

Definition DIARawSymbol.cpp:210

#define RAW_ID_METHOD_DUMP(Stream, Method, Session, FieldId, ShowFlags, RecurseFlags)

Definition DIARawSymbol.cpp:204

std::string invokeBstrMethod(Obj &Object, HRESULT(__stdcall Obj::*Func)(BSTR *))

dot regions Print regions of function to dot true view regions View regions of function(with no function bodies)"

ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...

pointer data()

Return a pointer to the vector's buffer, even if empty().

This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.

StringRef - Represent a constant reference to a string, i.e.

LLVM Value Representation.

uint32_t getNumberOfModifiers() const override

Definition DIARawSymbol.cpp:705

bool isDataAligned() const override

Definition DIARawSymbol.cpp:1100

bool isCxxReturnUdt() const override

Definition DIARawSymbol.cpp:1096

bool hasOptimizedCodeDebugInfo() const override

Definition DIARawSymbol.cpp:1042

bool isScoped() const override

Definition DIARawSymbol.cpp:1210

std::unique_ptr< IPDBEnumSymbols > findChildrenByVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags, uint64_t VA) const override

Definition DIARawSymbol.cpp:450

SymIndexId getUpperBoundId() const override

Definition DIARawSymbol.cpp:843

bool hasInterruptReturn() const override

Definition DIARawSymbol.cpp:1014

bool isStatic() const override

Definition DIARawSymbol.cpp:1226

uint32_t getTextureSlot() const override

Definition DIARawSymbol.cpp:815

uint32_t getVirtualBaseDispIndex() const override

Definition DIARawSymbol.cpp:856

uint32_t getAddressOffset() const override

Definition DIARawSymbol.cpp:580

std::unique_ptr< IPDBEnumLineNumbers > findInlineeLines() const override

Definition DIARawSymbol.cpp:513

void getFrontEndVersion(VersionInfo &Version) const override

Definition DIARawSymbol.cpp:645

SymIndexId getTypeId() const override

Definition DIARawSymbol.cpp:827

bool hasEHa() const override

Definition DIARawSymbol.cpp:1002

std::string getUndecoratedNameEx(PDB_UndnameFlags Flags) const override

Definition DIARawSymbol.cpp:562

bool isCVTCIL() const override

Definition DIARawSymbol.cpp:1088

std::unique_ptr< IPDBEnumLineNumbers > findInlineeLinesByRVA(uint32_t RVA, uint32_t Length) const override

Definition DIARawSymbol.cpp:533

bool isOptimizedAway() const override

Definition DIARawSymbol.cpp:1161

bool isVolatileType() const override

Definition DIARawSymbol.cpp:1260

bool isInterfaceUdt() const override

Definition DIARawSymbol.cpp:1116

bool isEditAndContinueEnabled() const override

Definition DIARawSymbol.cpp:962

Variant getValue() const override

Definition DIARawSymbol.cpp:847

uint32_t getSignature() const override

Definition DIARawSymbol.cpp:758

bool isUnalignedType() const override

Definition DIARawSymbol.cpp:1236

std::string getName() const override

Definition DIARawSymbol.cpp:692

bool hasLongJump() const override

Definition DIARawSymbol.cpp:1022

bool hasCustomCallingConvention() const override

Definition DIARawSymbol.cpp:942

PDB_DataKind getDataKind() const override

Definition DIARawSymbol.cpp:880

PDB_Cpu getPlatform() const override

Definition DIARawSymbol.cpp:733

uint32_t getCountLiveRanges() const override

Definition DIARawSymbol.cpp:641

bool isHotpatchable() const override

Definition DIARawSymbol.cpp:1108

bool isReturnValue() const override

Definition DIARawSymbol.cpp:1202

uint32_t getBaseDataOffset() const override

Definition DIARawSymbol.cpp:603

PDB_MemberAccess getAccess() const override

Definition DIARawSymbol.cpp:575

std::unique_ptr< IPDBEnumSymbols > findChildrenByAddr(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags, uint32_t Section, uint32_t Offset) const override

Definition DIARawSymbol.cpp:430

int32_t getThisAdjust() const override

Definition DIARawSymbol.cpp:898

bool isIntroVirtualFunction() const override

Definition DIARawSymbol.cpp:1084

bool isAcceleratorGroupSharedLocal() const override

Definition DIARawSymbol.cpp:1066

bool hasNoReturnAttribute() const override

Definition DIARawSymbol.cpp:1038

SymIndexId getLowerBoundId() const override

Definition DIARawSymbol.cpp:684

bool hasNestedTypes() const override

Definition DIARawSymbol.cpp:1030

bool hasCTypes() const override

Definition DIARawSymbol.cpp:986

std::string getSymbolsFileName() const override

Definition DIARawSymbol.cpp:790

uint32_t getNumberOfRows() const override

Definition DIARawSymbol.cpp:713

std::unique_ptr< IPDBEnumSymbols > findInlineFramesByAddr(uint32_t Section, uint32_t Offset) const override

Definition DIARawSymbol.cpp:487

PDB_Lang getLanguage() const override

Definition DIARawSymbol.cpp:652

bool wasInlined() const override

Definition DIARawSymbol.cpp:1264

uint32_t getLiveRangeStartAddressSection() const override

Definition DIARawSymbol.cpp:669

bool isPacked() const override

Definition DIARawSymbol.cpp:1165

bool getNoStackOrdering() const override

Definition DIARawSymbol.cpp:974

uint32_t getAge() const override

Definition DIARawSymbol.cpp:588

void getBackEndVersion(VersionInfo &Version) const override

Definition DIARawSymbol.cpp:596

uint32_t getSizeInUdt() const override

Definition DIARawSymbol.cpp:762

bool isLocationControlFlowDependent() const override

Definition DIARawSymbol.cpp:1128

PDB_CallingConv getCallingConvention() const override

Definition DIARawSymbol.cpp:624

std::string getUndecoratedName() const override

Definition DIARawSymbol.cpp:835

uint32_t getTargetRelativeVirtualAddress() const override

Definition DIARawSymbol.cpp:802

SymIndexId getArrayIndexTypeId() const override

Definition DIARawSymbol.cpp:592

DIARawSymbol(const DIASession &PDBSession, CComPtr< IDiaSymbol > DiaSymbol)

Definition DIARawSymbol.cpp:200

bool isReference() const override

Definition DIARawSymbol.cpp:1194

bool isMultipleInheritance() const override

Definition DIARawSymbol.cpp:1149

bool isAggregated() const override

Definition DIARawSymbol.cpp:1080

bool isConstructorVirtualBase() const override

Definition DIARawSymbol.cpp:1092

bool isSplitted() const override

Definition DIARawSymbol.cpp:1222

uint32_t getRegisterType() const override

Definition DIARawSymbol.cpp:746

uint32_t getOffsetInUdt() const override

Definition DIARawSymbol.cpp:729

uint32_t getRelativeVirtualAddress() const override

Definition DIARawSymbol.cpp:750

std::unique_ptr< IPDBEnumLineNumbers > findInlineeLinesByAddr(uint32_t Section, uint32_t Offset, uint32_t Length) const override

Definition DIARawSymbol.cpp:522

PDB_UdtType getUdtKind() const override

Definition DIARawSymbol.cpp:933

bool isCompilerGenerated() const override

Definition DIARawSymbol.cpp:954

bool isIntrinsic() const override

Definition DIARawSymbol.cpp:1120

bool isManagedCode() const override

Definition DIARawSymbol.cpp:1141

bool isMSILNetmodule() const override

Definition DIARawSymbol.cpp:1133

bool hasEH() const override

Definition DIARawSymbol.cpp:998

bool hasConstructor() const override

Definition DIARawSymbol.cpp:938

bool isVirtualInheritance() const override

Definition DIARawSymbol.cpp:1256

uint32_t getNumberOfColumns() const override

Definition DIARawSymbol.cpp:701

uint64_t getTargetVirtualAddress() const override

Definition DIARawSymbol.cpp:807

PDB_SymType getSymTag() const override

Definition DIARawSymbol.cpp:885

std::unique_ptr< IPDBEnumSymbols > findInlineFramesByVA(uint64_t VA) const override

Definition DIARawSymbol.cpp:505

bool isNested() const override

Definition DIARawSymbol.cpp:1157

bool isVirtual() const override

Definition DIARawSymbol.cpp:1248

SymIndexId getVirtualTableShapeId() const override

Definition DIARawSymbol.cpp:864

bool isCode() const override

Definition DIARawSymbol.cpp:950

std::string getUnused() const override

Definition DIARawSymbol.cpp:1268

bool isFunction() const override

Definition DIARawSymbol.cpp:966

int32_t getOffset() const override

Definition DIARawSymbol.cpp:894

bool hasAlloca() const override

Definition DIARawSymbol.cpp:978

std::string getCompilerName() const override

Definition DIARawSymbol.cpp:633

bool isAcceleratorStubFunction() const override

Definition DIARawSymbol.cpp:1076

SymIndexId getBaseSymbolId() const override

Definition DIARawSymbol.cpp:611

bool hasNoInlineAttribute() const override

Definition DIARawSymbol.cpp:1034

bool isSdl() const override

Definition DIARawSymbol.cpp:1214

SymIndexId getUnmodifiedTypeId() const override

Definition DIARawSymbol.cpp:839

bool hasStrictGSCheck() const override

Definition DIARawSymbol.cpp:1062

codeview::GUID getGuid() const override

Definition DIARawSymbol.cpp:890

uint32_t getNumberOfRegisterIndices() const override

Definition DIARawSymbol.cpp:709

bool hasSEH() const override

Definition DIARawSymbol.cpp:1050

uint32_t getVirtualBaseOffset() const override

Definition DIARawSymbol.cpp:860

std::string getSourceFileName() const override

Definition DIARawSymbol.cpp:770

bool isUnreached() const override

Definition DIARawSymbol.cpp:1240

SymIndexId getSubTypeId() const override

Definition DIARawSymbol.cpp:786

bool hasOverloadedOperator() const override

Definition DIARawSymbol.cpp:1046

std::unique_ptr< IPDBLineNumber > getSrcLineOnTypeDefn() const override

Definition DIARawSymbol.cpp:774

uint32_t getBitPosition() const override

Definition DIARawSymbol.cpp:620

bool isPointerBasedOnSymbolValue() const override

Definition DIARawSymbol.cpp:1169

uint32_t getSlot() const override

Definition DIARawSymbol.cpp:766

uint32_t getMemorySpaceKind() const override

Definition DIARawSymbol.cpp:688

uint32_t getUavSlot() const override

Definition DIARawSymbol.cpp:831

std::unique_ptr< IPDBEnumSymbols > findInlineFramesByRVA(uint32_t RVA) const override

Definition DIARawSymbol.cpp:496

bool hasInlAsm() const override

Definition DIARawSymbol.cpp:1006

uint32_t getOemId() const override

Definition DIARawSymbol.cpp:721

bool isRefUdt() const override

Definition DIARawSymbol.cpp:1190

uint32_t getTimeStamp() const override

Definition DIARawSymbol.cpp:819

bool isSafeBuffers() const override

Definition DIARawSymbol.cpp:1206

bool isPointerToDataMember() const override

Definition DIARawSymbol.cpp:1174

SymIndexId getOemSymbolId() const override

Definition DIARawSymbol.cpp:725

bool isPureVirtual() const override

Definition DIARawSymbol.cpp:1182

bool isValueUdt() const override

Definition DIARawSymbol.cpp:1244

uint32_t getSamplerSlot() const override

Definition DIARawSymbol.cpp:754

bool isLTCG() const override

Definition DIARawSymbol.cpp:1124

bool isNaked() const override

Definition DIARawSymbol.cpp:1153

codeview::RegisterId getRegisterId() const override

Definition DIARawSymbol.cpp:741

bool isSingleInheritance() const override

Definition DIARawSymbol.cpp:1218

bool isHLSLData() const override

Definition DIARawSymbol.cpp:1104

bool hasSetJump() const override

Definition DIARawSymbol.cpp:1058

uint32_t getLiveRangeStartAddressOffset() const override

Definition DIARawSymbol.cpp:664

uint32_t getStride() const override

Definition DIARawSymbol.cpp:782

uint32_t getRank() const override

Definition DIARawSymbol.cpp:737

bool isIndirectVirtualBaseClass() const override

Definition DIARawSymbol.cpp:1112

bool hasFarReturn() const override

Definition DIARawSymbol.cpp:946

uint32_t getNumberOfAcceleratorPointerTags() const override

Definition DIARawSymbol.cpp:696

uint32_t getAddressSection() const override

Definition DIARawSymbol.cpp:584

bool isConstType() const override

Definition DIARawSymbol.cpp:958

uint64_t getLength() const override

Definition DIARawSymbol.cpp:921

std::unique_ptr< IPDBEnumSymbols > findChildrenByRVA(PDB_SymType Type, StringRef Name, PDB_NameSearchFlags Flags, uint32_t RVA) const override

Definition DIARawSymbol.cpp:469

bool isPointerToMemberFunction() const override

Definition DIARawSymbol.cpp:1178

PDB_BuiltinType getBuiltinType() const override

Definition DIARawSymbol.cpp:615

std::unique_ptr< IPDBEnumSymbols > findChildren(PDB_SymType Type) const override

Definition DIARawSymbol.cpp:398

SymIndexId getClassParentId() const override

Definition DIARawSymbol.cpp:629

bool isAcceleratorPointerTagLiveRange() const override

Definition DIARawSymbol.cpp:1071

bool isVirtualBaseClass() const override

Definition DIARawSymbol.cpp:1252

bool isRestrictedType() const override

Definition DIARawSymbol.cpp:1198

bool hasDebugInfo() const override

Definition DIARawSymbol.cpp:994

codeview::RegisterId getLocalBasePointerRegisterId() const override

Definition DIARawSymbol.cpp:679

SymIndexId getSymIndexId() const override

Definition DIARawSymbol.cpp:794

std::string getObjectFileName() const override

Definition DIARawSymbol.cpp:717

uint64_t getLiveRangeLength() const override

Definition DIARawSymbol.cpp:925

bool hasFramePointer() const override

Definition DIARawSymbol.cpp:1018

bool hasManagedCode() const override

Definition DIARawSymbol.cpp:1026

PDB_LocType getLocationType() const override

Definition DIARawSymbol.cpp:906

bool hasCastOperator() const override

Definition DIARawSymbol.cpp:990

bool isMatrixRowMajor() const override

Definition DIARawSymbol.cpp:1137

uint32_t getToken() const override

Definition DIARawSymbol.cpp:823

bool hasPrivateSymbols() const override

Definition DIARawSymbol.cpp:1230

uint32_t getBaseDataSlot() const override

Definition DIARawSymbol.cpp:607

SymIndexId getLexicalParentId() const override

Definition DIARawSymbol.cpp:656

int32_t getVirtualBasePointerOffset() const override

Definition DIARawSymbol.cpp:902

bool getAddressTaken() const override

Definition DIARawSymbol.cpp:970

uint32_t getLiveRangeStartRelativeVirtualAddress() const override

Definition DIARawSymbol.cpp:674

void getDataBytes(llvm::SmallVector< uint8_t, 32 > &bytes) const override

Definition DIARawSymbol.cpp:550

bool isMSILCode() const override

Definition DIARawSymbol.cpp:1145

std::string getLibraryName() const override

Definition DIARawSymbol.cpp:660

bool hasInlineAttribute() const override

Definition DIARawSymbol.cpp:1010

bool hasAssignmentOperator() const override

Definition DIARawSymbol.cpp:982

uint64_t getVirtualAddress() const override

Definition DIARawSymbol.cpp:929

uint32_t getCount() const override

Definition DIARawSymbol.cpp:637

codeview::ThunkOrdinal getThunkOrdinal() const override

Definition DIARawSymbol.cpp:916

uint32_t getTargetSection() const override

Definition DIARawSymbol.cpp:811

PDB_Machine getMachineType() const override

Definition DIARawSymbol.cpp:911

std::unique_ptr< PDBSymbolTypeBuiltin > getVirtualBaseTableType() const override

Definition DIARawSymbol.cpp:869

bool hasSecurityChecks() const override

Definition DIARawSymbol.cpp:1054

uint32_t getTargetOffset() const override

Definition DIARawSymbol.cpp:798

bool isRValueReference() const override

Definition DIARawSymbol.cpp:1186

void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields, PdbSymbolIdField RecurseIdFields) const override

Definition DIARawSymbol.cpp:218

std::unique_ptr< IPDBEnumLineNumbers > findInlineeLinesByVA(uint64_t VA, uint32_t Length) const override

Definition DIARawSymbol.cpp:542

IPDBSession defines an interface used to provide a context for querying debug information from a debu...

static std::unique_ptr< ConcreteT > createAs(const IPDBSession &PDBSession, std::unique_ptr< IPDBRawSymbol > RawSymbol)

This class implements an extremely fast bulk output stream that can only output to a stream.

ThunkOrdinal

These values correspond to the THUNK_ORDINAL enumeration.

SmallVector< unsigned char, 0 > ByteArray

PDB_NameSearchFlags

Defines flags used for enumerating child symbols.

void dumpSymbolField(raw_ostream &OS, StringRef Name, T Value, int Indent)

PDB_BuiltinType

These values correspond to the Basictype enumeration, and are documented here: https://msdn....

PDB_UdtType

These values correspond to the UdtKind enumeration, and are documented here: https://msdn....

PDB_SymType

These values correspond to the SymTagEnum enumeration, and are documented here: https://msdn....

PDB_LocType

These values correspond to the LocationType enumeration, and are documented here: https://msdn....

PDB_DataKind

These values correspond to the DataKind enumeration, and are documented here: https://msdn....

PDB_UndnameFlags

These values correspond to the flags that can be combined to control the return of an undecorated nam...

codeview::CPUType PDB_Cpu

These values correspond to the CV_CPU_TYPE_e enumeration, and are documented here: https://msdn....

codeview::SourceLanguage PDB_Lang

These values correspond to the CV_CFL_LANG enumeration, and are documented here: https://msdn....

LLVM_ABI void dumpSymbolIdField(raw_ostream &OS, StringRef Name, SymIndexId Value, int Indent, const IPDBSession &Session, PdbSymbolIdField FieldId, PdbSymbolIdField ShowFlags, PdbSymbolIdField RecurseFlags)

codeview::CallingConvention PDB_CallingConv

These values correspond to the CV_call_e enumeration, and are documented at the following locations: ...

This is an optimization pass for GlobalISel generic memory operations.

CastInfo< X, std::unique_ptr< Y > >::CastResultType unique_dyn_cast(std::unique_ptr< Y > &Val)

unique_dyn_cast - Given a unique_ptr, try to return a unique_ptr, taking ownership of the in...

FunctionAddr VTableAddr uintptr_t uintptr_t DataSize

FunctionAddr VTableAddr uintptr_t uintptr_t Version

LLVM_ABI bool convertUTF16ToUTF8String(ArrayRef< char > SrcBytes, std::string &Out)

Converts a stream of raw bytes assumed to be UTF16 into a UTF8 std::string.

auto count(R &&Range, const E &Element)

Wrapper function around std::count to count the number of times an element Element occurs in the give...

raw_ostream & operator<<(raw_ostream &OS, const APFixedPoint &FX)

LLVM_ABI bool convertUTF8ToUTF16String(StringRef SrcUTF8, SmallVectorImpl< UTF16 > &DstUTF16)

Converts a UTF-8 string into a UTF-16 string with native endianness.

This represents the 'GUID' type from windows.h.

Utility type to build an inheritance chain that makes it easy to rank overload candidates.