From: Zachary Turner Date: Sat, 25 Feb 2017 01:20:08 +0000 (+0000) Subject: Re-enable BinaryStreamTest.StreamReaderObject. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0a1a6e351637ea919564f6cee42eab65ee62e686;p=llvm Re-enable BinaryStreamTest.StreamReaderObject. I had an invalid pointer / size calculation that was causing a stack smash. Should be fixed now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296220 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/unittests/DebugInfo/PDB/BinaryStreamTest.cpp b/unittests/DebugInfo/PDB/BinaryStreamTest.cpp index 2b735b0c051..a601a10d132 100644 --- a/unittests/DebugInfo/PDB/BinaryStreamTest.cpp +++ b/unittests/DebugInfo/PDB/BinaryStreamTest.cpp @@ -443,39 +443,33 @@ TEST_F(BinaryStreamTest, StreamReaderEnum) { } } -//TEST_F(BinaryStreamTest, StreamReaderObject) { -// struct Foo { -// int X; -// double Y; -// char Z; -// }; -// -// std::vector Foos; -// Foos.push_back({-42, 42.42, 42}); -// Foos.push_back({100, 3.1415, -89}); -// -// std::vector Bytes; -// Bytes.resize(2 * sizeof(Foo)); -// Foo *FPtr = reinterpret_cast(&Bytes[0]); -// Foo *GPtr = FPtr + 1; -// -// ::memcpy(FPtr, &Foos[0], sizeof(Foo)); -// ::memcpy(GPtr + sizeof(Foo), &Foos[1], sizeof(Foo)); -// -// initialize(Bytes, 0); -// -// for (auto IS : InputStreams) { -// // 1. Reading object pointers. -// BinaryStreamReader Reader(*IS); -// const Foo *FPtrOut = nullptr; -// const Foo *GPtrOut = nullptr; -// ASSERT_NO_ERROR(Reader.readObject(FPtrOut)); -// ASSERT_NO_ERROR(Reader.readObject(GPtrOut)); -// EXPECT_EQ(0U, Reader.bytesRemaining()); -// EXPECT_EQ(0, ::memcmp(FPtr, FPtrOut, sizeof(Foo))); -// EXPECT_EQ(0, ::memcmp(GPtr, GPtrOut, sizeof(Foo))); -// } -//} +TEST_F(BinaryStreamTest, StreamReaderObject) { + struct Foo { + int X; + double Y; + char Z; + }; + + std::vector Foos; + Foos.push_back({-42, 42.42, 42}); + Foos.push_back({100, 3.1415, -89}); + + const uint8_t *Bytes = reinterpret_cast(&Foos[0]); + + initialize(makeArrayRef(Bytes, 2 * sizeof(Foo)), 0); + + for (auto IS : InputStreams) { + // 1. Reading object pointers. + BinaryStreamReader Reader(*IS); + const Foo *FPtrOut = nullptr; + const Foo *GPtrOut = nullptr; + ASSERT_NO_ERROR(Reader.readObject(FPtrOut)); + ASSERT_NO_ERROR(Reader.readObject(GPtrOut)); + EXPECT_EQ(0U, Reader.bytesRemaining()); + EXPECT_EQ(0, ::memcmp(&Foos[0], FPtrOut, sizeof(Foo))); + EXPECT_EQ(0, ::memcmp(&Foos[1], GPtrOut, sizeof(Foo))); + } +} TEST_F(BinaryStreamTest, StreamReaderStrings) { std::vector Bytes = {'O', 'n', 'e', '\0', 'T', 'w', 'o', diff --git a/unittests/DebugInfo/PDB/MappedBlockStreamTest.cpp b/unittests/DebugInfo/PDB/MappedBlockStreamTest.cpp index 9a713efd5be..fc938d4418d 100644 --- a/unittests/DebugInfo/PDB/MappedBlockStreamTest.cpp +++ b/unittests/DebugInfo/PDB/MappedBlockStreamTest.cpp @@ -37,7 +37,7 @@ public: uint32_t block_size() const { return 1; } uint32_t block_count() const { return Blocks.size(); } - endianness getEndian() const { return little; } + endianness getEndian() const override { return little; } Error readBytes(uint32_t Offset, uint32_t Size, ArrayRef &Buffer) override {