diff options
author | Etienne Pierre-Doray <etiennep@chromium.org> | 2018-07-25 20:16:02 +0000 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2021-07-25 20:33:17 -0700 |
commit | a88cad0485f1c73d63ba0a1bcfccc8a68bd300c6 (patch) | |
tree | a1e2e0302064526dd50280e84651979b656f0ad2 /buffer_view_unittest.cc | |
parent | ae27d8ed0116c53fb530b141e96df91e90c3671c (diff) | |
download | zucchini-a88cad0485f1c73d63ba0a1bcfccc8a68bd300c6.tar.gz |
[Zucchini] Create elf types and utils.
Creates types and utility class to manipulate ELF header format and relocation
references.
BufferView: :modify() was also added.
Change-Id: Iacec212a2fb2f8a6c85d551eed4b8e0a84926d89
Reviewed-on: https://chromium-review.googlesource.com/1136846
Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org>
Reviewed-by: Greg Thompson <grt@chromium.org>
Reviewed-by: Samuel Huang <huangs@chromium.org>
Cr-Commit-Position: refs/heads/master@{#578034}
NOKEYCHECK=True
GitOrigin-RevId: 320f7d9d2cff9702e632af296867bf6ce7b14f8b
Diffstat (limited to 'buffer_view_unittest.cc')
-rw-r--r-- | buffer_view_unittest.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/buffer_view_unittest.cc b/buffer_view_unittest.cc index 7df34b2..30170d7 100644 --- a/buffer_view_unittest.cc +++ b/buffer_view_unittest.cc @@ -130,6 +130,26 @@ TEST_F(BufferViewTest, Write) { EXPECT_DEATH(buffer.write<uint32_t>(7, 0xFFFFFFFF), ""); } +TEST_F(BufferViewTest, Modify) { + struct TestStruct { + uint32_t a; + uint32_t b; + }; + + MutableBufferView buffer(bytes_.data(), bytes_.size()); + + buffer.modify<TestStruct>(0).a = 0x01234567; + buffer.modify<TestStruct>(0).b = 0x89ABCDEF; + EXPECT_EQ(ParseHexString("67 45 23 01 EF CD AB 89 10 00"), + std::vector<uint8_t>(buffer.begin(), buffer.end())); + + buffer.modify<uint8_t>(9); + EXPECT_DEATH(buffer.modify<uint8_t>(10), ""); + + buffer.modify<uint32_t>(6); + EXPECT_DEATH(buffer.modify<uint32_t>(7), ""); +} + TEST_F(BufferViewTest, CanAccess) { MutableBufferView buffer(bytes_.data(), bytes_.size()); EXPECT_TRUE(buffer.can_access<uint32_t>(0)); |