LLVM  16.0.0git
PDBSymbolFunc.h
Go to the documentation of this file.
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 
13 
14 #include "PDBSymbol.h"
15 #include "PDBTypes.h"
16 
17 namespace llvm {
18 
19 namespace pdb {
20 
21 class PDBSymDumper;
22 class PDBSymbolData;
23 class PDBSymbolTypeFunctionSig;
24 template <typename ChildType> class IPDBEnumChildren;
25 
26 class PDBSymbolFunc : public PDBSymbol {
28 public:
29  void dump(PDBSymDumper &Dumper) const override;
30 
31  bool isDestructor() const;
32 
33  std::unique_ptr<IPDBEnumChildren<PDBSymbolData>> getArguments() const;
34 
35  FORWARD_SYMBOL_METHOD(getAccess)
36  FORWARD_SYMBOL_METHOD(getAddressOffset)
37  FORWARD_SYMBOL_METHOD(getAddressSection)
38  FORWARD_SYMBOL_ID_METHOD(getClassParent)
39  FORWARD_SYMBOL_METHOD(isCompilerGenerated)
40  FORWARD_SYMBOL_METHOD(isConstructorVirtualBase)
41  FORWARD_SYMBOL_METHOD(isConstType)
42  FORWARD_SYMBOL_METHOD(isCxxReturnUdt)
43  FORWARD_SYMBOL_METHOD(hasCustomCallingConvention)
44  FORWARD_SYMBOL_METHOD(hasFarReturn)
45  FORWARD_SYMBOL_METHOD(hasAlloca)
47  FORWARD_SYMBOL_METHOD(hasEHa)
48  FORWARD_SYMBOL_METHOD(hasInlAsm)
49  FORWARD_SYMBOL_METHOD(hasLongJump)
50  FORWARD_SYMBOL_METHOD(hasSEH)
51  FORWARD_SYMBOL_METHOD(hasSecurityChecks)
52  FORWARD_SYMBOL_METHOD(hasSetJump)
53  FORWARD_SYMBOL_METHOD(hasInterruptReturn)
54  FORWARD_SYMBOL_METHOD(isIntroVirtualFunction)
55  FORWARD_SYMBOL_METHOD(hasInlineAttribute)
56  FORWARD_SYMBOL_METHOD(isNaked)
57  FORWARD_SYMBOL_METHOD(isStatic)
58  FORWARD_SYMBOL_METHOD(getLength)
59  FORWARD_SYMBOL_ID_METHOD(getLexicalParent)
60  FORWARD_SYMBOL_METHOD(getLocalBasePointerRegisterId)
61  FORWARD_SYMBOL_METHOD(getLocationType)
63  FORWARD_SYMBOL_METHOD(hasFramePointer)
64  FORWARD_SYMBOL_METHOD(hasNoInlineAttribute)
65  FORWARD_SYMBOL_METHOD(hasNoReturnAttribute)
66  FORWARD_SYMBOL_METHOD(isUnreached)
67  FORWARD_SYMBOL_METHOD(getNoStackOrdering)
68  FORWARD_SYMBOL_METHOD(hasOptimizedCodeDebugInfo)
69  FORWARD_SYMBOL_METHOD(isPureVirtual)
70  FORWARD_SYMBOL_METHOD(getRelativeVirtualAddress)
71  FORWARD_SYMBOL_METHOD(getToken)
74  FORWARD_SYMBOL_METHOD(isUnalignedType)
75  FORWARD_SYMBOL_METHOD(getUndecoratedName)
76  FORWARD_SYMBOL_METHOD(isVirtual)
77  FORWARD_SYMBOL_METHOD(getVirtualAddress)
78  FORWARD_SYMBOL_METHOD(getVirtualBaseOffset)
79  FORWARD_SYMBOL_METHOD(isVolatileType)
80 
81  std::unique_ptr<IPDBEnumLineNumbers> getLineNumbers() const;
82  uint32_t getCompilandId() const;
83 };
84 
85 } // namespace pdb
86 } // namespace llvm
87 
88 #endif // LLVM_DEBUGINFO_PDB_PDBSYMBOLFUNC_H
llvm::pdb::PDBSymbol::getName
std::string getName() const
Definition: PDBSymbol.cpp:183
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
IPDBRawSymbol.h
getSignature
static std::string getSignature(FunctionType *FTy)
Definition: WebAssemblyLowerEmscriptenEHSjLj.cpp:432
DECLARE_PDB_SYMBOL_CONCRETE_TYPE
#define DECLARE_PDB_SYMBOL_CONCRETE_TYPE(TagValue)
Definition: PDBSymbol.h:48
llvm::pdb::PDBSymbolFunc::isDestructor
bool isDestructor() const
Definition: PDBSymbolFunc.cpp:89
FORWARD_CONCRETE_SYMBOL_ID_METHOD_WITH_NAME
#define FORWARD_CONCRETE_SYMBOL_ID_METHOD_WITH_NAME(ConcreteType, PrivateName, PublicName)
Definition: PDBSymbol.h:20
llvm::pdb::PDBSymbolFunc::dump
void dump(PDBSymDumper &Dumper) const override
Dumps the contents of a symbol a raw_ostream.
Definition: PDBSymbolFunc.cpp:87
llvm::pdb::PDBSymbol
PDBSymbol defines the base of the inheritance hierarchy for concrete symbol types (e....
Definition: PDBSymbol.h:71
PDBSymbol.h
PDBTypes.h
llvm::pdb::PDBSymbolTypeFunctionSig
Definition: PDBSymbolTypeFunctionSig.h:20
llvm::pdb::PDBSymDumper
Definition: PDBSymDumper.h:19
llvm::pdb::PDB_SymType::Function
@ Function
getType
static M68kRelType getType(unsigned Kind, MCSymbolRefExpr::VariantKind &Modifier, bool &IsPCRel)
Definition: M68kELFObjectWriter.cpp:48
uint32_t
FORWARD_SYMBOL_ID_METHOD
#define FORWARD_SYMBOL_ID_METHOD(MethodName)
Definition: PDBSymbol.h:34
llvm::pdb::PDBSymbolFunc::getCompilandId
FORWARD_CONCRETE_SYMBOL_ID_METHOD_WITH_NAME(PDBSymbolTypeFunctionSig, getType, getSignature) std uint32_t getCompilandId() const
Definition: PDBSymbolFunc.cpp:106
llvm::pdb::PDBSymbolFunc
Definition: PDBSymbolFunc.h:26
llvm::pdb::PDBSymbolFunc::getArguments
std::unique_ptr< IPDBEnumChildren< PDBSymbolData > > getArguments() const
Definition: PDBSymbolFunc.cpp:83
FORWARD_SYMBOL_METHOD
#define FORWARD_SYMBOL_METHOD(MethodName)
Definition: PDBSymbol.h:17