diff --git a/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp b/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp --- a/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp +++ b/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp @@ -559,6 +559,15 @@ switch (core) { default: LLVM_FALLTHROUGH; + case ArchSpec::eCore_arm_arm64e: { + static const char *g_arm64e_compatible_archs[] = { + "arm64e", "arm64", "armv7", "armv7f", "armv7k", "armv7s", + "armv7m", "armv7em", "armv6m", "armv6", "armv5", "armv4", + "arm", "thumbv7", "thumbv7f", "thumbv7k", "thumbv7s", "thumbv7m", + "thumbv7em", "thumbv6m", "thumbv6", "thumbv5", "thumbv4t", "thumb", + }; + return {g_arm64e_compatible_archs}; + } case ArchSpec::eCore_arm_arm64: { static const char *g_arm64_compatible_archs[] = { "arm64", "armv7", "armv7f", "armv7k", "armv7s", "armv7m", @@ -654,38 +663,15 @@ /// processor. bool PlatformDarwin::ARMGetSupportedArchitectureAtIndex(uint32_t idx, ArchSpec &arch) { -#if TARGET_OS_OSX - if (IsHost()) { - if (idx == 0) { - arch.SetTriple("arm64e-apple-macosx"); - return true; - } else if (idx == 1) { - arch.SetTriple("arm64-apple-macosx"); - return true; - } - arch.Clear(); - return false; - } -#endif - -#if defined(TARGET_OS_TV) && TARGET_OS_TV == 1 -#define OSNAME "tvos" -#elif defined(TARGET_OS_WATCH) && TARGET_OS_WATCH == 1 -#define OSNAME "watchos" -#elif defined(TARGET_OS_BRIDGE) && TARGET_OS_BRIDGE == 1 -#define OSNAME "bridgeos" -#elif defined(TARGET_OS_OSX) && TARGET_OS_OSX == 1 -#define OSNAME "macosx" -#else -#define OSNAME "ios" -#endif - const ArchSpec system_arch = GetSystemArchitecture(); const ArchSpec::Core system_core = system_arch.GetCore(); + if (const char *compatible_arch = GetCompatibleArch(system_core, idx)) { - std::string triple = - llvm::formatv("{0}-apple-" OSNAME, compatible_arch).str(); + llvm::Triple triple; + triple.setArchName(compatible_arch); + triple.setVendor(llvm::Triple::VendorType::Apple); arch.SetTriple(triple); + return true; } arch.Clear();