1""" 2Set the contents of variables and registers using raw data 3""" 4 5 6import lldb 7from lldbsuite.test.decorators import * 8from lldbsuite.test.lldbtest import * 9from lldbsuite.test import lldbutil 10 11 12class SetDataTestCase(TestBase): 13 @add_test_categories(["objc"]) 14 def test_set_data(self): 15 """Test setting the contents of variables and registers using raw data.""" 16 self.build() 17 exe = self.getBuildArtifact("a.out") 18 self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) 19 20 self.runCmd("br s -p First") 21 self.runCmd("br s -p Second") 22 23 self.runCmd("run", RUN_SUCCEEDED) 24 25 self.expect("expression myFoo.x", VARIABLES_DISPLAYED_CORRECTLY, substrs=["2"]) 26 27 process = self.dbg.GetSelectedTarget().GetProcess() 28 frame = process.GetSelectedThread().GetFrameAtIndex(0) 29 30 x = frame.FindVariable("myFoo").GetChildMemberWithName("x") 31 32 my_data = lldb.SBData.CreateDataFromSInt32Array(lldb.eByteOrderLittle, 8, [4]) 33 err = lldb.SBError() 34 35 self.assertTrue(x.SetData(my_data, err)) 36 37 self.runCmd("continue") 38 39 self.expect("expression myFoo.x", VARIABLES_DISPLAYED_CORRECTLY, substrs=["4"]) 40 41 frame = process.GetSelectedThread().GetFrameAtIndex(0) 42 43 x = frame.FindVariable("string") 44 45 if process.GetAddressByteSize() == 8: 46 my_data = lldb.SBData.CreateDataFromUInt64Array( 47 process.GetByteOrder(), 8, [0] 48 ) 49 else: 50 my_data = lldb.SBData.CreateDataFromUInt32Array( 51 process.GetByteOrder(), 4, [0] 52 ) 53 54 err = lldb.SBError() 55 56 self.assertTrue(x.SetData(my_data, err)) 57 58 self.expect( 59 "fr var -d run-target string", 60 VARIABLES_DISPLAYED_CORRECTLY, 61 substrs=["NSString *", "nil"], 62 ) 63