mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 11:02:59 +02:00
[pdb] Convert StringRefs to ArrayRef<uint8_t>s.
llvm-svn: 272058
This commit is contained in:
parent
c7dde7db85
commit
d4ca019632
@ -32,8 +32,8 @@ public:
|
|||||||
virtual ArrayRef<support::ulittle32_t>
|
virtual ArrayRef<support::ulittle32_t>
|
||||||
getStreamBlockList(uint32_t StreamIndex) const = 0;
|
getStreamBlockList(uint32_t StreamIndex) const = 0;
|
||||||
|
|
||||||
virtual StringRef getBlockData(uint32_t BlockIndex,
|
virtual ArrayRef<uint8_t> getBlockData(uint32_t BlockIndex,
|
||||||
uint32_t NumBytes) const = 0;
|
uint32_t NumBytes) const = 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,8 @@ public:
|
|||||||
ArrayRef<support::ulittle32_t>
|
ArrayRef<support::ulittle32_t>
|
||||||
getStreamBlockList(uint32_t StreamIndex) const override;
|
getStreamBlockList(uint32_t StreamIndex) const override;
|
||||||
|
|
||||||
StringRef getBlockData(uint32_t BlockIndex, uint32_t NumBytes) const override;
|
ArrayRef<uint8_t> getBlockData(uint32_t BlockIndex,
|
||||||
|
uint32_t NumBytes) const override;
|
||||||
|
|
||||||
ArrayRef<support::ulittle32_t> getDirectoryBlockArray() const;
|
ArrayRef<support::ulittle32_t> getDirectoryBlockArray() const;
|
||||||
|
|
||||||
|
@ -78,10 +78,9 @@ bool MappedBlockStream::tryReadContiguously(uint32_t Offset, uint32_t Size,
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint32_t FirstBlockAddr = BlockList[BlockNum];
|
uint32_t FirstBlockAddr = BlockList[BlockNum];
|
||||||
StringRef Str = Pdb.getBlockData(FirstBlockAddr, Pdb.getBlockSize());
|
auto Data = Pdb.getBlockData(FirstBlockAddr, Pdb.getBlockSize());
|
||||||
Str = Str.drop_front(OffsetInBlock);
|
Data = Data.drop_front(OffsetInBlock);
|
||||||
Buffer =
|
Buffer = ArrayRef<uint8_t>(Data.data(), Size);
|
||||||
ArrayRef<uint8_t>(reinterpret_cast<const uint8_t *>(Str.data()), Size);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,9 +102,9 @@ Error MappedBlockStream::readBytes(uint32_t Offset,
|
|||||||
while (BytesLeft > 0) {
|
while (BytesLeft > 0) {
|
||||||
uint32_t StreamBlockAddr = BlockList[BlockNum];
|
uint32_t StreamBlockAddr = BlockList[BlockNum];
|
||||||
|
|
||||||
StringRef Data = Pdb.getBlockData(StreamBlockAddr, Pdb.getBlockSize());
|
auto Data = Pdb.getBlockData(StreamBlockAddr, Pdb.getBlockSize());
|
||||||
|
|
||||||
const char *ChunkStart = Data.data() + OffsetInBlock;
|
const uint8_t *ChunkStart = Data.data() + OffsetInBlock;
|
||||||
uint32_t BytesInChunk =
|
uint32_t BytesInChunk =
|
||||||
std::min(BytesLeft, Pdb.getBlockSize() - OffsetInBlock);
|
std::min(BytesLeft, Pdb.getBlockSize() - OffsetInBlock);
|
||||||
::memcpy(WriteBuffer + BytesWritten, ChunkStart, BytesInChunk);
|
::memcpy(WriteBuffer + BytesWritten, ChunkStart, BytesInChunk);
|
||||||
|
@ -138,11 +138,14 @@ PDBFile::getStreamBlockList(uint32_t StreamIndex) const {
|
|||||||
return Array;
|
return Array;
|
||||||
}
|
}
|
||||||
|
|
||||||
StringRef PDBFile::getBlockData(uint32_t BlockIndex, uint32_t NumBytes) const {
|
ArrayRef<uint8_t> PDBFile::getBlockData(uint32_t BlockIndex,
|
||||||
|
uint32_t NumBytes) const {
|
||||||
uint64_t StreamBlockOffset = blockToOffset(BlockIndex, getBlockSize());
|
uint64_t StreamBlockOffset = blockToOffset(BlockIndex, getBlockSize());
|
||||||
|
|
||||||
return StringRef(Context->Buffer->getBufferStart() + StreamBlockOffset,
|
return ArrayRef<uint8_t>(
|
||||||
NumBytes);
|
reinterpret_cast<const uint8_t *>(Context->Buffer->getBufferStart()) +
|
||||||
|
StreamBlockOffset,
|
||||||
|
NumBytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
Error PDBFile::parseFileHeaders() {
|
Error PDBFile::parseFileHeaders() {
|
||||||
|
Loading…
Reference in New Issue
Block a user