aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h
diff options
context:
space:
mode:
authorJason Molenda <jmolenda@apple.com>2024-02-05 18:45:01 -0800
committerGitHub <noreply@github.com>2024-02-05 18:45:01 -0800
commit5953532615595918d006ace2ad83fe33d1cd3915 (patch)
tree0059810a9a588b16f85e8f10a1153463c9b521c5 /lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h
parent8f80df0f52c4294d23d0510b01be6d6491714058 (diff)
downloadllvm-5953532615595918d006ace2ad83fe33d1cd3915.zip
llvm-5953532615595918d006ace2ad83fe33d1cd3915.tar.gz
llvm-5953532615595918d006ace2ad83fe33d1cd3915.tar.bz2
[lldb] Add QSupported key to report watchpoint types supported (#80376)
debugserver on arm64 devices can manage both Byte Address Select watchpoints (1-8 bytes) and MASK watchpoints (8 bytes-2 gigabytes). This adds a SupportedWatchpointTypes key to the QSupported response from debugserver with a list of these, so lldb can take full advantage of them when creating larger regions with a single hardware watchpoint. Also add documentation for this, and two other lldb extensions, to the lldb-gdb-remote.txt documentation. Re-enable TestLargeWatchpoint.py on Darwin systems when testing with the in-tree built debugserver. I can remove the "in-tree built debugserver" in the future when this new key is handled by an Xcode debugserver.
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h')
-rw-r--r--lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h
index 866b077..bd2d3e2 100644
--- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h
+++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h
@@ -199,6 +199,8 @@ public:
std::optional<bool> GetWatchpointReportedAfter();
+ WatchpointHardwareFeature GetSupportedWatchpointTypes();
+
const ArchSpec &GetHostArchitecture();
std::chrono::seconds GetHostDefaultPacketTimeout();
@@ -581,6 +583,8 @@ protected:
lldb::tid_t m_curr_tid_run = LLDB_INVALID_THREAD_ID;
uint32_t m_num_supported_hardware_watchpoints = 0;
+ WatchpointHardwareFeature m_watchpoint_types =
+ eWatchpointHardwareFeatureUnknown;
uint32_t m_low_mem_addressing_bits = 0;
uint32_t m_high_mem_addressing_bits = 0;