diff options
author | Daniel Sanders <daniel.sanders@imgtec.com> | 2016-05-18 12:36:25 +0000 |
---|---|---|
committer | Daniel Sanders <daniel.sanders@imgtec.com> | 2016-05-18 12:36:25 +0000 |
commit | 016e6c4354872591437954ea4fc1b315b7d0e000 (patch) | |
tree | 102497ec1e485d6b482c8996ca1f180262b2e175 /llvm/lib/DebugInfo/PDB/Raw/PublicsStream.cpp | |
parent | 348af9cc6b448d739465de991cc0caf032af0eb9 (diff) | |
download | llvm-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.cpp | 14 |
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); |