From fd1ac8a1cf3c05ccdbf8762e22e9b7f01bd2abd4 Mon Sep 17 00:00:00 2001 From: Brandon Miller Date: Wed, 2 Apr 2025 11:24:06 -0400 Subject: Fix user platform override between armv7 and thumb Only override the default platform based on the entry point architecture in cases where the user didn't explicitly set loader.platform --- view/pe/peview.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'view/pe/peview.cpp') diff --git a/view/pe/peview.cpp b/view/pe/peview.cpp index 77c52da8..96103155 100644 --- a/view/pe/peview.cpp +++ b/view/pe/peview.cpp @@ -597,6 +597,7 @@ bool PEView::Init() m_extractMangledTypes = viewSettings->Get("analysis.extractTypesFromMangledNames", this); m_simplifyTemplates = viewSettings->Get("analysis.types.templateSimplifier", this); + bool platformSetByUser = false; settings = GetLoadSettings(GetTypeName()); if (settings) { @@ -605,11 +606,13 @@ bool PEView::Init() if (settings->Contains("loader.platform")) { - Ref platformOverride = Platform::GetByName(settings->Get("loader.platform", this)); + BNSettingsScope scope = SettingsAutoScope; + Ref platformOverride = Platform::GetByName(settings->Get("loader.platform", this, &scope)); if (platformOverride) { platform = platformOverride; m_arch = platform->GetArchitecture(); + platformSetByUser = (scope == SettingsResourceScope); } } } @@ -647,7 +650,9 @@ bool PEView::Init() return false; } - platform = platform->GetAssociatedPlatformByAddress(m_entryPoint); + if (!platformSetByUser) + platform = platform->GetAssociatedPlatformByAddress(m_entryPoint); + SetDefaultPlatform(platform); SetDefaultArchitecture(platform->GetArchitecture()); -- cgit v1.3.1