[Lldb-commits] [PATCH] D84257: [lldb] Don't use hardware index to determine whether a breakpoint site is hardware

Tatyana Krasnukha via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Wed Jul 22 02:58:50 PDT 2020


tatyana-krasnukha added a comment.





================
Comment at: lldb/source/Breakpoint/BreakpointLocation.cpp:73
+  if (m_bp_site_sp)
+    return m_bp_site_sp->IsHardware();
+
----------------
JDevlieghere wrote:
> Should we sanity check that this is true when `m_hardware_index != LLDB_INVALID_INDEX32`? 
> 
> ```lldbassert(m_hardware_index == LLDB_INVALID_INDEX32 || m_bp_site_sp->IsHardware());```
This is a good point. Though, should we check BreakpointLocation's m_hardware_index or BreakpointSite's m_hardware_index? Both of them inherit this member from StoppointLocation. To be honest, I don't think that BreakpointLocation should have software/hardware trait at all.


================
Comment at: lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp:3208
     case BreakpointSite::eExternal: {
-      GDBStoppointType stoppoint_type;
-      if (bp_site->IsHardware())
-        stoppoint_type = eBreakpointHardware;
-      else
-        stoppoint_type = eBreakpointSoftware;
-
-      if (m_gdb_comm.SendGDBStoppointTypePacket(stoppoint_type, false, addr,
-                                                bp_op_size))
+      if (m_gdb_comm.SendGDBStoppointTypePacket(eBreakpointSoftware, false,
+                                                addr, bp_op_size))
----------------
>>! In D84257#2166081, @labath wrote:
> Could you clarify what's the functional change here? Does this change the kind of breakpoint that lldb sets, or just how it gets reported? E.g., does the `ProcessGDBRemote` acutally cause lldb to send a different packet, or is that just reacting to the change in the semantics of other code?

In the `ProcessGDBRemote::EnableBreakpointSite` (lines 3098 - 3103) it always creates external breakpoint with `eBreakpointSoftware`, so nothing is going to be changed in ProcessGDBRemote behavior. And now, when `bp_site->IsHardware()` checks whether BreakpontSite::Type is BreakpointSite::eHardware , the condition `if (bp_site->IsHardware())` doesn't make sense here anymore.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D84257





More information about the lldb-commits mailing list