mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 02:52:53 +02:00
dce3e83d50
The FPM is split at regular intervals across the MSF file, as the MS code suggests. It turns out that the value of the interval is precisely the block size. If the block size is 4096, then there are two Fpm pages every 4096 blocks. So here we teach the PDBFile class to parse a split FPM, and also add more options when dumping the FPM to display some additional information such as orphaned pages (pages which the FPM says are allocated, but which nothing appears to use), use after free pages (pages which the FPM says are not allocated, but which are referenced by a stream), and multiple use pages (pages which the FPM says are allocated but are used more than once). Reviewed By: ruiu Differential Revision: https://reviews.llvm.org/D23022 llvm-svn: 277388
73 lines
2.4 KiB
C++
73 lines
2.4 KiB
C++
//===- llvm-pdbdump.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_LLVMPDBDUMP_H
|
|
#define LLVM_TOOLS_LLVMPDBDUMP_LLVMPDBDUMP_H
|
|
|
|
#include "llvm/Support/CommandLine.h"
|
|
#include "llvm/Support/raw_ostream.h"
|
|
|
|
namespace opts {
|
|
|
|
namespace pretty {
|
|
extern llvm::cl::opt<bool> Compilands;
|
|
extern llvm::cl::opt<bool> Symbols;
|
|
extern llvm::cl::opt<bool> Globals;
|
|
extern llvm::cl::opt<bool> Types;
|
|
extern llvm::cl::opt<bool> All;
|
|
extern llvm::cl::opt<bool> ExcludeCompilerGenerated;
|
|
|
|
extern llvm::cl::opt<bool> NoClassDefs;
|
|
extern llvm::cl::opt<bool> NoEnumDefs;
|
|
extern llvm::cl::list<std::string> ExcludeTypes;
|
|
extern llvm::cl::list<std::string> ExcludeSymbols;
|
|
extern llvm::cl::list<std::string> ExcludeCompilands;
|
|
extern llvm::cl::list<std::string> IncludeTypes;
|
|
extern llvm::cl::list<std::string> IncludeSymbols;
|
|
extern llvm::cl::list<std::string> IncludeCompilands;
|
|
}
|
|
|
|
namespace raw {
|
|
extern llvm::cl::opt<bool> DumpHeaders;
|
|
extern llvm::cl::opt<bool> DumpStreamBlocks;
|
|
extern llvm::cl::opt<bool> DumpStreamSummary;
|
|
extern llvm::cl::opt<bool> DumpPageStats;
|
|
extern llvm::cl::opt<bool> DumpTpiHash;
|
|
extern llvm::cl::opt<bool> DumpTpiRecordBytes;
|
|
extern llvm::cl::opt<bool> DumpTpiRecords;
|
|
extern llvm::cl::opt<bool> DumpIpiRecords;
|
|
extern llvm::cl::opt<bool> DumpIpiRecordBytes;
|
|
extern llvm::cl::opt<std::string> DumpStreamDataIdx;
|
|
extern llvm::cl::opt<std::string> DumpStreamDataName;
|
|
extern llvm::cl::opt<bool> DumpModules;
|
|
extern llvm::cl::opt<bool> DumpModuleFiles;
|
|
extern llvm::cl::opt<bool> DumpModuleSyms;
|
|
extern llvm::cl::opt<bool> DumpPublics;
|
|
extern llvm::cl::opt<bool> DumpSectionContribs;
|
|
extern llvm::cl::opt<bool> DumpLineInfo;
|
|
extern llvm::cl::opt<bool> DumpSectionMap;
|
|
extern llvm::cl::opt<bool> DumpSymRecordBytes;
|
|
extern llvm::cl::opt<bool> DumpSectionHeaders;
|
|
extern llvm::cl::opt<bool> DumpFpo;
|
|
}
|
|
|
|
namespace pdb2yaml {
|
|
extern llvm::cl::opt<bool> NoFileHeaders;
|
|
extern llvm::cl::opt<bool> StreamMetadata;
|
|
extern llvm::cl::opt<bool> StreamDirectory;
|
|
extern llvm::cl::opt<bool> PdbStream;
|
|
extern llvm::cl::opt<bool> DbiStream;
|
|
extern llvm::cl::opt<bool> DbiModuleInfo;
|
|
extern llvm::cl::opt<bool> DbiModuleSourceFileInfo;
|
|
extern llvm::cl::list<std::string> InputFilename;
|
|
}
|
|
}
|
|
|
|
#endif
|