[llvm] r277545 - pdbdump: Do not treat stream 0 pages as allocated pages.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 2 16:22:47 PDT 2016


Author: ruiu
Date: Tue Aug  2 18:22:46 2016
New Revision: 277545

URL: http://llvm.org/viewvc/llvm-project?rev=277545&view=rev
Log:
pdbdump: Do not treat stream 0 pages as allocated pages.

I examined a few PDBs and all of them treated pages for stream 0
are unused, thus they were unmarked in their free page bitmap.
I think we should do the same thing for compatibility.

Differential Revision: https://reviews.llvm.org/D23047

Modified:
    llvm/trunk/tools/llvm-pdbdump/LLVMOutputStyle.cpp

Modified: llvm/trunk/tools/llvm-pdbdump/LLVMOutputStyle.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/LLVMOutputStyle.cpp?rev=277545&r1=277544&r2=277545&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-pdbdump/LLVMOutputStyle.cpp (original)
+++ llvm/trunk/tools/llvm-pdbdump/LLVMOutputStyle.cpp Tue Aug  2 18:22:46 2016
@@ -303,14 +303,16 @@ Error LLVMOutputStyle::dumpFreePageMap()
 
   recordKnownUsedPage(PS, File.getBlockMapIndex()); // Stream Table
 
-  for (auto DB : File.getDirectoryBlockArray()) {
+  for (auto DB : File.getDirectoryBlockArray())
     recordKnownUsedPage(PS, DB);
-  }
-  for (auto &SE : File.getStreamMap()) {
-    for (auto &S : SE) {
+
+  // Record pages used by streams. Note that pages for stream 0
+  // are considered being unused because that's what MSVC tools do.
+  // Stream 0 doesn't contain actual data, so it makes some sense,
+  // though it's a bit confusing to us.
+  for (auto &SE : File.getStreamMap().drop_front(1))
+    for (auto &S : SE)
       recordKnownUsedPage(PS, S);
-    }
-  }
 
   dumpBitVector("Msf Free Pages", FPM);
   dumpBitVector("Orphaned Pages", PS.OrphanedPages);




More information about the llvm-commits mailing list