aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Support/BinaryStreamWriter.cpp
diff options
context:
space:
mode:
authorNico Weber <thakis@chromium.org>2021-09-16 19:14:52 -0400
committerNico Weber <thakis@chromium.org>2021-09-16 19:14:52 -0400
commit646299d183ca72cbafd3a2d64629ce8cb3fcdd9d (patch)
treee063d7a1a4d039a4bfb636c164cb5e220a03f80f /llvm/lib/Support/BinaryStreamWriter.cpp
parentd9195d6603f2c95124e29beacec9129ae8fd616e (diff)
downloadllvm-646299d183ca72cbafd3a2d64629ce8cb3fcdd9d.zip
llvm-646299d183ca72cbafd3a2d64629ce8cb3fcdd9d.tar.gz
llvm-646299d183ca72cbafd3a2d64629ce8cb3fcdd9d.tar.bz2
[Support] Convert BinaryStream class zoo to 64-bit offsets
Most PDB fields on disk are 32-bit but describe the file in terms of MSF blocks, which are 4 kiB by default. So PDB files can be a bit larger than 4 GiB, and much larger if you create them with a block size > 4 kiB. This is a first (necessary, but by far not not sufficient) step towards supporting such PDB files. Now we don't truncate in-memory file offsets (which are in terms of bytes, not in terms of blocks). No effective behavior change. lld-link will still error out if it were to produce PDBs > 4 GiB. Differential Revision: https://reviews.llvm.org/D109923
Diffstat (limited to 'llvm/lib/Support/BinaryStreamWriter.cpp')
-rw-r--r--llvm/lib/Support/BinaryStreamWriter.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Support/BinaryStreamWriter.cpp b/llvm/lib/Support/BinaryStreamWriter.cpp
index 986e18d..8c9efa0 100644
--- a/llvm/lib/Support/BinaryStreamWriter.cpp
+++ b/llvm/lib/Support/BinaryStreamWriter.cpp
@@ -62,7 +62,7 @@ Error BinaryStreamWriter::writeStreamRef(BinaryStreamRef Ref) {
return writeStreamRef(Ref, Ref.getLength());
}
-Error BinaryStreamWriter::writeStreamRef(BinaryStreamRef Ref, uint32_t Length) {
+Error BinaryStreamWriter::writeStreamRef(BinaryStreamRef Ref, uint64_t Length) {
BinaryStreamReader SrcReader(Ref.slice(0, Length));
// This is a bit tricky. If we just call readBytes, we are requiring that it
// return us the entire stream as a contiguous buffer. There is no guarantee
@@ -80,7 +80,7 @@ Error BinaryStreamWriter::writeStreamRef(BinaryStreamRef Ref, uint32_t Length) {
}
std::pair<BinaryStreamWriter, BinaryStreamWriter>
-BinaryStreamWriter::split(uint32_t Off) const {
+BinaryStreamWriter::split(uint64_t Off) const {
assert(getLength() >= Off);
WritableBinaryStreamRef First = Stream.drop_front(Offset);
@@ -93,7 +93,7 @@ BinaryStreamWriter::split(uint32_t Off) const {
}
Error BinaryStreamWriter::padToAlignment(uint32_t Align) {
- uint32_t NewOffset = alignTo(Offset, Align);
+ uint64_t NewOffset = alignTo(Offset, Align);
if (NewOffset > getLength())
return make_error<BinaryStreamError>(stream_error_code::stream_too_short);
while (Offset < NewOffset)