Coverage Report

Created: 2017-10-03 07:32

/Users/buildslave/jenkins/sharedspace/clang-stage2-coverage-R@2/llvm/include/llvm/DebugInfo/PDB/Native/NativeSession.h
Line
Count
Source (jump to first uncovered line)
1
//===- NativeSession.h - Native 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_NATIVE_NATIVESESSION_H
11
#define LLVM_DEBUGINFO_PDB_NATIVE_NATIVESESSION_H
12
13
#include "llvm/ADT/DenseMap.h"
14
#include "llvm/ADT/StringRef.h"
15
#include "llvm/DebugInfo/CodeView/TypeIndex.h"
16
#include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"
17
#include "llvm/DebugInfo/PDB/IPDBSession.h"
18
#include "llvm/DebugInfo/PDB/Native/DbiModuleDescriptor.h"
19
#include "llvm/DebugInfo/PDB/Native/NativeBuiltinSymbol.h"
20
#include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h"
21
#include "llvm/Support/Allocator.h"
22
#include "llvm/Support/Error.h"
23
24
namespace llvm {
25
namespace pdb {
26
class PDBFile;
27
28
class NativeSession : public IPDBSession {
29
public:
30
  NativeSession(std::unique_ptr<PDBFile> PdbFile,
31
                std::unique_ptr<BumpPtrAllocator> Allocator);
32
  ~NativeSession() override;
33
34
  static Error createFromPdb(StringRef Path,
35
                             std::unique_ptr<IPDBSession> &Session);
36
  static Error createFromExe(StringRef Path,
37
                             std::unique_ptr<IPDBSession> &Session);
38
39
  std::unique_ptr<PDBSymbolCompiland>
40
  createCompilandSymbol(DbiModuleDescriptor MI);
41
42
  std::unique_ptr<PDBSymbolTypeEnum>
43
  createEnumSymbol(codeview::TypeIndex Index);
44
45
  std::unique_ptr<IPDBEnumSymbols>
46
  createTypeEnumerator(codeview::TypeLeafKind Kind);
47
48
  SymIndexId findSymbolByTypeIndex(codeview::TypeIndex TI);
49
50
  uint64_t getLoadAddress() const override;
51
  void setLoadAddress(uint64_t Address) override;
52
  std::unique_ptr<PDBSymbolExe> getGlobalScope() override;
53
  std::unique_ptr<PDBSymbol> getSymbolById(uint32_t SymbolId) const override;
54
55
  std::unique_ptr<PDBSymbol>
56
  findSymbolByAddress(uint64_t Address, PDB_SymType Type) const override;
57
58
  std::unique_ptr<IPDBEnumLineNumbers>
59
  findLineNumbers(const PDBSymbolCompiland &Compiland,
60
                  const IPDBSourceFile &File) const override;
61
  std::unique_ptr<IPDBEnumLineNumbers>
62
  findLineNumbersByAddress(uint64_t Address, uint32_t Length) const override;
63
64
  std::unique_ptr<IPDBEnumSourceFiles>
65
  findSourceFiles(const PDBSymbolCompiland *Compiland, llvm::StringRef Pattern,
66
                  PDB_NameSearchFlags Flags) const override;
67
  std::unique_ptr<IPDBSourceFile>
68
  findOneSourceFile(const PDBSymbolCompiland *Compiland,
69
                    llvm::StringRef Pattern,
70
                    PDB_NameSearchFlags Flags) const override;
71
  std::unique_ptr<IPDBEnumChildren<PDBSymbolCompiland>>
72
  findCompilandsForSourceFile(llvm::StringRef Pattern,
73
                              PDB_NameSearchFlags Flags) const override;
74
  std::unique_ptr<PDBSymbolCompiland>
75
  findOneCompilandForSourceFile(llvm::StringRef Pattern,
76
                                PDB_NameSearchFlags Flags) const override;
77
  std::unique_ptr<IPDBEnumSourceFiles> getAllSourceFiles() const override;
78
  std::unique_ptr<IPDBEnumSourceFiles> getSourceFilesForCompiland(
79
      const PDBSymbolCompiland &Compiland) const override;
80
  std::unique_ptr<IPDBSourceFile>
81
  getSourceFileById(uint32_t FileId) const override;
82
83
  std::unique_ptr<IPDBEnumDataStreams> getDebugStreams() const override;
84
85
103
  PDBFile &getPDBFile() { return *Pdb; }
86
0
  const PDBFile &getPDBFile() const { return *Pdb; }
87
88
private:
89
  std::unique_ptr<PDBFile> Pdb;
90
  std::unique_ptr<BumpPtrAllocator> Allocator;
91
  std::vector<std::unique_ptr<NativeRawSymbol>> SymbolCache;
92
  DenseMap<codeview::TypeIndex, SymIndexId> TypeIndexToSymbolId;
93
};
94
}
95
}
96
97
#endif