forked from OSchip/llvm-project
[PlatformDarwin] Add support for Apple Silicon.
Gets another large chunk of the testsuite to pass.
This commit is contained in:
parent
ce052110ac
commit
001c8e1fd9
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue