brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 84b4a7e Raw
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