<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, May 24, 2016 at 10:49 PM, Zachary Turner via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: zturner<br>
Date: Wed May 25 00:49:48 2016<br>
New Revision: 270669<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=270669&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=270669&view=rev</a><br>
Log:<br>
[llvm-pdbdump] Decipher the remaining PDB streams.<br>
<br>
We know at least know the meaning of every stream of the<br>
PDB file.  Yay!<br></blockquote><div><br></div><div>Nice! \o/</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Modified:<br>
    llvm/trunk/include/llvm/DebugInfo/PDB/Raw/DbiStream.h<br>
    llvm/trunk/include/llvm/DebugInfo/PDB/Raw/RawConstants.h<br>
    llvm/trunk/lib/DebugInfo/PDB/Raw/DbiStream.cpp<br>
    llvm/trunk/test/DebugInfo/PDB/pdbdump-headers.test<br>
    llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/PDB/Raw/DbiStream.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/Raw/DbiStream.h?rev=270669&r1=270668&r2=270669&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/Raw/DbiStream.h?rev=270669&r1=270668&r2=270669&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/PDB/Raw/DbiStream.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/PDB/Raw/DbiStream.h Wed May 25 00:49:48 2016<br>
@@ -51,6 +51,8 @@ public:<br>
<br>
   ArrayRef<ModuleInfoEx> modules() const;<br>
<br>
+  uint32_t getDebugStreamIndex(DbgHeaderType Type) const;<br>
+<br>
 private:<br>
   Error initializeFileInfo();<br>
<br>
<br>
Modified: llvm/trunk/include/llvm/DebugInfo/PDB/Raw/RawConstants.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/Raw/RawConstants.h?rev=270669&r1=270668&r2=270669&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/Raw/RawConstants.h?rev=270669&r1=270668&r2=270669&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/DebugInfo/PDB/Raw/RawConstants.h (original)<br>
+++ llvm/trunk/include/llvm/DebugInfo/PDB/Raw/RawConstants.h Wed May 25 00:49:48 2016<br>
@@ -51,6 +51,21 @@ enum SpecialStream : uint32_t {<br>
   StreamIPI = 4,<br>
 };<br>
<br>
+enum class DbgHeaderType : uint16_t {<br>
+  FPO,<br>
+  Exception,<br>
+  Fixup,<br>
+  OmapToSrc,<br>
+  OmapFromSrc,<br>
+  SectionHdr,<br>
+  TokenRidMap,<br>
+  Xdata,<br>
+  Pdata,<br>
+  NewFPO,<br>
+  SectionHdrOrig,<br>
+  Max<br>
+};<br>
+<br>
 } // end namespace pdb<br>
 } // end namespace llvm<br>
<br>
<br>
Modified: llvm/trunk/lib/DebugInfo/PDB/Raw/DbiStream.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/Raw/DbiStream.cpp?rev=270669&r1=270668&r2=270669&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/Raw/DbiStream.cpp?rev=270669&r1=270668&r2=270669&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/DebugInfo/PDB/Raw/DbiStream.cpp (original)<br>
+++ llvm/trunk/lib/DebugInfo/PDB/Raw/DbiStream.cpp Wed May 25 00:49:48 2016<br>
@@ -302,3 +302,15 @@ Error DbiStream::initializeFileInfo() {<br>
<br>
   return Error::success();<br>
 }<br>
