xref: /llvm-project/lldb/test/API/functionalities/set-data/TestSetData.py (revision 2238dcc39358353cac21df75c3c3286ab20b8f53)
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