This revision was automatically updated to reflect the committed changes.
Closed by commit rG8faca2ed6ade: [lldb] Fix platform selection on Apple Silicon
(authored by JDevlieghere).
Herald added a project: LLDB.
Herald added a subscriber: lldb-commits.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D117340/new/
https://reviews.llvm.org/D117340
Files:
lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.h
lldb/source/Plugins/Platform/MacOSX/PlatformMacOSX.cpp
lldb/source/Plugins/Platform/MacOSX/PlatformRemoteMacOSX.cpp
lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp
lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h
Index: lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h
===================================================================
--- lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h
+++ lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h
@@ -42,6 +42,8 @@
std::vector<lldb_private::ArchSpec> GetSupportedArchitectures() override;
protected:
+ bool CheckLocalSharedCache() const override;
+
llvm::StringRef GetDeviceSupportDirectoryName() override;
llvm::StringRef GetPlatformName() override;
};
Index: lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp
===================================================================
--- lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp
+++ lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp
@@ -135,10 +135,17 @@
std::vector<ArchSpec> PlatformRemoteiOS::GetSupportedArchitectures() {
std::vector<ArchSpec> result;
- ARMGetSupportedArchitectures(result);
+ ARMGetSupportedArchitectures(result, llvm::Triple::IOS);
return result;
}
+bool PlatformRemoteiOS::CheckLocalSharedCache() const {
+ // You can run iPhone and iPad apps on Mac with Apple Silicon. At the
+ // platform level there's no way to distinguish them from remote iOS
+ // applications. Make sure we still read from our own shared cache.
+ return true;
+}
+
llvm::StringRef PlatformRemoteiOS::GetDeviceSupportDirectoryName() {
return "iOS DeviceSupport";
}
Index: lldb/source/Plugins/Platform/MacOSX/PlatformRemoteMacOSX.cpp
===================================================================
--- lldb/source/Plugins/Platform/MacOSX/PlatformRemoteMacOSX.cpp
+++ lldb/source/Plugins/Platform/MacOSX/PlatformRemoteMacOSX.cpp
@@ -127,7 +127,7 @@
std::vector<ArchSpec> PlatformRemoteMacOSX::GetSupportedArchitectures() {
// macOS for ARM64 support both native and translated x86_64 processes
std::vector<ArchSpec> result;
- ARMGetSupportedArchitectures(result);
+ ARMGetSupportedArchitectures(result, llvm::Triple::MacOSX);
// We can't use x86GetSupportedArchitectures() because it uses
// the system architecture for some of its return values and also
Index: lldb/source/Plugins/Platform/MacOSX/PlatformMacOSX.cpp
===================================================================
--- lldb/source/Plugins/Platform/MacOSX/PlatformMacOSX.cpp
+++ lldb/source/Plugins/Platform/MacOSX/PlatformMacOSX.cpp
@@ -137,15 +137,13 @@
std::vector<ArchSpec> result;
#if defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
// macOS for ARM64 support both native and translated x86_64 processes
- ARMGetSupportedArchitectures(result);
+ ARMGetSupportedArchitectures(result, llvm::Triple::MacOSX);
// We can't use x86GetSupportedArchitectures() because it uses
// the system architecture for some of its return values and also
// has a 32bits variant.
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
x86GetSupportedArchitectures(result);
#endif
Index: lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.h
===================================================================
--- lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.h
+++ lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.h
@@ -60,7 +60,9 @@
bool ModuleIsExcludedForUnconstrainedSearches(
lldb_private::Target &target, const lldb::ModuleSP &module_sp) override;
- void ARMGetSupportedArchitectures(std::vector<lldb_private::ArchSpec> &archs);
+ void
+ ARMGetSupportedArchitectures(std::vector<lldb_private::ArchSpec> &archs,
+ llvm::Optional<llvm::Triple::OSType> os = {});
void x86GetSupportedArchitectures(std::vector<lldb_private::ArchSpec> &archs);
@@ -141,6 +143,8 @@
const lldb_private::FileSpecList *module_search_paths_ptr,
llvm::SmallVectorImpl<lldb::ModuleSP> *old_modules, bool *did_create_ptr);
+ virtual bool CheckLocalSharedCache() const { return IsHost(); }
+
struct SDKEnumeratorInfo {
lldb_private::FileSpec found_path;
lldb_private::XcodeSDK::Type sdk_type;
Index: lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
===================================================================
--- lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
+++ lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
@@ -237,7 +237,7 @@
Status err;
- if (IsHost()) {
+ if (CheckLocalSharedCache()) {
// When debugging on the host, we are most likely using the same shared
// cache as our inferior. The dylibs from the shared cache might not
// exist on the filesystem, so let's use the images in our own memory
@@ -644,7 +644,7 @@
/// distinct names (e.g. armv7f) but armv7 binaries run fine on an armv7f
/// processor.
void PlatformDarwin::ARMGetSupportedArchitectures(
- std::vector<ArchSpec> &archs) {
+ std::vector<ArchSpec> &archs, llvm::Optional<llvm::Triple::OSType> os) {
const ArchSpec system_arch = GetSystemArchitecture();
const ArchSpec::Core system_core = system_arch.GetCore();
@@ -654,6 +654,8 @@
llvm::Triple triple;
triple.setArchName(compatible_arch);
triple.setVendor(llvm::Triple::VendorType::Apple);
+ if (os)
+ triple.setOS(*os);
archs.push_back(ArchSpec(triple));
}
}
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits