[Lldb-commits] [PATCH] D147816: Clarify how watchpoint description in stop packets work, fix AArch64 unintended behavior

Jason Molenda via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Tue Apr 11 15:37:40 PDT 2023


jasonmolenda added inline comments.


================
Comment at: lldb/docs/lldb-gdb-remote.txt:1609
+//           There may be false-positive watchpoint hits on AArch64 as well,
+//           in the SVE Streaming Mode, but that is less common (v. ESR 
+//           register flag "WPF", "Watchpoint might be False-Positive") and
----------------
DavidSpickett wrote:
> What does this "v." mean? Is it short for "see here " or some kind of citation?
Yeah, maybe not widely known.  "v." short for "vide" latin, see. cf https://latinlexicon.org/LNS_abbreviations.php ;)


================
Comment at: lldb/source/Plugins/Process/Utility/NativeRegisterContextDBReg_arm64.h:62
+  //   \a address is 0x1000
+  //   size is 8
+  //   If a one-byte write to 0x1006 is the most recent watchpoint trap,
----------------
DavidSpickett wrote:
> Worth noting why here? (minimum watch size and alignment I guess)
I was taking notes as I read the source to understand how arm linux behaved, and left those notes in the header, maybe I should just remove them. The DREG struct has three addresses in it, and it wasn't really clear to me what was stored in them.


================
Comment at: lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp:2232-2235
+        // Rewrite this to mimic the "reason:watchpoint" and
+        // "description:ADDR" entries in the
+        // stop-reply packet, handled in
+        // ProcessGDBRemote::SetThreadStopInfo
----------------
DavidSpickett wrote:
> Is this a note to self or is this code now actually doing that?
Sorry that wasn't clear.  We can receive watchpoint notifications one of three ways:  `watch`/`awatch`/`rwatch` (standard gdb RSP), `reason:watchpoint` with a `description` asciihex string of 1-to-3 numbers, and on Darwin systems, a mach exception.  ProcessGDBRemote rewrites watch/awatch/rwatch to `reason:watchpoint` + `description` with only the one address, and that's the only thing decoded into a StopInfo object.


================
Comment at: lldb/source/Target/StopInfo.cpp:1019
   bool m_should_stop_is_valid = false;
-  lldb::addr_t m_watch_hit_addr;
+  bool m_silently_skip = false;
   bool m_step_over_plan_complete = false;
----------------
DavidSpickett wrote:
> Please document this here as well.
> 
> I am not 100% whether silently skip true means always silently skip this watchpoint, or silently skip out of range hits attributed to this watchpoint.
Good point.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D147816/new/

https://reviews.llvm.org/D147816



More information about the lldb-commits mailing list