omjavaid created this revision. omjavaid added reviewers: mstorsjo, DavidSpickett. Herald added a subscriber: kristof.beyls. omjavaid requested review of this revision.
CPSR on Arm64 is 4 bytes in size but windows on Arm implementation is trying to read/write 8 bytes against a byte register causing LLDB unit tests failures. Ref: https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-arm64_nt_context https://reviews.llvm.org/D112471 Files: lldb/source/Plugins/Process/Windows/Common/NativeRegisterContextWindows_arm64.cpp lldb/source/Plugins/Process/Windows/Common/arm64/RegisterContextWindows_arm64.cpp Index: lldb/source/Plugins/Process/Windows/Common/arm64/RegisterContextWindows_arm64.cpp =================================================================== --- lldb/source/Plugins/Process/Windows/Common/arm64/RegisterContextWindows_arm64.cpp +++ lldb/source/Plugins/Process/Windows/Common/arm64/RegisterContextWindows_arm64.cpp @@ -171,7 +171,7 @@ reg_value.SetUInt64(m_context.Pc); break; case gpr_cpsr: - reg_value.SetUInt64(m_context.Cpsr); + reg_value.SetUInt32(m_context.Cpsr); break; case gpr_w0: @@ -385,7 +385,7 @@ m_context.Pc = reg_value.GetAsUInt64(); break; case gpr_cpsr: - m_context.Cpsr = reg_value.GetAsUInt64(); + m_context.Cpsr = reg_value.GetAsUInt32(); break; case fpu_v0: Index: lldb/source/Plugins/Process/Windows/Common/NativeRegisterContextWindows_arm64.cpp =================================================================== --- lldb/source/Plugins/Process/Windows/Common/NativeRegisterContextWindows_arm64.cpp +++ lldb/source/Plugins/Process/Windows/Common/NativeRegisterContextWindows_arm64.cpp @@ -220,7 +220,7 @@ reg_value.SetUInt64(tls_context.Pc); break; case gpr_cpsr_arm64: - reg_value.SetUInt64(tls_context.Cpsr); + reg_value.SetUInt32(tls_context.Cpsr); break; case gpr_w0_arm64: @@ -317,7 +317,7 @@ tls_context.Pc = reg_value.GetAsUInt64(); break; case gpr_cpsr_arm64: - tls_context.Cpsr = reg_value.GetAsUInt64(); + tls_context.Cpsr = reg_value.GetAsUInt32(); break; case gpr_w0_arm64:
Index: lldb/source/Plugins/Process/Windows/Common/arm64/RegisterContextWindows_arm64.cpp =================================================================== --- lldb/source/Plugins/Process/Windows/Common/arm64/RegisterContextWindows_arm64.cpp +++ lldb/source/Plugins/Process/Windows/Common/arm64/RegisterContextWindows_arm64.cpp @@ -171,7 +171,7 @@ reg_value.SetUInt64(m_context.Pc); break; case gpr_cpsr: - reg_value.SetUInt64(m_context.Cpsr); + reg_value.SetUInt32(m_context.Cpsr); break; case gpr_w0: @@ -385,7 +385,7 @@ m_context.Pc = reg_value.GetAsUInt64(); break; case gpr_cpsr: - m_context.Cpsr = reg_value.GetAsUInt64(); + m_context.Cpsr = reg_value.GetAsUInt32(); break; case fpu_v0: Index: lldb/source/Plugins/Process/Windows/Common/NativeRegisterContextWindows_arm64.cpp =================================================================== --- lldb/source/Plugins/Process/Windows/Common/NativeRegisterContextWindows_arm64.cpp +++ lldb/source/Plugins/Process/Windows/Common/NativeRegisterContextWindows_arm64.cpp @@ -220,7 +220,7 @@ reg_value.SetUInt64(tls_context.Pc); break; case gpr_cpsr_arm64: - reg_value.SetUInt64(tls_context.Cpsr); + reg_value.SetUInt32(tls_context.Cpsr); break; case gpr_w0_arm64: @@ -317,7 +317,7 @@ tls_context.Pc = reg_value.GetAsUInt64(); break; case gpr_cpsr_arm64: - tls_context.Cpsr = reg_value.GetAsUInt64(); + tls_context.Cpsr = reg_value.GetAsUInt32(); break; case gpr_w0_arm64:
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits