1 //===- NativeFunctionSymbol.h - info about function symbols -----*- 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_NATIVE_NATIVEFUNCTIONSYMBOL_H
10 #define LLVM_DEBUGINFO_PDB_NATIVE_NATIVEFUNCTIONSYMBOL_H
11 
12 #include "llvm/DebugInfo/CodeView/SymbolRecord.h"
13 #include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"
14 #include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h"
15 #include "llvm/DebugInfo/PDB/PDBTypes.h"
16 
17 namespace llvm {
18 class raw_ostream;
19 namespace pdb {
20 
21 class NativeSession;
22 
23 class NativeFunctionSymbol : public NativeRawSymbol {
24 public:
25   NativeFunctionSymbol(NativeSession &Session, SymIndexId Id,
26                        const codeview::ProcSym &Sym, uint32_t RecordOffset);
27 
28   ~NativeFunctionSymbol() override;
29 
30   void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
31             PdbSymbolIdField RecurseIdFields) const override;
32 
33   uint32_t getAddressOffset() const override;
34   uint32_t getAddressSection() const override;
35   std::string getName() const override;
36   uint64_t getLength() const override;
37   uint32_t getRelativeVirtualAddress() const override;
38   uint64_t getVirtualAddress() const override;
39   std::unique_ptr<IPDBEnumSymbols>
40   findInlineFramesByVA(uint64_t VA) const override;
41 
42 protected:
43   const codeview::ProcSym Sym;
44   uint32_t RecordOffset = 0;
45 };
46 
47 } // namespace pdb
48 } // namespace llvm
49 
50 #endif // LLVM_DEBUGINFO_PDB_NATIVE_NATIVEFUNCTIONSYMBOL_H
51