1 //===- ExplainOutputStyle.h ----------------------------------- *- C++ --*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef LLVM_TOOLS_LLVMPDBDUMP_EXPLAINOUTPUTSTYLE_H
11 #define LLVM_TOOLS_LLVMPDBDUMP_EXPLAINOUTPUTSTYLE_H
13 #include "LinePrinter.h"
14 #include "OutputStyle.h"
26 class ExplainOutputStyle : public OutputStyle {
29 ExplainOutputStyle(InputFile &File, uint64_t FileOffset);
31 Error dump() override;
34 Error explainPdbFile();
35 Error explainBinaryFile();
37 bool explainPdbBlockStatus();
39 bool isPdbFpm1() const;
40 bool isPdbFpm2() const;
42 bool isPdbSuperBlock() const;
43 bool isPdbFpmBlock() const;
44 bool isPdbBlockMapBlock() const;
45 bool isPdbStreamDirectoryBlock() const;
46 Optional<uint32_t> getPdbBlockStreamIndex() const;
48 void explainPdbSuperBlockOffset();
49 void explainPdbFpmBlockOffset();
50 void explainPdbBlockMapOffset();
51 void explainPdbStreamDirectoryOffset();
52 void explainPdbStreamOffset(uint32_t Stream);
53 void explainPdbUnknownBlock();
55 void explainStreamOffset(DbiStream &Stream, uint32_t OffsetInStream);
56 void explainStreamOffset(InfoStream &Stream, uint32_t OffsetInStream);
58 uint32_t pdbBlockIndex() const;
59 uint32_t pdbBlockOffset() const;
62 const uint64_t FileOffset;