From 5ccef726c0954116f8f4b5d6347e0acdbb0b6ce3 Mon Sep 17 00:00:00 2001 From: Brandon Miller Date: Tue, 27 Jan 2026 11:26:57 -0500 Subject: Perform function lifting and inlining in arch plugins This change allows architecture plugins to override the LiftFunction callback to iterate a function's basic block list and lift entire functions at once. This is required for architectures such as TMS320 C6x, which have non-traditional "delay slots" in that branches, loads, and other instructions take multiple cycles to complete, and branch instructions can reside within the delay slots of other branches. --- defaultarch/CMakeLists.txt | 50 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 defaultarch/CMakeLists.txt (limited to 'defaultarch/CMakeLists.txt') diff --git a/defaultarch/CMakeLists.txt b/defaultarch/CMakeLists.txt new file mode 100644 index 00000000..d355f317 --- /dev/null +++ b/defaultarch/CMakeLists.txt @@ -0,0 +1,50 @@ +cmake_minimum_required(VERSION 3.13 FATAL_ERROR) + +project(defaultarch) + +if(NOT BN_INTERNAL_BUILD) + add_subdirectory(${PROJECT_SOURCE_DIR}/../.. ${PROJECT_BINARY_DIR}/api) +endif() + +file(GLOB SOURCES CONFIGURE_DEPENDS + *.cpp + *.h) + +if(DEMO) + add_library(defaultarch STATIC ${SOURCES}) +else() + add_library(defaultarch SHARED ${SOURCES}) +endif() + +target_include_directories(defaultarch + PRIVATE ${PROJECT_SOURCE_DIR} +) + +if(WIN32) + target_link_directories(defaultarch + PRIVATE ${BN_INSTALL_DIR}) + target_link_libraries(defaultarch binaryninjaapi) +else() + target_link_libraries(defaultarch binaryninjaapi) +endif() + +if(UNIX AND NOT APPLE) + target_link_options(defaultarch PRIVATE "LINKER:--exclude-libs,ALL") +endif() + +set_target_properties(defaultarch PROPERTIES + CXX_STANDARD 20 + CXX_VISIBILITY_PRESET hidden + CXX_STANDARD_REQUIRED ON + C_STANDARD 99 + C_STANDARD_REQUIRED ON + C_VISIBILITY_PRESET hidden + VISIBILITY_INLINES_HIDDEN ON + POSITION_INDEPENDENT_CODE ON) + +if(BN_INTERNAL_BUILD) + plugin_rpath(defaultarch) + set_target_properties(defaultarch PROPERTIES + LIBRARY_OUTPUT_DIRECTORY ${BN_CORE_PLUGIN_DIR} + RUNTIME_OUTPUT_DIRECTORY ${BN_CORE_PLUGIN_DIR}) +endif() -- cgit v1.3.1