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