diff options
author | Zachary Turner <zturner@google.com> | 2017-01-20 22:42:09 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2017-01-20 22:42:09 +0000 |
commit | 760ad4da6006422c5a6097232b5ffc72d6b906dd (patch) | |
tree | b0f54c3f60c0a83538c23b3f3cfab7f0b23fcc1f /llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp | |
parent | 60667ca0b2b95ee25dace3f8627feda5a904cd8f (diff) | |
download | bcm5719-llvm-760ad4da6006422c5a6097232b5ffc72d6b906dd.tar.gz bcm5719-llvm-760ad4da6006422c5a6097232b5ffc72d6b906dd.zip |
[pdb] Write the Named Stream mapping to Yaml and binary.
Differential Revision: https://reviews.llvm.org/D28919
llvm-svn: 292665
Diffstat (limited to 'llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp')
-rw-r--r-- | llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp b/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp index f3508d6961c..62c6fb42f56 100644 --- a/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp +++ b/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp @@ -113,6 +113,9 @@ Error LLVMOutputStyle::dump() { if (auto EC = dumpStreamBytes()) return EC; + if (auto EC = dumpStringTable()) + return EC; + if (auto EC = dumpInfoStream()) return EC; @@ -456,6 +459,28 @@ Error LLVMOutputStyle::dumpStreamBytes() { return Error::success(); } +Error LLVMOutputStyle::dumpStringTable() { + if (!opts::raw::DumpStringTable) + return Error::success(); + + auto IS = File.getStringTable(); + if (!IS) + return IS.takeError(); + + DictScope D(P, "String Table"); + for (uint32_t I : IS->name_ids()) { + StringRef S = IS->getStringForID(I); + if (!S.empty()) { + llvm::SmallString<32> Str; + Str.append("'"); + Str.append(S); + Str.append("'"); + P.printString(Str); + } + } + return Error::success(); +} + Error LLVMOutputStyle::dumpInfoStream() { if (!opts::raw::DumpHeaders) return Error::success(); @@ -472,6 +497,11 @@ Error LLVMOutputStyle::dumpInfoStream() { P.printHex("Signature", IS->getSignature()); P.printNumber("Age", IS->getAge()); P.printObject("Guid", IS->getGuid()); + { + DictScope DD(P, "Named Streams"); + for (const auto &S : IS->getNamedStreams().entries()) + P.printObject(S.getKey(), S.getValue()); + } return Error::success(); } |