+<br>
+uint32_t DbiStream::getDebugStreamIndex(DbgHeaderType Type) const {<br>
+  ArrayRef<uint8_t> DbgData;<br>
+  if (auto EC = DbgHeader.getArrayRef(0, DbgData, DbgHeader.getLength())) {<br>
+    consumeError(std::move(EC));<br>
+    return uint32_t(-1);<br>
+  }<br>
+  ArrayRef<ulittle16_t> DebugStreams(<br>
+      reinterpret_cast<const ulittle16_t *>(DbgData.data()),<br>
+      DbgData.size() / sizeof(ulittle16_t));<br>
+  return DebugStreams[static_cast<uint16_t>(Type)];<br>
+}<br>
<br>
Modified: llvm/trunk/test/DebugInfo/PDB/pdbdump-headers.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/PDB/pdbdump-headers.test?rev=270669&r1=270668&r2=270669&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/PDB/pdbdump-headers.test?rev=270669&r1=270668&r2=270669&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/DebugInfo/PDB/pdbdump-headers.test (original)<br>
+++ llvm/trunk/test/DebugInfo/PDB/pdbdump-headers.test Wed May 25 00:49:48 2016<br>
@@ -29,8 +29,8 @@<br>
 ; EMPTY-NEXT:   Stream 7: [Public Symbol Hash] (604 bytes)<br>
 ; EMPTY-NEXT:   Stream 8: [Public Symbol Records] (104 bytes)<br>
 ; EMPTY-NEXT:   Stream 9: [Named Stream "/src/headerblock"] (0 bytes)<br>
-; EMPTY-NEXT:   Stream 10: [???] (160 bytes)<br>
-; EMPTY-NEXT:   Stream 11: [???] (32 bytes)<br>
+; EMPTY-NEXT:   Stream 10: [Section Header Data] (160 bytes)<br>
+; EMPTY-NEXT:   Stream 11: [New FPO Data] (32 bytes)<br>
 ; EMPTY-NEXT:   Stream 12: [Module "d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj"] (308 bytes)<br>
 ; EMPTY-NEXT:   Stream 13: [Named Stream "/names"] (239 bytes)<br>
 ; EMPTY-NEXT:   Stream 14: [Module "* Linker *"] (520 bytes)<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp?rev=270669&r1=270668&r2=270669&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp?rev=270669&r1=270668&r2=270669&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp Wed May 25 00:49:48 2016<br>
@@ -272,6 +272,28 @@ static Error dumpStreamSummary(ScopedPri<br>
       Value = "IPI Hash";<br>
     else if (StreamIdx == TIS.getTypeHashStreamAuxIndex())<br>
       Value = "IPI Aux Hash";<br>
+    else if (StreamIdx == DS.getDebugStreamIndex(DbgHeaderType::Exception))<br>
+      Value = "Exception Data";<br>
+    else if (StreamIdx == DS.getDebugStreamIndex(DbgHeaderType::Fixup))<br>
+      Value = "Fixup Data";<br>
+    else if (StreamIdx == DS.getDebugStreamIndex(DbgHeaderType::FPO))<br>
+      Value = "FPO Data";<br>
+    else if (StreamIdx == DS.getDebugStreamIndex(DbgHeaderType::NewFPO))<br>
+      Value = "New FPO Data";<br>
+    else if (StreamIdx == DS.getDebugStreamIndex(DbgHeaderType::OmapFromSrc))<br>
+      Value = "Omap From Source Data";<br>
+    else if (StreamIdx == DS.getDebugStreamIndex(DbgHeaderType::OmapToSrc))<br>
+      Value = "Omap To Source Data";<br>
+    else if (StreamIdx == DS.getDebugStreamIndex(DbgHeaderType::Pdata))<br>
+      Value = "Pdata";<br>
+    else if (StreamIdx == DS.getDebugStreamIndex(DbgHeaderType::SectionHdr))<br>
+      Value = "Section Header Data";<br>
+    else if (StreamIdx == DS.getDebugStreamIndex(DbgHeaderType::SectionHdrOrig))<br>
+      Value = "Section Header Original Data";<br>
+    else if (StreamIdx == DS.getDebugStreamIndex(DbgHeaderType::TokenRidMap))<br>
+      Value = "Token Rid Data";<br>
+    else if (StreamIdx == DS.getDebugStreamIndex(DbgHeaderType::Xdata))<br>
+      Value = "Xdata";<br>
     else {<br>
       auto ModIter = ModStreams.find(StreamIdx);<br>
       auto NSIter = NamedStreams.find(StreamIdx);<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>