diff options
| author | Zachary Turner <zturner@google.com> | 2017-05-02 16:56:09 +0000 |
|---|---|---|
| committer | Zachary Turner <zturner@google.com> | 2017-05-02 16:56:09 +0000 |
| commit | edef14510e36f307dff256faf030abbfb27be674 (patch) | |
| tree | 5fd726720d7bd48b7b9059d2ac99826ffffb1580 /llvm/lib/DebugInfo/PDB | |
| parent | bb34f278a2e12f8af526b34725fd2b61c5c8c189 (diff) | |
| download | bcm5719-llvm-edef14510e36f307dff256faf030abbfb27be674.tar.gz bcm5719-llvm-edef14510e36f307dff256faf030abbfb27be674.zip | |
[PDB/CodeView] Read/write codeview inlinee line information.
Previously we wrote line information and file checksum
information, but we did not write information about inlinee
lines and functions. This patch adds support for that.
llvm-svn: 301936
Diffstat (limited to 'llvm/lib/DebugInfo/PDB')
| -rw-r--r-- | llvm/lib/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/llvm/lib/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.cpp b/llvm/lib/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.cpp index 41cb23a188f..f994b4538ef 100644 --- a/llvm/lib/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.cpp +++ b/llvm/lib/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.cpp @@ -161,7 +161,7 @@ Error DbiModuleDescriptorBuilder::commit(BinaryStreamWriter &ModiWriter, return Error::success(); } -void DbiModuleDescriptorBuilder::addC13LineFragment( +void DbiModuleDescriptorBuilder::addC13Fragment( std::unique_ptr<ModuleDebugLineFragment> Lines) { ModuleDebugLineFragment &Frag = *Lines; @@ -175,6 +175,20 @@ void DbiModuleDescriptorBuilder::addC13LineFragment( llvm::make_unique<ModuleDebugFragmentRecordBuilder>(Frag.kind(), Frag)); } +void DbiModuleDescriptorBuilder::addC13Fragment( + std::unique_ptr<codeview::ModuleDebugInlineeLineFragment> Inlinees) { + ModuleDebugInlineeLineFragment &Frag = *Inlinees; + + // File Checksums have to come first, so push an empty entry on if this + // is the first. + if (C13Builders.empty()) + C13Builders.push_back(nullptr); + + this->Inlinees.push_back(std::move(Inlinees)); + C13Builders.push_back( + llvm::make_unique<ModuleDebugFragmentRecordBuilder>(Frag.kind(), Frag)); +} + void DbiModuleDescriptorBuilder::setC13FileChecksums( std::unique_ptr<ModuleDebugFileChecksumFragment> Checksums) { assert(!ChecksumInfo && "Can't have more than one checksum info!"); |

