178cb4562SMuhammad Omair Javaidfrom textwrap import dedent 278cb4562SMuhammad Omair Javaidimport lldb 378cb4562SMuhammad Omair Javaidfrom lldbsuite.test.lldbtest import * 478cb4562SMuhammad Omair Javaidfrom lldbsuite.test.decorators import * 533c0f93fSPavel Labathfrom lldbsuite.test.gdbclientutils import * 633c0f93fSPavel Labathfrom lldbsuite.test.lldbgdbclient import GDBRemoteTestBase 778cb4562SMuhammad Omair Javaid 878cb4562SMuhammad Omair Javaid 978cb4562SMuhammad Omair Javaidclass MyResponder(MockGDBServerResponder): 1078cb4562SMuhammad Omair Javaid def qXferRead(self, obj, annex, offset, length): 1178cb4562SMuhammad Omair Javaid if annex == "target.xml": 12*2238dcc3SJonas Devlieghere return ( 13*2238dcc3SJonas Devlieghere dedent( 14*2238dcc3SJonas Devlieghere """\ 1578cb4562SMuhammad Omair Javaid <?xml version="1.0"?> 1678cb4562SMuhammad Omair Javaid <target version="1.0"> 1778cb4562SMuhammad Omair Javaid <architecture>aarch64</architecture> 1878cb4562SMuhammad Omair Javaid <feature name="org.gnu.gdb.aarch64.core"> 1978cb4562SMuhammad Omair Javaid <reg name="cpsr" regnum="33" bitsize="32"/> 2078cb4562SMuhammad Omair Javaid <reg name="x0" regnum="0" bitsize="64"/> 2178cb4562SMuhammad Omair Javaid <reg name="x1" bitsize="64"/> 2278cb4562SMuhammad Omair Javaid <reg name="x2" bitsize="64"/> 2378cb4562SMuhammad Omair Javaid <reg name="x3" bitsize="64"/> 2478cb4562SMuhammad Omair Javaid <reg name="x4" bitsize="64"/> 2578cb4562SMuhammad Omair Javaid <reg name="x5" bitsize="64"/> 2678cb4562SMuhammad Omair Javaid <reg name="x6" bitsize="64"/> 2778cb4562SMuhammad Omair Javaid <reg name="x7" bitsize="64"/> 2878cb4562SMuhammad Omair Javaid <reg name="x8" bitsize="64"/> 2978cb4562SMuhammad Omair Javaid <reg name="x9" bitsize="64"/> 3078cb4562SMuhammad Omair Javaid <reg name="x10" bitsize="64"/> 3178cb4562SMuhammad Omair Javaid <reg name="x11" bitsize="64"/> 3278cb4562SMuhammad Omair Javaid <reg name="x12" bitsize="64"/> 3378cb4562SMuhammad Omair Javaid <reg name="x13" bitsize="64"/> 3478cb4562SMuhammad Omair Javaid <reg name="x14" bitsize="64"/> 3578cb4562SMuhammad Omair Javaid <reg name="x15" bitsize="64"/> 3678cb4562SMuhammad Omair Javaid <reg name="x16" bitsize="64"/> 3778cb4562SMuhammad Omair Javaid <reg name="x17" bitsize="64"/> 3878cb4562SMuhammad Omair Javaid <reg name="x18" bitsize="64"/> 3978cb4562SMuhammad Omair Javaid <reg name="x19" bitsize="64"/> 4078cb4562SMuhammad Omair Javaid <reg name="x20" bitsize="64"/> 4178cb4562SMuhammad Omair Javaid <reg name="x21" bitsize="64"/> 4278cb4562SMuhammad Omair Javaid <reg name="x22" bitsize="64"/> 4378cb4562SMuhammad Omair Javaid <reg name="x23" bitsize="64"/> 4478cb4562SMuhammad Omair Javaid <reg name="x24" bitsize="64"/> 4578cb4562SMuhammad Omair Javaid <reg name="x25" bitsize="64"/> 4678cb4562SMuhammad Omair Javaid <reg name="x26" bitsize="64"/> 4778cb4562SMuhammad Omair Javaid <reg name="x27" bitsize="64"/> 4878cb4562SMuhammad Omair Javaid <reg name="x28" bitsize="64"/> 4978cb4562SMuhammad Omair Javaid <reg name="x29" bitsize="64"/> 5078cb4562SMuhammad Omair Javaid <reg name="x30" bitsize="64"/> 5178cb4562SMuhammad Omair Javaid <reg name="sp" bitsize="64"/> 5278cb4562SMuhammad Omair Javaid <reg name="pc" bitsize="64"/> 5378cb4562SMuhammad Omair Javaid <reg name="w0" bitsize="32" value_regnums="0" invalidate_regnums="0" regnum="34"/> 5478cb4562SMuhammad Omair Javaid <reg name="w1" bitsize="32" value_regnums="1" invalidate_regnums="1"/> 5578cb4562SMuhammad Omair Javaid <reg name="w2" bitsize="32" value_regnums="2" invalidate_regnums="2"/> 5678cb4562SMuhammad Omair Javaid <reg name="w3" bitsize="32" value_regnums="3" invalidate_regnums="3"/> 5778cb4562SMuhammad Omair Javaid <reg name="w4" bitsize="32" value_regnums="4" invalidate_regnums="4"/> 5878cb4562SMuhammad Omair Javaid <reg name="w5" bitsize="32" value_regnums="5" invalidate_regnums="5"/> 5978cb4562SMuhammad Omair Javaid <reg name="w6" bitsize="32" value_regnums="6" invalidate_regnums="6"/> 6078cb4562SMuhammad Omair Javaid <reg name="w7" bitsize="32" value_regnums="7" invalidate_regnums="7"/> 6178cb4562SMuhammad Omair Javaid <reg name="w8" bitsize="32" value_regnums="8" invalidate_regnums="8"/> 6278cb4562SMuhammad Omair Javaid <reg name="w9" bitsize="32" value_regnums="9" invalidate_regnums="9"/> 6378cb4562SMuhammad Omair Javaid <reg name="w10" bitsize="32" value_regnums="10" invalidate_regnums="10"/> 6478cb4562SMuhammad Omair Javaid <reg name="w11" bitsize="32" value_regnums="11" invalidate_regnums="11"/> 6578cb4562SMuhammad Omair Javaid <reg name="w12" bitsize="32" value_regnums="12" invalidate_regnums="12"/> 6678cb4562SMuhammad Omair Javaid <reg name="w13" bitsize="32" value_regnums="13" invalidate_regnums="13"/> 6778cb4562SMuhammad Omair Javaid <reg name="w14" bitsize="32" value_regnums="14" invalidate_regnums="14"/> 6878cb4562SMuhammad Omair Javaid <reg name="w15" bitsize="32" value_regnums="15" invalidate_regnums="15"/> 6978cb4562SMuhammad Omair Javaid <reg name="w16" bitsize="32" value_regnums="16" invalidate_regnums="16"/> 7078cb4562SMuhammad Omair Javaid <reg name="w17" bitsize="32" value_regnums="17" invalidate_regnums="17"/> 7178cb4562SMuhammad Omair Javaid <reg name="w18" bitsize="32" value_regnums="18" invalidate_regnums="18"/> 7278cb4562SMuhammad Omair Javaid <reg name="w19" bitsize="32" value_regnums="19" invalidate_regnums="19"/> 7378cb4562SMuhammad Omair Javaid <reg name="w20" bitsize="32" value_regnums="20" invalidate_regnums="20"/> 7478cb4562SMuhammad Omair Javaid <reg name="w21" bitsize="32" value_regnums="21" invalidate_regnums="21"/> 7578cb4562SMuhammad Omair Javaid <reg name="w22" bitsize="32" value_regnums="22" invalidate_regnums="22"/> 7678cb4562SMuhammad Omair Javaid <reg name="w23" bitsize="32" value_regnums="23" invalidate_regnums="23"/> 7778cb4562SMuhammad Omair Javaid <reg name="w24" bitsize="32" value_regnums="24" invalidate_regnums="24"/> 7878cb4562SMuhammad Omair Javaid <reg name="w25" bitsize="32" value_regnums="25" invalidate_regnums="25"/> 7978cb4562SMuhammad Omair Javaid <reg name="w26" bitsize="32" value_regnums="26" invalidate_regnums="26"/> 8078cb4562SMuhammad Omair Javaid <reg name="w27" bitsize="32" value_regnums="27" invalidate_regnums="27"/> 8178cb4562SMuhammad Omair Javaid <reg name="w28" bitsize="32" value_regnums="28" invalidate_regnums="28"/> 8278cb4562SMuhammad Omair Javaid </feature> 8378cb4562SMuhammad Omair Javaid </target> 84*2238dcc3SJonas Devlieghere """ 85*2238dcc3SJonas Devlieghere ), 86*2238dcc3SJonas Devlieghere False, 87*2238dcc3SJonas Devlieghere ) 8878cb4562SMuhammad Omair Javaid else: 89*2238dcc3SJonas Devlieghere return (None,) 9078cb4562SMuhammad Omair Javaid 9178cb4562SMuhammad Omair Javaid def readRegister(self, regnum): 9278cb4562SMuhammad Omair Javaid return "E01" 9378cb4562SMuhammad Omair Javaid 9478cb4562SMuhammad Omair Javaid def readRegisters(self): 9578cb4562SMuhammad Omair Javaid return "20000000000000002000000000000000f0c154bfffff00005daa985a8fea0b48f0b954bfffff0000ad13cce570150b48380000000000000070456abfffff0000a700000000000000000000000000000001010101010101010000000000000000f0c154bfffff00000f2700000000000008e355bfffff0000080e55bfffff0000281041000000000010de61bfffff00005c05000000000000f0c154bfffff000090fcffffffff00008efcffffffff00008ffcffffffff00000000000000000000001000000000000090fcffffffff000000d06cbfffff0000f0c154bfffff00000100000000000000d0b954bfffff0000e407400000000000d0b954bfffff0000e40740000000000000100000" 9678cb4562SMuhammad Omair Javaid 9778cb4562SMuhammad Omair Javaid 9878cb4562SMuhammad Omair Javaidclass TestAArch64XMLRegOffsets(GDBRemoteTestBase): 9978cb4562SMuhammad Omair Javaid @skipIfXmlSupportMissing 10078cb4562SMuhammad Omair Javaid @skipIfRemote 10178cb4562SMuhammad Omair Javaid @skipIfLLVMTargetMissing("AArch64") 10278cb4562SMuhammad Omair Javaid def test_register_gpacket_offsets(self): 10378cb4562SMuhammad Omair Javaid """ 10478cb4562SMuhammad Omair Javaid Test that we correctly associate the register info with the eh_frame 10578cb4562SMuhammad Omair Javaid register numbers. 10678cb4562SMuhammad Omair Javaid """ 10778cb4562SMuhammad Omair Javaid 10878cb4562SMuhammad Omair Javaid target = self.createTarget("basic_eh_frame-aarch64.yaml") 10978cb4562SMuhammad Omair Javaid self.server.responder = MyResponder() 11078cb4562SMuhammad Omair Javaid 11178cb4562SMuhammad Omair Javaid if self.TraceOn(): 11278cb4562SMuhammad Omair Javaid self.runCmd("log enable gdb-remote packets") 113*2238dcc3SJonas Devlieghere self.addTearDownHook(lambda: self.runCmd("log disable gdb-remote packets")) 11478cb4562SMuhammad Omair Javaid 11578cb4562SMuhammad Omair Javaid process = self.connect(target) 116*2238dcc3SJonas Devlieghere lldbutil.expect_state_changes( 117*2238dcc3SJonas Devlieghere self, self.dbg.GetListener(), process, [lldb.eStateStopped] 118*2238dcc3SJonas Devlieghere ) 11978cb4562SMuhammad Omair Javaid 120*2238dcc3SJonas Devlieghere registerSet = ( 121*2238dcc3SJonas Devlieghere process.GetThreadAtIndex(0) 122*2238dcc3SJonas Devlieghere .GetFrameAtIndex(0) 123*2238dcc3SJonas Devlieghere .GetRegisters() 124*2238dcc3SJonas Devlieghere .GetValueAtIndex(0) 125*2238dcc3SJonas Devlieghere ) 12678cb4562SMuhammad Omair Javaid 12778cb4562SMuhammad Omair Javaid reg_val_dict = { 128*2238dcc3SJonas Devlieghere "x0": 0x0000000000000020, 129*2238dcc3SJonas Devlieghere "x1": 0x0000000000000020, 130*2238dcc3SJonas Devlieghere "x2": 0x0000FFFFBF54C1F0, 131*2238dcc3SJonas Devlieghere "x3": 0x480BEA8F5A98AA5D, 132*2238dcc3SJonas Devlieghere "x4": 0x0000FFFFBF54B9F0, 133*2238dcc3SJonas Devlieghere "x5": 0x480B1570E5CC13AD, 134*2238dcc3SJonas Devlieghere "x6": 0x0000000000000038, 135*2238dcc3SJonas Devlieghere "x7": 0x0000FFFFBF6A4570, 136*2238dcc3SJonas Devlieghere "x8": 0x00000000000000A7, 137*2238dcc3SJonas Devlieghere "x9": 0x0000000000000000, 138*2238dcc3SJonas Devlieghere "x10": 0x0101010101010101, 139*2238dcc3SJonas Devlieghere "x11": 0x0000000000000000, 140*2238dcc3SJonas Devlieghere "x12": 0x0000FFFFBF54C1F0, 141*2238dcc3SJonas Devlieghere "x13": 0x000000000000270F, 142*2238dcc3SJonas Devlieghere "x14": 0x0000FFFFBF55E308, 143*2238dcc3SJonas Devlieghere "x15": 0x0000FFFFBF550E08, 144*2238dcc3SJonas Devlieghere "x16": 0x0000000000411028, 145*2238dcc3SJonas Devlieghere "x17": 0x0000FFFFBF61DE10, 146*2238dcc3SJonas Devlieghere "x18": 0x000000000000055C, 147*2238dcc3SJonas Devlieghere "x19": 0x0000FFFFBF54C1F0, 148*2238dcc3SJonas Devlieghere "x20": 0x0000FFFFFFFFFC90, 149*2238dcc3SJonas Devlieghere "x21": 0x0000FFFFFFFFFC8E, 150*2238dcc3SJonas Devlieghere "x22": 0x0000FFFFFFFFFC8F, 151*2238dcc3SJonas Devlieghere "x23": 0x0000000000000000, 152*2238dcc3SJonas Devlieghere "x24": 0x0000000000001000, 153*2238dcc3SJonas Devlieghere "x25": 0x0000FFFFFFFFFC90, 154*2238dcc3SJonas Devlieghere "x26": 0x0000FFFFBF6CD000, 155*2238dcc3SJonas Devlieghere "x27": 0x0000FFFFBF54C1F0, 156*2238dcc3SJonas Devlieghere "x28": 0x0000000000000001, 157*2238dcc3SJonas Devlieghere "x29": 0x0000FFFFBF54B9D0, 158*2238dcc3SJonas Devlieghere "x30": 0x00000000004007E4, 159*2238dcc3SJonas Devlieghere "sp": 0x0000FFFFBF54B9D0, 160*2238dcc3SJonas Devlieghere "pc": 0x00000000004007E4, 161*2238dcc3SJonas Devlieghere "cpsr": 0x00001000, 162*2238dcc3SJonas Devlieghere "w0": 0x00000020, 163*2238dcc3SJonas Devlieghere "w1": 0x00000020, 164*2238dcc3SJonas Devlieghere "w2": 0xBF54C1F0, 165*2238dcc3SJonas Devlieghere "w3": 0x5A98AA5D, 166*2238dcc3SJonas Devlieghere "w4": 0xBF54B9F0, 167*2238dcc3SJonas Devlieghere "w5": 0xE5CC13AD, 168*2238dcc3SJonas Devlieghere "w6": 0x00000038, 169*2238dcc3SJonas Devlieghere "w7": 0xBF6A4570, 170*2238dcc3SJonas Devlieghere "w8": 0x000000A7, 171*2238dcc3SJonas Devlieghere "w9": 0x00000000, 172*2238dcc3SJonas Devlieghere "w10": 0x01010101, 173*2238dcc3SJonas Devlieghere "w11": 0x00000000, 174*2238dcc3SJonas Devlieghere "w12": 0xBF54C1F0, 175*2238dcc3SJonas Devlieghere "w13": 0x0000270F, 176*2238dcc3SJonas Devlieghere "w14": 0xBF55E308, 177*2238dcc3SJonas Devlieghere "w15": 0xBF550E08, 178*2238dcc3SJonas Devlieghere "w16": 0x00411028, 179*2238dcc3SJonas Devlieghere "w17": 0xBF61DE10, 180*2238dcc3SJonas Devlieghere "w18": 0x0000055C, 181*2238dcc3SJonas Devlieghere "w19": 0xBF54C1F0, 182*2238dcc3SJonas Devlieghere "w20": 0xFFFFFC90, 183*2238dcc3SJonas Devlieghere "w21": 0xFFFFFC8E, 184*2238dcc3SJonas Devlieghere "w22": 0xFFFFFC8F, 185*2238dcc3SJonas Devlieghere "w23": 0x00000000, 186*2238dcc3SJonas Devlieghere "w24": 0x00001000, 187*2238dcc3SJonas Devlieghere "w25": 0xFFFFFC90, 188*2238dcc3SJonas Devlieghere "w26": 0xBF6CD000, 189*2238dcc3SJonas Devlieghere "w27": 0xBF54C1F0, 190*2238dcc3SJonas Devlieghere "w28": 0x00000001, 19178cb4562SMuhammad Omair Javaid } 19278cb4562SMuhammad Omair Javaid 19378cb4562SMuhammad Omair Javaid for reg in registerSet: 194*2238dcc3SJonas Devlieghere self.assertEqual(reg.GetValueAsUnsigned(), reg_val_dict[reg.GetName()]) 195