67 lines · c
1//===- ExplainOutputStyle.h ----------------------------------- *- C++ --*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_TOOLS_LLVMPDBDUMP_EXPLAINOUTPUTSTYLE_H10#define LLVM_TOOLS_LLVMPDBDUMP_EXPLAINOUTPUTSTYLE_H11 12#include "OutputStyle.h"13 14#include "llvm/DebugInfo/PDB/Native/LinePrinter.h"15 16namespace llvm {17 18namespace pdb {19 20class DbiStream;21class InfoStream;22class InputFile;23 24class ExplainOutputStyle : public OutputStyle {25 26public:27 ExplainOutputStyle(InputFile &File, uint64_t FileOffset);28 29 Error dump() override;30 31private:32 Error explainPdbFile();33 Error explainBinaryFile();34 35 bool explainPdbBlockStatus();36 37 bool isPdbFpm1() const;38 bool isPdbFpm2() const;39 40 bool isPdbSuperBlock() const;41 bool isPdbFpmBlock() const;42 bool isPdbBlockMapBlock() const;43 bool isPdbStreamDirectoryBlock() const;44 std::optional<uint32_t> getPdbBlockStreamIndex() const;45 46 void explainPdbSuperBlockOffset();47 void explainPdbFpmBlockOffset();48 void explainPdbBlockMapOffset();49 void explainPdbStreamDirectoryOffset();50 void explainPdbStreamOffset(uint32_t Stream);51 void explainPdbUnknownBlock();52 53 void explainStreamOffset(DbiStream &Stream, uint32_t OffsetInStream);54 void explainStreamOffset(InfoStream &Stream, uint32_t OffsetInStream);55 56 uint32_t pdbBlockIndex() const;57 uint32_t pdbBlockOffset() const;58 59 InputFile &File;60 const uint64_t FileOffset;61 LinePrinter P;62};63} // namespace pdb64} // namespace llvm65 66#endif67