4
0
mirror of https://github.com/QuasarApp/LIEF.git synced 2025-05-13 11:49:34 +00:00
LIEF/tests/elf/CMakeLists.txt
Romain Thomas 4b649ad231 WIP
2018-09-08 05:25:21 +02:00

204 lines
5.9 KiB
CMake
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

cmake_minimum_required(VERSION 3.1)
include(ExternalProject)
# Targets
# =======
# Examples tests
# ==============
if (LIEF_EXAMPLES)
file(GLOB_RECURSE SAMPLES_ELF
"${LIEF_SAMPLES_DIRECTORY}/ELF/*.bin"
"${LIEF_SAMPLES_DIRECTORY}/ELF/*.so"
"${LIEF_SAMPLES_DIRECTORY}/ELF/*.pie"
)
list(REMOVE_ITEM SAMPLES_ELF
"${LIEF_SAMPLES_DIRECTORY}/ELF/ELF32_x86_binary_tiny.bin"
"${LIEF_SAMPLES_DIRECTORY}/ELF/ELF32_x86_binary_tiny01.bin"
"${LIEF_SAMPLES_DIRECTORY}/ELF/ELF64_x86-64_binary_tiny-hello.bin"
"${LIEF_SAMPLES_DIRECTORY}/ELF/ELF64_x86-64_binary_rvs.bin"
"${LIEF_SAMPLES_DIRECTORY}/ELF/ELF64_x86-64_binary_tiny.bin")
foreach(ELF_PATH ${SAMPLES_ELF})
get_filename_component(ELF_NAME ${ELF_PATH} NAME)
if (LIEF_C_API)
add_test(
NAME EXAMPLES_C_elf_reader_${ELF_NAME}
COMMAND ${LIEF_EXAMPLES_BINARY_DIR}/c/elf_reader
${ELF_PATH})
endif()
# ELF Reader
add_test(
NAME EXAMPLES_CPP_elf_reader_${ELF_NAME}
COMMAND ${LIEF_EXAMPLES_BINARY_DIR}/cpp/elf_reader
${ELF_PATH})
# ELF Strip
add_test(
NAME EXAMPLES_CPP_elf_strip_${ELF_NAME}
COMMAND ${LIEF_EXAMPLES_BINARY_DIR}/cpp/elf_strip
${ELF_PATH}
${CMAKE_CURRENT_BINARY_DIR}/${ELF_NAME}.strip)
# Abstract Reader
add_test(
NAME EXAMPLES_CPP_abstract_reader_${ELF_NAME}
COMMAND ${LIEF_EXAMPLES_BINARY_DIR}/cpp/abstract_reader
${ELF_PATH})
# Add section
if(${ELF_NAME} MATCHES "(.*)_binary_(.*)")
if (NOT ${ELF_NAME} MATCHES "ELF64_x86-64_binary_systemd-resolve.bin") # TODO
add_test(
NAME EXAMPLES_CPP_add_section_${ELF_NAME}
COMMAND ${LIEF_EXAMPLES_BINARY_DIR}/cpp/elf_add_section
${ELF_PATH}
${CMAKE_CURRENT_BINARY_DIR}/${ELF_NAME}.section)
endif()
endif()
# Elf Symbol
add_test(
NAME EXAMPLES_CPP_elf_symbols_${ELF_NAME}
COMMAND ${LIEF_EXAMPLES_BINARY_DIR}/cpp/elf_symbols
${ELF_PATH})
endforeach()
endif()
# Python tests
# ============
if (PYTHON_TESTS_ENABLED)
# Fuzzer
# ------
if (UNIX AND NOT APPLE)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/fuzzing.py.in" "${CMAKE_CURRENT_BINARY_DIR}/fuzzing.py")
ADD_PYTHON_TEST(FUZZER_ELF_bin_ls_x86
${PYTHON_EXECUTABLE}
"${CMAKE_CURRENT_BINARY_DIR}/fuzzing.py \
--input-seed=${LIEF_SAMPLES_DIRECTORY}/ELF/ELF64_x86-64_binary_ls.bin -n 100")
ADD_PYTHON_TEST(FUZZER_ELF_bin_ls_arm
${PYTHON_EXECUTABLE}
"${CMAKE_CURRENT_BINARY_DIR}/fuzzing.py \
--input-seed=${LIEF_SAMPLES_DIRECTORY}/ELF/ELF32_ARM_binary_ls.bin -n 100")
ADD_PYTHON_TEST(FUZZER_ELF_bin_nm_x86
${PYTHON_EXECUTABLE}
"${CMAKE_CURRENT_BINARY_DIR}/fuzzing.py \
--input-seed=${LIEF_SAMPLES_DIRECTORY}/ELF/ELF64_x86-64_binary_nm.bin -n 100")
endif()
# Unit tests
# ----------
ADD_PYTHON_TEST(UNITTEST_PYTHON_elf
${PYTHON_EXECUTABLE}
"${CMAKE_CURRENT_SOURCE_DIR}/elf_test.py")
ADD_PYTHON_TEST(ELF_PYTHON_add_section
${PYTHON_EXECUTABLE}
"${CMAKE_CURRENT_SOURCE_DIR}/add_section.py")
ADD_PYTHON_TEST(ELF_PYTHON_add_segment
${PYTHON_EXECUTABLE}
"${CMAKE_CURRENT_SOURCE_DIR}/add_segment.py")
ADD_PYTHON_TEST(ELF_PYTHON_add_content
${PYTHON_EXECUTABLE}
"${CMAKE_CURRENT_SOURCE_DIR}/add_content.py")
ADD_PYTHON_TEST(ELF_PYTHON_replace_segment
${PYTHON_EXECUTABLE}
"${CMAKE_CURRENT_SOURCE_DIR}/replace_segment.py")
ADD_PYTHON_TEST(ELF_PYTHON_test_dynamic
${PYTHON_EXECUTABLE}
"${CMAKE_CURRENT_SOURCE_DIR}/test_dynamic.py")
ADD_PYTHON_TEST(ELF_PYTHON_test_static
${PYTHON_EXECUTABLE}
"${CMAKE_CURRENT_SOURCE_DIR}/test_static.py")
ADD_PYTHON_TEST(ELF_PYTHON_hash_test
${PYTHON_EXECUTABLE}
"${CMAKE_CURRENT_SOURCE_DIR}/hash_tests.py")
ADD_PYTHON_TEST(ELF_PYTHON_change_interpreter
${PYTHON_EXECUTABLE}
"${CMAKE_CURRENT_SOURCE_DIR}/change_interpreter.py")
ADD_PYTHON_TEST(ELF_PYTHON_notes
${PYTHON_EXECUTABLE}
"${CMAKE_CURRENT_SOURCE_DIR}/test_notes.py")
ADD_PYTHON_TEST(ELF_PYTHON_bin2lib
${PYTHON_EXECUTABLE}
"${CMAKE_CURRENT_SOURCE_DIR}/test_bin2lib.py")
ADD_PYTHON_TEST(ELF_PYTHON_modify_relocations
${PYTHON_EXECUTABLE}
"${CMAKE_CURRENT_SOURCE_DIR}/modify_relocations.py")
ADD_PYTHON_TEST(ELF_PYTHON_remove_section
${PYTHON_EXECUTABLE}
"${CMAKE_CURRENT_SOURCE_DIR}/remove_section.py")
ADD_PYTHON_TEST(ELF_PYTHON_parser
${PYTHON_EXECUTABLE}
"${CMAKE_CURRENT_SOURCE_DIR}/test_parser.py")
ADD_PYTHON_TEST(ELF_PYTHON_equality
${PYTHON_EXECUTABLE}
"${CMAKE_CURRENT_SOURCE_DIR}/test_equality.py")
# Examples
# --------
ADD_PYTHON_TEST(EXAMPLE_PYTHON_elf_reader_ls
${PYTHON_EXECUTABLE}
"${LIEF_EXAMPLES_DIRECTORY}/python/elf_reader.py --all \
${LIEF_SAMPLES_DIRECTORY}/ELF/ELF32_x86_binary_ls.bin")
ADD_PYTHON_TEST(EXAMPLE_PYTHON_elf_reader_arm
${PYTHON_EXECUTABLE}
"${LIEF_EXAMPLES_DIRECTORY}/python/elf_reader.py --all \
${LIEF_SAMPLES_DIRECTORY}/ELF/ELF32_ARM_binary_ls.bin")
ADD_PYTHON_TEST(EXAMPLE_PYTHON_elf_remove_sections_table
${PYTHON_EXECUTABLE}
"${LIEF_EXAMPLES_DIRECTORY}/python/elf_remove_section_table.py \
${LIEF_SAMPLES_DIRECTORY}/ELF/ELF32_x86_binary_ls.bin \
${CMAKE_CURRENT_BINARY_DIR}/ls_without_sections")
ADD_PYTHON_TEST(EXAMPLE_PYTHON_elf_symbol_obfuscation
${PYTHON_EXECUTABLE}
"${LIEF_EXAMPLES_DIRECTORY}/python/elf_symbol_obfuscation.py \
${LIEF_SAMPLES_DIRECTORY}/ELF/ELF32_x86_binary_ls.bin \
${CMAKE_CURRENT_BINARY_DIR}/ls_symbol_obfuscated")
ADD_PYTHON_TEST(EXAMPLE_PYTHON_elf_unstrip
${PYTHON_EXECUTABLE}
"${LIEF_EXAMPLES_DIRECTORY}/python/elf_unstrip.py \
${LIEF_SAMPLES_DIRECTORY}/ELF/ELF64_x86-64_binary_ls.bin \
${CMAKE_CURRENT_BINARY_DIR}/ls_unstriped")
ADD_PYTHON_TEST(EXAMPLE_PYTHON_elf_json
${PYTHON_EXECUTABLE}
"${LIEF_EXAMPLES_DIRECTORY}/python/elf_json.py \
${LIEF_SAMPLES_DIRECTORY}/ELF/ELF64_x86-64_binary_ls.bin")
endif()