1import lldb 2from lldbsuite.test.lldbtest import * 3from lldbsuite.test.decorators import * 4from lldbsuite.test.gdbclientutils import * 5from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase 6 7 8class TestPlatformMacOSX(GDBRemoteTestBase): 9 10 mydir = TestBase.compute_mydir(__file__) 11 12 class MyResponder(MockGDBServerResponder): 13 14 def __init__(self, host): 15 self.host_ostype = host 16 MockGDBServerResponder.__init__(self) 17 18 def respond(self, packet): 19 if packet == "qProcessInfo": 20 return self.qProcessInfo() 21 return MockGDBServerResponder.respond(self, packet) 22 23 def qHostInfo(self): 24 return "cputype:16777223;cpusubtype:2;ostype:%s;vendor:apple;os_version:10.15.4;maccatalyst_version:13.4;endian:little;ptrsize:8;" % self.host_ostype 25 26 def qProcessInfo(self): 27 return "pid:a860;parent-pid:d2a0;real-uid:1f5;real-gid:14;effective-uid:1f5;effective-gid:14;cputype:100000c;cpusubtype:2;ptrsize:8;ostype:ios;vendor:apple;endian:little;" 28 29 def vCont(self): 30 return "vCont;" 31 32 def platform_test(self, host, expected_triple, expected_platform): 33 self.server.responder = self.MyResponder(host) 34 if self.TraceOn(): 35 self.runCmd("log enable gdb-remote packets") 36 self.addTearDownHook( 37 lambda: self.runCmd("log disable gdb-remote packets")) 38 39 target = self.dbg.CreateTargetWithFileAndArch(None, None) 40 process = self.connect(target) 41 42 triple = target.GetTriple() 43 self.assertEqual(triple, expected_triple) 44 45 platform = target.GetPlatform() 46 self.assertEqual(platform.GetName(), expected_platform) 47 48 @skipIfRemote 49 def test_ios(self): 50 self.platform_test(host="ios", 51 expected_triple="arm64e-apple-ios-", 52 expected_platform="remote-ios") 53 54 @skipIfRemote 55 @skipUnlessDarwin 56 @skipUnlessArch("arm64") 57 def test_macos(self): 58 self.platform_test(host="macosx", 59 expected_triple="arm64e-apple-ios-", 60 expected_platform="host") 61