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 Prantl 77e9bab6aSAdrian Prantl 87e9bab6aSAdrian Prantlclass TestMacCatalystAppWithMacOSFramework(TestBase): 97e9bab6aSAdrian Prantl @skipIf(macos_version=["<", "10.15"]) 107e9bab6aSAdrian Prantl @skipUnlessDarwin 117e9bab6aSAdrian Prantl @skipIfDarwinEmbedded 127e9bab6aSAdrian Prantl # There is a Clang driver change missing on llvm.org. 137e9bab6aSAdrian Prantl @expectedFailureAll(bugnumber="rdar://problem/54986190>") 147e9bab6aSAdrian Prantl def test(self): 157e9bab6aSAdrian Prantl """Test the x86_64-apple-ios-macabi target linked against a macos dylib""" 167e9bab6aSAdrian Prantl self.build() 172238dcc3SJonas Devlieghere log = self.getBuildArtifact("packets.log") 187e9bab6aSAdrian Prantl self.expect("log enable gdb-remote packets -f " + log) 192238dcc3SJonas Devlieghere lldbutil.run_to_source_breakpoint(self, "break here", lldb.SBFileSpec("main.c")) 207e9bab6aSAdrian Prantl arch = self.getArchitecture() 212238dcc3SJonas Devlieghere self.expect( 222238dcc3SJonas Devlieghere "image list -t -b", 232238dcc3SJonas Devlieghere patterns=[ 242238dcc3SJonas Devlieghere arch + r".*-apple-ios.*-macabi a\.out", 252238dcc3SJonas Devlieghere arch + r".*-apple-macosx.* libfoo.dylib[^(]", 262238dcc3SJonas Devlieghere ], 272238dcc3SJonas Devlieghere ) 287e9bab6aSAdrian Prantl self.expect("fr v s", "Hello macCatalyst") 2940766642SDave Lee self.expect("expression s", "Hello macCatalyst") 307e9bab6aSAdrian Prantl self.check_debugserver(log) 317e9bab6aSAdrian Prantl 327e9bab6aSAdrian Prantl def check_debugserver(self, log): 337e9bab6aSAdrian Prantl """scan the debugserver packet log""" 347e9bab6aSAdrian Prantl process_info = lldbutil.packetlog_get_process_info(log) 352238dcc3SJonas Devlieghere self.assertIn("ostype", process_info) 36*80fcecb1SJonas Devlieghere self.assertEqual(process_info["ostype"], "maccatalyst") 377e9bab6aSAdrian Prantl 387e9bab6aSAdrian Prantl aout_info = None 397e9bab6aSAdrian Prantl libfoo_info = None 407e9bab6aSAdrian Prantl dylib_info = lldbutil.packetlog_get_dylib_info(log) 412238dcc3SJonas Devlieghere for image in dylib_info["images"]: 422238dcc3SJonas Devlieghere if image["pathname"].endswith("a.out"): 437e9bab6aSAdrian Prantl aout_info = image 442238dcc3SJonas Devlieghere if image["pathname"].endswith("libfoo.dylib"): 457e9bab6aSAdrian Prantl libfoo_info = image 467e9bab6aSAdrian Prantl self.assertTrue(aout_info) 477e9bab6aSAdrian Prantl self.assertTrue(libfoo_info) 48*80fcecb1SJonas Devlieghere self.assertEqual(aout_info["min_version_os_name"], "maccatalyst") 49*80fcecb1SJonas Devlieghere self.assertEqual(libfoo_info["min_version_os_name"], "macosx") 50