[Lldb-commits] [PATCH] D29669: Hardware breakpoints implementation for AArch64 targets
Pavel Labath via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Tue Feb 7 14:40:17 PST 2017
labath added a comment.
Don't be intimidated by the number of comments :) - I think the change looks reasonable as a whole - most of them are just about style and come from the fact you were probably working on the patch while I was refactoring this code. As for tests, what I'd definitely want to see is a lldb-server-style test, which tests just the server changes without the client part (maybe you we're already talking about those - I just want to make sure we're on the same page).
As for the stepping speed, do you have any data which shows that this is actually a bottleneck in those operations? (I'm not against doing that, I'm just curious).
================
Comment at: include/lldb/Host/common/HardwareBreakpointList.h:24
+
+class HardwareBreakpointList {
+public:
----------------
What's the benefit of this class over using `std::map<lldb::addr_t, HardwareBreakpoint>` directly?
================
Comment at: source/Host/common/NativeProcessProtocol.cpp:142
-uint32_t NativeProcessProtocol::GetMaxWatchpoints() const {
+bool NativeProcessProtocol::GetHardwareDebugSupportInfo(
+ uint32_t &breakpoints, uint32_t &watchpoints) const {
----------------
`llvm::Optional<std::pair<uint32_t, uint32_t>> GetHardwareDebugSupportInfo()`
================
Comment at: source/Host/common/NativeProcessProtocol.cpp:145
// This default implementation will return the number of
// *hardware* breakpoints available. MacOSX and other OS
// implementations that support software breakpoints will want to
----------------
This comment needs update
================
Comment at: source/Plugins/Process/Linux/NativeProcessLinux.cpp:875
+ error = thread.GetRegisterContext()->GetHardwareBreakHitIndex(
+ wp_index, (uintptr_t)info.si_addr);
+ if (error.Fail())
----------------
Please rename the wp_index variable to something more generic if you're going to use it here.
================
Comment at: source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp:367
+
+ if (log)
+ log->Printf("NativeRegisterContextLinux_arm64::%s()", __FUNCTION__);
----------------
Please use LLDB_LOG here.
================
Comment at: source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp:384
size_t size) {
- Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_WATCHPOINTS));
+ Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(LIBLLDB_LOG_BREAKPOINTS));
LLDB_LOG(log, "addr: {0:x}, size: {1:x}", addr, size);
----------------
Please use POSIX_LOG_BREAKPOINTS here (the code in the NativeProcessLinux plugin was using a combination of posix and lldb log channels, so i've standardized it on posix).
================
Comment at: source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp:414
+ } else if (m_hbr_regs[i].address == addr) {
+ return LLDB_INVALID_INDEX32; // We do not support duplicate watchpoints.
}
----------------
s/watchpoints/breakpoints/ ?
================
Comment at: source/Plugins/Process/Linux/NativeThreadLinux.cpp:246
+ // Set all active hardware breakpoint on all threads.
+ if (m_hw_break_index_map.empty()) {
----------------
This doesn't appear to be setting the breakpoint on *all* threads (and it probably shouldnt)
https://reviews.llvm.org/D29669
More information about the lldb-commits
mailing list