summaryrefslogtreecommitdiff
path: root/view/sharedcache/core
diff options
context:
space:
mode:
authorkat <kat@vector35.com>2024-10-28 12:58:23 -0400
committerkat <kat@vector35.com>2024-10-28 12:58:51 -0400
commitfc5ffbbcfbc16402583a9e05d7db3036ad587066 (patch)
tree1448f57740483206a1fa688e605724188129ea05 /view/sharedcache/core
parent07bce5f257d30061475452ec9c2e06a132747b54 (diff)
[SharedCache] Warnings Cleanup
Diffstat (limited to 'view/sharedcache/core')
-rw-r--r--view/sharedcache/core/DSCView.cpp6
-rw-r--r--view/sharedcache/core/SharedCache.cpp42
2 files changed, 22 insertions, 26 deletions
diff --git a/view/sharedcache/core/DSCView.cpp b/view/sharedcache/core/DSCView.cpp
index e690f765..7a1b3677 100644
--- a/view/sharedcache/core/DSCView.cpp
+++ b/view/sharedcache/core/DSCView.cpp
@@ -207,8 +207,7 @@ bool DSCView::Init()
if (!settings)
{
Ref<Settings> programSettings = Settings::Instance();
- programSettings->Set("workflows.enable", true, this);
- programSettings->Set("workflows.functionWorkflow", "core.function.dsc", this);
+ programSettings->Set("analysis.workflows.functionWorkflow", "core.function.dsc", this);
}
// Add Mach-O file header type info
@@ -751,6 +750,7 @@ bool DSCView::Init()
}
AddAutoSegment(primaryBase, 0x200, 0, 0x200, SegmentReadable);
+ AddAutoSection("__dsc_header", primaryBase, 0x200, ReadOnlyCodeSectionSemantics);
DefineType("dyld_cache_header", headerType.name, headerType.type);
DefineAutoSymbolAndVariableOrFunction(GetDefaultPlatform(), new Symbol(DataSymbol, "primary_cache_header", primaryBase), headerType.type);
@@ -789,7 +789,7 @@ Ref<Settings> DSCViewType::GetLoadSettingsForData(BinaryView* data)
}
Ref<Settings> programSettings = Settings::Instance();
- programSettings->Set("workflows.functionWorkflow", "core.function.dsc", viewRef);
+ programSettings->Set("analysis.workflows.functionWorkflow", "core.function.dsc", viewRef);
settings->RegisterSetting("loader.dsc.processCFStrings",
R"({
diff --git a/view/sharedcache/core/SharedCache.cpp b/view/sharedcache/core/SharedCache.cpp
index d468ff9a..a597cfb5 100644
--- a/view/sharedcache/core/SharedCache.cpp
+++ b/view/sharedcache/core/SharedCache.cpp
@@ -1341,33 +1341,29 @@ SharedCache::SharedCache(BinaryNinja::Ref<BinaryNinja::BinaryView> dscView) : m_
{
if (m_viewState == DSCViewStateUnloaded)
{
- // maybe we are getting called from UI thread. probably. do this on a separate thread just in case.
- // TODO `wait` argument
- WorkerEnqueue([this]() {
- std::unique_lock<std::mutex> lock(viewSpecificMutexes[m_dscView->GetFile()->GetSessionId()].viewOperationsThatInfluenceMetadataMutex);
- try {
- PerformInitialLoad();
- }
- catch (...)
- {
- m_logger->LogError("Failed to perform initial load of Shared Cache");
- }
+ std::unique_lock<std::mutex> lock(viewSpecificMutexes[m_dscView->GetFile()->GetSessionId()].viewOperationsThatInfluenceMetadataMutex);
+ try {
+ PerformInitialLoad();
+ }
+ catch (...)
+ {
+ m_logger->LogError("Failed to perform initial load of Shared Cache");
+ }
- for (const auto& [_, header] : m_headers)
+ for (const auto& [_, header] : m_headers)
+ {
+ if (header.installName.find("libsystem_c.dylib") != std::string::npos)
{
- if (header.installName.find("libsystem_c.dylib") != std::string::npos)
- {
- lock.unlock();
- m_logger->LogInfo("Loading core libsystem_c.dylib library");
- LoadImageWithInstallName(header.installName);
- lock.lock();
- break ;
- }
+ lock.unlock();
+ m_logger->LogInfo("Loading core libsystem_c.dylib library");
+ LoadImageWithInstallName(header.installName);
+ lock.lock();
+ break ;
}
+ }
- m_viewState = DSCViewStateLoaded;
- SaveToDSCView();
- });
+ m_viewState = DSCViewStateLoaded;
+ SaveToDSCView();
}
}
else