blob: aa5342998e56c9c1df7f481ab753ff2ca65c3c90 [file] [log] [blame]
Zachary Turner08bb54f2017-06-22 20:58:11 +00001//===- BytesOutputStyle.h ------------------------------------- *- C++ --*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLVM_TOOLS_LLVMPDBDUMP_BYTESOUTPUTSTYLE_H
11#define LLVM_TOOLS_LLVMPDBDUMP_BYTESOUTPUTSTYLE_H
12
13#include "LinePrinter.h"
14#include "OutputStyle.h"
Zachary Turnerb6d8c582017-08-21 14:53:25 +000015#include "StreamUtil.h"
Zachary Turner08bb54f2017-06-22 20:58:11 +000016
17#include "llvm/Support/Error.h"
18
19namespace llvm {
20
Zachary Turner5d2c9172017-06-23 21:50:54 +000021namespace codeview {
22class LazyRandomTypeCollection;
23}
24
Zachary Turner08bb54f2017-06-22 20:58:11 +000025namespace pdb {
26
27class PDBFile;
28
29class BytesOutputStyle : public OutputStyle {
30public:
31 BytesOutputStyle(PDBFile &File);
32
33 Error dump() override;
34
35private:
Zachary Turnera77c3fd2017-06-23 20:18:38 +000036 void dumpNameMap();
Zachary Turner08bb54f2017-06-22 20:58:11 +000037 void dumpBlockRanges(uint32_t Min, uint32_t Max);
Zachary Turner87f3ec22017-06-23 19:54:44 +000038 void dumpByteRanges(uint32_t Min, uint32_t Max);
Zachary Turner34173de2017-08-02 22:25:52 +000039 void dumpFpm();
Zachary Turner08bb54f2017-06-22 20:58:11 +000040 void dumpStreamBytes();
41
Zachary Turner777bbb52017-06-23 21:11:54 +000042 void dumpSectionContributions();
43 void dumpSectionMap();
44 void dumpModuleInfos();
45 void dumpFileInfo();
46 void dumpTypeServerMap();
47 void dumpECData();
48
Zachary Turner554302a2017-06-23 23:08:57 +000049 void dumpModuleSyms();
50 void dumpModuleC11();
51 void dumpModuleC13();
52
Zachary Turner5d2c9172017-06-23 21:50:54 +000053 void dumpTypeIndex(uint32_t StreamIdx, ArrayRef<uint32_t> Indices);
54
55 Expected<codeview::LazyRandomTypeCollection &>
56 initializeTypes(uint32_t StreamIdx);
57
58 std::unique_ptr<codeview::LazyRandomTypeCollection> TpiTypes;
59 std::unique_ptr<codeview::LazyRandomTypeCollection> IpiTypes;
60
Zachary Turner08bb54f2017-06-22 20:58:11 +000061 PDBFile &File;
62 LinePrinter P;
Zachary Turnera77c3fd2017-06-23 20:18:38 +000063 ExitOnError Err;
Zachary Turnerb6d8c582017-08-21 14:53:25 +000064 SmallVector<StreamInfo, 8> StreamPurposes;
Zachary Turner08bb54f2017-06-22 20:58:11 +000065};
66} // namespace pdb
67} // namespace llvm
68
69#endif