aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp
diff options
context:
space:
mode:
authorDaniel Sanders <daniel.sanders@imgtec.com>2016-05-18 12:36:25 +0000
committerDaniel Sanders <daniel.sanders@imgtec.com>2016-05-18 12:36:25 +0000
commit016e6c4354872591437954ea4fc1b315b7d0e000 (patch)
tree102497ec1e485d6b482c8996ca1f180262b2e175 /llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp
parent348af9cc6b448d739465de991cc0caf032af0eb9 (diff)
downloadllvm-016e6c4354872591437954ea4fc1b315b7d0e000.zip
llvm-016e6c4354872591437954ea4fc1b315b7d0e000.tar.gz
llvm-016e6c4354872591437954ea4fc1b315b7d0e000.tar.bz2
Try again to fix pdbdump-headers.test on big-endian hosts after r269861.
r269898 fixed the problem with HashBuckets but the same issue occurred with AddressMap and ThunkMap too. llvm-svn: 269913
Diffstat (limited to 'llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp')
-rw-r--r--llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp b/llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp
index d7e3b60..8e98405 100644
--- a/llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp
+++ b/llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp
@@ -138,8 +138,7 @@ Error PublicsStream::reload() {
// corrupted streams.
// Hash buckets follow.
- std::vector<ulittle32_t> TempHashBuckets;
- TempHashBuckets.resize(NumBuckets);
+ std::vector<ulittle32_t> TempHashBuckets(NumBuckets);
if (auto EC = Reader.readArray<ulittle32_t>(TempHashBuckets))
return make_error<RawError>(raw_error_code::corrupt_file,
"Hash buckets corrupted.");
@@ -148,16 +147,21 @@ Error PublicsStream::reload() {
HashBuckets.begin());
// Something called "address map" follows.
- AddressMap.resize(Header->AddrMap / sizeof(uint32_t));
- if (auto EC = Reader.readArray<uint32_t>(AddressMap))
+ std::vector<ulittle32_t> TempAddressMap(Header->AddrMap / sizeof(uint32_t));
+ if (auto EC = Reader.readArray<ulittle32_t>(TempAddressMap))
return make_error<RawError>(raw_error_code::corrupt_file,
"Could not read an address map.");
+ AddressMap.resize(Header->AddrMap / sizeof(uint32_t));
+ std::copy(TempAddressMap.begin(), TempAddressMap.end(), AddressMap.begin());
// Something called "thunk map" follows.
+ std::vector<ulittle32_t> TempThunkMap(Header->NumThunks);
ThunkMap.resize(Header->NumThunks);
- if (auto EC = Reader.readArray<uint32_t>(ThunkMap))
+ if (auto EC = Reader.readArray<ulittle32_t>(TempThunkMap))
return make_error<RawError>(raw_error_code::corrupt_file,
"Could not read a thunk map.");
+ ThunkMap.resize(Header->NumThunks);
+ std::copy(TempThunkMap.begin(), TempThunkMap.end(), ThunkMap.begin());
// Something called "section map" follows.
std::vector<SectionOffset> SectionMap(Header->NumSections);