From 2e855275732aed00486ca100f4151f4074d9949e Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Fri, 4 Apr 2025 23:45:06 -0400 Subject: [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. --- view/sharedcache/core/SharedCacheController.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'view/sharedcache/core/SharedCacheController.cpp') 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) : m_cache(std::move(cache)) +SharedCacheController::SharedCacheController(SharedCache&& cache, Ref logger) : m_cache(std::move(cache)) { INIT_DSC_API_OBJECT(); m_logger = std::move(logger); @@ -65,7 +65,7 @@ SharedCacheController::SharedCacheController(SharedCache cache, Ref logg m_regionFilter = std::regex(".*LINKEDIT.*"); } -DSCRef SharedCacheController::Initialize(BinaryView& view, SharedCache cache) +DSCRef SharedCacheController::Initialize(BinaryView& view, SharedCache&& cache) { auto id = GetViewIdFromView(view); std::unique_lock lock(GlobalControllersMutex); -- cgit v1.3.1