[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
Wed Apr 12 00:46:46 PDT 2023

DavidSpickett added inline comments.

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)++);
jasonmolenda wrote:
> DavidSpickett wrote:
> > These do what exactly?
> These are doing 64-bit writes to `u64_p` which is pointing to the start of the `uint8_t buf[8]`, while I'm watching 1 byte in the middle, so the FAR address I get is the start of the buffer (and outside of the address range I'm watching).  This is the one that lldb currently skips over silently on AArch64 Linux/FreeBSD.  Doing two of these writes on each source line was something I did while testing something else, I didn't really need to write it this way for this test case.
So can we have the minimum writes here then?

I guess that another `*u64_p = 5;` would be enough.

Comment at: lldb/tools/debugserver/source/DNBDefs.h:284-297
+      bool esr_fields_set;
+      struct {
+        uint32_t
+            iss; // "ISS encoding for an exception from a Watchpoint exception"
+        uint32_t wpt;  // Watchpoint number
+        bool wptv;     // Watchpoint number Valid
+        bool wpf;      // Watchpoint might be false-positive
JDevlieghere wrote:
> Instead of a boolean and a field, you could make it a `std::optional<esr_field>`. 

  rG LLVM Github Monorepo



More information about the lldb-commits mailing list