summaryrefslogtreecommitdiff
path: root/view/sharedcache/workflow/SharedCacheWorkflow.cpp
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2025-04-28 18:28:26 -0400
committerMason Reed <mason@vector35.com>2025-04-28 18:28:31 -0400
commit8267ab475cb2ac82fd3724c009f21e8e30143f6b (patch)
treecb3f759c3b9659b077b090ce66d402a43b9fede9 /view/sharedcache/workflow/SharedCacheWorkflow.cpp
parent4b04f93ad0161bef8434300a153aed4f5ec100f9 (diff)
[SharedCache] Improve support for older shared cache versions
Fixed branch island regions being skipped
Diffstat (limited to 'view/sharedcache/workflow/SharedCacheWorkflow.cpp')
-rw-r--r--view/sharedcache/workflow/SharedCacheWorkflow.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/view/sharedcache/workflow/SharedCacheWorkflow.cpp b/view/sharedcache/workflow/SharedCacheWorkflow.cpp
index 7f63866a..dcccfe74 100644
--- a/view/sharedcache/workflow/SharedCacheWorkflow.cpp
+++ b/view/sharedcache/workflow/SharedCacheWorkflow.cpp
@@ -126,7 +126,9 @@ void AnalyzeStubFunction(Ref<Function> func, Ref<MediumLevelILFunction> mlil, Sh
if (region->type == SharedCacheRegionTypeImage)
return false;
// Adjust the new region semantics to read only, this helps analysis pickup constant loads in our stub functions.
- region->flags = static_cast<BNSegmentFlag>(SegmentReadable | SegmentContainsData);
+ // NOTE: We do NOT do this for stub island as that contains CODE!
+ if (region->type != SharedCacheRegionTypeStubIsland)
+ region->flags = static_cast<BNSegmentFlag>(SegmentReadable | SegmentContainsData);
return controller.ApplyRegion(*view, *region);
};