Index: llvm/trunk/include/llvm/DebugInfo/PDB/Raw/RawConstants.h =================================================================== --- llvm/trunk/include/llvm/DebugInfo/PDB/Raw/RawConstants.h +++ llvm/trunk/include/llvm/DebugInfo/PDB/Raw/RawConstants.h @@ -45,6 +45,11 @@ }; enum SpecialStream : uint32_t { + // Stream 0 contains the copy of previous version of the MSF directory. + // We are not currently using it, but technically if we find the main + // MSF is corrupted, we could fallback to it. + OldMSFDirectory = 0, + StreamPDB = 1, StreamTPI = 2, StreamDBI = 3, Index: llvm/trunk/test/DebugInfo/PDB/pdbdump-headers.test =================================================================== --- llvm/trunk/test/DebugInfo/PDB/pdbdump-headers.test +++ llvm/trunk/test/DebugInfo/PDB/pdbdump-headers.test @@ -21,7 +21,7 @@ ; EMPTY-NEXT: NumStreams: 17 ; EMPTY-NEXT: } ; EMPTY-NEXT: Streams [ -; EMPTY-NEXT: Stream 0: [???] (40 bytes) +; EMPTY-NEXT: Stream 0: [Old MSF Directory] (40 bytes) ; EMPTY-NEXT: Stream 1: [PDB Stream] (118 bytes) ; EMPTY-NEXT: Stream 2: [TPI Stream] (5392 bytes) ; EMPTY-NEXT: Stream 3: [DBI Stream] (739 bytes) @@ -609,7 +609,7 @@ ; ALL: NumStreams: 17 ; ALL: } ; ALL: Streams [ -; ALL: Stream 0: [???] (40 bytes) +; ALL: Stream 0: [Old MSF Directory] (40 bytes) ; ALL: Stream 1: [PDB Stream] (118 bytes) ; ALL: Stream 2: [TPI Stream] (5392 bytes) ; ALL: Stream 3: [DBI Stream] (739 bytes) Index: llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp =================================================================== --- llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp +++ llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp @@ -254,7 +254,9 @@ std::string Label("Stream "); Label += to_string(StreamIdx); std::string Value; - if (StreamIdx == StreamPDB) + if (StreamIdx == OldMSFDirectory) + Value = "Old MSF Directory"; + else if (StreamIdx == StreamPDB) Value = "PDB Stream"; else if (StreamIdx == StreamDBI) Value = "DBI Stream";