[Lldb-commits] [lldb] 35e3939 - watch set expression's default type was wrong with new modify type
Jason Molenda via lldb-commits
lldb-commits at lists.llvm.org
Thu Sep 21 14:50:43 PDT 2023
Author: Jason Molenda
Date: 2023-09-21T14:50:34-07:00
New Revision: 35e3939cb06d19942a30fd39f1416f49a7b982a4
URL: https://github.com/llvm/llvm-project/commit/35e3939cb06d19942a30fd39f1416f49a7b982a4
DIFF: https://github.com/llvm/llvm-project/commit/35e3939cb06d19942a30fd39f1416f49a7b982a4.diff
LOG: watch set expression's default type was wrong with new modify type
`watch set expression` was passing the OptionGroupWatchpoint enum
in to Target where the LLDB_WATCH_TYPE_* bitfield was expected.
Modify matched READ|WRITE and resulted in a test failure in
TestWatchTaggedAddress.py. David temporarily changed the test to
expect this incorrect output; this fixes the bug and updates the
test case to test it for correctness again.
Added:
Modified:
lldb/source/Commands/CommandObjectWatchpoint.cpp
lldb/test/API/commands/watchpoints/watch_tagged_addr/TestWatchTaggedAddress.py
Removed:
################################################################################
diff --git a/lldb/source/Commands/CommandObjectWatchpoint.cpp b/lldb/source/Commands/CommandObjectWatchpoint.cpp
index 83c2fb824bb9d3d..dc5be0da43f5e62 100644
--- a/lldb/source/Commands/CommandObjectWatchpoint.cpp
+++ b/lldb/source/Commands/CommandObjectWatchpoint.cpp
@@ -1133,7 +1133,23 @@ class CommandObjectWatchpointSetExpression : public CommandObjectRaw {
size = target->GetArchitecture().GetAddressByteSize();
// Now it's time to create the watchpoint.
- uint32_t watch_type = m_option_watchpoint.watch_type;
+ uint32_t watch_type;
+ switch (m_option_watchpoint.watch_type) {
+ case OptionGroupWatchpoint::eWatchRead:
+ watch_type = LLDB_WATCH_TYPE_READ;
+ break;
+ case OptionGroupWatchpoint::eWatchWrite:
+ watch_type = LLDB_WATCH_TYPE_WRITE;
+ break;
+ case OptionGroupWatchpoint::eWatchModify:
+ watch_type = LLDB_WATCH_TYPE_MODIFY;
+ break;
+ case OptionGroupWatchpoint::eWatchReadWrite:
+ watch_type = LLDB_WATCH_TYPE_READ | LLDB_WATCH_TYPE_WRITE;
+ break;
+ default:
+ watch_type = LLDB_WATCH_TYPE_MODIFY;
+ }
// Fetch the type from the value object, the type of the watched object is
// the pointee type
diff --git a/lldb/test/API/commands/watchpoints/watch_tagged_addr/TestWatchTaggedAddress.py b/lldb/test/API/commands/watchpoints/watch_tagged_addr/TestWatchTaggedAddress.py
index 336938082d83536..9d9c04912d7df9e 100644
--- a/lldb/test/API/commands/watchpoints/watch_tagged_addr/TestWatchTaggedAddress.py
+++ b/lldb/test/API/commands/watchpoints/watch_tagged_addr/TestWatchTaggedAddress.py
@@ -96,7 +96,7 @@ def test_watch_set_on_tagged_ptr(self):
self.expect(
"watchpoint set expression -s 4 -- tagged_ptr",
WATCHPOINT_CREATED,
- substrs=["Watchpoint created", "size = 4", "type = rw"],
+ substrs=["Watchpoint created", "size = 4", "type = m"],
)
self.verify_watch_hits()
More information about the lldb-commits
mailing list