199451b44SJordan Rupprecht
299451b44SJordan Rupprechtimport json
399451b44SJordan Rupprechtimport gdbremote_testcase
499451b44SJordan Rupprechtimport lldbgdbserverutils
599451b44SJordan Rupprechtfrom lldbsuite.support import seven
699451b44SJordan Rupprechtfrom lldbsuite.test.decorators import *
799451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import *
899451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil
999451b44SJordan Rupprecht
1099451b44SJordan Rupprecht
1199451b44SJordan Rupprechtclass TestGdbRemoteModuleInfo(gdbremote_testcase.GdbRemoteTestCaseBase):
1299451b44SJordan Rupprecht
13*0a8a2453SPavel Labath    @add_test_categories(["llgs"])
14*0a8a2453SPavel Labath    def test_module_info(self):
15*0a8a2453SPavel Labath        self.build()
16*0a8a2453SPavel Labath        self.set_inferior_startup_launch()
1799451b44SJordan Rupprecht        procs = self.prep_debug_monitor_and_inferior()
1899451b44SJordan Rupprecht        self.add_process_info_collection_packets()
1999451b44SJordan Rupprecht        context = self.expect_gdbremote_sequence()
2099451b44SJordan Rupprecht        info = self.parse_process_info_response(context)
2199451b44SJordan Rupprecht
2299451b44SJordan Rupprecht        self.test_sequence.add_log_lines([
2399451b44SJordan Rupprecht            'read packet: $jModulesInfo:%s]#00' % json.dumps(
2499451b44SJordan Rupprecht                [{"file":lldbutil.append_to_process_working_directory(self, "a.out"),
2599451b44SJordan Rupprecht                  "triple":seven.unhexlify(info["triple"])}]),
2699451b44SJordan Rupprecht            {"direction": "send",
2799451b44SJordan Rupprecht             "regex": r'^\$\[{(.*)}\]\]#[0-9A-Fa-f]{2}',
2899451b44SJordan Rupprecht             "capture": {1: "spec"}},
2999451b44SJordan Rupprecht        ], True)
3099451b44SJordan Rupprecht
3199451b44SJordan Rupprecht        context = self.expect_gdbremote_sequence()
3299451b44SJordan Rupprecht        spec = context.get("spec")
3399451b44SJordan Rupprecht        self.assertRegexpMatches(spec, '"file_path":".*"')
3499451b44SJordan Rupprecht        self.assertRegexpMatches(spec, '"file_offset":\d+')
3599451b44SJordan Rupprecht        self.assertRegexpMatches(spec, '"file_size":\d+')
3699451b44SJordan Rupprecht        self.assertRegexpMatches(spec, '"triple":"\w*-\w*-.*"')
3799451b44SJordan Rupprecht        self.assertRegexpMatches(spec, '"uuid":"[A-Fa-f0-9]+"')
38