summaryrefslogtreecommitdiff
path: root/view/sharedcache/core/SharedCacheController.cpp
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2025-04-04 23:45:06 -0400
committerMason Reed <mason@vector35.com>2025-04-06 20:00:37 -0400
commit2e855275732aed00486ca100f4151f4074d9949e (patch)
tree24916cf3ffe405706c18d34808d26ef2de893139 /view/sharedcache/core/SharedCacheController.cpp
parent41450c3df2be33b817c864fb71ca38d76d81d2ab (diff)
[SharedCache] Add a named symbol map
Fixes https://github.com/Vector35/binaryninja-api/issues/6561 - Also tightens the SharedCache class to move only, to prevent accidental copies. - Also removes some extra copies in FFI when should pass by ref - Also adds `get_symbol_with_name` to python API The current named symbol map is populated in a worker thread spawned in the view init. This is because populating the map can take about 1 second. If we are fine with another 1 second added to the view init time then we can add it serially but I don't think this way is _that_ bad, no analysis consults this, however a user might add a workflow that would be racing this. So we need to add a mutex.
Diffstat (limited to 'view/sharedcache/core/SharedCacheController.cpp')
-rw-r--r--view/sharedcache/core/SharedCacheController.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/view/sharedcache/core/SharedCacheController.cpp b/view/sharedcache/core/SharedCacheController.cpp
index 2dabefb5..678f4b59 100644
--- a/view/sharedcache/core/SharedCacheController.cpp
+++ b/view/sharedcache/core/SharedCacheController.cpp
@@ -54,7 +54,7 @@ void RegisterSharedCacheControllerDestructor()
BNRegisterObjectDestructionCallbacks(&callbacks);
}
-SharedCacheController::SharedCacheController(SharedCache cache, Ref<Logger> logger) : m_cache(std::move(cache))
+SharedCacheController::SharedCacheController(SharedCache&& cache, Ref<Logger> logger) : m_cache(std::move(cache))
{
INIT_DSC_API_OBJECT();
m_logger = std::move(logger);
@@ -65,7 +65,7 @@ SharedCacheController::SharedCacheController(SharedCache cache, Ref<Logger> logg
m_regionFilter = std::regex(".*LINKEDIT.*");
}
-DSCRef<SharedCacheController> SharedCacheController::Initialize(BinaryView& view, SharedCache cache)
+DSCRef<SharedCacheController> SharedCacheController::Initialize(BinaryView& view, SharedCache&& cache)
{
auto id = GetViewIdFromView(view);
std::unique_lock<std::shared_mutex> lock(GlobalControllersMutex);