diff options
author | Rui Ueyama <ruiu@google.com> | 2016-11-16 00:59:27 +0000 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2016-11-16 00:59:27 +0000 |
commit | fb1e6d22a32c7d88e52ef3575cc511cf91b02d25 (patch) | |
tree | b7c5fbce747b6f36885796fd9b4f91352c331425 /llvm/lib/DebugInfo | |
parent | 6328cbd31bef72bf1ebb8e2b1cdc4899bae3c221 (diff) | |
download | bcm5719-llvm-fb1e6d22a32c7d88e52ef3575cc511cf91b02d25.tar.gz bcm5719-llvm-fb1e6d22a32c7d88e52ef3575cc511cf91b02d25.zip |
Align Modi and FileInfo substreams on 32-byte offsets.
This is required by DbiStream, but DbiStreamBuilder didn't align
these substreams, so the output of DbiSTreamBuilder couldn't be
read by DbiStream.
Test will be added to LLD.
llvm-svn: 287067
Diffstat (limited to 'llvm/lib/DebugInfo')
-rw-r--r-- | llvm/lib/DebugInfo/PDB/Raw/DbiStreamBuilder.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/DebugInfo/PDB/Raw/DbiStreamBuilder.cpp b/llvm/lib/DebugInfo/PDB/Raw/DbiStreamBuilder.cpp index 9989c4c6dd7..33c07ffa3b8 100644 --- a/llvm/lib/DebugInfo/PDB/Raw/DbiStreamBuilder.cpp +++ b/llvm/lib/DebugInfo/PDB/Raw/DbiStreamBuilder.cpp @@ -107,7 +107,7 @@ uint32_t DbiStreamBuilder::calculateModiSubstreamSize() const { Size += M->Mod.size() + 1; Size += M->Obj.size() + 1; } - return Size; + return alignTo(Size, sizeof(uint32_t)); } uint32_t DbiStreamBuilder::calculateSectionContribsStreamSize() const { @@ -134,7 +134,7 @@ uint32_t DbiStreamBuilder::calculateFileInfoSubstreamSize() const { NumFileInfos += M->SourceFiles.size(); Size += NumFileInfos * sizeof(ulittle32_t); // FileNameOffsets Size += calculateNamesBufferSize(); - return Size; + return alignTo(Size, sizeof(uint32_t)); } uint32_t DbiStreamBuilder::calculateNamesBufferSize() const { @@ -167,7 +167,7 @@ Error DbiStreamBuilder::generateModiSubstream() { if (auto EC = ModiWriter.writeZeroString(M->Obj)) return EC; } - if (ModiWriter.bytesRemaining() != 0) + if (ModiWriter.bytesRemaining() > sizeof(uint32_t)) return make_error<RawError>(raw_error_code::invalid_format, "Unexpected bytes in Modi Stream Data"); return Error::success(); @@ -228,7 +228,7 @@ Error DbiStreamBuilder::generateFileInfoSubstream() { return make_error<RawError>(raw_error_code::invalid_format, "The names buffer contained unexpected data."); - if (MetadataWriter.bytesRemaining() > 0) + if (MetadataWriter.bytesRemaining() > sizeof(uint32_t)) return make_error<RawError>( raw_error_code::invalid_format, "The metadata buffer contained unexpected data."); |