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"
|
#define OSNAME "watchos"
|
||||||
#elif defined(TARGET_OS_BRIDGE) && TARGET_OS_BRIDGE == 1
|
#elif defined(TARGET_OS_BRIDGE) && TARGET_OS_BRIDGE == 1
|
||||||
#define OSNAME "bridgeos"
|
#define OSNAME "bridgeos"
|
||||||
#elif defined(TARGET_OS_OSX) && TARGET_OS_OSX == 1
|
|
||||||
#define OSNAME "macosx"
|
|
||||||
#else
|
#else
|
||||||
#define OSNAME "ios"
|
#define OSNAME "ios"
|
||||||
#endif
|
#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();
|
const ArchSpec::Core system_core = system_arch.GetCore();
|
||||||
switch (system_core) {
|
switch (system_core) {
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -282,7 +282,33 @@ PlatformMacOSX::GetFileWithUUID(const lldb_private::FileSpec &platform_file,
|
||||||
bool PlatformMacOSX::GetSupportedArchitectureAtIndex(uint32_t idx,
|
bool PlatformMacOSX::GetSupportedArchitectureAtIndex(uint32_t idx,
|
||||||
ArchSpec &arch) {
|
ArchSpec &arch) {
|
||||||
#if defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
|
#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
|
#else
|
||||||
return x86GetSupportedArchitectureAtIndex(idx, arch);
|
return x86GetSupportedArchitectureAtIndex(idx, arch);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -79,6 +79,8 @@ public:
|
||||||
private:
|
private:
|
||||||
PlatformMacOSX(const PlatformMacOSX &) = delete;
|
PlatformMacOSX(const PlatformMacOSX &) = delete;
|
||||||
const PlatformMacOSX &operator=(const PlatformMacOSX &) = delete;
|
const PlatformMacOSX &operator=(const PlatformMacOSX &) = delete;
|
||||||
|
|
||||||
|
int m_num_arches = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // LLDB_SOURCE_PLUGINS_PLATFORM_MACOSX_PLATFORMMACOSX_H
|
#endif // LLDB_SOURCE_PLUGINS_PLATFORM_MACOSX_PLATFORMMACOSX_H
|
||||||
|
|
Loading…
Reference in New Issue