[llvm] r305032 - [llvm-pdbdump] Improve consistency among subcommands.
Zachary Turner via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 8 16:39:33 PDT 2017
Author: zturner
Date: Thu Jun 8 18:39:33 2017
New Revision: 305032
URL: http://llvm.org/viewvc/llvm-project?rev=305032&view=rev
Log:
[llvm-pdbdump] Improve consistency among subcommands.
The pdb2yaml and raw subcommands did something very
similar but with a different output format, and they
used a lot of the same command line options, but each
one re-implemented the command line option with slightly
different spellings / options. This patch merges them
together into a single definition which is shared by
both subcommands. This new syntax also allows for more
flexibility in the way debug subsections are dumped.
Differential Revision: https://reviews.llvm.org/D33996
Added:
llvm/trunk/test/DebugInfo/PDB/Inputs/debug-subsections.yaml
llvm/trunk/test/DebugInfo/PDB/pdbdump-debug-subsections.test
Removed:
llvm/trunk/test/DebugInfo/PDB/Inputs/cross-module-import-export.yaml
llvm/trunk/test/DebugInfo/PDB/Inputs/simple-line-info.yaml
llvm/trunk/test/DebugInfo/PDB/cross-module-import-export.test
llvm/trunk/test/DebugInfo/PDB/pdbdump-yaml-lineinfo-write.test
llvm/trunk/test/DebugInfo/PDB/pdbdump-yaml-lineinfo.test
Modified:
llvm/trunk/test/DebugInfo/PDB/pdb-minimal-construct.test
llvm/trunk/test/DebugInfo/PDB/pdb-yaml-symbols.test
llvm/trunk/test/DebugInfo/PDB/pdbdump-headers.test
llvm/trunk/test/DebugInfo/PDB/pdbdump-readwrite.test
llvm/trunk/test/DebugInfo/PDB/pdbdump-source-names.test
llvm/trunk/test/DebugInfo/PDB/pdbdump-write.test
llvm/trunk/tools/llvm-pdbdump/LLVMOutputStyle.cpp
llvm/trunk/tools/llvm-pdbdump/YAMLOutputStyle.cpp
llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp
llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.h
Removed: llvm/trunk/test/DebugInfo/PDB/Inputs/cross-module-import-export.yaml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/PDB/Inputs/cross-module-import-export.yaml?rev=305031&view=auto
==============================================================================
--- llvm/trunk/test/DebugInfo/PDB/Inputs/cross-module-import-export.yaml (original)
+++ llvm/trunk/test/DebugInfo/PDB/Inputs/cross-module-import-export.yaml (removed)
@@ -1,24 +0,0 @@
-DbiStream:
- Modules:
- - Module: 'Foo.obj'
- ObjFile: 'Foo.obj'
- Subsections:
- - !CrossModuleExports
- Exports:
- - LocalId: 4852
- GlobalId: 9283
- - LocalId: 2147487875
- GlobalId: 9123
- - Module: 'Bar.obj'
- ObjFile: 'Bar.obj'
- Subsections:
- - !CrossModuleExports
- Exports:
- - LocalId: 4265
- GlobalId: 6097
- - LocalId: 4297
- GlobalId: 4677
- - !CrossModuleImports
- Imports:
- - Module: 'Foo.obj'
- Imports: [ 4852, 2147487875 ]
Added: llvm/trunk/test/DebugInfo/PDB/Inputs/debug-subsections.yaml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/PDB/Inputs/debug-subsections.yaml?rev=305032&view=auto
==============================================================================
--- llvm/trunk/test/DebugInfo/PDB/Inputs/debug-subsections.yaml (added)
+++ llvm/trunk/test/DebugInfo/PDB/Inputs/debug-subsections.yaml Thu Jun 8 18:39:33 2017
@@ -0,0 +1,64 @@
+DbiStream:
+ Modules:
+ - Module: 'Foo.obj'
+ ObjFile: 'Foo.obj'
+ Subsections:
+ - !CrossModuleExports
+ Exports:
+ - LocalId: 4852
+ GlobalId: 9283
+ - LocalId: 2147487875
+ GlobalId: 9123
+ - Module: 'Bar.obj'
+ ObjFile: 'Bar.obj'
+ Subsections:
+ - !CrossModuleExports
+ Exports:
+ - LocalId: 4265
+ GlobalId: 6097
+ - LocalId: 4297
+ GlobalId: 4677
+ - !CrossModuleImports
+ Imports:
+ - Module: 'Foo.obj'
+ Imports: [ 4852, 2147487875 ]
+ - Module: 'd:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj'
+ ObjFile: 'd:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj'
+ SourceFiles:
+ - 'd:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp'
+ Subsections:
+ - !FileChecksums
+ Checksums:
+ - FileName: 'd:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp'
+ Kind: MD5
+ Checksum: A0A5BD0D3ECD93FC29D19DE826FBF4BC
+ - FileName: 'f:\dd\externalapis\windows\10\sdk\inc\winerror.h'
+ Kind: MD5
+ Checksum: 1154D69F5B2650196E1FC34F4134E56B
+ - !Lines
+ CodeSize: 10
+ Flags: [ ]
+ RelocOffset: 16
+ RelocSegment: 1
+ Blocks:
+ - FileName: 'd:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp'
+ Lines:
+ - Offset: 0
+ LineStart: 5
+ IsStatement: true
+ EndDelta: 0
+ - Offset: 3
+ LineStart: 6
+ IsStatement: true
+ EndDelta: 0
+ - Offset: 8
+ LineStart: 7
+ IsStatement: true
+ EndDelta: 0
+ Columns:
+ - !InlineeLines
+ HasExtraFiles: false
+ Sites:
+ - FileName: 'f:\dd\externalapis\windows\10\sdk\inc\winerror.h'
+ LineNum: 26950
+ Inlinee: 22767
Removed: llvm/trunk/test/DebugInfo/PDB/Inputs/simple-line-info.yaml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/PDB/Inputs/simple-line-info.yaml?rev=305031&view=auto
==============================================================================
--- llvm/trunk/test/DebugInfo/PDB/Inputs/simple-line-info.yaml (original)
+++ llvm/trunk/test/DebugInfo/PDB/Inputs/simple-line-info.yaml (removed)
@@ -1,44 +0,0 @@
----
-DbiStream:
- Modules:
- - Module: 'd:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj'
- ObjFile: 'd:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj'
- SourceFiles:
- - 'd:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp'
- Subsections:
- - !FileChecksums
- Checksums:
- - FileName: 'd:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp'
- Kind: MD5
- Checksum: A0A5BD0D3ECD93FC29D19DE826FBF4BC
- - FileName: 'f:\dd\externalapis\windows\10\sdk\inc\winerror.h'
- Kind: MD5
- Checksum: 1154D69F5B2650196E1FC34F4134E56B
- - !Lines
- CodeSize: 10
- Flags: [ ]
- RelocOffset: 16
- RelocSegment: 1
- Blocks:
- - FileName: 'd:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp'
- Lines:
- - Offset: 0
- LineStart: 5
- IsStatement: true
- EndDelta: 0
- - Offset: 3
- LineStart: 6
- IsStatement: true
- EndDelta: 0
- - Offset: 8
- LineStart: 7
- IsStatement: true
- EndDelta: 0
- Columns:
- - !InlineeLines
- HasExtraFiles: false
- Sites:
- - FileName: 'f:\dd\externalapis\windows\10\sdk\inc\winerror.h'
- LineNum: 26950
- Inlinee: 22767
-...
Removed: llvm/trunk/test/DebugInfo/PDB/cross-module-import-export.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/PDB/cross-module-import-export.test?rev=305031&view=auto
==============================================================================
--- llvm/trunk/test/DebugInfo/PDB/cross-module-import-export.test (original)
+++ llvm/trunk/test/DebugInfo/PDB/cross-module-import-export.test (removed)
@@ -1,60 +0,0 @@
-; RUN: llvm-pdbdump yaml2pdb -pdb=%t.pdb %p/Inputs/cross-module-import-export.yaml
-
-; RUN: llvm-pdbdump pdb2yaml -all -no-file-headers %t.pdb | FileCheck --check-prefix=YAML %s
-; RUN: llvm-pdbdump raw -all %t.pdb | FileCheck --check-prefix=RAW %s
-
-YAML: Modules:
-YAML-NEXT: - Module: Foo.obj
-YAML-NEXT: ObjFile: Foo.obj
-YAML-NEXT: Subsections:
-YAML-NEXT: - !CrossModuleExports
-YAML-NEXT: Exports:
-YAML-NEXT: - LocalId: 4852
-YAML-NEXT: GlobalId: 9283
-YAML-NEXT: - LocalId: 2147487875
-YAML-NEXT: GlobalId: 9123
-YAML: - Module: Bar.obj
-YAML-NEXT: ObjFile: Bar.obj
-YAML-NEXT: Subsections:
-YAML-NEXT: - !CrossModuleExports
-YAML-NEXT: Exports:
-YAML-NEXT: - LocalId: 4265
-YAML-NEXT: GlobalId: 6097
-YAML-NEXT: - LocalId: 4297
-YAML-NEXT: GlobalId: 4677
-YAML-NEXT: - !CrossModuleImports
-YAML-NEXT: Imports:
-YAML-NEXT: - Module: Foo.obj
-YAML-NEXT: Imports: [ 4852, 2147487875 ]
-
-
-RAW: DBI Stream {
-RAW: Modules [
-RAW-NEXT: {
-RAW-NEXT: Name: Foo.obj
-RAW: LineInfo [
-RAW-NEXT: CrossModuleExports {
-RAW-NEXT: Local: 0x12F4
-RAW-NEXT: Global: 0x2443
-RAW-NEXT: Local: 0x80001083
-RAW-NEXT: Global: 0x23A3
-RAW-NEXT: }
-RAW-NEXT: ]
-RAW-NEXT: }
-RAW-NEXT: {
-RAW-NEXT: Name: Bar.obj
-RAW: LineInfo [
-RAW-NEXT: CrossModuleExports {
-RAW-NEXT: Local: 0x10A9
-RAW-NEXT: Global: 0x17D1
-RAW-NEXT: Local: 0x10C9
-RAW-NEXT: Global: 0x1245
-RAW-NEXT: }
-RAW-NEXT: CrossModuleImports {
-RAW-NEXT: Module: Foo.obj
-RAW-NEXT: Imports: [0x12F4, 0x80001083]
-RAW-NEXT: }
-RAW-NEXT: ]
-RAW-NEXT: }
-RAW-NEXT: ]
-RAW-NEXT: }
\ No newline at end of file
Modified: llvm/trunk/test/DebugInfo/PDB/pdb-minimal-construct.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/PDB/pdb-minimal-construct.test?rev=305032&r1=305031&r2=305032&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/PDB/pdb-minimal-construct.test (original)
+++ llvm/trunk/test/DebugInfo/PDB/pdb-minimal-construct.test Thu Jun 8 18:39:33 2017
@@ -1,11 +1,11 @@
-; This testcase verifies that we can produce a minimal PDB, while
-; serving as an example for how to construct a minimal PDB for other
-; testcases. It takes as input a small fragment of hand-written yaml
-; that specifies nothing about the PDB other than a definition of one
-; symbol that it contains. Then it produces a PDB, and uses the
-; resulting PDB to go back to yaml, and verify that the resulting yaml
-; is identical.
-
-; RUN: llvm-pdbdump yaml2pdb -pdb=%t.pdb %p/Inputs/one-symbol.yaml
-; RUN: llvm-pdbdump pdb2yaml -minimal -dbi-module-syms -no-file-headers %t.pdb > %t.pdb.yaml
-; RUN: diff -b %p/Inputs/one-symbol.yaml %t.pdb.yaml
+; This testcase verifies that we can produce a minimal PDB, while
+; serving as an example for how to construct a minimal PDB for other
+; testcases. It takes as input a small fragment of hand-written yaml
+; that specifies nothing about the PDB other than a definition of one
+; symbol that it contains. Then it produces a PDB, and uses the
+; resulting PDB to go back to yaml, and verify that the resulting yaml
+; is identical.
+
+; RUN: llvm-pdbdump yaml2pdb -pdb=%t.pdb %p/Inputs/one-symbol.yaml
+; RUN: llvm-pdbdump pdb2yaml -minimal -module-syms -no-file-headers %t.pdb > %t.pdb.yaml
+; RUN: diff -b %p/Inputs/one-symbol.yaml %t.pdb.yaml
Modified: llvm/trunk/test/DebugInfo/PDB/pdb-yaml-symbols.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/PDB/pdb-yaml-symbols.test?rev=305032&r1=305031&r2=305032&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/PDB/pdb-yaml-symbols.test (original)
+++ llvm/trunk/test/DebugInfo/PDB/pdb-yaml-symbols.test Thu Jun 8 18:39:33 2017
@@ -1,4 +1,4 @@
-; RUN: llvm-pdbdump pdb2yaml -dbi-module-syms %p/Inputs/empty.pdb \
+; RUN: llvm-pdbdump pdb2yaml -module-syms %p/Inputs/empty.pdb \
; RUN: | FileCheck -check-prefix=YAML %s
Added: llvm/trunk/test/DebugInfo/PDB/pdbdump-debug-subsections.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/PDB/pdbdump-debug-subsections.test?rev=305032&view=auto
==============================================================================
--- llvm/trunk/test/DebugInfo/PDB/pdbdump-debug-subsections.test (added)
+++ llvm/trunk/test/DebugInfo/PDB/pdbdump-debug-subsections.test Thu Jun 8 18:39:33 2017
@@ -0,0 +1,162 @@
+; RUN: llvm-pdbdump yaml2pdb -pdb=%t.pdb %p/Inputs/debug-subsections.yaml
+
+; RUN: llvm-pdbdump pdb2yaml -all -no-file-headers %t.pdb | FileCheck --check-prefix=YAML %s
+; RUN: llvm-pdbdump raw -subsections=all %t.pdb | FileCheck --check-prefix=RAW %s
+
+YAML: Modules:
+YAML-NEXT: - Module: Foo.obj
+YAML-NEXT: ObjFile: Foo.obj
+YAML-NEXT: Subsections:
+YAML-NEXT: - !CrossModuleExports
+YAML-NEXT: Exports:
+YAML-NEXT: - LocalId: 4852
+YAML-NEXT: GlobalId: 9283
+YAML-NEXT: - LocalId: 2147487875
+YAML-NEXT: GlobalId: 9123
+YAML: - Module: Bar.obj
+YAML-NEXT: ObjFile: Bar.obj
+YAML-NEXT: Subsections:
+YAML-NEXT: - !CrossModuleExports
+YAML-NEXT: Exports:
+YAML-NEXT: - LocalId: 4265
+YAML-NEXT: GlobalId: 6097
+YAML-NEXT: - LocalId: 4297
+YAML-NEXT: GlobalId: 4677
+YAML-NEXT: - !CrossModuleImports
+YAML-NEXT: Imports:
+YAML-NEXT: - Module: Foo.obj
+YAML-NEXT: Imports: [ 4852, 2147487875 ]
+YAML: - Module: 'd:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj'
+YAML-NEXT: ObjFile: 'd:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj'
+YAML-NEXT: SourceFiles:
+YAML-NEXT: - 'd:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp'
+YAML-NEXT: Subsections:
+YAML-NEXT: - !FileChecksums
+YAML-NEXT: Checksums:
+YAML-NEXT: - FileName: 'd:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp'
+YAML-NEXT: Kind: MD5
+YAML-NEXT: Checksum: A0A5BD0D3ECD93FC29D19DE826FBF4BC
+YAML-NEXT: - FileName: 'f:\dd\externalapis\windows\10\sdk\inc\winerror.h'
+YAML-NEXT: Kind: MD5
+YAML-NEXT: Checksum: 1154D69F5B2650196E1FC34F4134E56B
+YAML-NEXT: - !Lines
+YAML-NEXT: CodeSize: 10
+YAML-NEXT: Flags: [ ]
+YAML-NEXT: RelocOffset: 16
+YAML-NEXT: RelocSegment: 1
+YAML-NEXT: Blocks:
+YAML-NEXT: - FileName: 'd:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp'
+YAML-NEXT: Lines:
+YAML-NEXT: - Offset: 0
+YAML-NEXT: LineStart: 5
+YAML-NEXT: IsStatement: true
+YAML-NEXT: EndDelta: 0
+YAML-NEXT: - Offset: 3
+YAML-NEXT: LineStart: 6
+YAML-NEXT: IsStatement: true
+YAML-NEXT: EndDelta: 0
+YAML-NEXT: - Offset: 8
+YAML-NEXT: LineStart: 7
+YAML-NEXT: IsStatement: true
+YAML-NEXT: EndDelta: 0
+YAML-NEXT: Columns:
+YAML-NEXT: - !InlineeLines
+YAML-NEXT: HasExtraFiles: false
+YAML-NEXT: Sites:
+YAML-NEXT: - FileName: 'f:\dd\externalapis\windows\10\sdk\inc\winerror.h'
+YAML-NEXT: LineNum: 26950
+YAML-NEXT: Inlinee: 22767
+
+
+RAW: DBI Stream {
+RAW: Modules [
+RAW-NEXT: {
+RAW-NEXT: Name: Foo.obj
+RAW: Subsections [
+RAW-NEXT: CrossModuleExports {
+RAW-NEXT: Local: 0x12F4
+RAW-NEXT: Global: 0x2443
+RAW-NEXT: Local: 0x80001083
+RAW-NEXT: Global: 0x23A3
+RAW-NEXT: }
+RAW-NEXT: ]
+RAW-NEXT: }
+RAW-NEXT: {
+RAW-NEXT: Name: Bar.obj
+RAW: Subsections [
+RAW-NEXT: CrossModuleExports {
+RAW-NEXT: Local: 0x10A9
+RAW-NEXT: Global: 0x17D1
+RAW-NEXT: Local: 0x10C9
+RAW-NEXT: Global: 0x1245
+RAW-NEXT: }
+RAW-NEXT: CrossModuleImports {
+RAW-NEXT: Module: Foo.obj
+RAW-NEXT: Imports: [0x12F4, 0x80001083]
+RAW-NEXT: }
+RAW-NEXT: ]
+RAW-NEXT: }
+RAW-NEXT: {
+RAW-NEXT: Name: d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj
+RAW: Subsections [
+RAW-NEXT: FileChecksums {
+RAW-NEXT: Checksum {
+RAW-NEXT: FileName: d:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp
+RAW-NEXT: Kind: MD5 (0x1)
+RAW-NEXT: Checksum (
+RAW-NEXT: 0000: A0A5BD0D 3ECD93FC 29D19DE8 26FBF4BC |....>...)...&...|
+RAW-NEXT: )
+RAW-NEXT: }
+RAW-NEXT: Checksum {
+RAW-NEXT: FileName: f:\dd\externalapis\windows\10\sdk\inc\winerror.h
+RAW-NEXT: Kind: MD5 (0x1)
+RAW-NEXT: Checksum (
+RAW-NEXT: 0000: 1154D69F 5B265019 6E1FC34F 4134E56B |.T..[&P.n..OA4.k|
+RAW-NEXT: )
+RAW-NEXT: }
+RAW-NEXT: }
+RAW-NEXT: Lines {
+RAW-NEXT: Block {
+RAW-NEXT: RelocSegment: 1
+RAW-NEXT: RelocOffset: 16
+RAW-NEXT: CodeSize: 10
+RAW-NEXT: HasColumns: No
+RAW-NEXT: Lines {
+RAW-NEXT: FileName: d:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp
+RAW-NEXT: Line {
+RAW-NEXT: Offset: 0
+RAW-NEXT: LineNumberStart: 5
+RAW-NEXT: EndDelta: 0
+RAW-NEXT: IsStatement: Yes
+RAW-NEXT: }
+RAW-NEXT: Line {
+RAW-NEXT: Offset: 3
+RAW-NEXT: LineNumberStart: 6
+RAW-NEXT: EndDelta: 0
+RAW-NEXT: IsStatement: Yes
+RAW-NEXT: }
+RAW-NEXT: Line {
+RAW-NEXT: Offset: 8
+RAW-NEXT: LineNumberStart: 7
+RAW-NEXT: EndDelta: 0
+RAW-NEXT: IsStatement: Yes
+RAW-NEXT: }
+RAW-NEXT: }
+RAW-NEXT: }
+RAW-NEXT: }
+RAW-NEXT: InlineeLines {
+RAW-NEXT: HasExtraFiles: No
+RAW-NEXT: Lines [
+RAW-NEXT: Inlinee {
+RAW-NEXT: FileName: f:\dd\externalapis\windows\10\sdk\inc\winerror.h
+RAW-NEXT: Function {
+RAW-NEXT: Index: 0x58ef (unknown function)
+RAW-NEXT: }
+RAW-NEXT: SourceLine: 26950
+RAW-NEXT: }
+RAW-NEXT: ]
+RAW-NEXT: }
+RAW-NEXT: ]
+RAW-NEXT: }
+RAW-NEXT: ]
+RAW-NEXT:}
Modified: llvm/trunk/test/DebugInfo/PDB/pdbdump-headers.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/PDB/pdbdump-headers.test?rev=305032&r1=305031&r2=305032&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/PDB/pdbdump-headers.test (original)
+++ llvm/trunk/test/DebugInfo/PDB/pdbdump-headers.test Thu Jun 8 18:39:33 2017
@@ -1,7 +1,7 @@
; RUN: llvm-pdbdump raw -headers -string-table -tpi-records -tpi-record-bytes -module-syms \
; RUN: -sym-record-bytes -globals -publics -module-files \
; RUN: -stream-summary -stream-blocks -ipi-records -ipi-record-bytes \
-; RUN: -section-contribs -section-map -section-headers -line-info \
+; RUN: -section-contribs -section-map -section-headers -subsections=all \
; RUN: -tpi-hash -fpo -page-stats %p/Inputs/empty.pdb | FileCheck -check-prefix=EMPTY %s
; RUN: llvm-pdbdump raw -all %p/Inputs/empty.pdb | FileCheck -check-prefix=ALL %s
; RUN: llvm-pdbdump raw -headers -modules -module-files \
@@ -484,7 +484,7 @@
; EMPTY-NEXT: )
; EMPTY-NEXT: }
; EMPTY-NEXT: ]
-; EMPTY-NEXT: LineInfo [
+; EMPTY-NEXT: Subsections [
; EMPTY-NEXT: FileChecksums {
; EMPTY-NEXT: Checksum {
; EMPTY-NEXT: FileName: d:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp
@@ -757,7 +757,7 @@
; EMPTY-NEXT: )
; EMPTY-NEXT: }
; EMPTY-NEXT: ]
-; EMPTY-NEXT: LineInfo [
+; EMPTY-NEXT: Subsections [
; EMPTY-NEXT: ]
; EMPTY-NEXT: }
; EMPTY-NEXT: ]
Modified: llvm/trunk/test/DebugInfo/PDB/pdbdump-readwrite.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/PDB/pdbdump-readwrite.test?rev=305032&r1=305031&r2=305032&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/PDB/pdbdump-readwrite.test (original)
+++ llvm/trunk/test/DebugInfo/PDB/pdbdump-readwrite.test Thu Jun 8 18:39:33 2017
@@ -1,5 +1,5 @@
-RUN: llvm-pdbdump pdb2yaml -dbi-module-info -dbi-module-source-info \
-RUN: -dbi-stream -pdb-stream -string-table -tpi-stream -stream-directory \
+RUN: llvm-pdbdump pdb2yaml -modules -module-files -dbi-stream \
+RUN: -pdb-stream -string-table -tpi-stream -stream-directory \
RUN: -stream-metadata %p/Inputs/empty.pdb > %t.1
RUN: llvm-pdbdump yaml2pdb -pdb=%t.2 %t.1
Modified: llvm/trunk/test/DebugInfo/PDB/pdbdump-source-names.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/PDB/pdbdump-source-names.test?rev=305032&r1=305031&r2=305032&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/PDB/pdbdump-source-names.test (original)
+++ llvm/trunk/test/DebugInfo/PDB/pdbdump-source-names.test Thu Jun 8 18:39:33 2017
@@ -7,10 +7,10 @@
# pass if alignment is implemented correctly.
RUN: llvm-pdbdump yaml2pdb -pdb=%T/source-names-1.pdb %p/Inputs/source-names-1.yaml
-RUN: llvm-pdbdump pdb2yaml -dbi-module-source-info %T/source-names-1.pdb \
+RUN: llvm-pdbdump pdb2yaml -module-files %T/source-names-1.pdb \
RUN: | FileCheck -check-prefix=CHECK1 %s
RUN: llvm-pdbdump yaml2pdb -pdb=%T/source-names-2.pdb %p/Inputs/source-names-2.yaml
-RUN: llvm-pdbdump pdb2yaml -dbi-module-source-info %T/source-names-2.pdb \
+RUN: llvm-pdbdump pdb2yaml -module-files %T/source-names-2.pdb \
RUN: | FileCheck -check-prefix=CHECK2 %s
CHECK1: SourceFiles:
Modified: llvm/trunk/test/DebugInfo/PDB/pdbdump-write.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/PDB/pdbdump-write.test?rev=305032&r1=305031&r2=305032&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/PDB/pdbdump-write.test (original)
+++ llvm/trunk/test/DebugInfo/PDB/pdbdump-write.test Thu Jun 8 18:39:33 2017
@@ -11,10 +11,10 @@
; (for example if we don't write the entire stream)
;
; RUN: llvm-pdbdump pdb2yaml -stream-metadata -stream-directory \
-; RUN: -pdb-stream -tpi-stream -dbi-module-syms %p/Inputs/empty.pdb > %t.1
+; RUN: -pdb-stream -tpi-stream -module-syms %p/Inputs/empty.pdb > %t.1
; RUN: llvm-pdbdump yaml2pdb -pdb=%t.2 %t.1
; RUN: llvm-pdbdump pdb2yaml -pdb-stream -tpi-stream \
-; RUN: -dbi-module-syms -no-file-headers %p/Inputs/empty.pdb > %t.3
+; RUN: -module-syms -no-file-headers %p/Inputs/empty.pdb > %t.3
; RUN: llvm-pdbdump pdb2yaml -pdb-stream -tpi-stream \
-; RUN: -dbi-module-syms -no-file-headers %t.2 > %t.4
+; RUN: -module-syms -no-file-headers %t.2 > %t.4
; RUN: diff %t.3 %t.4
Removed: llvm/trunk/test/DebugInfo/PDB/pdbdump-yaml-lineinfo-write.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/PDB/pdbdump-yaml-lineinfo-write.test?rev=305031&view=auto
==============================================================================
--- llvm/trunk/test/DebugInfo/PDB/pdbdump-yaml-lineinfo-write.test (original)
+++ llvm/trunk/test/DebugInfo/PDB/pdbdump-yaml-lineinfo-write.test (removed)
@@ -1,71 +0,0 @@
-; This testcase verifies that we can produce a PDB with line
-; information. It does this by describing some line information
-; manually in YAML, creating a PDB out of it, then dumping then
-; line information from the resulting PDB.
-
-; RUN: llvm-pdbdump yaml2pdb -pdb=%t.pdb %p/Inputs/simple-line-info.yaml
-; RUN: llvm-pdbdump raw -line-info %t.pdb | FileCheck -check-prefix=LINES %s
-
-LINES: Modules [
-LINES-NEXT: {
-LINES-NEXT: Name: d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj
-LINES: LineInfo [
-LINES-NEXT: FileChecksums {
-LINES-NEXT: Checksum {
-LINES-NEXT: FileName: d:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp
-LINES-NEXT: Kind: MD5 (0x1)
-LINES-NEXT: Checksum (
-LINES-NEXT: 0000: A0A5BD0D 3ECD93FC 29D19DE8 26FBF4BC |....>...)...&...|
-LINES-NEXT: )
-LINES-NEXT: }
-LINES-NEXT: Checksum {
-LINES-NEXT: FileName: f:\dd\externalapis\windows\10\sdk\inc\winerror.h
-LINES-NEXT: Kind: MD5 (0x1)
-LINES-NEXT: Checksum (
-LINES-NEXT: 0000: 1154D69F 5B265019 6E1FC34F 4134E56B |.T..[&P.n..OA4.k|
-LINES-NEXT: )
-LINES-NEXT: }
-LINES-NEXT: }
-LINES-NEXT: Lines {
-LINES-NEXT: Block {
-LINES-NEXT: RelocSegment: 1
-LINES-NEXT: RelocOffset: 16
-LINES-NEXT: CodeSize: 10
-LINES-NEXT: HasColumns: No
-LINES-NEXT: Lines {
-LINES-NEXT: FileName: d:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp
-LINES-NEXT: Line {
-LINES-NEXT: Offset: 0
-LINES-NEXT: LineNumberStart: 5
-LINES-NEXT: EndDelta: 0
-LINES-NEXT: IsStatement: Yes
-LINES-NEXT: }
-LINES-NEXT: Line {
-LINES-NEXT: Offset: 3
-LINES-NEXT: LineNumberStart: 6
-LINES-NEXT: EndDelta: 0
-LINES-NEXT: IsStatement: Yes
-LINES-NEXT: }
-LINES-NEXT: Line {
-LINES-NEXT: Offset: 8
-LINES-NEXT: LineNumberStart: 7
-LINES-NEXT: EndDelta: 0
-LINES-NEXT: IsStatement: Yes
-LINES-NEXT: }
-LINES-NEXT: }
-LINES-NEXT: }
-LINES-NEXT: }
-LINES-NEXT: InlineeLines {
-LINES-NEXT: HasExtraFiles: No
-LINES-NEXT: Lines [
-LINES-NEXT: Inlinee {
-LINES-NEXT: FileName: f:\dd\externalapis\windows\10\sdk\inc\winerror.h
-LINES-NEXT: Function {
-LINES-NEXT: Index: 0x58ef (unknown function)
-LINES-NEXT: }
-LINES-NEXT: SourceLine: 26950
-LINES-NEXT: }
-LINES-NEXT: ]
-LINES-NEXT: }
-LINES-NEXT: ]
-LINES-NEXT: }
Removed: llvm/trunk/test/DebugInfo/PDB/pdbdump-yaml-lineinfo.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/PDB/pdbdump-yaml-lineinfo.test?rev=305031&view=auto
==============================================================================
--- llvm/trunk/test/DebugInfo/PDB/pdbdump-yaml-lineinfo.test (original)
+++ llvm/trunk/test/DebugInfo/PDB/pdbdump-yaml-lineinfo.test (removed)
@@ -1,60 +0,0 @@
-; RUN: llvm-pdbdump pdb2yaml -dbi-module-lines %p/Inputs/empty.pdb \
-; RUN: | FileCheck -check-prefix=YAML %s
-
-
-YAML: ---
-YAML: MSF:
-YAML: SuperBlock:
-YAML: BlockSize: 4096
-YAML: FreeBlockMap: 2
-YAML: NumBlocks: 25
-YAML: NumDirectoryBytes: 136
-YAML: Unknown1: 0
-YAML: BlockMapAddr: 24
-YAML: NumDirectoryBlocks: 1
-YAML: DirectoryBlocks: [ 23 ]
-YAML: NumStreams: 0
-YAML: FileSize: 102400
-YAML: DbiStream:
-YAML: VerHeader: V70
-YAML: Age: 1
-YAML: BuildNumber: 35840
-YAML: PdbDllVersion: 31101
-YAML: PdbDllRbld: 0
-YAML: Flags: 1
-YAML: MachineType: x86
-YAML: Modules:
-YAML: - Module: 'd:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj'
-YAML: ObjFile: 'd:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj'
-YAML: SourceFiles:
-YAML: - 'd:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp'
-YAML: Subsections:
-YAML: - !Lines
-YAML: CodeSize: 10
-YAML: Flags: [ ]
-YAML: RelocOffset: 16
-YAML: RelocSegment: 1
-YAML: Blocks:
-YAML: - FileName: 'd:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp'
-YAML: Lines:
-YAML: - Offset: 0
-YAML: LineStart: 5
-YAML: IsStatement: true
-YAML: EndDelta: 0
-YAML: - Offset: 3
-YAML: LineStart: 6
-YAML: IsStatement: true
-YAML: EndDelta: 0
-YAML: - Offset: 8
-YAML: LineStart: 7
-YAML: IsStatement: true
-YAML: EndDelta: 0
-YAML: Columns:
-YAML: - !FileChecksums
-YAML: Checksums:
-YAML: - FileName: 'd:\src\llvm\test\debuginfo\pdb\inputs\empty.cpp'
-YAML: Kind: MD5
-YAML: Checksum: A0A5BD0D3ECD93FC29D19DE826FBF4BC
-YAML: - Module: '* Linker *'
-YAML: ObjFile: ''
-YAML: ...
\ No newline at end of file
Modified: llvm/trunk/tools/llvm-pdbdump/LLVMOutputStyle.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/LLVMOutputStyle.cpp?rev=305032&r1=305031&r2=305032&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-pdbdump/LLVMOutputStyle.cpp (original)
+++ llvm/trunk/tools/llvm-pdbdump/LLVMOutputStyle.cpp Thu Jun 8 18:39:33 2017
@@ -89,7 +89,8 @@ public:
: C13DebugFragmentVisitor(F), P(P), IPI(IPI) {}
Error handleLines() override {
- if (Lines.empty())
+ if (Lines.empty() ||
+ !opts::checkModuleSubsection(opts::ModuleSubsection::Lines))
return Error::success();
DictScope DD(P, "Lines");
@@ -132,7 +133,8 @@ public:
}
Error handleFileChecksums() override {
- if (!Checksums.hasValue())
+ if (!Checksums.hasValue() ||
+ !opts::checkModuleSubsection(opts::ModuleSubsection::FileChecksums))
return Error::success();
DictScope DD(P, "FileChecksums");
@@ -149,7 +151,8 @@ public:
}
Error handleInlineeLines() override {
- if (InlineeLines.empty())
+ if (InlineeLines.empty() ||
+ !opts::checkModuleSubsection(opts::ModuleSubsection::InlineeLines))
return Error::success();
DictScope D(P, "InlineeLines");
@@ -177,6 +180,10 @@ public:
}
Error handleCrossModuleExports() override {
+ if (CrossExports.empty() ||
+ !opts::checkModuleSubsection(opts::ModuleSubsection::CrossScopeExports))
+ return Error::success();
+
for (const auto &M : CrossExports) {
DictScope D(P, "CrossModuleExports");
for (const auto &E : M) {
@@ -188,6 +195,10 @@ public:
}
Error handleCrossModuleImports() override {
+ if (CrossImports.empty() ||
+ !opts::checkModuleSubsection(opts::ModuleSubsection::CrossScopeImports))
+ return Error::success();
+
for (const auto &M : CrossImports) {
DictScope D(P, "CrossModuleImports");
for (const auto &ImportGroup : M) {
@@ -755,8 +766,10 @@ LLVMOutputStyle::initializeTypeDatabase(
}
Error LLVMOutputStyle::dumpDbiStream() {
- bool DumpModules = opts::raw::DumpModules || opts::raw::DumpModuleSyms ||
- opts::raw::DumpModuleFiles || opts::raw::DumpLineInfo;
+ bool DumpModules = opts::shared::DumpModules ||
+ opts::shared::DumpModuleSyms ||
+ opts::shared::DumpModuleFiles ||
+ !opts::shared::DumpModuleSubsections.empty();
if (!opts::raw::DumpHeaders && !DumpModules)
return Error::success();
if (!File.hasPDBDbiStream()) {
@@ -806,7 +819,7 @@ Error LLVMOutputStyle::dumpDbiStream() {
P.printNumber("Symbol Byte Size", Modi.getSymbolDebugInfoByteSize());
P.printNumber("Type Server Index", Modi.getTypeServerIndex());
P.printBoolean("Has EC Info", Modi.hasECInfo());
- if (opts::raw::DumpModuleFiles) {
+ if (opts::shared::DumpModuleFiles) {
std::string FileListName = to_string(Modules.getSourceFileCount(I)) +
" Contributing Source Files";
ListScope LL(P, FileListName);
@@ -815,8 +828,9 @@ Error LLVMOutputStyle::dumpDbiStream() {
}
bool HasModuleDI = (Modi.getModuleStreamIndex() < File.getNumStreams());
bool ShouldDumpSymbols =
- (opts::raw::DumpModuleSyms || opts::raw::DumpSymRecordBytes);
- if (HasModuleDI && (ShouldDumpSymbols || opts::raw::DumpLineInfo)) {
+ (opts::shared::DumpModuleSyms || opts::raw::DumpSymRecordBytes);
+ if (HasModuleDI &&
+ (ShouldDumpSymbols || !opts::shared::DumpModuleSubsections.empty())) {
auto ModStreamData = MappedBlockStream::createIndexedStream(
File.getMsfLayout(), File.getMsfBuffer(),
Modi.getModuleStreamIndex(), File.getAllocator());
@@ -837,7 +851,7 @@ Error LLVMOutputStyle::dumpDbiStream() {
bool HadError = false;
for (auto S : ModS.symbols(&HadError)) {
DictScope LL(P, "");
- if (opts::raw::DumpModuleSyms) {
+ if (opts::shared::DumpModuleSyms) {
if (auto EC = SD.dump(S)) {
llvm::consumeError(std::move(EC));
HadError = true;
@@ -852,8 +866,8 @@ Error LLVMOutputStyle::dumpDbiStream() {
raw_error_code::corrupt_file,
"DBI stream contained corrupt symbol record");
}
- if (opts::raw::DumpLineInfo) {
- ListScope SS(P, "LineInfo");
+ if (!opts::shared::DumpModuleSubsections.empty()) {
+ ListScope SS(P, "Subsections");
auto ExpectedTypes = initializeTypeDatabase(StreamIPI);
if (!ExpectedTypes)
return ExpectedTypes.takeError();
Modified: llvm/trunk/tools/llvm-pdbdump/YAMLOutputStyle.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/YAMLOutputStyle.cpp?rev=305032&r1=305031&r2=305032&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-pdbdump/YAMLOutputStyle.cpp (original)
+++ llvm/trunk/tools/llvm-pdbdump/YAMLOutputStyle.cpp Thu Jun 8 18:39:33 2017
@@ -38,39 +38,8 @@ YAMLOutputStyle::YAMLOutputStyle(PDBFile
}
Error YAMLOutputStyle::dump() {
- if (opts::pdb2yaml::All) {
- opts::pdb2yaml::StreamMetadata = true;
- opts::pdb2yaml::StreamDirectory = true;
- opts::pdb2yaml::PdbStream = true;
- opts::pdb2yaml::StringTable = true;
- opts::pdb2yaml::DbiStream = true;
- opts::pdb2yaml::DbiModuleInfo = true;
- opts::pdb2yaml::DbiModuleSyms = true;
- opts::pdb2yaml::DbiModuleSourceFileInfo = true;
- opts::pdb2yaml::DbiModuleSourceLineInfo = true;
- opts::pdb2yaml::TpiStream = true;
- opts::pdb2yaml::IpiStream = true;
- }
-
if (opts::pdb2yaml::StreamDirectory)
opts::pdb2yaml::StreamMetadata = true;
- if (opts::pdb2yaml::DbiModuleSyms)
- opts::pdb2yaml::DbiModuleInfo = true;
-
- if (opts::pdb2yaml::DbiModuleSourceLineInfo)
- opts::pdb2yaml::DbiModuleSourceFileInfo = true;
-
- if (opts::pdb2yaml::DbiModuleSourceFileInfo)
- opts::pdb2yaml::DbiModuleInfo = true;
-
- if (opts::pdb2yaml::DbiModuleInfo)
- opts::pdb2yaml::DbiStream = true;
-
- // Some names from the module source file info get pulled from the string
- // table, so if we're writing module source info, we have to write the string
- // table as well.
- if (opts::pdb2yaml::DbiModuleSourceLineInfo)
- opts::pdb2yaml::StringTable = true;
if (auto EC = dumpFileHeaders())
return EC;
@@ -124,8 +93,8 @@ Error YAMLOutputStyle::dumpFileHeaders()
}
Error YAMLOutputStyle::dumpStringTable() {
- bool RequiresStringTable = opts::pdb2yaml::DbiModuleSourceFileInfo ||
- opts::pdb2yaml::DbiModuleSourceLineInfo;
+ bool RequiresStringTable = opts::shared::DumpModuleFiles ||
+ !opts::shared::DumpModuleSubsections.empty();
bool RequestedStringTable = opts::pdb2yaml::StringTable;
if (!RequiresStringTable && !RequestedStringTable)
return Error::success();
@@ -191,6 +160,24 @@ Error YAMLOutputStyle::dumpPDBStream() {
return Error::success();
}
+static opts::ModuleSubsection convertSubsectionKind(DebugSubsectionKind K) {
+ switch (K) {
+ case DebugSubsectionKind::CrossScopeExports:
+ return opts::ModuleSubsection::CrossScopeExports;
+ case DebugSubsectionKind::CrossScopeImports:
+ return opts::ModuleSubsection::CrossScopeImports;
+ case DebugSubsectionKind::FileChecksums:
+ return opts::ModuleSubsection::FileChecksums;
+ case DebugSubsectionKind::InlineeLines:
+ return opts::ModuleSubsection::InlineeLines;
+ case DebugSubsectionKind::Lines:
+ return opts::ModuleSubsection::Lines;
+ default:
+ return opts::ModuleSubsection::Unknown;
+ }
+ llvm_unreachable("Unreachable!");
+}
+
Error YAMLOutputStyle::dumpDbiStream() {
if (!opts::pdb2yaml::DbiStream)
return Error::success();
@@ -208,7 +195,7 @@ Error YAMLOutputStyle::dumpDbiStream() {
Obj.DbiStream->PdbDllRbld = DS.getPdbDllRbld();
Obj.DbiStream->PdbDllVersion = DS.getPdbDllVersion();
Obj.DbiStream->VerHeader = DS.getDbiVersion();
- if (opts::pdb2yaml::DbiModuleInfo) {
+ if (opts::shared::DumpModules) {
const auto &Modules = DS.modules();
for (uint32_t I = 0; I < Modules.getModuleCount(); ++I) {
DbiModuleDescriptor MI = Modules.getModuleDescriptor(I);
@@ -218,7 +205,7 @@ Error YAMLOutputStyle::dumpDbiStream() {
DMI.Mod = MI.getModuleName();
DMI.Obj = MI.getObjFileName();
- if (opts::pdb2yaml::DbiModuleSourceFileInfo) {
+ if (opts::shared::DumpModuleFiles) {
auto Files = Modules.source_files(I);
DMI.SourceFiles.assign(Files.begin(), Files.end());
}
@@ -238,13 +225,17 @@ Error YAMLOutputStyle::dumpDbiStream() {
auto ExpectedST = File.getStringTable();
if (!ExpectedST)
return ExpectedST.takeError();
- if (opts::pdb2yaml::DbiModuleSourceLineInfo &&
+ if (!opts::shared::DumpModuleSubsections.empty() &&
ModS.hasDebugSubsections()) {
auto ExpectedChecksums = ModS.findChecksumsSubsection();
if (!ExpectedChecksums)
return ExpectedChecksums.takeError();
for (const auto &SS : ModS.subsections()) {
+ opts::ModuleSubsection OptionKind = convertSubsectionKind(SS.kind());
+ if (!opts::checkModuleSubsection(OptionKind))
+ continue;
+
auto Converted =
CodeViewYAML::YAMLDebugSubsection::fromCodeViewSubection(
ExpectedST->getStringTable(), *ExpectedChecksums, SS);
@@ -254,7 +245,7 @@ Error YAMLOutputStyle::dumpDbiStream() {
}
}
- if (opts::pdb2yaml::DbiModuleSyms) {
+ if (opts::shared::DumpModuleSyms) {
DMI.Modi.emplace();
DMI.Modi->Signature = ModS.signature();
Modified: llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp?rev=305032&r1=305031&r2=305032&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp (original)
+++ llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp Thu Jun 8 18:39:33 2017
@@ -269,7 +269,6 @@ namespace raw {
cl::OptionCategory MsfOptions("MSF Container Options");
cl::OptionCategory TypeOptions("Type Record Options");
-cl::OptionCategory FileOptions("Module & File Options");
cl::OptionCategory SymbolOptions("Symbol Options");
cl::OptionCategory MiscOptions("Miscellaneous Options");
@@ -323,20 +322,9 @@ cl::opt<bool> DumpIpiRecordBytes(
cl::desc("dump CodeView type record raw bytes from IPI stream"),
cl::cat(TypeOptions), cl::sub(RawSubcommand));
-// MODULE & FILE OPTIONS
-cl::opt<bool> DumpModules("modules", cl::desc("dump compiland information"),
- cl::cat(FileOptions), cl::sub(RawSubcommand));
-cl::opt<bool> DumpModuleFiles("module-files", cl::desc("dump file information"),
- cl::cat(FileOptions), cl::sub(RawSubcommand));
-cl::opt<bool> DumpLineInfo("line-info",
- cl::desc("dump file and line information"),
- cl::cat(FileOptions), cl::sub(RawSubcommand));
-
// SYMBOL OPTIONS
cl::opt<bool> DumpGlobals("globals", cl::desc("dump globals stream data"),
cl::cat(SymbolOptions), cl::sub(RawSubcommand));
-cl::opt<bool> DumpModuleSyms("module-syms", cl::desc("dump module symbols"),
- cl::cat(SymbolOptions), cl::sub(RawSubcommand));
cl::opt<bool> DumpPublics("publics", cl::desc("dump Publics stream data"),
cl::cat(SymbolOptions), cl::sub(RawSubcommand));
cl::opt<bool>
@@ -381,11 +369,9 @@ namespace pdb2yaml {
cl::opt<bool> All("all",
cl::desc("Dump everything we know how to dump."),
cl::sub(PdbToYamlSubcommand), cl::init(false));
-cl::opt<bool>
- NoFileHeaders("no-file-headers",
- cl::desc("Do not dump MSF file headers (you will not be able "
- "to generate a fresh PDB from the resulting YAML)"),
- cl::sub(PdbToYamlSubcommand), cl::init(false));
+cl::opt<bool> NoFileHeaders("no-file-headers",
+ cl::desc("Do not dump MSF file headers"),
+ cl::sub(PdbToYamlSubcommand), cl::init(false));
cl::opt<bool> Minimal("minimal",
cl::desc("Don't write fields with default values"),
cl::sub(PdbToYamlSubcommand), cl::init(false));
@@ -406,29 +392,8 @@ cl::opt<bool> StringTable("string-table"
cl::sub(PdbToYamlSubcommand), cl::init(false));
cl::opt<bool> DbiStream("dbi-stream",
- cl::desc("Dump the DBI Stream (Stream 2)"),
+ cl::desc("Dump the DBI Stream Headers (Stream 2)"),
cl::sub(PdbToYamlSubcommand), cl::init(false));
-cl::opt<bool>
- DbiModuleInfo("dbi-module-info",
- cl::desc("Dump DBI Module Information (implies -dbi-stream)"),
- cl::sub(PdbToYamlSubcommand), cl::init(false));
-
-cl::opt<bool> DbiModuleSyms(
- "dbi-module-syms",
- cl::desc("Dump DBI Module Information (implies -dbi-module-info)"),
- cl::sub(PdbToYamlSubcommand), cl::init(false));
-
-cl::opt<bool> DbiModuleSourceFileInfo(
- "dbi-module-source-info",
- cl::desc(
- "Dump DBI Module Source File Information (implies -dbi-module-info)"),
- cl::sub(PdbToYamlSubcommand), cl::init(false));
-
-cl::opt<bool>
- DbiModuleSourceLineInfo("dbi-module-lines",
- cl::desc("Dump DBI Module Source Line Information "
- "(implies -dbi-module-source-info)"),
- cl::sub(PdbToYamlSubcommand), cl::init(false));
cl::opt<bool> TpiStream("tpi-stream",
cl::desc("Dump the TPI Stream (Stream 3)"),
@@ -443,6 +408,39 @@ cl::list<std::string> InputFilename(cl::
cl::sub(PdbToYamlSubcommand));
}
+namespace shared {
+cl::OptionCategory FileOptions("Module & File Options");
+
+// MODULE & FILE OPTIONS
+cl::opt<bool> DumpModules("modules", cl::desc("dump compiland information"),
+ cl::cat(FileOptions), cl::sub(RawSubcommand),
+ cl::sub(PdbToYamlSubcommand));
+cl::opt<bool> DumpModuleFiles("module-files", cl::desc("dump file information"),
+ cl::cat(FileOptions), cl::sub(RawSubcommand),
+ cl::sub(PdbToYamlSubcommand));
+cl::list<ModuleSubsection> DumpModuleSubsections(
+ "subsections", cl::ZeroOrMore, cl::CommaSeparated,
+ cl::desc("dump subsections from each module's debug stream"),
+ cl::values(
+ clEnumValN(
+ ModuleSubsection::CrossScopeExports, "cme",
+ "Cross module exports (DEBUG_S_CROSSSCOPEEXPORTS subsection)"),
+ clEnumValN(
+ ModuleSubsection::CrossScopeImports, "cmi",
+ "Cross module imports (DEBUG_S_CROSSSCOPEIMPORTS subsection)"),
+ clEnumValN(ModuleSubsection::FileChecksums, "fc",
+ "File checksums (DEBUG_S_CHECKSUMS subsection)"),
+ clEnumValN(ModuleSubsection::InlineeLines, "ilines",
+ "Inlinee lines (DEBUG_S_INLINEELINES subsection)"),
+ clEnumValN(ModuleSubsection::Lines, "lines",
+ "Lines (DEBUG_S_LINES subsection)"),
+ clEnumValN(ModuleSubsection::All, "all", "All known subsections")),
+ cl::cat(FileOptions), cl::sub(RawSubcommand), cl::sub(PdbToYamlSubcommand));
+cl::opt<bool> DumpModuleSyms("module-syms", cl::desc("dump module symbols"),
+ cl::cat(FileOptions), cl::sub(RawSubcommand),
+ cl::sub(PdbToYamlSubcommand));
+} // namespace shared
+
namespace analyze {
cl::opt<bool> StringTable("hash-collisions", cl::desc("Find hash collisions"),
cl::sub(AnalyzeSubcommand), cl::init(false));
@@ -463,6 +461,13 @@ cl::opt<std::string>
static ExitOnError ExitOnErr;
+bool opts::checkModuleSubsection(opts::ModuleSubsection MS) {
+ return any_of(opts::shared::DumpModuleSubsections,
+ [=](opts::ModuleSubsection M) {
+ return M == MS || M == opts::ModuleSubsection::All;
+ });
+}
+
static void yamlToPdb(StringRef Path) {
BumpPtrAllocator Allocator;
ErrorOr<std::unique_ptr<MemoryBuffer>> ErrorOrBuffer =
@@ -879,12 +884,29 @@ int main(int argc_, const char *argv_[])
}
}
+ if ((opts::RawSubcommand && opts::raw::RawAll) ||
+ (opts::PdbToYamlSubcommand && opts::pdb2yaml::All)) {
+ opts::shared::DumpModules = true;
+ opts::shared::DumpModuleFiles = true;
+ opts::shared::DumpModuleSyms = true;
+ opts::shared::DumpModuleSubsections.push_back(opts::ModuleSubsection::All);
+ if (llvm::is_contained(opts::shared::DumpModuleSubsections,
+ opts::ModuleSubsection::All)) {
+ opts::shared::DumpModuleSubsections.reset();
+ opts::shared::DumpModuleSubsections.push_back(
+ opts::ModuleSubsection::All);
+ }
+ }
+
+ if (opts::shared::DumpModuleSyms || opts::shared::DumpModuleFiles)
+ opts::shared::DumpModules = true;
+
+ if (opts::shared::DumpModules)
+ opts::pdb2yaml::DbiStream = true;
+
if (opts::RawSubcommand) {
if (opts::raw::RawAll) {
opts::raw::DumpHeaders = true;
- opts::raw::DumpModules = true;
- opts::raw::DumpModuleFiles = true;
- opts::raw::DumpModuleSyms = true;
opts::raw::DumpGlobals = true;
opts::raw::DumpPublics = true;
opts::raw::DumpSectionHeaders = true;
@@ -896,7 +918,6 @@ int main(int argc_, const char *argv_[])
opts::raw::DumpIpiRecords = true;
opts::raw::DumpSectionMap = true;
opts::raw::DumpSectionContribs = true;
- opts::raw::DumpLineInfo = true;
opts::raw::DumpFpo = true;
opts::raw::DumpStringTable = true;
}
@@ -908,6 +929,17 @@ int main(int argc_, const char *argv_[])
exit(1);
}
}
+ if (opts::PdbToYamlSubcommand) {
+ if (opts::pdb2yaml::All) {
+ opts::pdb2yaml::StreamMetadata = true;
+ opts::pdb2yaml::StreamDirectory = true;
+ opts::pdb2yaml::PdbStream = true;
+ opts::pdb2yaml::StringTable = true;
+ opts::pdb2yaml::DbiStream = true;
+ opts::pdb2yaml::TpiStream = true;
+ opts::pdb2yaml::IpiStream = true;
+ }
+ }
llvm::sys::InitializeCOMRAII COM(llvm::sys::COMThreadingMode::MultiThreaded);
Modified: llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.h?rev=305032&r1=305031&r2=305032&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.h (original)
+++ llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.h Thu Jun 8 18:39:33 2017
@@ -27,6 +27,25 @@ uint32_t getTypeLength(const PDBSymbolDa
namespace opts {
+enum class ModuleSubsection {
+ Unknown,
+ Lines,
+ FileChecksums,
+ InlineeLines,
+ CrossScopeImports,
+ CrossScopeExports,
+ All
+};
+
+bool checkModuleSubsection(ModuleSubsection Kind);
+
+template <typename... Ts>
+bool checkModuleSubsection(ModuleSubsection K1, ModuleSubsection K2,
+ Ts &&... Rest) {
+ return checkModuleSubsection(K1) ||
+ checkModuleSubsection(K2, std::forward<Ts>(Rest)...);
+}
+
namespace pretty {
enum class ClassDefinitionFormat { None, Layout, All };
@@ -96,13 +115,8 @@ extern llvm::cl::opt<bool> DumpTpiRecord
extern llvm::cl::opt<bool> DumpTpiRecords;
extern llvm::cl::opt<bool> DumpIpiRecords;
extern llvm::cl::opt<bool> DumpIpiRecordBytes;
-extern llvm::cl::opt<bool> DumpModules;
-extern llvm::cl::opt<bool> DumpModuleFiles;
-extern llvm::cl::opt<bool> DumpModuleLines;
-extern llvm::cl::opt<bool> DumpModuleSyms;
extern llvm::cl::opt<bool> DumpPublics;
extern llvm::cl::opt<bool> DumpSectionContribs;
-extern llvm::cl::opt<bool> DumpLineInfo;
extern llvm::cl::opt<bool> DumpSectionMap;
extern llvm::cl::opt<bool> DumpSymRecordBytes;
extern llvm::cl::opt<bool> DumpSectionHeaders;
@@ -123,14 +137,17 @@ extern llvm::cl::opt<bool> StreamDirecto
extern llvm::cl::opt<bool> StringTable;
extern llvm::cl::opt<bool> PdbStream;
extern llvm::cl::opt<bool> DbiStream;
-extern llvm::cl::opt<bool> DbiModuleInfo;
-extern llvm::cl::opt<bool> DbiModuleSyms;
-extern llvm::cl::opt<bool> DbiModuleSourceFileInfo;
-extern llvm::cl::opt<bool> DbiModuleSourceLineInfo;
extern llvm::cl::opt<bool> TpiStream;
extern llvm::cl::opt<bool> IpiStream;
extern llvm::cl::list<std::string> InputFilename;
}
+
+namespace shared {
+extern llvm::cl::opt<bool> DumpModules;
+extern llvm::cl::opt<bool> DumpModuleFiles;
+extern llvm::cl::list<ModuleSubsection> DumpModuleSubsections;
+extern llvm::cl::opt<bool> DumpModuleSyms;
+} // namespace shared
}
#endif
More information about the llvm-commits
mailing list