forked from OSchip/llvm-project
[lldb] Use GetSupportedArchitectures on darwin platforms
This finishes the GetSupportedArchitectureAtIndex migration. There are opportunities to simplify this even further, but I am going to leave that to the platform owners. Differential Revision: https://reviews.llvm.org/D116028
This commit is contained in:
parent
2efc6892d8
commit
e7c48f3cd5
|
@ -265,12 +265,11 @@ CoreSimulatorSupport::Device PlatformAppleSimulator::GetSimulatorDevice() {
|
|||
}
|
||||
#endif
|
||||
|
||||
bool PlatformAppleSimulator::GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
ArchSpec &arch) {
|
||||
if (idx >= m_supported_triples.size())
|
||||
return false;
|
||||
arch = ArchSpec(m_supported_triples[idx]);
|
||||
return true;
|
||||
std::vector<ArchSpec> PlatformAppleSimulator::GetSupportedArchitectures() {
|
||||
std::vector<ArchSpec> result(m_supported_triples.size());
|
||||
llvm::transform(m_supported_triples, result.begin(),
|
||||
[](llvm::StringRef triple) { return ArchSpec(triple); });
|
||||
return result;
|
||||
}
|
||||
|
||||
PlatformSP PlatformAppleSimulator::CreateInstance(
|
||||
|
@ -380,10 +379,11 @@ Status PlatformAppleSimulator::ResolveExecutable(
|
|||
// so ask the platform for the architectures that we should be using (in
|
||||
// the correct order) and see if we can find a match that way
|
||||
StreamString arch_names;
|
||||
llvm::ListSeparator LS;
|
||||
ArchSpec platform_arch;
|
||||
for (uint32_t idx = 0; GetSupportedArchitectureAtIndex(
|
||||
idx, resolved_module_spec.GetArchitecture());
|
||||
++idx) {
|
||||
for (const ArchSpec &arch : GetSupportedArchitectures()) {
|
||||
resolved_module_spec.GetArchitecture() = arch;
|
||||
|
||||
// Only match x86 with x86 and x86_64 with x86_64...
|
||||
if (!module_spec.GetArchitecture().IsValid() ||
|
||||
module_spec.GetArchitecture().GetCore() ==
|
||||
|
@ -398,9 +398,7 @@ Status PlatformAppleSimulator::ResolveExecutable(
|
|||
error.SetErrorToGenericError();
|
||||
}
|
||||
|
||||
if (idx > 0)
|
||||
arch_names.PutCString(", ");
|
||||
arch_names.PutCString(platform_arch.GetArchitectureName());
|
||||
arch_names << LS << platform_arch.GetArchitectureName();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -65,8 +65,7 @@ public:
|
|||
lldb_private::Target &target,
|
||||
lldb_private::Status &error) override;
|
||||
|
||||
bool GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
lldb_private::ArchSpec &arch) override;
|
||||
std::vector<lldb_private::ArchSpec> GetSupportedArchitectures() override;
|
||||
|
||||
lldb_private::Status ResolveExecutable(
|
||||
const lldb_private::ModuleSpec &module_spec, lldb::ModuleSP &module_sp,
|
||||
|
|
|
@ -514,45 +514,19 @@ bool PlatformDarwin::ModuleIsExcludedForUnconstrainedSearches(
|
|||
return obj_type == ObjectFile::eTypeDynamicLinker;
|
||||
}
|
||||
|
||||
bool PlatformDarwin::x86GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
ArchSpec &arch) {
|
||||
void PlatformDarwin::x86GetSupportedArchitectures(
|
||||
std::vector<ArchSpec> &archs) {
|
||||
ArchSpec host_arch = HostInfo::GetArchitecture(HostInfo::eArchKindDefault);
|
||||
archs.push_back(host_arch);
|
||||
|
||||
if (host_arch.GetCore() == ArchSpec::eCore_x86_64_x86_64h) {
|
||||
switch (idx) {
|
||||
case 0:
|
||||
arch = host_arch;
|
||||
return true;
|
||||
|
||||
case 1:
|
||||
arch.SetTriple("x86_64-apple-macosx");
|
||||
return true;
|
||||
|
||||
case 2:
|
||||
arch = HostInfo::GetArchitecture(HostInfo::eArchKind32);
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
archs.push_back(ArchSpec("x86_64-apple-macosx"));
|
||||
archs.push_back(HostInfo::GetArchitecture(HostInfo::eArchKind32));
|
||||
} else {
|
||||
if (idx == 0) {
|
||||
arch = HostInfo::GetArchitecture(HostInfo::eArchKindDefault);
|
||||
return arch.IsValid();
|
||||
} else if (idx == 1) {
|
||||
ArchSpec platform_arch(
|
||||
HostInfo::GetArchitecture(HostInfo::eArchKindDefault));
|
||||
ArchSpec platform_arch64(
|
||||
HostInfo::GetArchitecture(HostInfo::eArchKind64));
|
||||
if (platform_arch.IsExactMatch(platform_arch64)) {
|
||||
// This macosx platform supports both 32 and 64 bit. Since we already
|
||||
// returned the 64 bit arch for idx == 0, return the 32 bit arch for
|
||||
// idx == 1
|
||||
arch = HostInfo::GetArchitecture(HostInfo::eArchKind32);
|
||||
return arch.IsValid();
|
||||
}
|
||||
}
|
||||
ArchSpec host_arch64 = HostInfo::GetArchitecture(HostInfo::eArchKind64);
|
||||
if (host_arch.IsExactMatch(host_arch64))
|
||||
archs.push_back(HostInfo::GetArchitecture(HostInfo::eArchKind32));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static llvm::ArrayRef<const char *> GetCompatibleArchs(ArchSpec::Core core) {
|
||||
|
@ -669,21 +643,19 @@ const char *PlatformDarwin::GetCompatibleArch(ArchSpec::Core core, size_t idx) {
|
|||
/// The architecture selection rules for arm processors These cpu subtypes have
|
||||
/// distinct names (e.g. armv7f) but armv7 binaries run fine on an armv7f
|
||||
/// processor.
|
||||
bool PlatformDarwin::ARMGetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
ArchSpec &arch) {
|
||||
void PlatformDarwin::ARMGetSupportedArchitectures(
|
||||
std::vector<ArchSpec> &archs) {
|
||||
const ArchSpec system_arch = GetSystemArchitecture();
|
||||
const ArchSpec::Core system_core = system_arch.GetCore();
|
||||
|
||||
if (const char *compatible_arch = GetCompatibleArch(system_core, idx)) {
|
||||
const char *compatible_arch;
|
||||
for (unsigned idx = 0;
|
||||
(compatible_arch = GetCompatibleArch(system_core, idx)); ++idx) {
|
||||
llvm::Triple triple;
|
||||
triple.setArchName(compatible_arch);
|
||||
triple.setVendor(llvm::Triple::VendorType::Apple);
|
||||
arch.SetTriple(triple);
|
||||
return true;
|
||||
archs.push_back(ArchSpec(triple));
|
||||
}
|
||||
|
||||
arch.Clear();
|
||||
return false;
|
||||
}
|
||||
|
||||
static FileSpec GetXcodeSelectPath() {
|
||||
|
@ -1367,11 +1339,3 @@ FileSpec PlatformDarwin::GetCurrentCommandLineToolsDirectory() {
|
|||
return FileSpec(FindComponentInPath(fspec.GetPath(), "CommandLineTools"));
|
||||
return {};
|
||||
}
|
||||
|
||||
std::vector<ArchSpec> PlatformDarwin::GetSupportedArchitectures() {
|
||||
std::vector<ArchSpec> result;
|
||||
ArchSpec arch;
|
||||
for (uint32_t idx = 0; GetSupportedArchitectureAtIndex(idx, arch); ++idx)
|
||||
result.push_back(arch);
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -60,11 +60,9 @@ public:
|
|||
bool ModuleIsExcludedForUnconstrainedSearches(
|
||||
lldb_private::Target &target, const lldb::ModuleSP &module_sp) override;
|
||||
|
||||
bool ARMGetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
lldb_private::ArchSpec &arch);
|
||||
void ARMGetSupportedArchitectures(std::vector<lldb_private::ArchSpec> &archs);
|
||||
|
||||
bool x86GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
lldb_private::ArchSpec &arch);
|
||||
void x86GetSupportedArchitectures(std::vector<lldb_private::ArchSpec> &archs);
|
||||
|
||||
uint32_t GetResumeCountForLaunchInfo(
|
||||
lldb_private::ProcessLaunchInfo &launch_info) override;
|
||||
|
@ -102,8 +100,6 @@ public:
|
|||
/// located in.
|
||||
static lldb_private::FileSpec GetCurrentCommandLineToolsDirectory();
|
||||
|
||||
std::vector<lldb_private::ArchSpec> GetSupportedArchitectures() override;
|
||||
|
||||
protected:
|
||||
static const char *GetCompatibleArch(lldb_private::ArchSpec::Core core,
|
||||
size_t idx);
|
||||
|
@ -174,10 +170,6 @@ protected:
|
|||
static std::string FindComponentInPath(llvm::StringRef path,
|
||||
llvm::StringRef component);
|
||||
|
||||
virtual bool
|
||||
GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
lldb_private::ArchSpec &arch) = 0;
|
||||
|
||||
std::string m_developer_directory;
|
||||
llvm::StringMap<std::string> m_sdk_path;
|
||||
std::mutex m_sdk_path_mutex;
|
||||
|
|
|
@ -911,13 +911,14 @@ Status PlatformDarwinKernel::ExamineKextForMatchingUUID(
|
|||
return {};
|
||||
}
|
||||
|
||||
bool PlatformDarwinKernel::GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
ArchSpec &arch) {
|
||||
std::vector<ArchSpec> PlatformDarwinKernel::GetSupportedArchitectures() {
|
||||
std::vector<ArchSpec> result;
|
||||
#if defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
|
||||
return ARMGetSupportedArchitectureAtIndex(idx, arch);
|
||||
ARMGetSupportedArchitectures(result);
|
||||
#else
|
||||
return x86GetSupportedArchitectureAtIndex(idx, arch);
|
||||
x86GetSupportedArchitectures(result);
|
||||
#endif
|
||||
return result;
|
||||
}
|
||||
|
||||
void PlatformDarwinKernel::CalculateTrapHandlerSymbolNames() {
|
||||
|
|
|
@ -56,8 +56,7 @@ public:
|
|||
llvm::SmallVectorImpl<lldb::ModuleSP> *old_modules,
|
||||
bool *did_create_ptr) override;
|
||||
|
||||
bool GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
lldb_private::ArchSpec &arch) override;
|
||||
std::vector<lldb_private::ArchSpec> GetSupportedArchitectures() override;
|
||||
|
||||
bool SupportsModules() override { return false; }
|
||||
|
||||
|
|
|
@ -133,39 +133,23 @@ ConstString PlatformMacOSX::GetSDKDirectory(lldb_private::Target &target) {
|
|||
return {};
|
||||
}
|
||||
|
||||
bool PlatformMacOSX::GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
ArchSpec &arch) {
|
||||
std::vector<ArchSpec> PlatformMacOSX::GetSupportedArchitectures() {
|
||||
std::vector<ArchSpec> result;
|
||||
#if defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
|
||||
// macOS for ARM64 support both native and translated x86_64 processes
|
||||
if (!m_num_arm_arches || idx < m_num_arm_arches) {
|
||||
bool res = ARMGetSupportedArchitectureAtIndex(idx, arch);
|
||||
if (res)
|
||||
return true;
|
||||
if (!m_num_arm_arches)
|
||||
m_num_arm_arches = idx;
|
||||
}
|
||||
ARMGetSupportedArchitectures(result);
|
||||
|
||||
// We can't use x86GetSupportedArchitectureAtIndex() because it uses
|
||||
// We can't use x86GetSupportedArchitectures() because it uses
|
||||
// the system architecture for some of its return values and also
|
||||
// has a 32bits variant.
|
||||
if (idx == m_num_arm_arches) {
|
||||
arch.SetTriple("x86_64-apple-macosx");
|
||||
return true;
|
||||
} else if (idx == m_num_arm_arches + 1) {
|
||||
arch.SetTriple("x86_64-apple-ios-macabi");
|
||||
return true;
|
||||
} else if (idx == m_num_arm_arches + 2) {
|
||||
arch.SetTriple("arm64-apple-ios");
|
||||
return true;
|
||||
} else if (idx == m_num_arm_arches + 3) {
|
||||
arch.SetTriple("arm64e-apple-ios");
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
result.push_back(ArchSpec("x86_64-apple-macosx"));
|
||||
result.push_back(ArchSpec("x86_64-apple-ios-macabi"));
|
||||
result.push_back(ArchSpec("arm64-apple-ios"));
|
||||
result.push_back(ArchSpec("arm64e-apple-ios"));
|
||||
#else
|
||||
return x86GetSupportedArchitectureAtIndex(idx, arch);
|
||||
x86GetSupportedArchitectures(result);
|
||||
#endif
|
||||
return result;
|
||||
}
|
||||
|
||||
lldb_private::Status PlatformMacOSX::GetSharedModule(
|
||||
|
|
|
@ -47,8 +47,7 @@ public:
|
|||
return PlatformDarwin::GetFile(source, destination);
|
||||
}
|
||||
|
||||
bool GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
lldb_private::ArchSpec &arch) override;
|
||||
std::vector<lldb_private::ArchSpec> GetSupportedArchitectures() override;
|
||||
|
||||
lldb_private::ConstString
|
||||
GetSDKDirectory(lldb_private::Target &target) override;
|
||||
|
@ -59,11 +58,6 @@ public:
|
|||
return PlatformDarwin::AddClangModuleCompilationOptionsForSDKType(
|
||||
target, options, lldb_private::XcodeSDK::Type::MacOSX);
|
||||
}
|
||||
|
||||
private:
|
||||
#if defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
|
||||
uint32_t m_num_arm_arches = 0;
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif // LLDB_SOURCE_PLUGINS_PLATFORM_MACOSX_PLATFORMMACOSX_H
|
||||
|
|
|
@ -137,34 +137,8 @@ llvm::StringRef PlatformRemoteAppleBridge::GetDescriptionStatic() {
|
|||
return "Remote BridgeOS platform plug-in.";
|
||||
}
|
||||
|
||||
bool PlatformRemoteAppleBridge::GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
ArchSpec &arch) {
|
||||
ArchSpec system_arch(GetSystemArchitecture());
|
||||
|
||||
const ArchSpec::Core system_core = system_arch.GetCore();
|
||||
switch (system_core) {
|
||||
default:
|
||||
switch (idx) {
|
||||
case 0:
|
||||
arch.SetTriple("arm64-apple-bridgeos");
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case ArchSpec::eCore_arm_arm64:
|
||||
switch (idx) {
|
||||
case 0:
|
||||
arch.SetTriple("arm64-apple-bridgeos");
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
arch.Clear();
|
||||
return false;
|
||||
std::vector<ArchSpec> PlatformRemoteAppleBridge::GetSupportedArchitectures() {
|
||||
return {ArchSpec("arm64-apple-bridgeos")};
|
||||
}
|
||||
|
||||
llvm::StringRef PlatformRemoteAppleBridge::GetDeviceSupportDirectoryName() {
|
||||
|
|
|
@ -40,8 +40,7 @@ public:
|
|||
|
||||
llvm::StringRef GetDescription() override { return GetDescriptionStatic(); }
|
||||
|
||||
bool GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
lldb_private::ArchSpec &arch) override;
|
||||
std::vector<lldb_private::ArchSpec> GetSupportedArchitectures() override;
|
||||
|
||||
protected:
|
||||
llvm::StringRef GetDeviceSupportDirectoryName() override;
|
||||
|
|
|
@ -132,90 +132,24 @@ llvm::StringRef PlatformRemoteAppleTV::GetDescriptionStatic() {
|
|||
return "Remote Apple TV platform plug-in.";
|
||||
}
|
||||
|
||||
bool PlatformRemoteAppleTV::GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
ArchSpec &arch) {
|
||||
std::vector<ArchSpec> PlatformRemoteAppleTV::GetSupportedArchitectures() {
|
||||
ArchSpec system_arch(GetSystemArchitecture());
|
||||
|
||||
const ArchSpec::Core system_core = system_arch.GetCore();
|
||||
switch (system_core) {
|
||||
default:
|
||||
switch (idx) {
|
||||
case 0:
|
||||
arch.SetTriple("arm64-apple-tvos");
|
||||
return true;
|
||||
case 1:
|
||||
arch.SetTriple("armv7s-apple-tvos");
|
||||
return true;
|
||||
case 2:
|
||||
arch.SetTriple("armv7-apple-tvos");
|
||||
return true;
|
||||
case 3:
|
||||
arch.SetTriple("thumbv7s-apple-tvos");
|
||||
return true;
|
||||
case 4:
|
||||
arch.SetTriple("thumbv7-apple-tvos");
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case ArchSpec::eCore_arm_arm64:
|
||||
switch (idx) {
|
||||
case 0:
|
||||
arch.SetTriple("arm64-apple-tvos");
|
||||
return true;
|
||||
case 1:
|
||||
arch.SetTriple("armv7s-apple-tvos");
|
||||
return true;
|
||||
case 2:
|
||||
arch.SetTriple("armv7-apple-tvos");
|
||||
return true;
|
||||
case 3:
|
||||
arch.SetTriple("thumbv7s-apple-tvos");
|
||||
return true;
|
||||
case 4:
|
||||
arch.SetTriple("thumbv7-apple-tvos");
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
return {ArchSpec("arm64-apple-tvos"), ArchSpec("armv7s-apple-tvos"),
|
||||
ArchSpec("armv7-apple-tvos"), ArchSpec("thumbv7s-apple-tvos"),
|
||||
ArchSpec("thumbv7-apple-tvos")};
|
||||
|
||||
case ArchSpec::eCore_arm_armv7s:
|
||||
switch (idx) {
|
||||
case 0:
|
||||
arch.SetTriple("armv7s-apple-tvos");
|
||||
return true;
|
||||
case 1:
|
||||
arch.SetTriple("armv7-apple-tvos");
|
||||
return true;
|
||||
case 2:
|
||||
arch.SetTriple("thumbv7s-apple-tvos");
|
||||
return true;
|
||||
case 3:
|
||||
arch.SetTriple("thumbv7-apple-tvos");
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
return {ArchSpec("armv7s-apple-tvos"), ArchSpec("armv7-apple-tvos"),
|
||||
ArchSpec("thumbv7s-apple-tvos"), ArchSpec("thumbv7-apple-tvos")};
|
||||
|
||||
case ArchSpec::eCore_arm_armv7:
|
||||
switch (idx) {
|
||||
case 0:
|
||||
arch.SetTriple("armv7-apple-tvos");
|
||||
return true;
|
||||
case 1:
|
||||
arch.SetTriple("thumbv7-apple-tvos");
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
return {ArchSpec("armv7-apple-tvos"), ArchSpec("thumbv7-apple-tvos")};
|
||||
}
|
||||
arch.Clear();
|
||||
return false;
|
||||
}
|
||||
|
||||
llvm::StringRef PlatformRemoteAppleTV::GetDeviceSupportDirectoryName() {
|
||||
|
|
|
@ -40,8 +40,7 @@ public:
|
|||
|
||||
llvm::StringRef GetDescription() override { return GetDescriptionStatic(); }
|
||||
|
||||
bool GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
lldb_private::ArchSpec &arch) override;
|
||||
std::vector<lldb_private::ArchSpec> GetSupportedArchitectures() override;
|
||||
|
||||
protected:
|
||||
llvm::StringRef GetDeviceSupportDirectoryName() override;
|
||||
|
|
|
@ -143,154 +143,39 @@ llvm::StringRef PlatformRemoteAppleWatch::GetDescriptionStatic() {
|
|||
PlatformRemoteAppleWatch::PlatformRemoteAppleWatch()
|
||||
: PlatformRemoteDarwinDevice() {}
|
||||
|
||||
bool PlatformRemoteAppleWatch::GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
ArchSpec &arch) {
|
||||
std::vector<ArchSpec> PlatformRemoteAppleWatch::GetSupportedArchitectures() {
|
||||
ArchSpec system_arch(GetSystemArchitecture());
|
||||
|
||||
const ArchSpec::Core system_core = system_arch.GetCore();
|
||||
switch (system_core) {
|
||||
default:
|
||||
switch (idx) {
|
||||
case 0:
|
||||
arch.SetTriple("arm64-apple-watchos");
|
||||
return true;
|
||||
case 1:
|
||||
arch.SetTriple("armv7k-apple-watchos");
|
||||
return true;
|
||||
case 2:
|
||||
arch.SetTriple("armv7s-apple-watchos");
|
||||
return true;
|
||||
case 3:
|
||||
arch.SetTriple("armv7-apple-watchos");
|
||||
return true;
|
||||
case 4:
|
||||
arch.SetTriple("thumbv7k-apple-watchos");
|
||||
return true;
|
||||
case 5:
|
||||
arch.SetTriple("thumbv7-apple-watchos");
|
||||
return true;
|
||||
case 6:
|
||||
arch.SetTriple("thumbv7s-apple-watchos");
|
||||
return true;
|
||||
case 7:
|
||||
arch.SetTriple("arm64_32-apple-watchos");
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case ArchSpec::eCore_arm_arm64:
|
||||
switch (idx) {
|
||||
case 0:
|
||||
arch.SetTriple("arm64-apple-watchos");
|
||||
return true;
|
||||
case 1:
|
||||
arch.SetTriple("armv7k-apple-watchos");
|
||||
return true;
|
||||
case 2:
|
||||
arch.SetTriple("armv7s-apple-watchos");
|
||||
return true;
|
||||
case 3:
|
||||
arch.SetTriple("armv7-apple-watchos");
|
||||
return true;
|
||||
case 4:
|
||||
arch.SetTriple("thumbv7k-apple-watchos");
|
||||
return true;
|
||||
case 5:
|
||||
arch.SetTriple("thumbv7-apple-watchos");
|
||||
return true;
|
||||
case 6:
|
||||
arch.SetTriple("thumbv7s-apple-watchos");
|
||||
return true;
|
||||
case 7:
|
||||
arch.SetTriple("arm64_32-apple-watchos");
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
return {
|
||||
ArchSpec("arm64-apple-watchos"), ArchSpec("armv7k-apple-watchos"),
|
||||
ArchSpec("armv7s-apple-watchos"), ArchSpec("armv7-apple-watchos"),
|
||||
ArchSpec("thumbv7k-apple-watchos"), ArchSpec("thumbv7-apple-watchos"),
|
||||
ArchSpec("thumbv7s-apple-watchos"), ArchSpec("arm64_32-apple-watchos")};
|
||||
|
||||
case ArchSpec::eCore_arm_armv7k:
|
||||
switch (idx) {
|
||||
case 0:
|
||||
arch.SetTriple("armv7k-apple-watchos");
|
||||
return true;
|
||||
case 1:
|
||||
arch.SetTriple("armv7s-apple-watchos");
|
||||
return true;
|
||||
case 2:
|
||||
arch.SetTriple("armv7-apple-watchos");
|
||||
return true;
|
||||
case 3:
|
||||
arch.SetTriple("thumbv7k-apple-watchos");
|
||||
return true;
|
||||
case 4:
|
||||
arch.SetTriple("thumbv7-apple-watchos");
|
||||
return true;
|
||||
case 5:
|
||||
arch.SetTriple("thumbv7s-apple-watchos");
|
||||
return true;
|
||||
case 6:
|
||||
arch.SetTriple("arm64_32-apple-watchos");
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
return {
|
||||
ArchSpec("armv7k-apple-watchos"), ArchSpec("armv7s-apple-watchos"),
|
||||
ArchSpec("armv7-apple-watchos"), ArchSpec("thumbv7k-apple-watchos"),
|
||||
ArchSpec("thumbv7-apple-watchos"), ArchSpec("thumbv7s-apple-watchos"),
|
||||
ArchSpec("arm64_32-apple-watchos")};
|
||||
|
||||
case ArchSpec::eCore_arm_armv7s:
|
||||
switch (idx) {
|
||||
case 0:
|
||||
arch.SetTriple("armv7s-apple-watchos");
|
||||
return true;
|
||||
case 1:
|
||||
arch.SetTriple("armv7k-apple-watchos");
|
||||
return true;
|
||||
case 2:
|
||||
arch.SetTriple("armv7-apple-watchos");
|
||||
return true;
|
||||
case 3:
|
||||
arch.SetTriple("thumbv7k-apple-watchos");
|
||||
return true;
|
||||
case 4:
|
||||
arch.SetTriple("thumbv7-apple-watchos");
|
||||
return true;
|
||||
case 5:
|
||||
arch.SetTriple("thumbv7s-apple-watchos");
|
||||
return true;
|
||||
case 6:
|
||||
arch.SetTriple("arm64_32-apple-watchos");
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
return {
|
||||
ArchSpec("armv7s-apple-watchos"), ArchSpec("armv7k-apple-watchos"),
|
||||
ArchSpec("armv7-apple-watchos"), ArchSpec("thumbv7k-apple-watchos"),
|
||||
ArchSpec("thumbv7-apple-watchos"), ArchSpec("thumbv7s-apple-watchos"),
|
||||
ArchSpec("arm64_32-apple-watchos")};
|
||||
|
||||
case ArchSpec::eCore_arm_armv7:
|
||||
switch (idx) {
|
||||
case 0:
|
||||
arch.SetTriple("armv7-apple-watchos");
|
||||
return true;
|
||||
case 1:
|
||||
arch.SetTriple("armv7k-apple-watchos");
|
||||
return true;
|
||||
case 2:
|
||||
arch.SetTriple("thumbv7k-apple-watchos");
|
||||
return true;
|
||||
case 3:
|
||||
arch.SetTriple("thumbv7-apple-watchos");
|
||||
return true;
|
||||
case 4:
|
||||
arch.SetTriple("arm64_32-apple-watchos");
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
return {ArchSpec("armv7-apple-watchos"), ArchSpec("armv7k-apple-watchos"),
|
||||
ArchSpec("thumbv7k-apple-watchos"),
|
||||
ArchSpec("thumbv7-apple-watchos"),
|
||||
ArchSpec("arm64_32-apple-watchos")};
|
||||
}
|
||||
arch.Clear();
|
||||
return false;
|
||||
}
|
||||
|
||||
llvm::StringRef PlatformRemoteAppleWatch::GetDeviceSupportDirectoryName() {
|
||||
|
|
|
@ -43,8 +43,7 @@ public:
|
|||
|
||||
// lldb_private::Platform functions
|
||||
|
||||
bool GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
lldb_private::ArchSpec &arch) override;
|
||||
std::vector<lldb_private::ArchSpec> GetSupportedArchitectures() override;
|
||||
|
||||
protected:
|
||||
llvm::StringRef GetDeviceSupportDirectoryName() override;
|
||||
|
|
|
@ -90,9 +90,9 @@ Status PlatformRemoteDarwinDevice::ResolveExecutable(
|
|||
// so ask the platform for the architectures that we should be using (in
|
||||
// the correct order) and see if we can find a match that way
|
||||
StreamString arch_names;
|
||||
for (uint32_t idx = 0; GetSupportedArchitectureAtIndex(
|
||||
idx, resolved_module_spec.GetArchitecture());
|
||||
++idx) {
|
||||
llvm::ListSeparator LS;
|
||||
for (const ArchSpec &arch : GetSupportedArchitectures()) {
|
||||
resolved_module_spec.GetArchitecture() = arch;
|
||||
error = ModuleList::GetSharedModule(resolved_module_spec, exe_module_sp,
|
||||
nullptr, nullptr, nullptr);
|
||||
// Did we find an executable using one of the
|
||||
|
@ -103,10 +103,7 @@ Status PlatformRemoteDarwinDevice::ResolveExecutable(
|
|||
error.SetErrorToGenericError();
|
||||
}
|
||||
|
||||
if (idx > 0)
|
||||
arch_names.PutCString(", ");
|
||||
arch_names.PutCString(
|
||||
resolved_module_spec.GetArchitecture().GetArchitectureName());
|
||||
arch_names << LS << arch.GetArchitectureName();
|
||||
}
|
||||
|
||||
if (error.Fail() || !exe_module_sp) {
|
||||
|
|
|
@ -124,35 +124,19 @@ PlatformSP PlatformRemoteMacOSX::CreateInstance(bool force,
|
|||
return PlatformSP();
|
||||
}
|
||||
|
||||
bool PlatformRemoteMacOSX::GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
ArchSpec &arch) {
|
||||
std::vector<ArchSpec> PlatformRemoteMacOSX::GetSupportedArchitectures() {
|
||||
// macOS for ARM64 support both native and translated x86_64 processes
|
||||
if (!m_num_arm_arches || idx < m_num_arm_arches) {
|
||||
bool res = ARMGetSupportedArchitectureAtIndex(idx, arch);
|
||||
if (res)
|
||||
return true;
|
||||
if (!m_num_arm_arches)
|
||||
m_num_arm_arches = idx;
|
||||
}
|
||||
std::vector<ArchSpec> result;
|
||||
ARMGetSupportedArchitectures(result);
|
||||
|
||||
// We can't use x86GetSupportedArchitectureAtIndex() because it uses
|
||||
// We can't use x86GetSupportedArchitectures() because it uses
|
||||
// the system architecture for some of its return values and also
|
||||
// has a 32bits variant.
|
||||
if (idx == m_num_arm_arches) {
|
||||
arch.SetTriple("x86_64-apple-macosx");
|
||||
return true;
|
||||
} else if (idx == m_num_arm_arches + 1) {
|
||||
arch.SetTriple("x86_64-apple-ios-macabi");
|
||||
return true;
|
||||
} else if (idx == m_num_arm_arches + 2) {
|
||||
arch.SetTriple("arm64-apple-ios");
|
||||
return true;
|
||||
} else if (idx == m_num_arm_arches + 3) {
|
||||
arch.SetTriple("arm64e-apple-ios");
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
result.push_back(ArchSpec("x86_64-apple-macosx"));
|
||||
result.push_back(ArchSpec("x86_64-apple-ios-macabi"));
|
||||
result.push_back(ArchSpec("arm64-apple-ios"));
|
||||
result.push_back(ArchSpec("arm64e-apple-ios"));
|
||||
return result;
|
||||
}
|
||||
|
||||
lldb_private::Status PlatformRemoteMacOSX::GetFileWithUUID(
|
||||
|
|
|
@ -42,15 +42,11 @@ public:
|
|||
const lldb_private::UUID *uuid_ptr,
|
||||
lldb_private::FileSpec &local_file) override;
|
||||
|
||||
bool GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
lldb_private::ArchSpec &arch) override;
|
||||
std::vector<lldb_private::ArchSpec> GetSupportedArchitectures() override;
|
||||
|
||||
protected:
|
||||
llvm::StringRef GetDeviceSupportDirectoryName() override;
|
||||
llvm::StringRef GetPlatformName() override;
|
||||
|
||||
private:
|
||||
uint32_t m_num_arm_arches = 0;
|
||||
};
|
||||
|
||||
#endif // LLDB_SOURCE_PLUGINS_PLATFORM_MACOSX_PLATFORMREMOTEMACOSX_H
|
||||
|
|
|
@ -133,9 +133,10 @@ llvm::StringRef PlatformRemoteiOS::GetDescriptionStatic() {
|
|||
PlatformRemoteiOS::PlatformRemoteiOS()
|
||||
: PlatformRemoteDarwinDevice() {}
|
||||
|
||||
bool PlatformRemoteiOS::GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
ArchSpec &arch) {
|
||||
return ARMGetSupportedArchitectureAtIndex(idx, arch);
|
||||
std::vector<ArchSpec> PlatformRemoteiOS::GetSupportedArchitectures() {
|
||||
std::vector<ArchSpec> result;
|
||||
ARMGetSupportedArchitectures(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
llvm::StringRef PlatformRemoteiOS::GetDeviceSupportDirectoryName() {
|
||||
|
|
|
@ -39,8 +39,7 @@ public:
|
|||
// lldb_private::PluginInterface functions
|
||||
llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
|
||||
|
||||
bool GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||
lldb_private::ArchSpec &arch) override;
|
||||
std::vector<lldb_private::ArchSpec> GetSupportedArchitectures() override;
|
||||
|
||||
protected:
|
||||
llvm::StringRef GetDeviceSupportDirectoryName() override;
|
||||
|
|
Loading…
Reference in New Issue