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