1 //===- BytesOutputStyle.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-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLVM_TOOLS_LLVMPDBDUMP_BYTESOUTPUTSTYLE_H 10 #define LLVM_TOOLS_LLVMPDBDUMP_BYTESOUTPUTSTYLE_H 11 12 #include "OutputStyle.h" 13 #include "StreamUtil.h" 14 15 #include "llvm/DebugInfo/PDB/Native/LinePrinter.h" 16 #include "llvm/Support/Error.h" 17 18 namespace llvm { 19 20 namespace codeview { 21 class LazyRandomTypeCollection; 22 } 23 24 namespace pdb { 25 26 class PDBFile; 27 28 class BytesOutputStyle : public OutputStyle { 29 public: 30 BytesOutputStyle(PDBFile &File); 31 32 Error dump() override; 33 34 private: 35 void dumpNameMap(); 36 void dumpBlockRanges(uint32_t Min, uint32_t Max); 37 void dumpByteRanges(uint32_t Min, uint32_t Max); 38 void dumpFpm(); 39 void dumpStreamBytes(); 40 41 void dumpSectionContributions(); 42 void dumpSectionMap(); 43 void dumpModuleInfos(); 44 void dumpFileInfo(); 45 void dumpTypeServerMap(); 46 void dumpECData(); 47 48 void dumpModuleSyms(); 49 void dumpModuleC11(); 50 void dumpModuleC13(); 51 52 void dumpTypeIndex(uint32_t StreamIdx, ArrayRef<uint32_t> Indices); 53 54 Expected<codeview::LazyRandomTypeCollection &> 55 initializeTypes(uint32_t StreamIdx); 56 57 std::unique_ptr<codeview::LazyRandomTypeCollection> TpiTypes; 58 std::unique_ptr<codeview::LazyRandomTypeCollection> IpiTypes; 59 60 PDBFile &File; 61 LinePrinter P; 62 ExitOnError Err; 63 SmallVector<StreamInfo, 8> StreamPurposes; 64 }; 65 } // namespace pdb 66 } // namespace llvm 67 68 #endif 69