]> granicus.if.org Git - llvm/commitdiff
[pdb] Fix issues with pdb writing.
authorZachary Turner <zturner@google.com>
Fri, 10 Jun 2016 21:47:26 +0000 (21:47 +0000)
committerZachary Turner <zturner@google.com>
Fri, 10 Jun 2016 21:47:26 +0000 (21:47 +0000)
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

lib/DebugInfo/PDB/Raw/MappedBlockStream.cpp
unittests/DebugInfo/PDB/MappedBlockStreamTest.cpp

index 86e799ca6633b8fb7d81a174258ac9f76c905263..36f8ead090ae9e866573b6f2b4118aa3513b5420 100644 (file)
@@ -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;
 
index fe55b9a3cd985a7abc0c2828e398ff426e23de9b..c9bc9986f45b672547fd345af7cd071aae3ea0d9 100644 (file)
@@ -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);