blob: 40d37525b94eaa853c8ae43ef7d38dc0cf3d4a02 [file] [log] [blame]
Zachary Turnerd3117392016-06-03 19:28:33 +00001//===- LLVMOutputStyle.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_LLVMOUTPUTSTYLE_H
11#define LLVM_TOOLS_LLVMPDBDUMP_LLVMOUTPUTSTYLE_H
12
13#include "OutputStyle.h"
14
Zachary Turner6ac232c2017-03-13 23:28:25 +000015#include "llvm/ADT/SmallVector.h"
Zachary Turner629cb7d2017-01-11 23:24:22 +000016#include "llvm/DebugInfo/CodeView/TypeDatabase.h"
Zachary Turnerd3117392016-06-03 19:28:33 +000017#include "llvm/Support/ScopedPrinter.h"
18
Zachary Turner6ac232c2017-03-13 23:28:25 +000019#include <string>
20
Zachary Turnerd3117392016-06-03 19:28:33 +000021namespace llvm {
Zachary Turnerd3c7b8e2016-08-01 21:19:45 +000022class BitVector;
Zachary Turnerd3117392016-06-03 19:28:33 +000023namespace pdb {
24class LLVMOutputStyle : public OutputStyle {
25public:
26 LLVMOutputStyle(PDBFile &File);
27
Zachary Turnera30bd1a2016-06-30 17:42:48 +000028 Error dump() override;
Zachary Turner7120a472016-06-06 20:37:05 +000029
Zachary Turnerd3117392016-06-03 19:28:33 +000030private:
Zachary Turnera30bd1a2016-06-30 17:42:48 +000031 Error dumpFileHeaders();
32 Error dumpStreamSummary();
Rui Ueyama7a5cdc62016-07-29 21:38:00 +000033 Error dumpFreePageMap();
Zachary Turner72c5b642016-09-09 18:17:52 +000034 Error dumpBlockRanges();
Bob Haarman653baa22016-10-21 19:43:19 +000035 Error dumpGlobalsStream();
Zachary Turner72c5b642016-09-09 18:17:52 +000036 Error dumpStreamBytes();
Zachary Turnera30bd1a2016-06-30 17:42:48 +000037 Error dumpStreamBlocks();
Zachary Turner760ad4d2017-01-20 22:42:09 +000038 Error dumpStringTable();
Zachary Turnera30bd1a2016-06-30 17:42:48 +000039 Error dumpInfoStream();
Zachary Turnera30bd1a2016-06-30 17:42:48 +000040 Error dumpTpiStream(uint32_t StreamIdx);
41 Error dumpDbiStream();
42 Error dumpSectionContribs();
43 Error dumpSectionMap();
44 Error dumpPublicsStream();
45 Error dumpSectionHeaders();
46 Error dumpFpoStream();
47
Zachary Turnerd3c7b8e2016-08-01 21:19:45 +000048 void dumpBitVector(StringRef Name, const BitVector &V);
49
Zachary Turnera30bd1a2016-06-30 17:42:48 +000050 void flush();
51
Zachary Turnerd3117392016-06-03 19:28:33 +000052 PDBFile &File;
53 ScopedPrinter P;
Zachary Turner629cb7d2017-01-11 23:24:22 +000054 codeview::TypeDatabase TypeDB;
Zachary Turner6ac232c2017-03-13 23:28:25 +000055 SmallVector<std::string, 32> StreamPurposes;
Zachary Turnerd3117392016-06-03 19:28:33 +000056};
57}
58}
59
60#endif