summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp')
-rw-r--r--llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp19
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();
OpenPOWER on IntegriCloud