Path: blob/main/contrib/llvm-project/llvm/tools/llvm-pdbutil/ExplainOutputStyle.h
35260 views
//===- ExplainOutputStyle.h ----------------------------------- *- C++ --*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#ifndef LLVM_TOOLS_LLVMPDBDUMP_EXPLAINOUTPUTSTYLE_H9#define LLVM_TOOLS_LLVMPDBDUMP_EXPLAINOUTPUTSTYLE_H1011#include "OutputStyle.h"1213#include "llvm/DebugInfo/PDB/Native/LinePrinter.h"1415namespace llvm {1617namespace pdb {1819class DbiStream;20class InfoStream;21class InputFile;2223class ExplainOutputStyle : public OutputStyle {2425public:26ExplainOutputStyle(InputFile &File, uint64_t FileOffset);2728Error dump() override;2930private:31Error explainPdbFile();32Error explainBinaryFile();3334bool explainPdbBlockStatus();3536bool isPdbFpm1() const;37bool isPdbFpm2() const;3839bool isPdbSuperBlock() const;40bool isPdbFpmBlock() const;41bool isPdbBlockMapBlock() const;42bool isPdbStreamDirectoryBlock() const;43std::optional<uint32_t> getPdbBlockStreamIndex() const;4445void explainPdbSuperBlockOffset();46void explainPdbFpmBlockOffset();47void explainPdbBlockMapOffset();48void explainPdbStreamDirectoryOffset();49void explainPdbStreamOffset(uint32_t Stream);50void explainPdbUnknownBlock();5152void explainStreamOffset(DbiStream &Stream, uint32_t OffsetInStream);53void explainStreamOffset(InfoStream &Stream, uint32_t OffsetInStream);5455uint32_t pdbBlockIndex() const;56uint32_t pdbBlockOffset() const;5758InputFile &File;59const uint64_t FileOffset;60LinePrinter P;61};62} // namespace pdb63} // namespace llvm6465#endif666768