https://github.com/llvmbot created 
https://github.com/llvm/llvm-project/pull/179196

Backport 8370304f1e5878c1860223239932ddd05d9ba4c8

Requested by: @da-viper

>From 83443cf8f65390f0a2ed26f24eae32b5bd4b6a14 Mon Sep 17 00:00:00 2001
From: Ebuka Ezike <[email protected]>
Date: Fri, 30 Jan 2026 10:20:46 +0000
Subject: [PATCH] [lldb] Fix SBBreakpointName::SetEnabled to propagate changes
 to breakpoints (#178734)

When setting the enabled state of a breakpoint name via the API, the
change was not being propagated to breakpoints using that name.
This was inconsistent with the CLI behaviour where `breakpoint name
configure --enable/--disable` correctly updates all associated
breakpoints.

(cherry picked from commit 8370304f1e5878c1860223239932ddd05d9ba4c8)
---
 lldb/source/API/SBBreakpointName.cpp          |  1 +
 .../breakpoint_names/TestBreakpointNames.py   | 68 ++++++++++++++++++-
 2 files changed, 67 insertions(+), 2 deletions(-)

diff --git a/lldb/source/API/SBBreakpointName.cpp 
b/lldb/source/API/SBBreakpointName.cpp
index 0b588c38d5114..cf045e87b338a 100644
--- a/lldb/source/API/SBBreakpointName.cpp
+++ b/lldb/source/API/SBBreakpointName.cpp
@@ -213,6 +213,7 @@ void SBBreakpointName::SetEnabled(bool enable) {
         m_impl_up->GetTarget()->GetAPIMutex());
 
   bp_name->GetOptions().SetEnabled(enable);
+  UpdateName(*bp_name);
 }
 
 void SBBreakpointName::UpdateName(BreakpointName &bp_name) {
diff --git 
a/lldb/test/API/functionalities/breakpoint/breakpoint_names/TestBreakpointNames.py
 
b/lldb/test/API/functionalities/breakpoint/breakpoint_names/TestBreakpointNames.py
index 1d457415262be..33aa9877c8e59 100644
--- 
a/lldb/test/API/functionalities/breakpoint/breakpoint_names/TestBreakpointNames.py
+++ 
b/lldb/test/API/functionalities/breakpoint/breakpoint_names/TestBreakpointNames.py
@@ -2,11 +2,10 @@
 Test breakpoint names.
 """
 
-
 import os
 import lldb
 from lldbsuite.test.decorators import *
-from lldbsuite.test.lldbtest import *
+from lldbsuite.test.lldbtest import TestBase, VALID_BREAKPOINT, VALID_TARGET
 from lldbsuite.test import lldbutil
 
 
@@ -51,6 +50,14 @@ def test_configuring_permissions_cli(self):
         self.setup_target()
         self.do_check_configuring_permissions_cli()
 
+    def test_breakpointname_enabled(self):
+        """Use Commands and Python APIs to test that enabling and disabling a
+        breakpoint name is propagated to all breakpoints with that name.
+        """
+        self.build()
+        self.setup_target()
+        self.do_check_breakpointname_enabled()
+
     def setup_target(self):
         exe = self.getBuildArtifact("a.out")
 
@@ -474,3 +481,60 @@ def do_check_configuring_permissions_cli(self):
             bp_name.IsValid(), "Didn't make a breakpoint name we could find."
         )
         self.check_permission_results(bp_name)
+
+    def do_check_breakpointname_enabled(self):
+        target: lldb.SBTarget = self.target
+        self.assertTrue(target.IsValid(), "Target name must be valid.")
+        bp_name: lldb.SBBreakpointName = lldb.SBBreakpointName(
+            target, self.bp_name_string
+        )
+        self.assertTrue(bp_name.IsValid(), "Breakpoint name must be valid.")
+
+        # Create two function breakpoints a and b.
+        a_breakpoint: lldb.SBBreakpoint = target.BreakpointCreateByName("a")
+        self.assertTrue(a_breakpoint and a_breakpoint.IsValid(), 
VALID_BREAKPOINT)
+        self.assertEqual(a_breakpoint.GetNumLocations(), 1)
+        self.assertTrue(a_breakpoint.IsEnabled())
+        
self.assertTrue(a_breakpoint.AddNameWithErrorHandling(self.bp_name_string))
+
+        b_breakpoint = target.BreakpointCreateByName("b")
+        self.assertTrue(b_breakpoint and b_breakpoint.IsValid(), 
VALID_BREAKPOINT)
+        self.assertEqual(b_breakpoint.GetNumLocations(), 1)
+        self.assertTrue(b_breakpoint.IsEnabled())
+        
self.assertTrue(b_breakpoint.AddNameWithErrorHandling(self.bp_name_string))
+
+        # enabled and disable the function breakpoints with the breakpoint 
name.
+        # With API.
+        bp_name.SetEnabled(False)
+        self.assertFalse(bp_name.IsEnabled())
+        self.assertFalse(a_breakpoint.IsEnabled())
+        self.assertFalse(b_breakpoint.IsEnabled())
+        bp_name.SetEnabled(True)
+        self.assertTrue(a_breakpoint.IsEnabled())
+        self.assertTrue(b_breakpoint.IsEnabled())
+        self.assertTrue(bp_name.IsEnabled())
+
+        # With cli.
+        self.runCmd(f"breakpoint name configure {self.bp_name_string} 
--disable")
+        self.assertFalse(bp_name.IsEnabled())
+        self.assertFalse(a_breakpoint.IsEnabled())
+        self.assertFalse(b_breakpoint.IsEnabled())
+        self.runCmd(f"breakpoint name configure {self.bp_name_string} 
--enable")
+        self.assertTrue(a_breakpoint.IsEnabled())
+        self.assertTrue(b_breakpoint.IsEnabled())
+        self.assertTrue(bp_name.IsEnabled())
+
+        # Disabling all the Breakpoints in a BreakpointName
+        # does not disable the BreakpointName.
+        a_breakpoint.SetEnabled(False)
+        b_breakpoint.SetEnabled(False)
+        self.assertFalse(a_breakpoint.IsEnabled())
+        self.assertFalse(b_breakpoint.IsEnabled())
+        self.assertTrue(bp_name.IsEnabled())
+
+        # BreakpointName should enable all disabled breakpoints with the name.
+        b_breakpoint.SetEnabled(True)
+        bp_name.SetEnabled(True)
+        self.assertTrue(a_breakpoint.IsEnabled())
+        self.assertTrue(b_breakpoint.IsEnabled())
+        self.assertTrue(bp_name.IsEnabled())

_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to