https://github.com/da-viper updated https://github.com/llvm/llvm-project/pull/135778
>From a7e200ad48ea84deca9a10d90addece8d14c08ac Mon Sep 17 00:00:00 2001 From: Ebuka Ezike <yerimy...@gmail.com> Date: Tue, 15 Apr 2025 12:25:41 +0100 Subject: [PATCH 1/2] [lldb] Add test for jumping by offset Signed-off-by: Ebuka Ezike <yerimy...@gmail.com> --- .../thread/jump/TestThreadJump.py | 70 ++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/lldb/test/API/functionalities/thread/jump/TestThreadJump.py b/lldb/test/API/functionalities/thread/jump/TestThreadJump.py index 3c13a969bc3fd..d603580ac6f36 100644 --- a/lldb/test/API/functionalities/thread/jump/TestThreadJump.py +++ b/lldb/test/API/functionalities/thread/jump/TestThreadJump.py @@ -10,9 +10,12 @@ class ThreadJumpTestCase(TestBase): + def setUp(self): + TestBase.setUp(self) + self.build() + def test(self): """Test thread jump handling.""" - self.build() exe = self.getBuildArtifact("a.out") self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) @@ -62,6 +65,71 @@ def test(self): substrs=["error"], ) + def test_jump_offset(self): + """Test Thread Jump by negative or positive offset""" + exe = self.getBuildArtifact("a.out") + file_name = "main.cpp" + self.runCmd(f"target create {exe}", CURRENT_EXECUTABLE_SET) + + pos_jump = line_number(file_name, "// jump_offset 1") + neg_jump = line_number(file_name, "// jump_offset 2") + pos_breakpoint = line_number(file_name, "// breakpoint 1") + neg_breakpoint = line_number(file_name, "// breakpoint 2") + pos_jump_offset = pos_jump - pos_breakpoint + neg_jump_offset = neg_jump - neg_breakpoint + + var_1, var_1_value = ("var_1", "10") + var_2, var_2_value = ("var_2", "40") + var_3, var_3_value = ("var_3", "10") + + # create pos_breakpoint and neg_breakpoint + lldbutil.run_break_set_by_file_and_line( + self, file_name, pos_breakpoint, num_expected_locations=1 + ) + lldbutil.run_break_set_by_file_and_line( + self, file_name, neg_breakpoint, num_expected_locations=1 + ) + + self.runCmd("run", RUN_SUCCEEDED) + + # test positive jump + # The stop reason of the thread should be breakpoint 1. + self.expect( + "thread list", + STOPPED_DUE_TO_BREAKPOINT + " 1", + substrs=[ + "stopped", + f"{file_name}:{pos_breakpoint}", + "stop reason = breakpoint 1", + ], + ) + + self.runCmd(f"thread jump --by +{pos_jump_offset}") + self.expect("process status", substrs=[f"at {file_name}:{pos_jump}"]) + self.expect(f"print {var_1}", substrs=[var_1_value]) + + self.runCmd("thread step-over") + self.expect(f"print {var_2}", substrs=[var_2_value]) + + self.runCmd("continue") + + # test negative jump + # The stop reason of the thread should be breakpoint 1. + self.expect( + "thread list", + STOPPED_DUE_TO_BREAKPOINT + " 2", + substrs=[ + "stopped", + f"{file_name}:{neg_breakpoint}", + "stop reason = breakpoint 2", + ], + ) + + self.runCmd(f"thread jump --by {neg_jump_offset}") + self.expect("process status", substrs=[f"at {file_name}:{neg_jump}"]) + self.runCmd("thread step-over") + self.expect(f"print {var_3}", substrs=[var_3_value]) + def do_min_test(self, start, jump, var, value): # jump to the start marker self.runCmd("j %i" % start) >From 67047337eee83a766a9dc7c82d42f95994419fbb Mon Sep 17 00:00:00 2001 From: Ebuka Ezike <yerimy...@gmail.com> Date: Tue, 15 Apr 2025 12:33:52 +0100 Subject: [PATCH 2/2] [lldb] Add test main.cpp file Signed-off-by: Ebuka Ezike <yerimy...@gmail.com> --- .../API/functionalities/thread/jump/main.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lldb/test/API/functionalities/thread/jump/main.cpp b/lldb/test/API/functionalities/thread/jump/main.cpp index d3c0de2af4bf4..9c7f0bcb3b732 100644 --- a/lldb/test/API/functionalities/thread/jump/main.cpp +++ b/lldb/test/API/functionalities/thread/jump/main.cpp @@ -13,6 +13,21 @@ T min(T a, T b) } } +int jump_positive_offset() { + int var_1 = 10; + var_1 = 20; // breakpoint 1 + + int var_2 = 40; // jump_offset 1 + return var_2; +} + +int jump_negative_offset() { + int var_3 = 10; // jump_offset 2 + var_3 = 99; + + return var_3; // breakpoint 2 +} + int main () { int i; @@ -22,5 +37,7 @@ int main () i = min(min_i_a, min_i_b); // 3rd marker j = min(min_j_a, min_j_b); // 4th marker + jump_positive_offset(); + jump_negative_offset(); return 0; } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits