[Lldb-commits] [PATCH] D147820: debugserver: move AArch64 watchpoint traps within a watchpointed region, parse ESR flags and send them to lldb

David Spickett via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Tue Apr 11 03:44:41 PDT 2023

DavidSpickett added a comment.

> This patch takes the trap address (FAR register) and finds the nearest watchpoint if it is not contained in any watched region.

>From what I remember, the Linux kernel also does this.

Comment at: lldb/test/API/commands/watchpoints/unaligned-watchpoint/TestUnalignedWatchpoint.py:5
+associating the fault with the set watchpoint.
Can you add here why "correctly associating" is not as easy as it sounds.

"This requires lldb to handle...".

Comment at: lldb/test/API/commands/watchpoints/unaligned-watchpoint/main.c:8-11
+   printf("%lld %lld\n", (*u64_p)++, (*u64_p)++);
+   printf("%lld %lld\n", (*u64_p)++, (*u64_p)++);
+   printf("%lld %lld\n", (*u64_p)++, (*u64_p)++);
+   printf("%lld %lld\n", (*u64_p)++, (*u64_p)++);
These do what exactly?

Comment at: lldb/tools/debugserver/source/MacOSX/MachProcess.mm:1425
+// return 1 if bit "BIT" is set in "value"
+static uint32_t bit(uint32_t value, uint32_t bit) {

Comment at: lldb/tools/debugserver/source/RNBRemote.cpp:2888
+      // set most of these fields yet.  It may need to be debugged in the
+      // future, so include all of these purely for debugging by human reasons.
+      ostrm << "watch_addr:" << std::hex
"by humans"?

  rG LLVM Github Monorepo



More information about the lldb-commits mailing list