LCOV - code coverage report
Current view: top level - lib/DebugInfo/PDB/Native - NativeExeSymbol.cpp (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 31 41 75.6 %
Date: 2017-09-14 15:23:50 Functions: 8 8 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===- NativeExeSymbol.cpp - native impl for PDBSymbolExe -------*- 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             : #include "llvm/DebugInfo/PDB/Native/NativeExeSymbol.h"
      11             : 
      12             : #include "llvm/ADT/STLExtras.h"
      13             : #include "llvm/DebugInfo/PDB/Native/DbiStream.h"
      14             : #include "llvm/DebugInfo/PDB/Native/InfoStream.h"
      15             : #include "llvm/DebugInfo/PDB/Native/NativeEnumModules.h"
      16             : #include "llvm/DebugInfo/PDB/Native/NativeEnumTypes.h"
      17             : #include "llvm/DebugInfo/PDB/Native/PDBFile.h"
      18             : #include "llvm/DebugInfo/PDB/Native/TpiStream.h"
      19             : 
      20             : namespace llvm {
      21             : namespace pdb {
      22             : 
      23           8 : NativeExeSymbol::NativeExeSymbol(NativeSession &Session, SymIndexId SymbolId)
      24          16 :     : NativeRawSymbol(Session, SymbolId), File(Session.getPDBFile()) {}
      25             : 
      26           4 : std::unique_ptr<NativeRawSymbol> NativeExeSymbol::clone() const {
      27          16 :   return llvm::make_unique<NativeExeSymbol>(Session, SymbolId);
      28             : }
      29             : 
      30             : std::unique_ptr<IPDBEnumSymbols>
      31           4 : NativeExeSymbol::findChildren(PDB_SymType Type) const {
      32           4 :   switch (Type) {
      33           2 :   case PDB_SymType::Compiland: {
      34           2 :     auto Dbi = File.getPDBDbiStream();
      35           2 :     if (Dbi) {
      36           2 :       const DbiModuleList &Modules = Dbi->modules();
      37             :       return std::unique_ptr<IPDBEnumSymbols>(
      38           6 :           new NativeEnumModules(Session, Modules));
      39             :     }
      40           0 :     consumeError(Dbi.takeError());
      41           0 :     break;
      42             :   }
      43           1 :   case PDB_SymType::Enum:
      44           1 :     return Session.createTypeEnumerator(codeview::LF_ENUM);
      45             :   default:
      46             :     break;
      47             :   }
      48             :   return nullptr;
      49             : }
      50             : 
      51           4 : uint32_t NativeExeSymbol::getAge() const {
      52           8 :   auto IS = File.getPDBInfoStream();
      53           4 :   if (IS)
      54           4 :     return IS->getAge();
      55           0 :   consumeError(IS.takeError());
      56           0 :   return 0;
      57             : }
      58             : 
      59           4 : std::string NativeExeSymbol::getSymbolsFileName() const {
      60           8 :   return File.getFilePath();
      61             : }
      62             : 
      63           4 : codeview::GUID NativeExeSymbol::getGuid() const {
      64           8 :   auto IS = File.getPDBInfoStream();
      65           4 :   if (IS)
      66           4 :     return IS->getGuid();
      67           0 :   consumeError(IS.takeError());
      68           0 :   return codeview::GUID{{0}};
      69             : }
      70             : 
      71           4 : bool NativeExeSymbol::hasCTypes() const {
      72           8 :   auto Dbi = File.getPDBDbiStream();
      73           4 :   if (Dbi)
      74           4 :     return Dbi->hasCTypes();
      75           0 :   consumeError(Dbi.takeError());
      76           0 :   return false;
      77             : }
      78             : 
      79           4 : bool NativeExeSymbol::hasPrivateSymbols() const {
      80           8 :   auto Dbi = File.getPDBDbiStream();
      81           4 :   if (Dbi)
      82           4 :     return !Dbi->isStripped();
      83           0 :   consumeError(Dbi.takeError());
      84           0 :   return false;
      85             : }
      86             : 
      87             : } // namespace pdb
      88             : } // namespace llvm

Generated by: LCOV version 1.13