Skip to content

Commit 0045e9e

Browse files
committed
Here
1 parent 1014cb1 commit 0045e9e

File tree

8 files changed

+97
-2
lines changed

8 files changed

+97
-2
lines changed

Cargo.lock

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ members = [
1717
"plugins/idb_import",
1818
"plugins/pdb-ng",
1919
"plugins/pdb-ng/demo",
20-
"plugins/warp"
20+
"plugins/warp",
21+
"view/sharedcache/core/rust/"
2122
]
2223

2324
[workspace.dependencies]
@@ -36,4 +37,4 @@ lto = false
3637
# Disable LTO on demo builds, it will export `rust_eh_personality`
3738
[profile.dev-demo]
3839
inherits = "dev"
39-
lto = false
40+
lto = false

view/sharedcache/core/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ target_compile_definitions(sharedcachecore PRIVATE SHAREDCACHE_LIBRARY ${COMPILE
7979

8080
target_include_directories(sharedcachecore PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${INCLUDES})
8181

82+
add_subdirectory(rust)
83+
target_link_libraries(sharedcachecore PRIVATE sharedcacherust)
84+
8285
set_target_properties(sharedcachecore PROPERTIES
8386
CXX_STANDARD 17
8487
CXX_VISIBILITY_PRESET hidden

view/sharedcache/core/SharedCache.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1360,9 +1360,12 @@ void SharedCache::ParseAndApplySlideInfoForFile(std::shared_ptr<MMappedFileAcces
13601360
file->SetSlideInfoWasApplied(true);
13611361
}
13621362

1363+
#include "rust/ffi.h"
13631364

13641365
SharedCache::SharedCache(BinaryNinja::Ref<BinaryNinja::BinaryView> dscView) : m_dscView(dscView), m_viewSpecificState(ViewSpecificStateForView(dscView))
13651366
{
1367+
int result = add_numbers(6, 6);
1368+
LogInfo("SharedCacheRust: %d", result);
13661369
m_logger = LogRegistry::GetLogger("SharedCache", dscView->GetFile()->GetSessionId());
13671370
if (dscView->GetTypeName() != VIEW_NAME)
13681371
{
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
2+
3+
project(sharedcacherust)
4+
5+
file(GLOB SOURCES CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/Cargo.toml ${PROJECT_SOURCE_DIR}/src/*.rs ${PROJECT_SOURCE_DIR}/ffi.h)
6+
7+
if(CMAKE_BUILD_TYPE MATCHES Debug)
8+
set(LIB_DIR ${PROJECT_BINARY_DIR}/target/debug)
9+
set(CARGO_OPTS --target-dir=${PROJECT_BINARY_DIR}/target)
10+
else()
11+
set(LIB_DIR ${PROJECT_BINARY_DIR}/target/release)
12+
set(CARGO_OPTS --target-dir=${PROJECT_BINARY_DIR}/target --release)
13+
endif()
14+
15+
set(LIB_PATH ${LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${PROJECT_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX})
16+
17+
find_program(RUSTUP_PATH rustup REQUIRED HINTS ~/.cargo/bin)
18+
set(RUSTUP_COMMAND ${RUSTUP_PATH} run ${CARGO_STABLE_VERSION} cargo)
19+
20+
if(APPLE)
21+
if(UNIVERSAL)
22+
if(CMAKE_BUILD_TYPE MATCHES Debug)
23+
set(AARCH64_LIB_PATH ${PROJECT_BINARY_DIR}/target/aarch64-apple-darwin/debug/${CMAKE_STATIC_LIBRARY_PREFIX}${PROJECT_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX})
24+
set(X86_64_LIB_PATH ${PROJECT_BINARY_DIR}/target/x86_64-apple-darwin/debug/${CMAKE_STATIC_LIBRARY_PREFIX}${PROJECT_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX})
25+
else()
26+
set(AARCH64_LIB_PATH ${PROJECT_BINARY_DIR}/target/aarch64-apple-darwin/release/${CMAKE_STATIC_LIBRARY_PREFIX}${PROJECT_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX})
27+
set(X86_64_LIB_PATH ${PROJECT_BINARY_DIR}/target/x86_64-apple-darwin/release/${CMAKE_STATIC_LIBRARY_PREFIX}${PROJECT_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX})
28+
endif()
29+
30+
add_custom_command(
31+
OUTPUT ${LIB_PATH}
32+
COMMAND ${CMAKE_COMMAND} -E env MACOSX_DEPLOYMENT_TARGET=10.14
33+
${RUSTUP_COMMAND} clean --target=aarch64-apple-darwin ${CARGO_OPTS}
34+
COMMAND ${CMAKE_COMMAND} -E env MACOSX_DEPLOYMENT_TARGET=10.14
35+
${RUSTUP_COMMAND} clean --target=x86_64-apple-darwin ${CARGO_OPTS}
36+
COMMAND ${CMAKE_COMMAND} -E env MACOSX_DEPLOYMENT_TARGET=10.14
37+
${RUSTUP_COMMAND} build --target=aarch64-apple-darwin ${CARGO_OPTS}
38+
COMMAND ${CMAKE_COMMAND} -E env MACOSX_DEPLOYMENT_TARGET=10.14
39+
${RUSTUP_COMMAND} build --target=x86_64-apple-darwin ${CARGO_OPTS}
40+
COMMAND mkdir -p ${LIB_DIR}
41+
COMMAND lipo -create ${AARCH64_LIB_PATH} ${X86_64_LIB_PATH} -output ${LIB_PATH}
42+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
43+
DEPENDS ${SOURCES})
44+
else()
45+
add_custom_command(
46+
OUTPUT ${LIB_PATH}
47+
COMMAND ${CMAKE_COMMAND} -E env MACOSX_DEPLOYMENT_TARGET=10.14
48+
${RUSTUP_COMMAND} clean ${CARGO_OPTS}
49+
COMMAND ${CMAKE_COMMAND} -E env MACOSX_DEPLOYMENT_TARGET=10.14
50+
${RUSTUP_COMMAND} build ${CARGO_OPTS}
51+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
52+
DEPENDS ${SOURCES})
53+
endif()
54+
else()
55+
add_custom_command(
56+
OUTPUT ${LIB_PATH}
57+
COMMAND ${RUSTUP_COMMAND} clean ${CARGO_OPTS}
58+
COMMAND ${RUSTUP_COMMAND} build ${CARGO_OPTS}
59+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
60+
DEPENDS ${SOURCES})
61+
endif()
62+
63+
add_custom_target(sharedcacherust_target ALL DEPENDS ${LIB_PATH})
64+
add_library(sharedcacherust STATIC IMPORTED GLOBAL)
65+
add_dependencies(sharedcacherust sharedcacherust_target)
66+
set_target_properties(sharedcacherust PROPERTIES IMPORTED_LOCATION ${LIB_PATH})
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[package]
2+
name = "sharedcacherust"
3+
version = "0.1.0"
4+
edition = "2021"
5+
6+
[lib]
7+
crate-type = ["staticlib"]
8+
9+
[dependencies]

view/sharedcache/core/rust/ffi.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#pragma once
2+
3+
extern "C" {
4+
int add_numbers(int a, int b);
5+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#[no_mangle]
2+
pub extern "C" fn add_numbers(a: i32, b: i32) -> i32 {
3+
a + b
4+
}

0 commit comments

Comments
 (0)