[Lldb-commits] [lldb] Fix a bug copying the stop hooks from the dummy target. (PR #129340)
via lldb-commits
lldb-commits at lists.llvm.org
Fri Feb 28 15:58:50 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: None (jimingham)
<details>
<summary>Changes</summary>
We didn't also copy over the next stop hook id, which meant we would overwrite the stop hooks from the dummy target with stop hooks set after they are copied over.
---
Full diff: https://github.com/llvm/llvm-project/pull/129340.diff
2 Files Affected:
- (modified) lldb/source/Target/Target.cpp (+1)
- (modified) lldb/test/API/commands/target/stop-hooks/TestStopHooks.py (+22-2)
``````````diff
diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp
index db289fe9c4b64..550424720e095 100644
--- a/lldb/source/Target/Target.cpp
+++ b/lldb/source/Target/Target.cpp
@@ -211,6 +211,7 @@ Target::~Target() {
void Target::PrimeFromDummyTarget(Target &target) {
m_stop_hooks = target.m_stop_hooks;
+ m_stop_hook_next_id = target.m_stop_hook_next_id;
for (const auto &breakpoint_sp : target.m_breakpoint_list.Breakpoints()) {
if (breakpoint_sp->IsInternal())
diff --git a/lldb/test/API/commands/target/stop-hooks/TestStopHooks.py b/lldb/test/API/commands/target/stop-hooks/TestStopHooks.py
index fe59bd8a5d007..5215ec7258d14 100644
--- a/lldb/test/API/commands/target/stop-hooks/TestStopHooks.py
+++ b/lldb/test/API/commands/target/stop-hooks/TestStopHooks.py
@@ -26,10 +26,15 @@ def test_stop_hooks_step_out(self):
self.step_out_test()
def test_stop_hooks_after_expr(self):
- """Test that a stop hook fires when hitting a breakpoint
- that runs an expression"""
+ """Test that a stop hook fires when hitting a breakpoint that
+ runs an expression"""
self.after_expr_test()
+ def test_stop_hooks_before_and_after_creation(self):
+ """Test that if we add a stop hook in the dummy target, we can
+ they don't collide with ones set directly in the target."""
+ self.before_and_after_target()
+
def step_out_test(self):
(target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(
self, "Set a breakpoint here", self.main_source_file
@@ -85,3 +90,18 @@ def after_expr_test(self):
var = target.FindFirstGlobalVariable("g_var")
self.assertTrue(var.IsValid())
self.assertEqual(var.GetValueAsUnsigned(), 1, "Updated g_var")
+
+ def before_and_after_target(self):
+ interp = self.dbg.GetCommandInterpreter()
+ result = lldb.SBCommandReturnObject()
+ interp.HandleCommand("target stop-hook add -o 'expr g_var++'", result)
+ self.assertTrue(result.Succeeded(), "Set the target stop hook")
+
+ (target, process, thread, first_bkpt) = lldbutil.run_to_source_breakpoint(
+ self, "Set a breakpoint here", self.main_source_file
+ )
+
+ interp.HandleCommand("target stop-hook add -o 'thread backtrace'", result)
+ self.assertTrue(result.Succeeded(), "Set the target stop hook")
+ self.expect("target stop-hook list", substrs=["expr g_var++", "thread backtrace"])
+
``````````
</details>
https://github.com/llvm/llvm-project/pull/129340
More information about the lldb-commits
mailing list