734 lines · cpp
1//===- NativeRawSymbol.cpp - Native implementation of IPDBRawSymbol -------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h"10#include "llvm/DebugInfo/PDB/IPDBLineNumber.h"11#include "llvm/DebugInfo/PDB/Native/NativeSession.h"12#include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"13 14using namespace llvm;15using namespace llvm::pdb;16 17NativeRawSymbol::NativeRawSymbol(NativeSession &PDBSession, PDB_SymType Tag,18 SymIndexId SymbolId)19 : Session(PDBSession), Tag(Tag), SymbolId(SymbolId) {}20 21void NativeRawSymbol::dump(raw_ostream &OS, int Indent,22 PdbSymbolIdField ShowIdFields,23 PdbSymbolIdField RecurseIdFields) const {24 dumpSymbolIdField(OS, "symIndexId", SymbolId, Indent, Session,25 PdbSymbolIdField::SymIndexId, ShowIdFields,26 RecurseIdFields);27 dumpSymbolField(OS, "symTag", Tag, Indent);28}29 30std::unique_ptr<IPDBEnumSymbols>31NativeRawSymbol::findChildren(PDB_SymType Type) const {32 return std::make_unique<NullEnumerator<PDBSymbol>>();33}34 35std::unique_ptr<IPDBEnumSymbols>36NativeRawSymbol::findChildren(PDB_SymType Type, StringRef Name,37 PDB_NameSearchFlags Flags) const {38 return std::make_unique<NullEnumerator<PDBSymbol>>();39}40 41std::unique_ptr<IPDBEnumSymbols>42NativeRawSymbol::findChildrenByAddr(PDB_SymType Type, StringRef Name,43 PDB_NameSearchFlags Flags, uint32_t Section, uint32_t Offset) const {44 return std::make_unique<NullEnumerator<PDBSymbol>>();45}46 47std::unique_ptr<IPDBEnumSymbols>48NativeRawSymbol::findChildrenByVA(PDB_SymType Type, StringRef Name,49 PDB_NameSearchFlags Flags, uint64_t VA) const {50 return std::make_unique<NullEnumerator<PDBSymbol>>();51}52 53std::unique_ptr<IPDBEnumSymbols>54NativeRawSymbol::findChildrenByRVA(PDB_SymType Type, StringRef Name,55 PDB_NameSearchFlags Flags, uint32_t RVA) const {56 return std::make_unique<NullEnumerator<PDBSymbol>>();57}58 59std::unique_ptr<IPDBEnumSymbols>60NativeRawSymbol::findInlineFramesByAddr(uint32_t Section,61 uint32_t Offset) const {62 return std::make_unique<NullEnumerator<PDBSymbol>>();63}64 65std::unique_ptr<IPDBEnumSymbols>66NativeRawSymbol::findInlineFramesByRVA(uint32_t RVA) const {67 return std::make_unique<NullEnumerator<PDBSymbol>>();68}69 70std::unique_ptr<IPDBEnumSymbols>71NativeRawSymbol::findInlineFramesByVA(uint64_t VA) const {72 return std::make_unique<NullEnumerator<PDBSymbol>>();73}74 75std::unique_ptr<IPDBEnumLineNumbers>76NativeRawSymbol::findInlineeLines() const {77 return std::make_unique<NullEnumerator<IPDBLineNumber>>();78}79 80std::unique_ptr<IPDBEnumLineNumbers>81NativeRawSymbol::findInlineeLinesByAddr(uint32_t Section, uint32_t Offset,82 uint32_t Length) const {83 return std::make_unique<NullEnumerator<IPDBLineNumber>>();84}85 86std::unique_ptr<IPDBEnumLineNumbers>87NativeRawSymbol::findInlineeLinesByRVA(uint32_t RVA, uint32_t Length) const {88 return std::make_unique<NullEnumerator<IPDBLineNumber>>();89}90 91std::unique_ptr<IPDBEnumLineNumbers>92NativeRawSymbol::findInlineeLinesByVA(uint64_t VA, uint32_t Length) const {93 return std::make_unique<NullEnumerator<IPDBLineNumber>>();94}95 96void NativeRawSymbol::getDataBytes(SmallVector<uint8_t, 32> &bytes) const {97 bytes.clear();98}99 100PDB_MemberAccess NativeRawSymbol::getAccess() const {101 return PDB_MemberAccess::Private;102}103 104uint32_t NativeRawSymbol::getAddressOffset() const {105 return 0;106}107 108uint32_t NativeRawSymbol::getAddressSection() const {109 return 0;110}111 112uint32_t NativeRawSymbol::getAge() const {113 return 0;114}115 116SymIndexId NativeRawSymbol::getArrayIndexTypeId() const { return 0; }117 118void NativeRawSymbol::getBackEndVersion(VersionInfo &Version) const {119 Version.Major = 0;120 Version.Minor = 0;121 Version.Build = 0;122 Version.QFE = 0;123}124 125uint32_t NativeRawSymbol::getBaseDataOffset() const {126 return 0;127}128 129uint32_t NativeRawSymbol::getBaseDataSlot() const {130 return 0;131}132 133SymIndexId NativeRawSymbol::getBaseSymbolId() const { return 0; }134 135PDB_BuiltinType NativeRawSymbol::getBuiltinType() const {136 return PDB_BuiltinType::None;137}138 139uint32_t NativeRawSymbol::getBitPosition() const {140 return 0;141}142 143PDB_CallingConv NativeRawSymbol::getCallingConvention() const {144 return PDB_CallingConv::FarStdCall;145}146 147SymIndexId NativeRawSymbol::getClassParentId() const { return 0; }148 149std::string NativeRawSymbol::getCompilerName() const {150 return {};151}152 153uint32_t NativeRawSymbol::getCount() const {154 return 0;155}156 157uint32_t NativeRawSymbol::getCountLiveRanges() const {158 return 0;159}160 161void NativeRawSymbol::getFrontEndVersion(VersionInfo &Version) const {162 Version.Major = 0;163 Version.Minor = 0;164 Version.Build = 0;165 Version.QFE = 0;166}167 168PDB_Lang NativeRawSymbol::getLanguage() const {169 return PDB_Lang::Cobol;170}171 172SymIndexId NativeRawSymbol::getLexicalParentId() const { return 0; }173 174std::string NativeRawSymbol::getLibraryName() const {175 return {};176}177 178uint32_t NativeRawSymbol::getLiveRangeStartAddressOffset() const {179 return 0;180}181 182uint32_t NativeRawSymbol::getLiveRangeStartAddressSection() const {183 return 0;184}185 186uint32_t NativeRawSymbol::getLiveRangeStartRelativeVirtualAddress() const {187 return 0;188}189 190codeview::RegisterId NativeRawSymbol::getLocalBasePointerRegisterId() const {191 return codeview::RegisterId::EAX;192}193 194SymIndexId NativeRawSymbol::getLowerBoundId() const { return 0; }195 196uint32_t NativeRawSymbol::getMemorySpaceKind() const {197 return 0;198}199 200std::string NativeRawSymbol::getName() const {201 return {};202}203 204uint32_t NativeRawSymbol::getNumberOfAcceleratorPointerTags() const {205 return 0;206}207 208uint32_t NativeRawSymbol::getNumberOfColumns() const {209 return 0;210}211 212uint32_t NativeRawSymbol::getNumberOfModifiers() const {213 return 0;214}215 216uint32_t NativeRawSymbol::getNumberOfRegisterIndices() const {217 return 0;218}219 220uint32_t NativeRawSymbol::getNumberOfRows() const {221 return 0;222}223 224std::string NativeRawSymbol::getObjectFileName() const {225 return {};226}227 228uint32_t NativeRawSymbol::getOemId() const {229 return 0;230}231 232SymIndexId NativeRawSymbol::getOemSymbolId() const { return 0; }233 234uint32_t NativeRawSymbol::getOffsetInUdt() const {235 return 0;236}237 238PDB_Cpu NativeRawSymbol::getPlatform() const {239 return PDB_Cpu::Intel8080;240}241 242uint32_t NativeRawSymbol::getRank() const {243 return 0;244}245 246codeview::RegisterId NativeRawSymbol::getRegisterId() const {247 return codeview::RegisterId::EAX;248}249 250uint32_t NativeRawSymbol::getRegisterType() const {251 return 0;252}253 254uint32_t NativeRawSymbol::getRelativeVirtualAddress() const {255 return 0;256}257 258uint32_t NativeRawSymbol::getSamplerSlot() const {259 return 0;260}261 262uint32_t NativeRawSymbol::getSignature() const {263 return 0;264}265 266uint32_t NativeRawSymbol::getSizeInUdt() const {267 return 0;268}269 270uint32_t NativeRawSymbol::getSlot() const {271 return 0;272}273 274std::string NativeRawSymbol::getSourceFileName() const {275 return {};276}277 278std::unique_ptr<IPDBLineNumber>279NativeRawSymbol::getSrcLineOnTypeDefn() const {280 return nullptr;281}282 283uint32_t NativeRawSymbol::getStride() const {284 return 0;285}286 287SymIndexId NativeRawSymbol::getSubTypeId() const { return 0; }288 289std::string NativeRawSymbol::getSymbolsFileName() const { return {}; }290 291SymIndexId NativeRawSymbol::getSymIndexId() const { return SymbolId; }292 293uint32_t NativeRawSymbol::getTargetOffset() const {294 return 0;295}296 297uint32_t NativeRawSymbol::getTargetRelativeVirtualAddress() const {298 return 0;299}300 301uint64_t NativeRawSymbol::getTargetVirtualAddress() const {302 return 0;303}304 305uint32_t NativeRawSymbol::getTargetSection() const {306 return 0;307}308 309uint32_t NativeRawSymbol::getTextureSlot() const {310 return 0;311}312 313uint32_t NativeRawSymbol::getTimeStamp() const {314 return 0;315}316 317uint32_t NativeRawSymbol::getToken() const {318 return 0;319}320 321SymIndexId NativeRawSymbol::getTypeId() const { return 0; }322 323uint32_t NativeRawSymbol::getUavSlot() const {324 return 0;325}326 327std::string NativeRawSymbol::getUndecoratedName() const {328 return {};329}330 331std::string NativeRawSymbol::getUndecoratedNameEx(332 PDB_UndnameFlags Flags) const {333 return {};334}335 336SymIndexId NativeRawSymbol::getUnmodifiedTypeId() const { return 0; }337 338SymIndexId NativeRawSymbol::getUpperBoundId() const { return 0; }339 340Variant NativeRawSymbol::getValue() const {341 return Variant();342}343 344uint32_t NativeRawSymbol::getVirtualBaseDispIndex() const {345 return 0;346}347 348uint32_t NativeRawSymbol::getVirtualBaseOffset() const {349 return 0;350}351 352SymIndexId NativeRawSymbol::getVirtualTableShapeId() const { return 0; }353 354std::unique_ptr<PDBSymbolTypeBuiltin>355NativeRawSymbol::getVirtualBaseTableType() const {356 return nullptr;357}358 359PDB_DataKind NativeRawSymbol::getDataKind() const {360 return PDB_DataKind::Unknown;361}362 363PDB_SymType NativeRawSymbol::getSymTag() const { return Tag; }364 365codeview::GUID NativeRawSymbol::getGuid() const { return codeview::GUID{{0}}; }366 367int32_t NativeRawSymbol::getOffset() const {368 return 0;369}370 371int32_t NativeRawSymbol::getThisAdjust() const {372 return 0;373}374 375int32_t NativeRawSymbol::getVirtualBasePointerOffset() const {376 return 0;377}378 379PDB_LocType NativeRawSymbol::getLocationType() const {380 return PDB_LocType::Null;381}382 383PDB_Machine NativeRawSymbol::getMachineType() const {384 return PDB_Machine::Invalid;385}386 387codeview::ThunkOrdinal NativeRawSymbol::getThunkOrdinal() const {388 return codeview::ThunkOrdinal::Standard;389}390 391uint64_t NativeRawSymbol::getLength() const {392 return 0;393}394 395uint64_t NativeRawSymbol::getLiveRangeLength() const {396 return 0;397}398 399uint64_t NativeRawSymbol::getVirtualAddress() const {400 return 0;401}402 403PDB_UdtType NativeRawSymbol::getUdtKind() const {404 return PDB_UdtType::Struct;405}406 407bool NativeRawSymbol::hasConstructor() const {408 return false;409}410 411bool NativeRawSymbol::hasCustomCallingConvention() const {412 return false;413}414 415bool NativeRawSymbol::hasFarReturn() const {416 return false;417}418 419bool NativeRawSymbol::isCode() const {420 return false;421}422 423bool NativeRawSymbol::isCompilerGenerated() const {424 return false;425}426 427bool NativeRawSymbol::isConstType() const {428 return false;429}430 431bool NativeRawSymbol::isEditAndContinueEnabled() const {432 return false;433}434 435bool NativeRawSymbol::isFunction() const {436 return false;437}438 439bool NativeRawSymbol::getAddressTaken() const {440 return false;441}442 443bool NativeRawSymbol::getNoStackOrdering() const {444 return false;445}446 447bool NativeRawSymbol::hasAlloca() const {448 return false;449}450 451bool NativeRawSymbol::hasAssignmentOperator() const {452 return false;453}454 455bool NativeRawSymbol::hasCTypes() const {456 return false;457}458 459bool NativeRawSymbol::hasCastOperator() const {460 return false;461}462 463bool NativeRawSymbol::hasDebugInfo() const {464 return false;465}466 467bool NativeRawSymbol::hasEH() const {468 return false;469}470 471bool NativeRawSymbol::hasEHa() const {472 return false;473}474 475bool NativeRawSymbol::hasInlAsm() const {476 return false;477}478 479bool NativeRawSymbol::hasInlineAttribute() const {480 return false;481}482 483bool NativeRawSymbol::hasInterruptReturn() const {484 return false;485}486 487bool NativeRawSymbol::hasFramePointer() const {488 return false;489}490 491bool NativeRawSymbol::hasLongJump() const {492 return false;493}494 495bool NativeRawSymbol::hasManagedCode() const {496 return false;497}498 499bool NativeRawSymbol::hasNestedTypes() const {500 return false;501}502 503bool NativeRawSymbol::hasNoInlineAttribute() const {504 return false;505}506 507bool NativeRawSymbol::hasNoReturnAttribute() const {508 return false;509}510 511bool NativeRawSymbol::hasOptimizedCodeDebugInfo() const {512 return false;513}514 515bool NativeRawSymbol::hasOverloadedOperator() const {516 return false;517}518 519bool NativeRawSymbol::hasSEH() const {520 return false;521}522 523bool NativeRawSymbol::hasSecurityChecks() const {524 return false;525}526 527bool NativeRawSymbol::hasSetJump() const {528 return false;529}530 531bool NativeRawSymbol::hasStrictGSCheck() const {532 return false;533}534 535bool NativeRawSymbol::isAcceleratorGroupSharedLocal() const {536 return false;537}538 539bool NativeRawSymbol::isAcceleratorPointerTagLiveRange() const {540 return false;541}542 543bool NativeRawSymbol::isAcceleratorStubFunction() const {544 return false;545}546 547bool NativeRawSymbol::isAggregated() const {548 return false;549}550 551bool NativeRawSymbol::isIntroVirtualFunction() const {552 return false;553}554 555bool NativeRawSymbol::isCVTCIL() const {556 return false;557}558 559bool NativeRawSymbol::isConstructorVirtualBase() const {560 return false;561}562 563bool NativeRawSymbol::isCxxReturnUdt() const {564 return false;565}566 567bool NativeRawSymbol::isDataAligned() const {568 return false;569}570 571bool NativeRawSymbol::isHLSLData() const {572 return false;573}574 575bool NativeRawSymbol::isHotpatchable() const {576 return false;577}578 579bool NativeRawSymbol::isIndirectVirtualBaseClass() const {580 return false;581}582 583bool NativeRawSymbol::isInterfaceUdt() const {584 return false;585}586 587bool NativeRawSymbol::isIntrinsic() const {588 return false;589}590 591bool NativeRawSymbol::isLTCG() const {592 return false;593}594 595bool NativeRawSymbol::isLocationControlFlowDependent() const {596 return false;597}598 599bool NativeRawSymbol::isMSILNetmodule() const {600 return false;601}602 603bool NativeRawSymbol::isMatrixRowMajor() const {604 return false;605}606 607bool NativeRawSymbol::isManagedCode() const {608 return false;609}610 611bool NativeRawSymbol::isMSILCode() const {612 return false;613}614 615bool NativeRawSymbol::isMultipleInheritance() const {616 return false;617}618 619bool NativeRawSymbol::isNaked() const {620 return false;621}622 623bool NativeRawSymbol::isNested() const {624 return false;625}626 627bool NativeRawSymbol::isOptimizedAway() const {628 return false;629}630 631bool NativeRawSymbol::isPacked() const {632 return false;633}634 635bool NativeRawSymbol::isPointerBasedOnSymbolValue() const {636 return false;637}638 639bool NativeRawSymbol::isPointerToDataMember() const {640 return false;641}642 643bool NativeRawSymbol::isPointerToMemberFunction() const {644 return false;645}646 647bool NativeRawSymbol::isPureVirtual() const {648 return false;649}650 651bool NativeRawSymbol::isRValueReference() const {652 return false;653}654 655bool NativeRawSymbol::isRefUdt() const {656 return false;657}658 659bool NativeRawSymbol::isReference() const {660 return false;661}662 663bool NativeRawSymbol::isRestrictedType() const {664 return false;665}666 667bool NativeRawSymbol::isReturnValue() const {668 return false;669}670 671bool NativeRawSymbol::isSafeBuffers() const {672 return false;673}674 675bool NativeRawSymbol::isScoped() const {676 return false;677}678 679bool NativeRawSymbol::isSdl() const {680 return false;681}682 683bool NativeRawSymbol::isSingleInheritance() const {684 return false;685}686 687bool NativeRawSymbol::isSplitted() const {688 return false;689}690 691bool NativeRawSymbol::isStatic() const {692 return false;693}694 695bool NativeRawSymbol::hasPrivateSymbols() const {696 return false;697}698 699bool NativeRawSymbol::isUnalignedType() const {700 return false;701}702 703bool NativeRawSymbol::isUnreached() const {704 return false;705}706 707bool NativeRawSymbol::isValueUdt() const {708 return false;709}710 711bool NativeRawSymbol::isVirtual() const {712 return false;713}714 715bool NativeRawSymbol::isVirtualBaseClass() const {716 return false;717}718 719bool NativeRawSymbol::isVirtualInheritance() const {720 return false;721}722 723bool NativeRawSymbol::isVolatileType() const {724 return false;725}726 727bool NativeRawSymbol::wasInlined() const {728 return false;729}730 731std::string NativeRawSymbol::getUnused() const {732 return {};733}734