tberghammer added a comment.
Looks much better, but I think the root cause of your problem is that you are
using RegisterValue::SetBytes instead of RegisterValue::SetUInt. I would
suggest to use a code like this (I don't have a mips environment at the moment
to try it out):
Error
NativeRegisterContextLinux_mips64::DoReadRegisterValue(uint32_t offset,
const char* reg_name,
uint32_t size,
RegisterValue &value)
{
GPR_linux_mips regs;
::memset(®s, 0, sizeof(GPR_linux_mips));
Error error = NativeProcessLinux::PtraceWrapper(PTRACE_GETREGS,
m_thread.GetID(), NULL, ®s, sizeof regs);
if (error.Success())
{
lldb_private::ArchSpec arch;
if (m_thread.GetProcess()->GetArchitecture(arch))
value.SetUInt(*(uint64_t*)(((uint8_t*)®s) + offset),
arch.GetAddressByteSize());
else
error.SetErrorString("failed to get architecture");
}
return error;
}
================
Comment at:
source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.cpp:1378
@@ -1377,2 +1377,3 @@
GPR_linux_mips regs;
+ lldb_private::ArchSpec arch;
::memset(®s, 0, sizeof(GPR_linux_mips));
----------------
You use this variable without initializing it. You can call SetBytes with an
explicit byte order value (e.g. eByteOrderLittle) as it isn't matter during 0
initialization.
Repository:
rL LLVM
http://reviews.llvm.org/D14633
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits