diff options
author | Zachary Turner <zturner@google.com> | 2018-03-19 19:53:51 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2018-03-19 19:53:51 +0000 |
commit | de53aaf13249dcbd6f3d4fd3b28898c77fa074c8 (patch) | |
tree | 3b8061c1756ea52e9ff102b682e4e5615c6300c2 /llvm/lib/DebugInfo/CodeView/DebugCrossImpSubsection.cpp | |
parent | a2036e4945666aaf4579821121f4566dea7dd29d (diff) | |
download | bcm5719-llvm-de53aaf13249dcbd6f3d4fd3b28898c77fa074c8.tar.gz bcm5719-llvm-de53aaf13249dcbd6f3d4fd3b28898c77fa074c8.zip |
Support embedding natvis files in PDBs.
Natvis is a debug language supported by Visual Studio for
specifying custom visualizers. The /NATVIS option is an
undocumented link.exe flag which will take a .natvis file
and "inject" it into the PDB. This way, you can ship the
debug visualizers for a program along with the PDB, which
is very useful for postmortem debugging.
This is implemented by adding a new "named stream" to the
PDB with a special name of /src/files/<natvis file name>
and simply copying the contents of the xml into this file.
Additionally, we need to emit a single stream named
/src/headerblock which contains a hash table of embedded
files to records describing them.
This patch adds this functionality, including the /NATVIS
option to lld-link.
Differential Revision: https://reviews.llvm.org/D44328
llvm-svn: 327895
Diffstat (limited to 'llvm/lib/DebugInfo/CodeView/DebugCrossImpSubsection.cpp')
-rw-r--r-- | llvm/lib/DebugInfo/CodeView/DebugCrossImpSubsection.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/DebugInfo/CodeView/DebugCrossImpSubsection.cpp b/llvm/lib/DebugInfo/CodeView/DebugCrossImpSubsection.cpp index 88c0076915b..9a3d3e3e247 100644 --- a/llvm/lib/DebugInfo/CodeView/DebugCrossImpSubsection.cpp +++ b/llvm/lib/DebugInfo/CodeView/DebugCrossImpSubsection.cpp @@ -80,13 +80,13 @@ Error DebugCrossModuleImportsSubsection::commit( Ids.push_back(&M); std::sort(Ids.begin(), Ids.end(), [this](const T &L1, const T &L2) { - return Strings.getStringId(L1->getKey()) < - Strings.getStringId(L2->getKey()); + return Strings.getIdForString(L1->getKey()) < + Strings.getIdForString(L2->getKey()); }); for (const auto &Item : Ids) { CrossModuleImport Imp; - Imp.ModuleNameOffset = Strings.getStringId(Item->getKey()); + Imp.ModuleNameOffset = Strings.getIdForString(Item->getKey()); Imp.Count = Item->getValue().size(); if (auto EC = Writer.writeObject(Imp)) return EC; |