[Lldb-commits] [lldb] [lldb] Support integer registers with more than 64 bits. (PR #166363)

Matej Košík via lldb-commits lldb-commits at lists.llvm.org
Fri Nov 7 08:21:09 PST 2025


================
@@ -206,7 +206,30 @@ Status RegisterValue::SetValueFromData(const RegisterInfo &reg_info,
         int128.x[0] = data2;
         int128.x[1] = data1;
       }
-      SetUInt128(llvm::APInt(128, int128.x));
+      SetUIntN(llvm::APInt(128, int128.x));
+    } else {
+      std::vector<uint8_t> bytes(src_len, 0);
+      for (size_t i = 0; i < src_len; i++)
+        bytes[i] = src.GetU8(&src_offset);
+
+      if (src.GetByteOrder() == eByteOrderBig)
+        // Transform the big-endian input to little-endian
+        // because that is what the "llvm::LoadIntFromMemory" function
+        // we call below expects.
+        std::reverse(bytes.begin(), bytes.end());
+
+      if (llvm::sys::IsBigEndianHost) {
+        // If LLDB runs on a big-endian architecture,
+        // make sure that the input data can be read in
+        // 64-bit chunks because that is what
+        // the "llvm::LoadIntFromMemory" function will do.
----------------
sedymrak wrote:

I would say that the limitations of the existing implmentation of the `llvm::LoadIntFromMemory` leak to the proposed code. If the `llvm::LoadIntFromMemory` were not limited in this way, I wouldn't be forced to "round up" the memory-region.

I guess that it would be possible to remove this limitation from the `llvm::LoadIntFromMemory` function. It would be then easier to call it (no "rounding up" then would be necessary.

Should I explore this option?

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


More information about the lldb-commits mailing list