diff options
Diffstat (limited to 'llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp')
-rw-r--r-- | llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp b/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp index 9ce6a51ca91..f8eff769947 100644 --- a/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp +++ b/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp @@ -50,6 +50,9 @@ Error LLVMOutputStyle::dump() { if (auto EC = dumpStreamSummary()) return EC; + if (auto EC = dumpFreePageMap()) + return EC; + if (auto EC = dumpStreamBlocks()) return EC; @@ -234,6 +237,22 @@ Error LLVMOutputStyle::dumpStreamSummary() { return Error::success(); } +Error LLVMOutputStyle::dumpFreePageMap() { + if (!opts::raw::DumpFreePageMap) + return Error::success(); + const BitVector &FPM = File.getMsfLayout().FreePageMap; + + std::vector<uint32_t> Vec; + for (uint32_t I = 0, E = FPM.size(); I != E; ++I) + if (!FPM[I]) + Vec.push_back(I); + + // Prints out used pages instead of free pages because + // the number of free pages is far larger than used pages. + P.printList("Used Page Map", Vec); + return Error::success(); +} + Error LLVMOutputStyle::dumpStreamBlocks() { if (!opts::raw::DumpStreamBlocks) return Error::success(); |