[Lldb-commits] [lldb] 369c773 - Revert "[lldb][debugserver] Fix an off-by-one error in watchpoint identification (#134314)"
Jason Molenda via lldb-commits
lldb-commits at lists.llvm.org
Mon Apr 7 11:23:16 PDT 2025
Author: Jason Molenda
Date: 2025-04-07T11:21:58-07:00
New Revision: 369c7739d0853b7931410037843d5a63f50bc0a1
URL: https://github.com/llvm/llvm-project/commit/369c7739d0853b7931410037843d5a63f50bc0a1
DIFF: https://github.com/llvm/llvm-project/commit/369c7739d0853b7931410037843d5a63f50bc0a1.diff
LOG: Revert "[lldb][debugserver] Fix an off-by-one error in watchpoint identification (#134314)"
This reverts commit 21d912121c9f41385b165a736be787527f5bd7c2.
Failure on the aarch64 ubuntu bot when setting the 4th watchpoint;
may be a hardware limitation on that bot. I thought creating four
watchpoints would be generally safe, but I don't need to do that
for my test, will re-land without it.
Added:
Modified:
lldb/tools/debugserver/source/DNBBreakpoint.cpp
Removed:
lldb/test/API/functionalities/watchpoint/consecutive-watchpoints/Makefile
lldb/test/API/functionalities/watchpoint/consecutive-watchpoints/TestConsecutiveWatchpoints.py
lldb/test/API/functionalities/watchpoint/consecutive-watchpoints/main.c
################################################################################
diff --git a/lldb/test/API/functionalities/watchpoint/consecutive-watchpoints/Makefile b/lldb/test/API/functionalities/watchpoint/consecutive-watchpoints/Makefile
deleted file mode 100644
index 10495940055b6..0000000000000
--- a/lldb/test/API/functionalities/watchpoint/consecutive-watchpoints/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-C_SOURCES := main.c
-
-include Makefile.rules
diff --git a/lldb/test/API/functionalities/watchpoint/consecutive-watchpoints/TestConsecutiveWatchpoints.py b/lldb/test/API/functionalities/watchpoint/consecutive-watchpoints/TestConsecutiveWatchpoints.py
deleted file mode 100644
index 229172e6ce0aa..0000000000000
--- a/lldb/test/API/functionalities/watchpoint/consecutive-watchpoints/TestConsecutiveWatchpoints.py
+++ /dev/null
@@ -1,87 +0,0 @@
-"""
-Watch contiguous memory regions with separate watchpoints, check that lldb
-correctly detect which watchpoint was hit for each one.
-"""
-
-import lldb
-from lldbsuite.test.decorators import *
-from lldbsuite.test.lldbtest import *
-from lldbsuite.test import lldbutil
-
-
-class ConsecutiveWatchpointsTestCase(TestBase):
- NO_DEBUG_INFO_TESTCASE = True
-
- def continue_and_report_stop_reason(self, process, iter_str):
- process.Continue()
- self.assertIn(
- process.GetState(), [lldb.eStateStopped, lldb.eStateExited], iter_str
- )
- thread = process.GetSelectedThread()
- return thread.GetStopReason()
-
- # debugserver only gained the ability to watch larger regions
- # with this patch.
- def test_large_watchpoint(self):
- """Test watchpoint that covers a large region of memory."""
- self.build()
- self.main_source_file = lldb.SBFileSpec("main.c")
- (target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(
- self, "break here", self.main_source_file
- )
-
- frame = thread.GetFrameAtIndex(0)
-
- field2_wp = (
- frame.locals["var"][0]
- .GetChildMemberWithName("field2")
- .Watch(True, False, True)
- )
- field3_wp = (
- frame.locals["var"][0]
- .GetChildMemberWithName("field3")
- .Watch(True, False, True)
- )
- field4_wp = (
- frame.locals["var"][0]
- .GetChildMemberWithName("field4")
- .Watch(True, False, True)
- )
- field5_wp = (
- frame.locals["var"][0]
- .GetChildMemberWithName("field5")
- .Watch(True, False, True)
- )
-
- self.assertTrue(field2_wp.IsValid())
- self.assertTrue(field3_wp.IsValid())
- self.assertTrue(field4_wp.IsValid())
- self.assertTrue(field5_wp.IsValid())
-
- reason = self.continue_and_report_stop_reason(process, "continue to field2 wp")
- self.assertEqual(reason, lldb.eStopReasonWatchpoint)
- stop_reason_watchpoint_id = (
- process.GetSelectedThread().GetStopReasonDataAtIndex(0)
- )
- self.assertEqual(stop_reason_watchpoint_id, field2_wp.GetID())
-
- reason = self.continue_and_report_stop_reason(process, "continue to field3 wp")
- self.assertEqual(reason, lldb.eStopReasonWatchpoint)
- stop_reason_watchpoint_id = (
- process.GetSelectedThread().GetStopReasonDataAtIndex(0)
- )
- self.assertEqual(stop_reason_watchpoint_id, field3_wp.GetID())
-
- reason = self.continue_and_report_stop_reason(process, "continue to field4 wp")
- self.assertEqual(reason, lldb.eStopReasonWatchpoint)
- stop_reason_watchpoint_id = (
- process.GetSelectedThread().GetStopReasonDataAtIndex(0)
- )
- self.assertEqual(stop_reason_watchpoint_id, field4_wp.GetID())
-
- reason = self.continue_and_report_stop_reason(process, "continue to field5 wp")
- self.assertEqual(reason, lldb.eStopReasonWatchpoint)
- stop_reason_watchpoint_id = (
- process.GetSelectedThread().GetStopReasonDataAtIndex(0)
- )
- self.assertEqual(stop_reason_watchpoint_id, field5_wp.GetID())
diff --git a/lldb/test/API/functionalities/watchpoint/consecutive-watchpoints/main.c b/lldb/test/API/functionalities/watchpoint/consecutive-watchpoints/main.c
deleted file mode 100644
index c0a3530be9f5e..0000000000000
--- a/lldb/test/API/functionalities/watchpoint/consecutive-watchpoints/main.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include <stdint.h>
-struct fields {
- uint32_t field1;
- uint32_t field2; // offset +4
- uint16_t field3; // offset +8
- uint16_t field4; // offset +10
- uint16_t field5; // offset +12
- uint16_t field6; // offset +14
-};
-
-int main() {
- struct fields var = {0, 0, 0, 0, 0, 0};
-
- var.field1 = 5; // break here
- var.field2 = 6;
- var.field3 = 7;
- var.field4 = 8;
- var.field5 = 9;
- var.field6 = 10;
-
- return var.field1 + var.field2 + var.field3;
-}
diff --git a/lldb/tools/debugserver/source/DNBBreakpoint.cpp b/lldb/tools/debugserver/source/DNBBreakpoint.cpp
index e41bf9b4fd905..f63ecf24222bd 100644
--- a/lldb/tools/debugserver/source/DNBBreakpoint.cpp
+++ b/lldb/tools/debugserver/source/DNBBreakpoint.cpp
@@ -98,7 +98,7 @@ DNBBreakpointList::FindNearestWatchpoint(nub_addr_t addr) const {
if (pos.second.IsEnabled()) {
nub_addr_t start_addr = pos.second.Address();
nub_addr_t end_addr = start_addr + pos.second.ByteSize();
- if (addr >= start_addr && addr < end_addr)
+ if (addr >= start_addr && addr <= end_addr)
return &pos.second;
}
}
More information about the lldb-commits
mailing list