LCOV - code coverage report
Current view: top level - lib/DebugInfo/CodeView - DebugSubsectionVisitor.cpp (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 30 37 81.1 %
Date: 2018-10-20 13:21:21 Functions: 1 1 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===- DebugSubsectionVisitor.cpp -------------------------------*- 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/CodeView/DebugSubsectionVisitor.h"
      11             : 
      12             : #include "llvm/DebugInfo/CodeView/DebugChecksumsSubsection.h"
      13             : #include "llvm/DebugInfo/CodeView/DebugCrossExSubsection.h"
      14             : #include "llvm/DebugInfo/CodeView/DebugCrossImpSubsection.h"
      15             : #include "llvm/DebugInfo/CodeView/DebugFrameDataSubsection.h"
      16             : #include "llvm/DebugInfo/CodeView/DebugInlineeLinesSubsection.h"
      17             : #include "llvm/DebugInfo/CodeView/DebugLinesSubsection.h"
      18             : #include "llvm/DebugInfo/CodeView/DebugStringTableSubsection.h"
      19             : #include "llvm/DebugInfo/CodeView/DebugSubsectionRecord.h"
      20             : #include "llvm/DebugInfo/CodeView/DebugSymbolRVASubsection.h"
      21             : #include "llvm/DebugInfo/CodeView/DebugSymbolsSubsection.h"
      22             : #include "llvm/DebugInfo/CodeView/DebugUnknownSubsection.h"
      23             : #include "llvm/Support/BinaryStreamReader.h"
      24             : #include "llvm/Support/BinaryStreamRef.h"
      25             : 
      26             : using namespace llvm;
      27             : using namespace llvm::codeview;
      28             : 
      29          55 : Error llvm::codeview::visitDebugSubsection(
      30             :     const DebugSubsectionRecord &R, DebugSubsectionVisitor &V,
      31             :     const StringsAndChecksumsRef &State) {
      32          55 :   BinaryStreamReader Reader(R.getRecordData());
      33          55 :   switch (R.kind()) {
      34          14 :   case DebugSubsectionKind::Lines: {
      35          28 :     DebugLinesSubsectionRef Fragment;
      36          28 :     if (auto EC = Fragment.initialize(Reader))
      37             :       return EC;
      38             : 
      39          14 :     return V.visitLines(Fragment, State);
      40             :   }
      41             :   case DebugSubsectionKind::FileChecksums: {
      42          10 :     DebugChecksumsSubsectionRef Fragment;
      43          20 :     if (auto EC = Fragment.initialize(Reader))
      44             :       return EC;
      45             : 
      46          10 :     return V.visitFileChecksums(Fragment, State);
      47             :   }
      48           1 :   case DebugSubsectionKind::InlineeLines: {
      49           2 :     DebugInlineeLinesSubsectionRef Fragment;
      50           2 :     if (auto EC = Fragment.initialize(Reader))
      51             :       return EC;
      52           1 :     return V.visitInlineeLines(Fragment, State);
      53             :   }
      54             :   case DebugSubsectionKind::CrossScopeExports: {
      55           2 :     DebugCrossModuleExportsSubsectionRef Section;
      56           4 :     if (auto EC = Section.initialize(Reader))
      57             :       return EC;
      58           2 :     return V.visitCrossModuleExports(Section, State);
      59             :   }
      60             :   case DebugSubsectionKind::CrossScopeImports: {
      61           1 :     DebugCrossModuleImportsSubsectionRef Section;
      62           2 :     if (auto EC = Section.initialize(Reader))
      63             :       return EC;
      64           1 :     return V.visitCrossModuleImports(Section, State);
      65             :   }
      66             :   case DebugSubsectionKind::Symbols: {
      67          18 :     DebugSymbolsSubsectionRef Section;
      68          36 :     if (auto EC = Section.initialize(Reader))
      69             :       return EC;
      70          18 :     return V.visitSymbols(Section, State);
      71             :   }
      72           5 :   case DebugSubsectionKind::StringTable: {
      73          10 :     DebugStringTableSubsectionRef Section;
      74          10 :     if (auto EC = Section.initialize(Reader))
      75             :       return EC;
      76           5 :     return V.visitStringTable(Section, State);
      77             :   }
      78             :   case DebugSubsectionKind::FrameData: {
      79           4 :     DebugFrameDataSubsectionRef Section;
      80           8 :     if (auto EC = Section.initialize(Reader))
      81             :       return EC;
      82           4 :     return V.visitFrameData(Section, State);
      83             :   }
      84           0 :   case DebugSubsectionKind::CoffSymbolRVA: {
      85           0 :     DebugSymbolRVASubsectionRef Section;
      86           0 :     if (auto EC = Section.initialize(Reader))
      87             :       return EC;
      88           0 :     return V.visitCOFFSymbolRVAs(Section, State);
      89             :   }
      90           0 :   default: {
      91           0 :     DebugUnknownSubsectionRef Fragment(R.kind(), R.getRecordData());
      92           0 :     return V.visitUnknown(Fragment);
      93             :   }
      94             :   }
      95             : }

Generated by: LCOV version 1.13