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; } } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits