[PlatformDarwin] Add support for Apple Silicon.

Gets another large chunk of the testsuite to pass.
This commit is contained in:
Davide Italiano 2020-07-20 14:10:35 -07:00
parent ce052110ac
commit 001c8e1fd9
3 changed files with 42 additions and 3 deletions

View File

@ -570,12 +570,23 @@ bool PlatformDarwin::ARMGetSupportedArchitectureAtIndex(uint32_t idx,
#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
#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;
}
return false;
}
#endif
const ArchSpec::Core system_core = system_arch.GetCore();
switch (system_core) {
default:

View File

@ -282,7 +282,33 @@ PlatformMacOSX::GetFileWithUUID(const lldb_private::FileSpec &platform_file,
bool PlatformMacOSX::GetSupportedArchitectureAtIndex(uint32_t idx,
ArchSpec &arch) {
#if defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
return ARMGetSupportedArchitectureAtIndex(idx, arch);
// 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;
}
// We can't use x86GetSupportedArchitectureAtIndex() 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;
#else
return x86GetSupportedArchitectureAtIndex(idx, arch);
#endif

View File

@ -79,6 +79,8 @@ public:
private:
PlatformMacOSX(const PlatformMacOSX &) = delete;
const PlatformMacOSX &operator=(const PlatformMacOSX &) = delete;
int m_num_arches = 0;
};
#endif // LLDB_SOURCE_PLUGINS_PLATFORM_MACOSX_PLATFORMMACOSX_H