mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-01 16:22:41 +00:00
b18693c52d
Building the type database is expensive, and can take multiple minutes for large PDBs. But we only need it in certain cases depending on what command line options are specified. So only build it when we know we're about to need it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302204 91177308-0d34-0410-b5e6-96231b3b80d8
65 lines
1.5 KiB
C++
65 lines
1.5 KiB
C++
//===- LLVMOutputStyle.h -------------------------------------- *- C++ --*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_TOOLS_LLVMPDBDUMP_LLVMOUTPUTSTYLE_H
|
|
#define LLVM_TOOLS_LLVMPDBDUMP_LLVMOUTPUTSTYLE_H
|
|
|
|
#include "OutputStyle.h"
|
|
|
|
#include "llvm/ADT/Optional.h"
|
|
#include "llvm/ADT/SmallVector.h"
|
|
#include "llvm/DebugInfo/CodeView/TypeDatabase.h"
|
|
#include "llvm/Support/ScopedPrinter.h"
|
|
|
|
#include <string>
|
|
|
|
namespace llvm {
|
|
class BitVector;
|
|
namespace pdb {
|
|
class LLVMOutputStyle : public OutputStyle {
|
|
public:
|
|
LLVMOutputStyle(PDBFile &File);
|
|
|
|
Error dump() override;
|
|
|
|
private:
|
|
Error buildTypeDatabase(uint32_t SN);
|
|
|
|
Error dumpFileHeaders();
|
|
Error dumpStreamSummary();
|
|
Error dumpFreePageMap();
|
|
Error dumpBlockRanges();
|
|
Error dumpGlobalsStream();
|
|
Error dumpStreamBytes();
|
|
Error dumpStreamBlocks();
|
|
Error dumpStringTable();
|
|
Error dumpInfoStream();
|
|
Error dumpTpiStream(uint32_t StreamIdx);
|
|
Error dumpDbiStream();
|
|
Error dumpSectionContribs();
|
|
Error dumpSectionMap();
|
|
Error dumpPublicsStream();
|
|
Error dumpSectionHeaders();
|
|
Error dumpFpoStream();
|
|
|
|
void dumpBitVector(StringRef Name, const BitVector &V);
|
|
|
|
void flush();
|
|
|
|
PDBFile &File;
|
|
ScopedPrinter P;
|
|
Optional<codeview::TypeDatabase> TypeDB;
|
|
Optional<codeview::TypeDatabase> ItemDB;
|
|
SmallVector<std::string, 32> StreamPurposes;
|
|
};
|
|
}
|
|
}
|
|
|
|
#endif
|