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