From b56d904433a5692dfd11cd261de058222b296a99 Mon Sep 17 00:00:00 2001 From: Zachary Turner Date: Mon, 2 May 2016 18:09:21 +0000 Subject: [PATCH] PDB - Instead of hardcoding stream numbers, use an enum. llvm-svn: 268270 --- llvm/include/llvm/DebugInfo/PDB/Raw/RawConstants.h | 7 ++++++ llvm/lib/DebugInfo/PDB/Raw/DbiStream.cpp | 2 +- llvm/lib/DebugInfo/PDB/Raw/InfoStream.cpp | 27 +++++++++++++--------- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/llvm/include/llvm/DebugInfo/PDB/Raw/RawConstants.h b/llvm/include/llvm/DebugInfo/PDB/Raw/RawConstants.h index efafed19..5dd0407 100644 --- a/llvm/include/llvm/DebugInfo/PDB/Raw/RawConstants.h +++ b/llvm/include/llvm/DebugInfo/PDB/Raw/RawConstants.h @@ -34,6 +34,13 @@ enum PdbRaw_DbiVer : uint32_t { PdbDbiV70 = 19990903, PdbDbiV110 = 20091201 }; + +enum SpecialStream : uint32_t { + StreamPDB = 1, + StreamTPI = 2, + StreamDBI = 3, + StreamIPI = 4, +}; } } diff --git a/llvm/lib/DebugInfo/PDB/Raw/DbiStream.cpp b/llvm/lib/DebugInfo/PDB/Raw/DbiStream.cpp index 57f7644..9e55c93 100644 --- a/llvm/lib/DebugInfo/PDB/Raw/DbiStream.cpp +++ b/llvm/lib/DebugInfo/PDB/Raw/DbiStream.cpp @@ -71,7 +71,7 @@ struct DbiStream::HeaderInfo { ulittle32_t Reserved; // Pad to 64 bytes }; -DbiStream::DbiStream(PDBFile &File) : Pdb(File), Stream(3, File) { +DbiStream::DbiStream(PDBFile &File) : Pdb(File), Stream(StreamDBI, File) { static_assert(sizeof(HeaderInfo) == 64, "Invalid HeaderInfo size!"); } diff --git a/llvm/lib/DebugInfo/PDB/Raw/InfoStream.cpp b/llvm/lib/DebugInfo/PDB/Raw/InfoStream.cpp index c1b4737..210dffd 100644 --- a/llvm/lib/DebugInfo/PDB/Raw/InfoStream.cpp +++ b/llvm/lib/DebugInfo/PDB/Raw/InfoStream.cpp @@ -10,30 +10,35 @@ #include "llvm/DebugInfo/PDB/Raw/InfoStream.h" #include "llvm/ADT/BitVector.h" #include "llvm/ADT/SmallVector.h" +#include "llvm/DebugInfo/PDB/Raw/RawConstants.h" #include "llvm/DebugInfo/PDB/Raw/StreamReader.h" using namespace llvm; using namespace llvm::pdb; -InfoStream::InfoStream(PDBFile &File) : Pdb(File), Stream(1, File) {} +InfoStream::InfoStream(PDBFile &File) : Pdb(File), Stream(StreamPDB, File) {} std::error_code InfoStream::reload() { StreamReader Reader(Stream); - support::ulittle32_t Value; + struct Header { + support::ulittle32_t Version; + support::ulittle32_t Signature; + support::ulittle32_t Age; + PDB_UniqueId Guid; + }; - Reader.readObject(&Value); - Version = Value; - if (Version < PdbRaw_ImplVer::PdbImplVC70) - return std::make_error_code(std::errc::not_supported); + Header H; + Reader.readObject(&H); - Reader.readObject(&Value); - Signature = Value; + if (H.Version < PdbRaw_ImplVer::PdbImplVC70) + return std::make_error_code(std::errc::not_supported); - Reader.readObject(&Value); - Age = Value; + Version = H.Version; + Signature = H.Signature; + Age = H.Age; + Guid = H.Guid; - Reader.readObject(&Guid); NamedStreams.load(Reader); return std::error_code(); -- 2.7.4