LLVM  4.0.0
DIASession.h
Go to the documentation of this file.
1 //===- DIASession.h - DIA implementation of IPDBSession ---------*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef LLVM_DEBUGINFO_PDB_DIA_DIASESSION_H
11 #define LLVM_DEBUGINFO_PDB_DIA_DIASESSION_H
12 
13 #include "DIASupport.h"
15 #include "llvm/Support/Error.h"
16 
17 #include <system_error>
18 
19 namespace llvm {
20 class StringRef;
21 
22 namespace pdb {
23 class DIASession : public IPDBSession {
24 public:
25  explicit DIASession(CComPtr<IDiaSession> DiaSession);
26 
27  static Error createFromPdb(StringRef Path,
28  std::unique_ptr<IPDBSession> &Session);
29  static Error createFromExe(StringRef Path,
30  std::unique_ptr<IPDBSession> &Session);
31 
32  uint64_t getLoadAddress() const override;
33  void setLoadAddress(uint64_t Address) override;
34  std::unique_ptr<PDBSymbolExe> getGlobalScope() const override;
35  std::unique_ptr<PDBSymbol> getSymbolById(uint32_t SymbolId) const override;
36 
37  std::unique_ptr<PDBSymbol>
38  findSymbolByAddress(uint64_t Address, PDB_SymType Type) const override;
39 
40  std::unique_ptr<IPDBEnumLineNumbers>
42  const IPDBSourceFile &File) const override;
43  std::unique_ptr<IPDBEnumLineNumbers>
44  findLineNumbersByAddress(uint64_t Address, uint32_t Length) const override;
45 
46  std::unique_ptr<IPDBEnumSourceFiles>
47  findSourceFiles(const PDBSymbolCompiland *Compiland, llvm::StringRef Pattern,
48  PDB_NameSearchFlags Flags) const override;
49  std::unique_ptr<IPDBSourceFile>
50  findOneSourceFile(const PDBSymbolCompiland *Compiland,
51  llvm::StringRef Pattern,
52  PDB_NameSearchFlags Flags) const override;
53  std::unique_ptr<IPDBEnumChildren<PDBSymbolCompiland>>
55  PDB_NameSearchFlags Flags) const override;
56  std::unique_ptr<PDBSymbolCompiland>
58  PDB_NameSearchFlags Flags) const override;
59  std::unique_ptr<IPDBEnumSourceFiles> getAllSourceFiles() const override;
60  std::unique_ptr<IPDBEnumSourceFiles> getSourceFilesForCompiland(
61  const PDBSymbolCompiland &Compiland) const override;
62  std::unique_ptr<IPDBSourceFile>
63  getSourceFileById(uint32_t FileId) const override;
64 
65  std::unique_ptr<IPDBEnumDataStreams> getDebugStreams() const override;
66 
67 private:
68  CComPtr<IDiaSession> Session;
69 };
70 }
71 }
72 #endif
IPDBSession defines an interface used to provide a context for querying debug information from a debu...
Definition: IPDBSession.h:25
PDB_NameSearchFlags
Defines flags used for enumerating child symbols.
Definition: PDBTypes.h:91
std::unique_ptr< PDBSymbol > findSymbolByAddress(uint64_t Address, PDB_SymType Type) const override
Definition: DIASession.cpp:165
std::unique_ptr< IPDBEnumChildren< PDBSymbolCompiland > > findCompilandsForSourceFile(llvm::StringRef Pattern, PDB_NameSearchFlags Flags) const override
Definition: DIASession.cpp:239
IPDBSourceFile defines an interface used to represent source files whose information are stored in th...
std::unique_ptr< IPDBSourceFile > getSourceFileById(uint32_t FileId) const override
Definition: DIASession.cpp:278
struct fuzzer::@269 Flags
std::unique_ptr< IPDBEnumSourceFiles > findSourceFiles(const PDBSymbolCompiland *Compiland, llvm::StringRef Pattern, PDB_NameSearchFlags Flags) const override
Definition: DIASession.cpp:207
static Error createFromPdb(StringRef Path, std::unique_ptr< IPDBSession > &Session)
Definition: DIASession.cpp:83
std::unique_ptr< IPDBSourceFile > findOneSourceFile(const PDBSymbolCompiland *Compiland, llvm::StringRef Pattern, PDB_NameSearchFlags Flags) const override
Definition: DIASession.cpp:229
std::unique_ptr< IPDBEnumLineNumbers > findLineNumbersByAddress(uint64_t Address, uint32_t Length) const override
Definition: DIASession.cpp:198
PDB_SymType
These values correspond to the SymTagEnum enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/bkedss5f.aspx.
Definition: PDBTypes.h:162
std::unique_ptr< IPDBEnumSourceFiles > getSourceFilesForCompiland(const PDBSymbolCompiland &Compiland) const override
Definition: DIASession.cpp:264
The instances of the Type class are immutable: once they are created, they are never changed...
Definition: Type.h:45
std::unique_ptr< IPDBEnumSourceFiles > getAllSourceFiles() const override
Definition: DIASession.cpp:256
DIASession(CComPtr< IDiaSession > DiaSession)
Definition: DIASession.cpp:81
std::unique_ptr< IPDBEnumLineNumbers > findLineNumbers(const PDBSymbolCompiland &Compiland, const IPDBSourceFile &File) const override
Definition: DIASession.cpp:182
std::unique_ptr< IPDBEnumDataStreams > getDebugStreams() const override
Definition: DIASession.cpp:286
std::unique_ptr< PDBSymbolCompiland > findOneCompilandForSourceFile(llvm::StringRef Pattern, PDB_NameSearchFlags Flags) const override
Definition: DIASession.cpp:248
std::unique_ptr< PDBSymbol > getSymbolById(uint32_t SymbolId) const override
Definition: DIASession.cpp:155
static Error createFromExe(StringRef Path, std::unique_ptr< IPDBSession > &Session)
Definition: DIASession.cpp:108
Lightweight error class with error context and mandatory checking.
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:47
void setLoadAddress(uint64_t Address) override
Definition: DIASession.cpp:139
std::unique_ptr< PDBSymbolExe > getGlobalScope() const override
Definition: DIASession.cpp:143
uint64_t getLoadAddress() const override
Definition: DIASession.cpp:133