Index: test/DebugInfo/PDB/pdbdump-headers.test =================================================================== --- test/DebugInfo/PDB/pdbdump-headers.test +++ test/DebugInfo/PDB/pdbdump-headers.test @@ -1,6 +1,9 @@ ; RUN: llvm-pdbdump -raw-headers -raw-tpi-records -raw-tpi-record-bytes -raw-module-syms \ ; RUN: -raw-sym-record-bytes -raw-publics -raw-module-files -raw-stream-name=/names \ -; RUN: -raw-stream-summary -raw-ipi-records -raw-ipi-record-bytes %p/Inputs/empty.pdb \ +; RUN: -raw-stream-summary -raw-stream-blocks -raw-ipi-records -raw-ipi-record-bytes \ +; RUN: %p/Inputs/empty.pdb \ +; RUN: | FileCheck -check-prefix=EMPTY %s +; RUN: llvm-pdbdump -raw-all -raw-stream-name=/names %p/Inputs/empty.pdb \ ; RUN: | FileCheck -check-prefix=EMPTY %s ; RUN: llvm-pdbdump -raw-headers -raw-stream-name=/names -raw-modules -raw-module-files \ ; RUN: %p/Inputs/big-read.pdb | FileCheck -check-prefix=BIG %s @@ -37,6 +40,25 @@ ; EMPTY-NEXT: Stream 15: [TPI Hash] (308 bytes) ; EMPTY-NEXT: Stream 16: [IPI Hash] (68 bytes) ; EMPTY-NEXT: ] +; EMPTY-NEXT: StreamBlocks [ +; EMPTY-NEXT: Stream 0: [8] +; EMPTY-NEXT: Stream 1: [19] +; EMPTY-NEXT: Stream 2: [18, 17] +; EMPTY-NEXT: Stream 3: [14] +; EMPTY-NEXT: Stream 4: [20] +; EMPTY-NEXT: Stream 5: [] +; EMPTY-NEXT: Stream 6: [11] +; EMPTY-NEXT: Stream 7: [13] +; EMPTY-NEXT: Stream 8: [12] +; EMPTY-NEXT: Stream 9: [] +; EMPTY-NEXT: Stream 10: [10] +; EMPTY-NEXT: Stream 11: [15] +; EMPTY-NEXT: Stream 12: [6] +; EMPTY-NEXT: Stream 13: [16] +; EMPTY-NEXT: Stream 14: [7] +; EMPTY-NEXT: Stream 15: [21] +; EMPTY-NEXT: Stream 16: [22] +; EMPTY-NEXT: ] ; EMPTY-NEXT: PDB Stream { ; EMPTY-NEXT: Version: 20000404 ; EMPTY-NEXT: Signature: 0x54E507E2 Index: tools/llvm-pdbdump/llvm-pdbdump.cpp =================================================================== --- tools/llvm-pdbdump/llvm-pdbdump.cpp +++ tools/llvm-pdbdump/llvm-pdbdump.cpp @@ -147,6 +147,10 @@ DumpSymRecordBytes("raw-sym-record-bytes", cl::desc("dump CodeView symbol record raw bytes"), cl::cat(NativeOtions)); +cl::opt + RawAll("raw-all", + cl::desc("Implies all other options in 'Native Options' category"), + cl::cat(NativeOtions)); cl::list ExcludeTypes("exclude-types", @@ -823,6 +827,21 @@ opts::Lines = true; } + if (opts::RawAll) { + opts::DumpHeaders = true; + opts::DumpModules = true; + opts::DumpModuleFiles = true; + opts::DumpModuleSyms = true; + opts::DumpPublics = true; + opts::DumpStreamSummary = true; + opts::DumpStreamBlocks = true; + opts::DumpSymRecordBytes = true; + opts::DumpTpiRecordBytes = true; + opts::DumpTpiRecords = true; + opts::DumpIpiRecords = true; + opts::DumpIpiRecordBytes = true; + } + // When adding filters for excluded compilands and types, we need to remember // that these are regexes. So special characters such as * and \ need to be // escaped in the regex. In the case of a literal \, this means it needs to