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

Generated by: LCOV version 1.13