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
18namespace llvm {
19
20namespace codeview {
21class LazyRandomTypeCollection;
22}
23
24namespace pdb {
25
26class PDBFile;
27
28class BytesOutputStyle : public OutputStyle {
29public:
30 BytesOutputStyle(PDBFile &File);
31
32 Error dump() override;
33
34private:
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