From 517f692fc827fe404ba1f18073565a9c9e60ec02 Mon Sep 17 00:00:00 2001 From: Christoph Egger Date: Thu, 26 Mar 2015 17:59:46 +0100 Subject: [PATCH] Add (failing) mipsel test --- CMakeLists.txt | 1 + .../tests/mipselLinuxDisassemblerTest.cxx | 72 ++++++++++++++++++ .../binaries/crypt.clang.O2.mipsel.elf | Bin 0 -> 7188 bytes 3 files changed, 73 insertions(+) create mode 100644 src/disassembler/llvm/tests/mipselLinuxDisassemblerTest.cxx create mode 100755 testdata/disassembler/binaries/crypt.clang.O2.mipsel.elf diff --git a/CMakeLists.txt b/CMakeLists.txt index fabb0d9..c3ff63f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -130,6 +130,7 @@ set(fridatest_SOURCES src/core/tests/FunctionTest.cxx src/core/tests/CommentTest.cxx src/disassembler/llvm/tests/amd64LinuxDisassemblerTest.cxx + src/disassembler/llvm/tests/mipselLinuxDisassemblerTest.cxx src/disassembler/llvm/tests/amd64MachODisassemblerTest.cxx ${frida_SOURCES} ) diff --git a/src/disassembler/llvm/tests/mipselLinuxDisassemblerTest.cxx b/src/disassembler/llvm/tests/mipselLinuxDisassemblerTest.cxx new file mode 100644 index 0000000..70511b4 --- /dev/null +++ b/src/disassembler/llvm/tests/mipselLinuxDisassemblerTest.cxx @@ -0,0 +1,72 @@ +#include +#include + +#include "core/InformationManager.hxx" +#include "core/Function.hxx" +#include "core/BasicBlock.hxx" +#include "disassembler/llvm/LLVMDisassembler.hxx" + +extern char * TEST_DATA_DIRECTORY; + +static void testMainFunction(Function* main) { + ASSERT_NE(nullptr, main); + EXPECT_STREQ("main", main->getName().c_str()); + + auto blocks = main->blocks(); + auto block = blocks.begin()->second; + EXPECT_EQ(4, blocks.size()); + EXPECT_EQ(27, block->getInstructions().size()); + EXPECT_EQ(0x4008f4, block->getNextBlock(0)); + EXPECT_EQ(0x4008dc, block->getNextBlock(1)); + + EXPECT_TRUE(blocks.find(0x4007ea) != blocks.end()); + EXPECT_TRUE(blocks.find(0x4007ce) != blocks.end()); +} + +static void testCheckFunction(Function* check) { + ASSERT_NE(nullptr, check); + EXPECT_STREQ("check", check->getName().c_str()); + + auto blocks = check->blocks(); + auto block = blocks.begin()->second; + EXPECT_EQ(1, blocks.size()); + EXPECT_EQ(24, block->getInstructions().size()); + EXPECT_EQ(0x0, block->getNextBlock(0)); + EXPECT_EQ(0x0, block->getNextBlock(1)); +} + +TEST(llvmDisassemblerTest, mipselLinuxOpenBinaryBasicStructure) { + SCOPED_TRACE("opening cryptsample.clang.mipsel.elf"); + InformationManager manager; + + llvm::InitializeAllTargetInfos(); + llvm::InitializeAllTargetMCs(); + llvm::InitializeAllAsmParsers(); + llvm::InitializeAllDisassemblers(); + + manager.reset(std::string(TEST_DATA_DIRECTORY) + + "/disassembler/binaries/crypt.clang.O2.mipsel.elf"); + + ASSERT_NE(nullptr, manager.getDisassembler()); + EXPECT_EQ(0x4005F0, manager.getDisassembler()->entryAddress()); + testCheckFunction(manager.getFunction(0x400810)); + testMainFunction(manager.getFunction(0x400870)); +} + +TEST(llvmDisassemblerTest, mipselLinuxLoadBinaryBasicStructure) { + SCOPED_TRACE("loading cryptsample.clang.mipsel.elf"); + InformationManager manager; + + llvm::InitializeAllTargetInfos(); + llvm::InitializeAllTargetMCs(); + llvm::InitializeAllAsmParsers(); + llvm::InitializeAllDisassemblers(); + + manager.load(std::string(TEST_DATA_DIRECTORY) + + "/disassembler/binaries/crypt.clang.O2.mipsel.elf.frida"); + + ASSERT_NE(nullptr, manager.getDisassembler()); + EXPECT_EQ(0x4005F0, manager.getDisassembler()->entryAddress()); + testCheckFunction(manager.getFunction(0x400810)); + testMainFunction(manager.getFunction(0x400870)); +} diff --git a/testdata/disassembler/binaries/crypt.clang.O2.mipsel.elf b/testdata/disassembler/binaries/crypt.clang.O2.mipsel.elf new file mode 100755 index 0000000000000000000000000000000000000000..492011aba8ebb6ad494b302a9691bf84b8857741 GIT binary patch literal 7188 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 literal 0 HcmV?d00001 -- 2.39.2