brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.0 KiB · 28c0793 Raw
99 lines · python
1import gdbremote_testcase2from lldbsuite.test.decorators import *3from lldbsuite.test.lldbtest import *4from lldbsuite.test.lldbdwarf import *5 6 7class TestGdbRemote_qSupported(gdbremote_testcase.GdbRemoteTestCaseBase):8    def get_qSupported_dict(self, features=[]):9        self.build()10        self.set_inferior_startup_launch()11 12        # Start up the stub and start/prep the inferior.13        procs = self.prep_debug_monitor_and_inferior()14        self.add_qSupported_packets(features)15 16        # Run the packet stream.17        context = self.expect_gdbremote_sequence()18        self.assertIsNotNone(context)19 20        # Retrieve the qSupported features.21        return self.parse_qSupported_response(context)22 23    def test_qSupported_returns_known_stub_features(self):24        supported_dict = self.get_qSupported_dict()25        self.assertIsNotNone(supported_dict)26        self.assertGreater(len(supported_dict), 0)27 28    def test_qSupported_auvx(self):29        expected = (30            "+"31            if lldbplatformutil.getPlatform() in ["freebsd", "linux", "netbsd"]32            else "-"33        )34        supported_dict = self.get_qSupported_dict()35        self.assertEqual(supported_dict.get("qXfer:auxv:read", "-"), expected)36 37    def test_qSupported_libraries_svr4(self):38        expected = (39            "+"40            if lldbplatformutil.getPlatform() in ["freebsd", "linux", "netbsd"]41            else "-"42        )43        supported_dict = self.get_qSupported_dict()44        self.assertEqual(supported_dict.get("qXfer:libraries-svr4:read", "-"), expected)45 46    def test_qSupported_siginfo_read(self):47        expected = (48            "+" if lldbplatformutil.getPlatform() in ["freebsd", "linux"] else "-"49        )50        supported_dict = self.get_qSupported_dict()51        self.assertEqual(supported_dict.get("qXfer:siginfo:read", "-"), expected)52 53    def test_qSupported_QPassSignals(self):54        expected = (55            "+"56            if lldbplatformutil.getPlatform() in ["freebsd", "linux", "netbsd"]57            else "-"58        )59        supported_dict = self.get_qSupported_dict()60        self.assertEqual(supported_dict.get("QPassSignals", "-"), expected)61 62    @add_test_categories(["fork"])63    def test_qSupported_fork_events(self):64        supported_dict = self.get_qSupported_dict(["multiprocess+", "fork-events+"])65        self.assertEqual(supported_dict.get("multiprocess", "-"), "+")66        self.assertEqual(supported_dict.get("fork-events", "-"), "+")67        self.assertEqual(supported_dict.get("vfork-events", "-"), "-")68 69    @add_test_categories(["fork"])70    def test_qSupported_fork_events_without_multiprocess(self):71        supported_dict = self.get_qSupported_dict(["fork-events+"])72        self.assertEqual(supported_dict.get("multiprocess", "-"), "-")73        self.assertEqual(supported_dict.get("fork-events", "-"), "-")74        self.assertEqual(supported_dict.get("vfork-events", "-"), "-")75 76    @add_test_categories(["fork"])77    def test_qSupported_vfork_events(self):78        supported_dict = self.get_qSupported_dict(["multiprocess+", "vfork-events+"])79        self.assertEqual(supported_dict.get("multiprocess", "-"), "+")80        self.assertEqual(supported_dict.get("fork-events", "-"), "-")81        self.assertEqual(supported_dict.get("vfork-events", "-"), "+")82 83    @add_test_categories(["fork"])84    def test_qSupported_vfork_events_without_multiprocess(self):85        supported_dict = self.get_qSupported_dict(["vfork-events+"])86        self.assertEqual(supported_dict.get("multiprocess", "-"), "-")87        self.assertEqual(supported_dict.get("fork-events", "-"), "-")88        self.assertEqual(supported_dict.get("vfork-events", "-"), "-")89 90    # We need to be able to self.runCmd to get cpuinfo,91    # which is not possible when using a remote platform.92    @skipIfRemote93    def test_qSupported_memory_tagging(self):94        supported_dict = self.get_qSupported_dict()95        self.assertEqual(96            supported_dict.get("memory-tagging", "-"),97            "+" if self.isAArch64MTE() else "-",98        )99