[PATCH] D23143: pdbdump: Fix crash bug.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 3 16:25:15 PDT 2016


ruiu created this revision.
ruiu added a reviewer: zturner.
ruiu added a subscriber: llvm-commits.

pdbdump calls DbiStreamBuilder::commit through PDBFileBuilder::commit
without calling DbiStreamBuilder::finalize. Because `finalize` initializes
`Header` member, `Header` remained nullptr which caused a crash bug.

https://reviews.llvm.org/D23143

Files:
  include/llvm/DebugInfo/PDB/Raw/DbiStreamBuilder.h
  lib/DebugInfo/PDB/Raw/DbiStreamBuilder.cpp
  test/DebugInfo/PDB/pdbdump-fpm.test
  test/DebugInfo/PDB/pdbdump-readwrite.test

Index: test/DebugInfo/PDB/pdbdump-readwrite.test
===================================================================
--- test/DebugInfo/PDB/pdbdump-readwrite.test
+++ test/DebugInfo/PDB/pdbdump-readwrite.test
@@ -2,8 +2,3 @@
 ; RUN:   -dbi-stream -pdb-stream -stream-directory -stream-metadata \
 ; RUN:   %p/Inputs/empty.pdb > %t.1
 ; RUN: llvm-pdbdump yaml2pdb -pdb=%t.2 %t.1
-; RUN: llvm-pdbdump raw -headers %t.2 | FileCheck %p
-
-; CHECK: foo
-
-
Index: lib/DebugInfo/PDB/Raw/DbiStreamBuilder.cpp
===================================================================
--- lib/DebugInfo/PDB/Raw/DbiStreamBuilder.cpp
+++ lib/DebugInfo/PDB/Raw/DbiStreamBuilder.cpp
@@ -249,7 +249,10 @@
 }
 
 Error DbiStreamBuilder::commit(const msf::MSFLayout &Layout,
-                               const msf::WritableStream &Buffer) const {
+                               const msf::WritableStream &Buffer) {
+  if (auto EC = finalize())
+    return EC;
+
   auto InfoS =
       WritableMappedBlockStream::createIndexedStream(Layout, Buffer, StreamDBI);
 
Index: include/llvm/DebugInfo/PDB/Raw/DbiStreamBuilder.h
===================================================================
--- include/llvm/DebugInfo/PDB/Raw/DbiStreamBuilder.h
+++ include/llvm/DebugInfo/PDB/Raw/DbiStreamBuilder.h
@@ -49,7 +49,7 @@
   Expected<std::unique_ptr<DbiStream>> build(PDBFile &File,
                                              const msf::WritableStream &Buffer);
   Error commit(const msf::MSFLayout &Layout,
-               const msf::WritableStream &Buffer) const;
+               const msf::WritableStream &Buffer);
 
 private:
   Error finalize();


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D23143.66731.patch
Type: text/x-patch
Size: 1626 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160803/1c62ed73/attachment.bin>


More information about the llvm-commits mailing list