[Lldb-commits] [lldb] r244742 - Fix read only watchpoints on x86_64

Tamas Berghammer via lldb-commits lldb-commits at lists.llvm.org
Wed Aug 12 05:22:42 PDT 2015

Author: tberghammer
Date: Wed Aug 12 07:22:42 2015
New Revision: 244742

URL: http://llvm.org/viewvc/llvm-project?rev=244742&view=rev
Fix read only watchpoints on x86_64

On x86/x86_64 read only watchpoints aren't supported. Fall back
to read/write watchpoints in that case.

Note: Logic should be added to ignore the watchpoint hit when
occurred because of a write.


Modified: lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.cpp?rev=244742&r1=244741&r2=244742&view=diff
--- lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.cpp (original)
+++ lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.cpp Wed Aug 12 07:22:42 2015
@@ -1018,8 +1018,10 @@ NativeRegisterContextLinux_x86_64::SetHa
     if (wp_index >= NumSupportedHardwareWatchpoints())
         return Error ("Watchpoint index out of range");
+    // Read only watchpoints aren't supported on x86_64. Fall back to read/write waitchpoints instead.
+    // TODO: Add logic to detect when a write happens and ignore that watchpoint hit.
     if (watch_flags == 0x2)
-        return Error ("Read watchpoints currently unsupported on x86_64 architecture");
+        watch_flags = 0x3;
     if (watch_flags != 0x1 && watch_flags != 0x3)
         return Error ("Invalid read/write bits for watchpoint");

More information about the lldb-commits mailing list