mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-23 13:35:42 -04:00
64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
"""
|
|
Set the contents of variables and registers using raw data
|
|
"""
|
|
|
|
from __future__ import print_function
|
|
|
|
|
|
|
|
import os, time
|
|
import lldb
|
|
from lldbsuite.test.decorators import *
|
|
from lldbsuite.test.lldbtest import *
|
|
from lldbsuite.test import lldbutil
|
|
|
|
class SetDataTestCase(TestBase):
|
|
|
|
mydir = TestBase.compute_mydir(__file__)
|
|
|
|
@skipUnlessDarwin
|
|
def test_set_data(self):
|
|
"""Test setting the contents of variables and registers using raw data."""
|
|
self.build()
|
|
exe = os.path.join(os.getcwd(), "a.out")
|
|
self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
|
|
|
|
self.runCmd("br s -p First");
|
|
self.runCmd("br s -p Second");
|
|
|
|
self.runCmd("run", RUN_SUCCEEDED)
|
|
|
|
self.expect("p myFoo.x", VARIABLES_DISPLAYED_CORRECTLY,
|
|
substrs = ['2'])
|
|
|
|
process = self.dbg.GetSelectedTarget().GetProcess()
|
|
frame = process.GetSelectedThread().GetFrameAtIndex(0)
|
|
|
|
x = frame.FindVariable("myFoo").GetChildMemberWithName("x")
|
|
|
|
my_data = lldb.SBData.CreateDataFromSInt32Array(lldb.eByteOrderLittle, 8, [4])
|
|
err = lldb.SBError()
|
|
|
|
self.assertTrue (x.SetData(my_data, err))
|
|
|
|
self.runCmd("continue")
|
|
|
|
self.expect("p myFoo.x", VARIABLES_DISPLAYED_CORRECTLY,
|
|
substrs = ['4'])
|
|
|
|
frame = process.GetSelectedThread().GetFrameAtIndex(0)
|
|
|
|
x = frame.FindVariable("string")
|
|
|
|
if process.GetAddressByteSize() == 8:
|
|
my_data = lldb.SBData.CreateDataFromUInt64Array(process.GetByteOrder(), 8, [0])
|
|
else:
|
|
my_data = lldb.SBData.CreateDataFromUInt32Array(process.GetByteOrder(), 4, [0])
|
|
|
|
err = lldb.SBError()
|
|
|
|
self.assertTrue (x.SetData(my_data, err))
|
|
|
|
self.expect("fr var -d run-target string", VARIABLES_DISPLAYED_CORRECTLY,
|
|
substrs = ['NSString *', 'nil'])
|