mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-02 10:32:56 +00:00
[pdb] Fix issues with pdb writing.
This fixes an alignment issue by forcing all cached allocations to be 8 byte aligned, and also fixes an issue arising on big endian systems by writing ulittle32_t's instead of uint32_t's in the test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272437 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c8e19fcc1c
commit
936d48972b
@ -104,7 +104,7 @@ Error MappedBlockStream::readBytes(uint32_t Offset, uint32_t Size,
|
||||
// into it, and return an ArrayRef to that. Do not touch existing pool
|
||||
// allocations, as existing clients may be holding a pointer which must
|
||||
// not be invalidated.
|
||||
uint8_t *WriteBuffer = Pool.Allocate<uint8_t>(Size);
|
||||
uint8_t *WriteBuffer = static_cast<uint8_t *>(Pool.Allocate(Size, 8));
|
||||
if (auto EC = readBytes(Offset, MutableArrayRef<uint8_t>(WriteBuffer, Size)))
|
||||
return EC;
|
||||
|
||||
|
@ -308,6 +308,7 @@ TEST(MappedBlockStreamTest, TestWriteThenRead) {
|
||||
MappedBlockStreamImpl S(llvm::make_unique<IndexedStreamData>(0, F), F);
|
||||
|
||||
enum class MyEnum : uint32_t { Val1 = 2908234, Val2 = 120891234 };
|
||||
using support::ulittle32_t;
|
||||
|
||||
uint16_t u16[] = {31468, 0};
|
||||
uint32_t u32[] = {890723408, 0};
|
||||
@ -315,7 +316,9 @@ TEST(MappedBlockStreamTest, TestWriteThenRead) {
|
||||
StringRef ZStr[] = {"Zero Str", ""};
|
||||
StringRef FStr[] = {"Fixed Str", ""};
|
||||
ArrayRef<uint8_t> byteArray[] = {{'1', '2'}, {'0', '0'}};
|
||||
ArrayRef<uint32_t> intArray[] = {{890723408, 29082234}, {0, 0}};
|
||||
ArrayRef<support::ulittle32_t> intArray[] = {
|
||||
{ulittle32_t(890723408), ulittle32_t(29082234)},
|
||||
{ulittle32_t(0), ulittle32_t(0)}};
|
||||
|
||||
StreamReader Reader(S);
|
||||
StreamWriter Writer(S);
|
||||
|
Loading…
x
Reference in New Issue
Block a user