Revert "Remove dependence on <ciso646>" (#126399)
[llvm-project.git] / lldb / test / API / tools / lldb-server / registers-target-xml-reading / TestGdbRemoteTargetXmlPacket.py
blobbd78a83c656554370221f1f5e99e1b42e75b84b7
1 import gdbremote_testcase
2 import textwrap
3 from lldbsuite.test.decorators import *
4 from lldbsuite.test.lldbtest import *
5 from lldbsuite.test import lldbutil
6 import re
7 import xml.etree.ElementTree as ET
10 class TestGdbRemoteTargetXmlPacket(gdbremote_testcase.GdbRemoteTestCaseBase):
11 @llgs_test
12 def test_g_target_xml_returns_correct_data(self):
13 self.build()
14 self.set_inferior_startup_launch()
16 procs = self.prep_debug_monitor_and_inferior()
18 OFFSET = 0
19 LENGTH = 0x1FFFF0
20 self.test_sequence.add_log_lines(
22 "read packet: $qXfer:features:read:target.xml:{:x},{:x}#00".format(
23 OFFSET, LENGTH
26 "direction": "send",
27 "regex": re.compile("^\$l(.+)#[0-9a-fA-F]{2}$", flags=re.DOTALL),
28 "capture": {1: "target_xml"},
31 True,
33 context = self.expect_gdbremote_sequence()
35 target_xml = context.get("target_xml")
37 root = ET.fromstring(target_xml)
38 self.assertIsNotNone(root)
39 self.assertEqual(root.tag, "target")
41 architecture = root.find("architecture")
42 self.assertIsNotNone(architecture)
43 self.assertIn(self.getArchitecture(), architecture.text)
45 feature = root.find("feature")
46 self.assertIsNotNone(feature)
48 target_xml_registers = feature.findall("reg")
49 self.assertGreater(len(target_xml_registers), 0)
51 # registers info collected by qRegisterInfo
52 self.add_register_info_collection_packets()
53 context = self.expect_gdbremote_sequence()
54 self.assertIsNotNone(context)
55 q_info_registers = self.parse_register_info_packets(context)
57 self.assertEqual(len(target_xml_registers), len(q_info_registers))
58 for register in zip(target_xml_registers, q_info_registers):
59 xml_info_reg = register[0]
60 q_info_reg = register[1]
61 self.assertEqual(q_info_reg["name"], xml_info_reg.get("name"))
62 self.assertEqual(q_info_reg["set"], xml_info_reg.get("group"))
63 self.assertEqual(q_info_reg["format"], xml_info_reg.get("format"))
64 self.assertEqual(q_info_reg["bitsize"], xml_info_reg.get("bitsize"))
66 if not self.isAArch64():
67 self.assertEqual(q_info_reg["offset"], xml_info_reg.get("offset"))
69 self.assertEqual(q_info_reg["encoding"], xml_info_reg.get("encoding"))