[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:18:29 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
+  uint32_t ComputeMatchingAlignment(Args &command, RegisterContext *reg_ctx, bool primitive_only) {
+    bool use_primary_name =
+        !static_cast<bool>(m_command_options.alternate_name);
+    uint32_t reg_name_align_at = 0;
+
+    // Loop through all the arguments to find the longest register name for the
+    // matching alignment
+    for (auto &entry : command) {
+      auto arg_str = entry.ref();
+      arg_str.consume_front("$");
----------------
Rifet-c wrote:

It is well commented in the loop that follows, so I put only a brief explanation here

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


More information about the lldb-commits mailing list