From b7e53bf9d091874d8028b37f6e4940b504cc9234 Mon Sep 17 00:00:00 2001 From: Roland Reichwein Date: Sun, 29 Mar 2020 16:14:55 +0200 Subject: Code and data segment --- test-elf.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'test-elf.cpp') diff --git a/test-elf.cpp b/test-elf.cpp index d3fa9a9..46ef267 100644 --- a/test-elf.cpp +++ b/test-elf.cpp @@ -35,7 +35,7 @@ protected: } void TearDown(){ std::error_code ec; - //fs::remove(TempFilename(), ec); + fs::remove(TempFilename(), ec); } }; @@ -44,13 +44,27 @@ TEST_F(ElfTest, read) { } #endif -TEST_F(ElfTest, write) { +TEST_F(ElfTest, write_code) { Elf::Write(TempFilename(), { 0x48, 0xc7, 0xc0, 0x3c, 0x00, 0x00, 0x00, // mov $0x3c,%rax # syscall 60 0x48, 0x31, 0xff, // xor %rdi,%rdi # exit code 0 0x0f, 0x05, // syscall - }); + }, {}); + + ASSERT_TRUE(fs::exists(TempFilename())); + ASSERT_GT(fs::file_size(TempFilename()), 0); +} + +TEST_F(ElfTest, write_code_data) { + Elf::Write(TempFilename(), + { + 0x48, 0xc7, 0xc0, 0x3c, 0x00, 0x00, 0x00, // mov $0x3c,%rax # syscall 60 + 0x48, 0x8b, 0x3c, 0x25, 0x00, 0x20, 0x40, // mov 0x402000,%rdi # use value from data segment as exit code + 0, + 0x0f, 0x05, // syscall + }, + {1, 0, 0, 0, 0, 0, 0, 0}); ASSERT_TRUE(fs::exists(TempFilename())); ASSERT_GT(fs::file_size(TempFilename()), 0); -- cgit v1.2.3