From 66a6fa631eb33673a29059fee64d3eef26fc5c28 Mon Sep 17 00:00:00 2001 From: Adrian Prantl Date: Fri, 6 Mar 2020 09:52:20 -0800 Subject: [PATCH] Revert "Correctly identify iOS simulator processes in debugserver." This reverts commit 59d816d88464e93a89e0d9c80c8855ab1f453541. It broke TestGDBRemoteClient. --- .../gdb-remote/GDBRemoteCommunicationClient.cpp | 26 ++++------ .../gdb_remote_client/TestIOSSimulator.py | 58 ---------------------- .../functionalities/gdb_remote_client/TestWasm.py | 2 + .../gdb_remote_client/gdbclientutils.py | 5 -- .../tools/debugserver/source/MacOSX/MachProcess.mm | 27 +++------- 5 files changed, 18 insertions(+), 100 deletions(-) delete mode 100644 lldb/test/API/functionalities/gdb_remote_client/TestIOSSimulator.py diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp index 5005272..6021c26 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp @@ -1131,20 +1131,6 @@ bool GDBRemoteCommunicationClient::GetDefaultThreadId(lldb::tid_t &tid) { return true; } -static void ParseOSType(llvm::StringRef value, std::string &os_name, - std::string &environment) { - if (value.equals("iossimulator") || value.equals("tvossimulator") || - value.equals("watchossimulator")) { - environment = "simulator"; - os_name = value.drop_back(environment.size()).str(); - } else if (value.equals("maccatalyst")) { - os_name = "ios"; - environment = "macabi"; - } else { - os_name = value.str(); - } -} - bool GDBRemoteCommunicationClient::GetHostInfo(bool force) { Log *log(ProcessGDBRemoteLog::GetLogIfAnyCategoryIsSet(GDBR_LOG_PROCESS)); @@ -1203,7 +1189,11 @@ bool GDBRemoteCommunicationClient::GetHostInfo(bool force) { extractor.GetHexByteString(m_os_kernel); ++num_keys_decoded; } else if (name.equals("ostype")) { - ParseOSType(value, os_name, environment); + if (value.equals("maccatalyst")) { + os_name = "ios"; + environment = "macabi"; + } else + os_name = std::string(value); ++num_keys_decoded; } else if (name.equals("vendor")) { vendor_name = std::string(value); @@ -2063,7 +2053,11 @@ bool GDBRemoteCommunicationClient::GetCurrentProcessInfo(bool allow_lazy) { extractor.GetHexByteString(triple); ++num_keys_decoded; } else if (name.equals("ostype")) { - ParseOSType(value, os_name, environment); + if (value.equals("maccatalyst")) { + os_name = "ios"; + environment = "macabi"; + } else + os_name = std::string(value); ++num_keys_decoded; } else if (name.equals("vendor")) { vendor_name = std::string(value); diff --git a/lldb/test/API/functionalities/gdb_remote_client/TestIOSSimulator.py b/lldb/test/API/functionalities/gdb_remote_client/TestIOSSimulator.py deleted file mode 100644 index ff16567..0000000 --- a/lldb/test/API/functionalities/gdb_remote_client/TestIOSSimulator.py +++ /dev/null @@ -1,58 +0,0 @@ -import lldb -from lldbsuite.test.lldbtest import * -from lldbsuite.test.decorators import * -from gdbclientutils import * - -class TestIOSSimulator(GDBRemoteTestBase): - """ - Test that an ios simulator process is recognized as such. - """ - - class MyResponder(MockGDBServerResponder): - def __init__(self, host, process): - self.host_ostype = host - self.process_ostype = process - MockGDBServerResponder.__init__(self) - - def qHostInfo(self): - return "cputype:16777223;cpusubtype:8;ostype:%s;vendor:apple;os_version:10.15.4;maccatalyst_version:13.4;endian:little;ptrsize:8;"%self.host_ostype - def qProcessInfo(self): - return "pid:a860;parent-pid:d2a0;real-uid:1f5;real-gid:14;effective-uid:1f5;effective-gid:14;cputype:1000007;cpusubtype:8;ptrsize:8;ostype:%s;vendor:apple;endian:little;"%self.process_ostype - def vCont(self): - return "vCont;" - - def platform_test(self, host, process, expected_triple): - self.server.responder = self.MyResponder(host, process) - if self.TraceOn(): - self.runCmd("log enable gdb-remote packets") - self.addTearDownHook(lambda: self.runCmd("log disable gdb-remote packets")) - - target = self.dbg.CreateTargetWithFileAndArch(None, None) - process = self.connect(target) - triple = target.GetTriple() - self.assertEqual(triple, expected_triple) - - @skipIfRemote - def test_macos(self): - self.platform_test(host="macosx", process="macosx", - expected_triple="x86_64h-apple-macosx-") - - @skipIfRemote - def test_ios_sim(self): - self.platform_test(host="macosx", process="iossimulator", - expected_triple="x86_64h-apple-ios-simulator") - - @skipIfRemote - def test_catalyst(self): - self.platform_test(host="macosx", process="maccatalyst", - expected_triple="x86_64h-apple-ios-macabi") - - @skipIfRemote - def test_tvos_sim(self): - self.platform_test(host="macosx", process="tvossimulator", - expected_triple="x86_64h-apple-tvos-simulator") - - @skipIfRemote - def test_tvos_sim(self): - self.platform_test(host="macosx", process="watchossimulator", - expected_triple="x86_64h-apple-watchos-simulator") diff --git a/lldb/test/API/functionalities/gdb_remote_client/TestWasm.py b/lldb/test/API/functionalities/gdb_remote_client/TestWasm.py index fe24bff4..8d0f2c8 100644 --- a/lldb/test/API/functionalities/gdb_remote_client/TestWasm.py +++ b/lldb/test/API/functionalities/gdb_remote_client/TestWasm.py @@ -31,6 +31,8 @@ class MyResponder(MockGDBServerResponder): MockGDBServerResponder.__init__(self) def respond(self, packet): + if packet == "qProcessInfo": + return self.qProcessInfo() if packet[0:13] == "qRegisterInfo": return self.qRegisterInfo(packet[13:]) return MockGDBServerResponder.respond(self, packet) diff --git a/lldb/test/API/functionalities/gdb_remote_client/gdbclientutils.py b/lldb/test/API/functionalities/gdb_remote_client/gdbclientutils.py index cebd3d2..5b02479 100644 --- a/lldb/test/API/functionalities/gdb_remote_client/gdbclientutils.py +++ b/lldb/test/API/functionalities/gdb_remote_client/gdbclientutils.py @@ -170,8 +170,6 @@ class MockGDBServerResponder: return self.qQueryGDBServer() if packet == "qHostInfo": return self.qHostInfo() - if packet == "qProcessInfo": - return self.qProcessInfo() if packet == "qGetWorkingDir": return self.qGetWorkingDir() if packet == "qOffsets": @@ -198,9 +196,6 @@ class MockGDBServerResponder: def qHostInfo(self): return "ptrsize:8;endian:little;" - def qProcessInfo(self): - return "pid:1;ptrsize:8;endian:little;" - def qQueryGDBServer(self): return "E04" diff --git a/lldb/tools/debugserver/source/MacOSX/MachProcess.mm b/lldb/tools/debugserver/source/MacOSX/MachProcess.mm index c862de9..f6134e4 100644 --- a/lldb/tools/debugserver/source/MacOSX/MachProcess.mm +++ b/lldb/tools/debugserver/source/MacOSX/MachProcess.mm @@ -598,16 +598,6 @@ nub_addr_t MachProcess::GetTSDAddressForThread( plo_pthread_tsd_entry_size); } -/// Determine whether this is running on macOS. -/// Since debugserver runs on the same machine as the process, we can -/// just look at the compilation target. -static bool IsMacOSHost() { -#if TARGET_OS_OSX == 1 - return true; -#else - return false; -#endif -} const char *MachProcess::GetDeploymentInfo(const struct load_command& lc, uint64_t load_command_address, @@ -629,17 +619,15 @@ const char *MachProcess::GetDeploymentInfo(const struct load_command& lc, minor_version = (vers_cmd.sdk >> 8) & 0xffu; patch_version = vers_cmd.sdk & 0xffu; - // Handle the older LC_VERSION load commands, which don't - // distinguish between simulator and real hardware. switch (cmd) { case LC_VERSION_MIN_IPHONEOS: - return IsMacOSHost() ? "iossimulator": "ios"; + return "ios"; case LC_VERSION_MIN_MACOSX: return "macosx"; case LC_VERSION_MIN_TVOS: - return IsMacOSHost() ? "tvossimulator": "tvos"; + return "tvos"; case LC_VERSION_MIN_WATCHOS: - return IsMacOSHost() ? "watchossimulator" : "watchos"; + return "watchos"; default: return nullptr; } @@ -661,17 +649,14 @@ const char *MachProcess::GetDeploymentInfo(const struct load_command& lc, case PLATFORM_MACCATALYST: return "maccatalyst"; case PLATFORM_IOS: - return "ios"; case PLATFORM_IOSSIMULATOR: - return "iossimulator"; + return "ios"; case PLATFORM_TVOS: - return "tvos"; case PLATFORM_TVOSSIMULATOR: - return "tvossimulator"; + return "tvos"; case PLATFORM_WATCHOS: - return "watchos"; case PLATFORM_WATCHOSSIMULATOR: - return "watchossimulator"; + return "watchos"; case PLATFORM_BRIDGEOS: return "bridgeos"; case PLATFORM_DRIVERKIT: -- 2.7.4