[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:
Pavel Labath 2021-12-17 14:13:52 +01:00
parent 2efc6892d8
commit e7c48f3cd5
19 changed files with 96 additions and 398 deletions

View File

@ -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();
}
}

View File

@ -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,

View File

@ -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;
}

View File

@ -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;

View File

@ -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() {

View File

@ -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; }

View File

@ -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(

View File

@ -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

View File

@ -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() {

View File

@ -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;

View File

@ -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() {

View File

@ -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;

View File

@ -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() {

View File

@ -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;

View File

@ -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) {

View File

@ -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(

View File

@ -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

View File

@ -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() {

View File

@ -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;