diff options
| author | Brandon Miller <brandon@vector35.com> | 2025-04-02 11:24:06 -0400 |
|---|---|---|
| committer | Brandon Miller <brandon@vector35.com> | 2025-04-03 07:03:33 -0400 |
| commit | fd1ac8a1cf3c05ccdbf8762e22e9b7f01bd2abd4 (patch) | |
| tree | 29e54b50b3e8a741f78e1f0d575473f0eb6ff8e0 /view/elf/elfview.cpp | |
| parent | 67e5ac0aa51db4fd52da786a6227c8bc649814e5 (diff) | |
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
Diffstat (limited to 'view/elf/elfview.cpp')
| -rw-r--r-- | view/elf/elfview.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/view/elf/elfview.cpp b/view/elf/elfview.cpp index c87c9e05..6d19bc5f 100644 --- a/view/elf/elfview.cpp +++ b/view/elf/elfview.cpp @@ -469,6 +469,7 @@ bool ElfView::Init() m_extractMangledTypes = viewSettings->Get<bool>("analysis.extractTypesFromMangledNames", this); m_simplifyTemplates = viewSettings->Get<bool>("analysis.types.templateSimplifier", this); + bool platformSetByUser = false; Ref<Settings> settings = GetLoadSettings(GetTypeName()); if (settings) { @@ -477,11 +478,13 @@ bool ElfView::Init() if (settings->Contains("loader.platform")) { - Ref<Platform> platformOverride = Platform::GetByName(settings->Get<string>("loader.platform", this)); + BNSettingsScope scope = SettingsAutoScope; + Ref<Platform> platformOverride = Platform::GetByName(settings->Get<string>("loader.platform", this, &scope)); if (platformOverride) { m_plat = platformOverride; m_arch = m_plat->GetArchitecture(); + platformSetByUser = (scope == SettingsResourceScope); } } } @@ -752,8 +755,9 @@ bool ElfView::Init() GetParentView()->SetDefaultArchitecture(entryPointArch); Ref<Platform> platform = m_plat ? m_plat : g_elfViewType->GetPlatform(m_ident.os, m_arch); - if (platform && (entryPointArch != m_arch)) + if (platform && (entryPointArch != m_arch) && !platformSetByUser) platform = platform->GetRelatedPlatform(entryPointArch); + if (!platform) platform = entryPointArch->GetStandalonePlatform(); |
