1 //===- PDBSymbolFunc.h - class representing a function instance -*- C++ -*-===// 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-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLVM_DEBUGINFO_PDB_PDBSYMBOLFUNC_H 10 #define LLVM_DEBUGINFO_PDB_PDBSYMBOLFUNC_H 11 12 #include "IPDBLineNumber.h" 13 #include "PDBSymbol.h" 14 #include "PDBSymbolTypeFunctionSig.h" 15 #include "PDBTypes.h" 16 17 namespace llvm { 18 19 class raw_ostream; 20 21 namespace pdb { 22 23 class PDBSymbolFunc : public PDBSymbol { 24 DECLARE_PDB_SYMBOL_CONCRETE_TYPE(PDB_SymType::Function) 25 public: 26 void dump(PDBSymDumper &Dumper) const override; 27 28 bool isDestructor() const; 29 30 std::unique_ptr<IPDBEnumChildren<PDBSymbolData>> getArguments() const; 31 32 FORWARD_SYMBOL_METHOD(getAccess) 33 FORWARD_SYMBOL_METHOD(getAddressOffset) 34 FORWARD_SYMBOL_METHOD(getAddressSection) 35 FORWARD_SYMBOL_ID_METHOD(getClassParent) 36 FORWARD_SYMBOL_METHOD(isCompilerGenerated) 37 FORWARD_SYMBOL_METHOD(isConstructorVirtualBase) 38 FORWARD_SYMBOL_METHOD(isConstType) 39 FORWARD_SYMBOL_METHOD(isCxxReturnUdt) 40 FORWARD_SYMBOL_METHOD(hasCustomCallingConvention) 41 FORWARD_SYMBOL_METHOD(hasFarReturn) 42 FORWARD_SYMBOL_METHOD(hasAlloca) 43 FORWARD_SYMBOL_METHOD(hasEH) 44 FORWARD_SYMBOL_METHOD(hasEHa) 45 FORWARD_SYMBOL_METHOD(hasInlAsm) 46 FORWARD_SYMBOL_METHOD(hasLongJump) 47 FORWARD_SYMBOL_METHOD(hasSEH) 48 FORWARD_SYMBOL_METHOD(hasSecurityChecks) 49 FORWARD_SYMBOL_METHOD(hasSetJump) 50 FORWARD_SYMBOL_METHOD(hasInterruptReturn) 51 FORWARD_SYMBOL_METHOD(isIntroVirtualFunction) 52 FORWARD_SYMBOL_METHOD(hasInlineAttribute) 53 FORWARD_SYMBOL_METHOD(isNaked) 54 FORWARD_SYMBOL_METHOD(isStatic) 55 FORWARD_SYMBOL_METHOD(getLength) 56 FORWARD_SYMBOL_ID_METHOD(getLexicalParent) 57 FORWARD_SYMBOL_METHOD(getLocalBasePointerRegisterId) 58 FORWARD_SYMBOL_METHOD(getLocationType) 59 FORWARD_SYMBOL_METHOD(getName) 60 FORWARD_SYMBOL_METHOD(hasFramePointer) 61 FORWARD_SYMBOL_METHOD(hasNoInlineAttribute) 62 FORWARD_SYMBOL_METHOD(hasNoReturnAttribute) 63 FORWARD_SYMBOL_METHOD(isUnreached) 64 FORWARD_SYMBOL_METHOD(getNoStackOrdering) 65 FORWARD_SYMBOL_METHOD(hasOptimizedCodeDebugInfo) 66 FORWARD_SYMBOL_METHOD(isPureVirtual) 67 FORWARD_SYMBOL_METHOD(getRelativeVirtualAddress) 68 FORWARD_SYMBOL_METHOD(getToken) 69 FORWARD_CONCRETE_SYMBOL_ID_METHOD_WITH_NAME(PDBSymbolTypeFunctionSig, getType, 70 getSignature) 71 FORWARD_SYMBOL_METHOD(isUnalignedType) 72 FORWARD_SYMBOL_METHOD(getUndecoratedName) 73 FORWARD_SYMBOL_METHOD(isVirtual) 74 FORWARD_SYMBOL_METHOD(getVirtualAddress) 75 FORWARD_SYMBOL_METHOD(getVirtualBaseOffset) 76 FORWARD_SYMBOL_METHOD(isVolatileType) 77 78 std::unique_ptr<IPDBEnumLineNumbers> getLineNumbers() const; 79 uint32_t getCompilandId() const; 80 }; 81 82 } // namespace llvm 83 } 84 85 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLFUNC_H 86