diff --git a/lldb/source/API/SBDebugger.cpp b/lldb/source/API/SBDebugger.cpp --- a/lldb/source/API/SBDebugger.cpp +++ b/lldb/source/API/SBDebugger.cpp @@ -805,11 +805,13 @@ if (m_opaque_sp) { Status error; const bool add_dependent_modules = true; - + PlatformSP platform_sp = m_opaque_sp->GetPlatformList().GetSelectedPlatform(); + ArchSpec arch = Platform::GetAugmentedArchSpec( + platform_sp.get(), arch_cstr); error = m_opaque_sp->GetTargetList().CreateTarget( - *m_opaque_sp, filename, arch_cstr, - add_dependent_modules ? eLoadDependentsYes : eLoadDependentsNo, nullptr, - target_sp); + *m_opaque_sp, filename, arch, + add_dependent_modules ? eLoadDependentsYes : eLoadDependentsNo, + platform_sp, target_sp); if (error.Success()) sb_target.SetSP(target_sp); diff --git a/lldb/test/API/python_api/target/TestTargetAPI.py b/lldb/test/API/python_api/target/TestTargetAPI.py --- a/lldb/test/API/python_api/target/TestTargetAPI.py +++ b/lldb/test/API/python_api/target/TestTargetAPI.py @@ -476,3 +476,15 @@ desc2 = get_description(symbol2) self.assertTrue(desc1 and desc2 and desc1 == desc2, "The two addresses should resolve to the same symbol") + def test_default_arch(self): + """ Test the other two target create methods using LLDB_ARCH_DEFAULT. """ + self.build() + exe = self.getBuildArtifact("a.out") + target = self.dbg.CreateTargetWithFileAndArch(exe, lldb.LLDB_ARCH_DEFAULT) + self.assertTrue(target.IsValid(), "Default arch made a valid target.") + # This should also work with the target's triple: + target2 = self.dbg.CreateTargetWithFileAndArch(exe, target.GetTriple()) + self.assertTrue(target2.IsValid(), "Round trip with triple works") + # And this triple should work for the FileAndTriple API: + target3 = self.dbg.CreateTargetWithFileAndTargetTriple(exe, target.GetTriple()) + self.assertTrue(target3.IsValid())