aboutsummaryrefslogtreecommitdiff
path: root/lldb/test/API/python_api
diff options
context:
space:
mode:
authorTatyana Krasnukha <tatyana@synopsys.com>2020-12-18 16:36:15 +0300
committerTatyana Krasnukha <tatyana@synopsys.com>2021-02-08 15:09:09 +0300
commit36de94cf54efbad967a9a0fa41329a8b59bc35c4 (patch)
tree247b40f741e8a9e43cffda9ab5b0ac595a0b130e /lldb/test/API/python_api
parenta39bcbca92e169baeb8b2c55dff90141ddd53888 (diff)
downloadllvm-36de94cf54efbad967a9a0fa41329a8b59bc35c4.zip
llvm-36de94cf54efbad967a9a0fa41329a8b59bc35c4.tar.gz
llvm-36de94cf54efbad967a9a0fa41329a8b59bc35c4.tar.bz2
Reland "[lldb] Make CommandInterpreter's execution context the same as debugger's one"
Diffstat (limited to 'lldb/test/API/python_api')
-rw-r--r--lldb/test/API/python_api/debugger/Makefile3
-rw-r--r--lldb/test/API/python_api/debugger/TestDebuggerAPI.py51
-rw-r--r--lldb/test/API/python_api/debugger/main.cpp9
3 files changed, 63 insertions, 0 deletions
diff --git a/lldb/test/API/python_api/debugger/Makefile b/lldb/test/API/python_api/debugger/Makefile
new file mode 100644
index 0000000..bfad5f3
--- /dev/null
+++ b/lldb/test/API/python_api/debugger/Makefile
@@ -0,0 +1,3 @@
+CXX_SOURCES := main.cpp
+
+include Makefile.rules
diff --git a/lldb/test/API/python_api/debugger/TestDebuggerAPI.py b/lldb/test/API/python_api/debugger/TestDebuggerAPI.py
index 32202ac..1559714 100644
--- a/lldb/test/API/python_api/debugger/TestDebuggerAPI.py
+++ b/lldb/test/API/python_api/debugger/TestDebuggerAPI.py
@@ -43,3 +43,54 @@ class DebuggerAPITestCase(TestBase):
target = lldb.SBTarget()
self.assertFalse(target.IsValid())
self.dbg.DeleteTarget(target)
+
+ def test_debugger_internal_variables(self):
+ """Ensure that SBDebugger reachs the same instance of properties
+ regardless CommandInterpreter's context initialization"""
+ self.build()
+ exe = self.getBuildArtifact("a.out")
+
+ # Create a target by the debugger.
+ target = self.dbg.CreateTarget(exe)
+ self.assertTrue(target, VALID_TARGET)
+
+ property_name = "target.process.memory-cache-line-size"
+
+ def get_cache_line_size():
+ value_list = lldb.SBStringList()
+ value_list = self.dbg.GetInternalVariableValue(property_name,
+ self.dbg.GetInstanceName())
+
+ self.assertEqual(value_list.GetSize(), 1)
+ try:
+ return int(value_list.GetStringAtIndex(0))
+ except ValueError as error:
+ self.fail("Value is not a number: " + error)
+
+ # Get global property value while there are no processes.
+ global_cache_line_size = get_cache_line_size()
+
+ # Run a process via SB interface. CommandInterpreter's execution context
+ # remains empty.
+ error = lldb.SBError()
+ launch_info = lldb.SBLaunchInfo(None)
+ launch_info.SetLaunchFlags(lldb.eLaunchFlagStopAtEntry)
+ process = target.Launch(launch_info, error)
+ self.assertTrue(process, PROCESS_IS_VALID)
+
+ # This should change the value of a process's local property.
+ new_cache_line_size = global_cache_line_size + 512
+ error = self.dbg.SetInternalVariable(property_name,
+ str(new_cache_line_size),
+ self.dbg.GetInstanceName())
+ self.assertTrue(error.Success(),
+ property_name + " value was changed successfully")
+
+ # Check that it was set actually.
+ self.assertEqual(get_cache_line_size(), new_cache_line_size)
+
+ # Run any command to initialize CommandInterpreter's execution context.
+ self.runCmd("target list")
+
+ # Test the local property again, is it set to new_cache_line_size?
+ self.assertEqual(get_cache_line_size(), new_cache_line_size)
diff --git a/lldb/test/API/python_api/debugger/main.cpp b/lldb/test/API/python_api/debugger/main.cpp
new file mode 100644
index 0000000..4b4ca68
--- /dev/null
+++ b/lldb/test/API/python_api/debugger/main.cpp
@@ -0,0 +1,9 @@
+// This simple program is to test the lldb Python API SBDebugger.
+
+int func(int val) {
+ return val - 1;
+}
+
+int main (int argc, char const *argv[]) {
+ return func(argc);
+}