<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>