/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/include/llvm/DebugInfo/PDB/IPDBSession.h
Line | Count | Source |
1 | | //===- IPDBSession.h - base interface for a PDB symbol context --*- 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_IPDBSESSION_H |
10 | | #define LLVM_DEBUGINFO_PDB_IPDBSESSION_H |
11 | | |
12 | | #include "PDBSymbol.h" |
13 | | #include "PDBTypes.h" |
14 | | #include "llvm/ADT/StringRef.h" |
15 | | #include "llvm/Support/Casting.h" |
16 | | #include <memory> |
17 | | |
18 | | namespace llvm { |
19 | | namespace pdb { |
20 | | class PDBSymbolCompiland; |
21 | | class PDBSymbolExe; |
22 | | |
23 | | /// IPDBSession defines an interface used to provide a context for querying |
24 | | /// debug information from a debug data source (for example, a PDB). |
25 | | class IPDBSession { |
26 | | public: |
27 | | virtual ~IPDBSession(); |
28 | | |
29 | | virtual uint64_t getLoadAddress() const = 0; |
30 | | virtual bool setLoadAddress(uint64_t Address) = 0; |
31 | | virtual std::unique_ptr<PDBSymbolExe> getGlobalScope() = 0; |
32 | | virtual std::unique_ptr<PDBSymbol> |
33 | | getSymbolById(SymIndexId SymbolId) const = 0; |
34 | | |
35 | | virtual bool addressForVA(uint64_t VA, uint32_t &Section, |
36 | | uint32_t &Offset) const = 0; |
37 | | virtual bool addressForRVA(uint32_t RVA, uint32_t &Section, |
38 | | uint32_t &Offset) const = 0; |
39 | | |
40 | | template <typename T> |
41 | 108 | std::unique_ptr<T> getConcreteSymbolById(SymIndexId SymbolId) const { |
42 | 108 | return unique_dyn_cast_or_null<T>(getSymbolById(SymbolId)); |
43 | 108 | } Unexecuted instantiation: std::__1::unique_ptr<llvm::pdb::PDBSymbolData, std::__1::default_delete<llvm::pdb::PDBSymbolData> > llvm::pdb::IPDBSession::getConcreteSymbolById<llvm::pdb::PDBSymbolData>(unsigned int) const std::__1::unique_ptr<llvm::pdb::PDBSymbolTypeBuiltin, std::__1::default_delete<llvm::pdb::PDBSymbolTypeBuiltin> > llvm::pdb::IPDBSession::getConcreteSymbolById<llvm::pdb::PDBSymbolTypeBuiltin>(unsigned int) const Line | Count | Source | 41 | 46 | std::unique_ptr<T> getConcreteSymbolById(SymIndexId SymbolId) const { | 42 | 46 | return unique_dyn_cast_or_null<T>(getSymbolById(SymbolId)); | 43 | 46 | } |
std::__1::unique_ptr<llvm::pdb::PDBSymbolCompiland, std::__1::default_delete<llvm::pdb::PDBSymbolCompiland> > llvm::pdb::IPDBSession::getConcreteSymbolById<llvm::pdb::PDBSymbolCompiland>(unsigned int) const Line | Count | Source | 41 | 62 | std::unique_ptr<T> getConcreteSymbolById(SymIndexId SymbolId) const { | 42 | 62 | return unique_dyn_cast_or_null<T>(getSymbolById(SymbolId)); | 43 | 62 | } |
|
44 | | |
45 | | virtual std::unique_ptr<PDBSymbol> |
46 | | findSymbolByAddress(uint64_t Address, PDB_SymType Type) const = 0; |
47 | | virtual std::unique_ptr<PDBSymbol> |
48 | | findSymbolByRVA(uint32_t RVA, PDB_SymType Type) const = 0; |
49 | | virtual std::unique_ptr<PDBSymbol> |
50 | | findSymbolBySectOffset(uint32_t Sect, uint32_t Offset, |
51 | | PDB_SymType Type) const = 0; |
52 | | |
53 | | virtual std::unique_ptr<IPDBEnumLineNumbers> |
54 | | findLineNumbers(const PDBSymbolCompiland &Compiland, |
55 | | const IPDBSourceFile &File) const = 0; |
56 | | virtual std::unique_ptr<IPDBEnumLineNumbers> |
57 | | findLineNumbersByAddress(uint64_t Address, uint32_t Length) const = 0; |
58 | | virtual std::unique_ptr<IPDBEnumLineNumbers> |
59 | | findLineNumbersByRVA(uint32_t RVA, uint32_t Length) const = 0; |
60 | | virtual std::unique_ptr<IPDBEnumLineNumbers> |
61 | | findLineNumbersBySectOffset(uint32_t Section, uint32_t Offset, |
62 | | uint32_t Length) const = 0; |
63 | | |
64 | | virtual std::unique_ptr<IPDBEnumSourceFiles> |
65 | | findSourceFiles(const PDBSymbolCompiland *Compiland, llvm::StringRef Pattern, |
66 | | PDB_NameSearchFlags Flags) const = 0; |
67 | | virtual std::unique_ptr<IPDBSourceFile> |
68 | | findOneSourceFile(const PDBSymbolCompiland *Compiland, |
69 | | llvm::StringRef Pattern, |
70 | | PDB_NameSearchFlags Flags) const = 0; |
71 | | virtual std::unique_ptr<IPDBEnumChildren<PDBSymbolCompiland>> |
72 | | findCompilandsForSourceFile(llvm::StringRef Pattern, |
73 | | PDB_NameSearchFlags Flags) const = 0; |
74 | | virtual std::unique_ptr<PDBSymbolCompiland> |
75 | | findOneCompilandForSourceFile(llvm::StringRef Pattern, |
76 | | PDB_NameSearchFlags Flags) const = 0; |
77 | | |
78 | | virtual std::unique_ptr<IPDBEnumSourceFiles> getAllSourceFiles() const = 0; |
79 | | virtual std::unique_ptr<IPDBEnumSourceFiles> |
80 | | getSourceFilesForCompiland(const PDBSymbolCompiland &Compiland) const = 0; |
81 | | virtual std::unique_ptr<IPDBSourceFile> |
82 | | getSourceFileById(uint32_t FileId) const = 0; |
83 | | |
84 | | virtual std::unique_ptr<IPDBEnumDataStreams> getDebugStreams() const = 0; |
85 | | |
86 | | virtual std::unique_ptr<IPDBEnumTables> getEnumTables() const = 0; |
87 | | |
88 | | virtual std::unique_ptr<IPDBEnumInjectedSources> |
89 | | getInjectedSources() const = 0; |
90 | | |
91 | | virtual std::unique_ptr<IPDBEnumSectionContribs> |
92 | | getSectionContribs() const = 0; |
93 | | |
94 | | virtual std::unique_ptr<IPDBEnumFrameData> |
95 | | getFrameData() const = 0; |
96 | | }; |
97 | | } // namespace pdb |
98 | | } // namespace llvm |
99 | | |
100 | | #endif |