[llvm] r316722 - [PDB] Handle an empty globals hash table with no buckets

Reid Kleckner via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 26 17:45:51 PDT 2017


Author: rnk
Date: Thu Oct 26 17:45:51 2017
New Revision: 316722

URL: http://llvm.org/viewvc/llvm-project?rev=316722&view=rev
Log:
[PDB] Handle an empty globals hash table with no buckets

Added:
    llvm/trunk/test/DebugInfo/PDB/Inputs/pdbdump-globals-empty.pdb   (with props)
    llvm/trunk/test/DebugInfo/PDB/pdbdump-globals-empty.test
Modified:
    llvm/trunk/lib/DebugInfo/PDB/Native/GlobalsStream.cpp
    llvm/trunk/tools/llvm-pdbutil/DumpOutputStyle.cpp

Modified: llvm/trunk/lib/DebugInfo/PDB/Native/GlobalsStream.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/Native/GlobalsStream.cpp?rev=316722&r1=316721&r2=316722&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/PDB/Native/GlobalsStream.cpp (original)
+++ llvm/trunk/lib/DebugInfo/PDB/Native/GlobalsStream.cpp Thu Oct 26 17:45:51 2017
@@ -117,7 +117,8 @@ Error GSIHashTable::read(BinaryStreamRea
     return EC;
   if (auto EC = readGSIHashRecords(HashRecords, HashHdr, Reader))
     return EC;
-  if (auto EC = readGSIHashBuckets(HashBuckets, HashBitmap, HashHdr, Reader))
-    return EC;
+  if (HashHdr->HrSize > 0)
+    if (auto EC = readGSIHashBuckets(HashBuckets, HashBitmap, HashHdr, Reader))
+      return EC;
   return Error::success();
 }

Added: llvm/trunk/test/DebugInfo/PDB/Inputs/pdbdump-globals-empty.pdb
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/PDB/Inputs/pdbdump-globals-empty.pdb?rev=316722&view=auto
==============================================================================
Binary file - no diff available.

Propchange: llvm/trunk/test/DebugInfo/PDB/Inputs/pdbdump-globals-empty.pdb
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: llvm/trunk/test/DebugInfo/PDB/pdbdump-globals-empty.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/PDB/pdbdump-globals-empty.test?rev=316722&view=auto
==============================================================================
--- llvm/trunk/test/DebugInfo/PDB/pdbdump-globals-empty.test (added)
+++ llvm/trunk/test/DebugInfo/PDB/pdbdump-globals-empty.test Thu Oct 26 17:45:51 2017
@@ -0,0 +1,6 @@
+RUN: llvm-pdbutil dump -globals %S/Inputs/pdbdump-globals-empty.pdb | FileCheck %s
+
+CHECK:                        Global Symbols
+CHECK: ============================================================
+CHECK:   Records
+CHECK-NOT: S_

Modified: llvm/trunk/tools/llvm-pdbutil/DumpOutputStyle.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbutil/DumpOutputStyle.cpp?rev=316722&r1=316721&r2=316722&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-pdbutil/DumpOutputStyle.cpp (original)
+++ llvm/trunk/tools/llvm-pdbutil/DumpOutputStyle.cpp Thu Oct 26 17:45:51 2017
@@ -639,9 +639,11 @@ Error DumpOutputStyle::dumpUdtStats() {
     }
 
     auto &SymbolRecords = cantFail(getPdb().getPDBSymbolStream());
-    auto &Globals = cantFail(getPdb().getPDBGlobalsStream());
+    auto ExpGlobals = getPdb().getPDBGlobalsStream();
+    if (!ExpGlobals)
+      return ExpGlobals.takeError();
 
-    for (uint32_t PubSymOff : Globals.getGlobalsTable()) {
+    for (uint32_t PubSymOff : ExpGlobals->getGlobalsTable()) {
       CVSymbol Sym = SymbolRecords.readRecord(PubSymOff);
       HandleOneSymbol(Sym);
     }




More information about the llvm-commits mailing list