xref: /freebsd/contrib/llvm-project/llvm/tools/llvm-pdbutil/BytesOutputStyle.h (revision 81ad626541db97eb356e2c1d4a20eb2a26a766ab)
10b57cec5SDimitry Andric //===- BytesOutputStyle.h ------------------------------------- *- C++ --*-===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric 
90b57cec5SDimitry Andric #ifndef LLVM_TOOLS_LLVMPDBDUMP_BYTESOUTPUTSTYLE_H
100b57cec5SDimitry Andric #define LLVM_TOOLS_LLVMPDBDUMP_BYTESOUTPUTSTYLE_H
110b57cec5SDimitry Andric 
120b57cec5SDimitry Andric #include "OutputStyle.h"
130b57cec5SDimitry Andric #include "StreamUtil.h"
140b57cec5SDimitry Andric 
15*81ad6265SDimitry Andric #include "llvm/DebugInfo/PDB/Native/LinePrinter.h"
160b57cec5SDimitry Andric #include "llvm/Support/Error.h"
170b57cec5SDimitry Andric 
180b57cec5SDimitry Andric namespace llvm {
190b57cec5SDimitry Andric 
200b57cec5SDimitry Andric namespace codeview {
210b57cec5SDimitry Andric class LazyRandomTypeCollection;
220b57cec5SDimitry Andric }
230b57cec5SDimitry Andric 
240b57cec5SDimitry Andric namespace pdb {
250b57cec5SDimitry Andric 
260b57cec5SDimitry Andric class PDBFile;
270b57cec5SDimitry Andric 
280b57cec5SDimitry Andric class BytesOutputStyle : public OutputStyle {
290b57cec5SDimitry Andric public:
300b57cec5SDimitry Andric   BytesOutputStyle(PDBFile &File);
310b57cec5SDimitry Andric 
320b57cec5SDimitry Andric   Error dump() override;
330b57cec5SDimitry Andric 
340b57cec5SDimitry Andric private:
350b57cec5SDimitry Andric   void dumpNameMap();
360b57cec5SDimitry Andric   void dumpBlockRanges(uint32_t Min, uint32_t Max);
370b57cec5SDimitry Andric   void dumpByteRanges(uint32_t Min, uint32_t Max);
380b57cec5SDimitry Andric   void dumpFpm();
390b57cec5SDimitry Andric   void dumpStreamBytes();
400b57cec5SDimitry Andric 
410b57cec5SDimitry Andric   void dumpSectionContributions();
420b57cec5SDimitry Andric   void dumpSectionMap();
430b57cec5SDimitry Andric   void dumpModuleInfos();
440b57cec5SDimitry Andric   void dumpFileInfo();
450b57cec5SDimitry Andric   void dumpTypeServerMap();
460b57cec5SDimitry Andric   void dumpECData();
470b57cec5SDimitry Andric 
480b57cec5SDimitry Andric   void dumpModuleSyms();
490b57cec5SDimitry Andric   void dumpModuleC11();
500b57cec5SDimitry Andric   void dumpModuleC13();
510b57cec5SDimitry Andric 
520b57cec5SDimitry Andric   void dumpTypeIndex(uint32_t StreamIdx, ArrayRef<uint32_t> Indices);
530b57cec5SDimitry Andric 
540b57cec5SDimitry Andric   Expected<codeview::LazyRandomTypeCollection &>
550b57cec5SDimitry Andric   initializeTypes(uint32_t StreamIdx);
560b57cec5SDimitry Andric 
570b57cec5SDimitry Andric   std::unique_ptr<codeview::LazyRandomTypeCollection> TpiTypes;
580b57cec5SDimitry Andric   std::unique_ptr<codeview::LazyRandomTypeCollection> IpiTypes;
590b57cec5SDimitry Andric 
600b57cec5SDimitry Andric   PDBFile &File;
610b57cec5SDimitry Andric   LinePrinter P;
620b57cec5SDimitry Andric   ExitOnError Err;
630b57cec5SDimitry Andric   SmallVector<StreamInfo, 8> StreamPurposes;
640b57cec5SDimitry Andric };
650b57cec5SDimitry Andric } // namespace pdb
660b57cec5SDimitry Andric } // namespace llvm
670b57cec5SDimitry Andric 
680b57cec5SDimitry Andric #endif
69