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 | |
| parent | 348af9cc6b448d739465de991cc0caf032af0eb9 (diff) | |
| download | bcm5719-llvm-016e6c4354872591437954ea4fc1b315b7d0e000.tar.gz bcm5719-llvm-016e6c4354872591437954ea4fc1b315b7d0e000.zip  | |
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
| -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 d7e3b60f1ab..8e984058fff 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);  | 

