[PDB] Support dumping injected sources via the DIA reader.
authorZachary Turner <zturner@google.com>
Tue, 13 Mar 2018 17:46:06 +0000 (17:46 +0000)
committerZachary Turner <zturner@google.com>
Tue, 13 Mar 2018 17:46:06 +0000 (17:46 +0000)
commit679aeadda116f1d87ba65fd524f5b901afbeeafb
treec4170a3e925a42daff933862501ae140e4b260be
parente5f72dd5e1b14814c1fbb0a10cbf02222782e5bd
[PDB] Support dumping injected sources via the DIA reader.

Injected sources are basically a way to add actual source file content
to your PDB. Presumably you could use this for shipping your source code
with your debug information, but in practice I can only find this being
used for embedding natvis files inside of PDBs.

In order to effectively test LLVM's natvis file injection, we need a way
to dump the injected sources of a PDB in a way that is authoritative
(i.e. based on Microsoft's understanding of the PDB format, and not
LLVM's). To this end, I've added support for dumping injected sources
via DIA. I made a PDB file that used the /natvis option to generate a
test case.

Differential Revision: https://reviews.llvm.org/D44405

llvm-svn: 327428
19 files changed:
llvm/include/llvm/DebugInfo/PDB/DIA/DIAEnumInjectedSources.h [new file with mode: 0644]
llvm/include/llvm/DebugInfo/PDB/DIA/DIAInjectedSource.h [new file with mode: 0644]
llvm/include/llvm/DebugInfo/PDB/DIA/DIASession.h
llvm/include/llvm/DebugInfo/PDB/DIA/DIAUtils.h [new file with mode: 0644]
llvm/include/llvm/DebugInfo/PDB/IPDBInjectedSource.h [new file with mode: 0644]
llvm/include/llvm/DebugInfo/PDB/IPDBSession.h
llvm/include/llvm/DebugInfo/PDB/Native/NativeSession.h
llvm/include/llvm/DebugInfo/PDB/PDBExtras.h
llvm/include/llvm/DebugInfo/PDB/PDBTypes.h
llvm/lib/DebugInfo/PDB/CMakeLists.txt
llvm/lib/DebugInfo/PDB/DIA/DIAEnumInjectedSources.cpp [new file with mode: 0644]
llvm/lib/DebugInfo/PDB/DIA/DIAInjectedSource.cpp [new file with mode: 0644]
llvm/lib/DebugInfo/PDB/DIA/DIASession.cpp
llvm/lib/DebugInfo/PDB/Native/NativeSession.cpp
llvm/lib/DebugInfo/PDB/PDBExtras.cpp
llvm/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp
llvm/test/tools/llvm-pdbdump/Inputs/InjectedSource.pdb [new file with mode: 0644]
llvm/test/tools/llvm-pdbdump/injected-sources.test [new file with mode: 0644]
llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp