Index: source/Target/TargetList.cpp =================================================================== --- source/Target/TargetList.cpp +++ source/Target/TargetList.cpp @@ -291,27 +291,34 @@ } } - // If we have a valid architecture, make sure the current platform is - // compatible with that architecture - if (!prefer_platform_arch && arch.IsValid()) + if (!platform_sp) { - if (!platform_sp->IsCompatibleArchitecture(arch, false, &platform_arch)) + // Get the current platform. + platform_sp = debugger.GetPlatformList().GetSelectedPlatform(); + assert(platform_sp); + + // If we have a valid architecture, make sure the current platform is + // compatible with that architecture + if (!prefer_platform_arch && arch.IsValid()) { - platform_sp = Platform::GetPlatformForArchitecture(arch, &platform_arch); - if (!is_dummy_target && platform_sp) - debugger.GetPlatformList().SetSelectedPlatform(platform_sp); + if (!platform_sp->IsCompatibleArchitecture(arch, false, &platform_arch)) + { + platform_sp = Platform::GetPlatformForArchitecture(arch, &platform_arch); + if (!is_dummy_target && platform_sp) + debugger.GetPlatformList().SetSelectedPlatform(platform_sp); + } } - } - else if (platform_arch.IsValid()) - { - // if "arch" isn't valid, yet "platform_arch" is, it means we have an executable file with - // a single architecture which should be used - ArchSpec fixed_platform_arch; - if (!platform_sp->IsCompatibleArchitecture(platform_arch, false, &fixed_platform_arch)) + else if (platform_arch.IsValid()) { - platform_sp = Platform::GetPlatformForArchitecture(platform_arch, &fixed_platform_arch); - if (!is_dummy_target && platform_sp) - debugger.GetPlatformList().SetSelectedPlatform(platform_sp); + // if "arch" isn't valid, yet "platform_arch" is, it means we have an executable file with + // a single architecture which should be used + ArchSpec fixed_platform_arch; + if (!platform_sp->IsCompatibleArchitecture(platform_arch, false, &fixed_platform_arch)) + { + platform_sp = Platform::GetPlatformForArchitecture(platform_arch, &fixed_platform_arch); + if (!is_dummy_target && platform_sp) + debugger.GetPlatformList().SetSelectedPlatform(platform_sp); + } } }