Home | History | Annotate | Line # | Download | only in llvm-pdbutil
      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 "LinePrinter.h"
     13 #include "OutputStyle.h"
     14 #include "StreamUtil.h"
     15 
     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