[Lldb-commits] [lldb] [lldb] Improved formatting of 'register read' command. (PR #188049)

via lldb-commits lldb-commits at lists.llvm.org
Thu Apr 2 08:11:37 PDT 2026


================
@@ -147,6 +149,62 @@ class CommandObjectRegisterRead : public CommandObjectParsed {
   }
 
 protected:
+  uint32_t GetNameSize(const RegisterInfo * reg_info, bool use_primary_name) {
+      const char *raw = use_primary_name ? reg_info->name : reg_info->alt_name;
+      std::string str = raw ? std::string(raw) : std::string();
+      return static_cast<uint32_t>(str.size());
+  }
+
+  uint32_t ComputeMatchingAlignment(RegisterContext *reg_ctx,
+                                    const RegisterSet *const reg_set,
+                                    bool primitive_only) {
+    bool use_primary_name =
+        !static_cast<bool>(m_command_options.alternate_name);
+    const size_t num_registers = reg_set->num_registers;
+    uint32_t reg_name_align_at = 0;
+
+    // Loop through all the registers to find the longest register name for the
+    // matching alignment
+    for (size_t reg_idx = 0; reg_idx < num_registers; ++reg_idx) {
+      const uint32_t reg = reg_set->registers[reg_idx];
+      if (const RegisterInfo *reg_info = 
+              reg_ctx->GetRegisterInfoAtIndex(reg)) {
+        // Derived registers are skipped if primitive_only is true.
+        if (primitive_only && reg_info->value_regs)
+          continue;
+
+        reg_name_align_at = std::max(reg_name_align_at, GetNameSize(reg_info, use_primary_name));
+      }
+    }
+
+    return reg_name_align_at;
+  }
+
+  // Here, command is basically a list of registers to be printed by DumpRegister() method
----------------
Rifet-c wrote:

Do you want it to be moved into `DoExecute()` function's body? Also, do you want it to be moved as a function definition or just as moving it's code body there?

https://github.com/llvm/llvm-project/pull/188049


More information about the lldb-commits mailing list