1from lldbsuite.test.lldbtest import * 2from lldbsuite.test.decorators import * 3from gdbclientutils import * 4from textwrap import dedent 5 6class MyResponder(MockGDBServerResponder): 7 def qXferRead(self, obj, annex, offset, length): 8 if annex == "target.xml": 9 return dedent("""\ 10 <?xml version="1.0"?> 11 <target version="1.0"> 12 <architecture>aarch64</architecture> 13 <feature name="org.gnu.gdb.aarch64.core"> 14 <reg name="x0" bitsize="64"/> 15 <reg name="x1" bitsize="64"/> 16 <reg name="x2" bitsize="64"/> 17 <reg name="x3" bitsize="64"/> 18 <reg name="x4" bitsize="64"/> 19 <reg name="x5" bitsize="64"/> 20 <reg name="x6" bitsize="64"/> 21 <reg name="x7" bitsize="64"/> 22 <reg name="x8" bitsize="64"/> 23 <reg name="x9" bitsize="64"/> 24 <reg name="x10" bitsize="64"/> 25 <reg name="x11" bitsize="64"/> 26 <reg name="x12" bitsize="64"/> 27 <reg name="x13" bitsize="64"/> 28 <reg name="x14" bitsize="64"/> 29 <reg name="x15" bitsize="64"/> 30 <reg name="x16" bitsize="64"/> 31 <reg name="x17" bitsize="64"/> 32 <reg name="x18" bitsize="64"/> 33 <reg name="x19" bitsize="64"/> 34 <reg name="x20" bitsize="64"/> 35 <reg name="x21" bitsize="64"/> 36 <reg name="x22" bitsize="64"/> 37 <reg name="x23" bitsize="64"/> 38 <reg name="x24" bitsize="64"/> 39 <reg name="x25" bitsize="64"/> 40 <reg name="x26" bitsize="64"/> 41 <reg name="x27" bitsize="64"/> 42 <reg name="x28" bitsize="64"/> 43 <reg name="x29" bitsize="64"/> 44 <reg name="x30" bitsize="64"/> 45 <reg name="sp" bitsize="64"/> 46 <reg name="pc" bitsize="64"/> 47 </feature> 48 </target> 49 """), False 50 else: 51 return None, False 52 53class TestQemuAarch64TargetXml(GDBRemoteTestBase): 54 55 @skipIfXmlSupportMissing 56 @skipIfRemote 57 @skipIfLLVMTargetMissing("AArch64") 58 def test_register_augmentation(self): 59 """ 60 Test that we correctly associate the register info with the eh_frame 61 register numbers. 62 """ 63 64 target = self.createTarget("basic_eh_frame-aarch64.yaml") 65 self.server.responder = MyResponder() 66 67 process = self.connect(target) 68 lldbutil.expect_state_changes(self, self.dbg.GetListener(), process, 69 [lldb.eStateStopped]) 70 self.filecheck("image show-unwind -n foo", __file__, 71 "--check-prefix=UNWIND") 72# UNWIND: eh_frame UnwindPlan: 73# UNWIND: row[0]: 0: CFA=x29+16 => x30=[CFA-8] 74