17e9bab6aSAdrian Prantlimport lldb 27e9bab6aSAdrian Prantlfrom lldbsuite.test.lldbtest import * 37e9bab6aSAdrian Prantlfrom lldbsuite.test.decorators import * 47e9bab6aSAdrian Prantlimport lldbsuite.test.lldbutil as lldbutil 57e9bab6aSAdrian Prantlimport os 67e9bab6aSAdrian Prantlimport unittest2 77e9bab6aSAdrian Prantl 87e9bab6aSAdrian Prantl 97e9bab6aSAdrian Prantlclass TestMacCatalystAppWithMacOSFramework(TestBase): 107e9bab6aSAdrian Prantl 117e9bab6aSAdrian Prantl @skipIf(macos_version=["<", "10.15"]) 127e9bab6aSAdrian Prantl @skipUnlessDarwin 137e9bab6aSAdrian Prantl @skipIfDarwinEmbedded 147e9bab6aSAdrian Prantl # There is a Clang driver change missing on llvm.org. 157e9bab6aSAdrian Prantl @expectedFailureAll(bugnumber="rdar://problem/54986190>") 167e9bab6aSAdrian Prantl def test(self): 177e9bab6aSAdrian Prantl """Test the x86_64-apple-ios-macabi target linked against a macos dylib""" 187e9bab6aSAdrian Prantl self.build() 197e9bab6aSAdrian Prantl log = self.getBuildArtifact('packets.log') 207e9bab6aSAdrian Prantl self.expect("log enable gdb-remote packets -f "+log) 217e9bab6aSAdrian Prantl lldbutil.run_to_source_breakpoint(self, "break here", 227e9bab6aSAdrian Prantl lldb.SBFileSpec('main.c')) 237e9bab6aSAdrian Prantl arch = self.getArchitecture() 247e9bab6aSAdrian Prantl self.expect("image list -t -b", 257e9bab6aSAdrian Prantl patterns=[arch + r'.*-apple-ios.*-macabi a\.out', 267e9bab6aSAdrian Prantl arch + r'.*-apple-macosx.* libfoo.dylib[^(]']) 277e9bab6aSAdrian Prantl self.expect("fr v s", "Hello macCatalyst") 287e9bab6aSAdrian Prantl self.expect("p s", "Hello macCatalyst") 297e9bab6aSAdrian Prantl self.check_debugserver(log) 307e9bab6aSAdrian Prantl 317e9bab6aSAdrian Prantl def check_debugserver(self, log): 327e9bab6aSAdrian Prantl """scan the debugserver packet log""" 337e9bab6aSAdrian Prantl process_info = lldbutil.packetlog_get_process_info(log) 34*3cc37622SDave Lee self.assertIn('ostype', process_info) 357e9bab6aSAdrian Prantl self.assertEquals(process_info['ostype'], 'maccatalyst') 367e9bab6aSAdrian Prantl 377e9bab6aSAdrian Prantl aout_info = None 387e9bab6aSAdrian Prantl libfoo_info = None 397e9bab6aSAdrian Prantl dylib_info = lldbutil.packetlog_get_dylib_info(log) 407e9bab6aSAdrian Prantl for image in dylib_info['images']: 417e9bab6aSAdrian Prantl if image['pathname'].endswith('a.out'): 427e9bab6aSAdrian Prantl aout_info = image 437e9bab6aSAdrian Prantl if image['pathname'].endswith('libfoo.dylib'): 447e9bab6aSAdrian Prantl libfoo_info = image 457e9bab6aSAdrian Prantl self.assertTrue(aout_info) 467e9bab6aSAdrian Prantl self.assertTrue(libfoo_info) 477e9bab6aSAdrian Prantl self.assertEquals(aout_info['min_version_os_name'], 'maccatalyst') 487e9bab6aSAdrian Prantl self.assertEquals(libfoo_info['min_version_os_name'], 'macosx') 49