================
@@ -94,6 +94,39 @@ static lldb::addr_t ReadFlags(NativeRegisterContext 
&regsiter_context) {
                                                  LLDB_INVALID_ADDRESS);
 }
 
+static int GetSoftwareBreakpointSize(const ArchSpec &arch,
+                                     lldb::addr_t next_flags) {
+  if (arch.GetMachine() == llvm::Triple::arm) {
+    if (next_flags & 0x20)
+      // Thumb mode
+      return 2;
+    else
+      // Arm mode
+      return 4;
+  }
+  if (arch.IsMIPS() || arch.GetTriple().isPPC64() ||
+      arch.GetTriple().isRISCV() || arch.GetTriple().isLoongArch())
+    return 4;
+  return 0;
+}
+
+static Status SetSoftwareBreakpointOnPC(const ArchSpec &arch, lldb::addr_t pc,
----------------
ita-sc wrote:

I would like to keep `Status` in this MR, as from my point of view, this MR 
will do more that it should -- it will add a new functionality and change the 
way we work with errors here.

Moreover, changing this will result in unnecessary casts from `Status` to 
`Error` (`process.SetBreakpoint`) and from `Error` to 
`Status`(`SetupSoftwareSingleStepping`).

Note: I've checked that we have `Status::ToError` and `Status(llvm::Error 
error)` ctor, but I'm not sure these functions will suffice (AFAIU `m_code` 
will be saved only if `m_type == ErrorType::eErrorTypePOSIX`).

https://github.com/llvm/llvm-project/pull/90075
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to