================
@@ -206,7 +206,30 @@ Status RegisterValue::SetValueFromData(const RegisterInfo
®_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
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits