[Lldb-commits] [lldb] r357055 - Fix an out-of-bounds error in RegisterContextDarwin_arm64
Pavel Labath via lldb-commits
lldb-commits at lists.llvm.org
Wed Mar 27 02:39:46 PDT 2019
Author: labath
Date: Wed Mar 27 02:39:46 2019
New Revision: 357055
URL: http://llvm.org/viewvc/llvm-project?rev=357055&view=rev
Log:
Fix an out-of-bounds error in RegisterContextDarwin_arm64
Summary:
gcc diagnoses this as "array subscript 63 is above array bounds of
'RegisterContextDarwin_arm64::VReg [32]'".
The correct fix seems to be subtracting the fpu register base index, but
I have no way of verifying that this actually works.
Reviewers: jasonmolenda
Subscribers: javed.absar, kristof.beyls, lldb-commits
Differential Revision: https://reviews.llvm.org/D59495
Modified:
lldb/trunk/source/Plugins/Process/Utility/RegisterContextDarwin_arm64.cpp
Modified: lldb/trunk/source/Plugins/Process/Utility/RegisterContextDarwin_arm64.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Utility/RegisterContextDarwin_arm64.cpp?rev=357055&r1=357054&r2=357055&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/Utility/RegisterContextDarwin_arm64.cpp (original)
+++ lldb/trunk/source/Plugins/Process/Utility/RegisterContextDarwin_arm64.cpp Wed Mar 27 02:39:46 2019
@@ -429,7 +429,7 @@ bool RegisterContextDarwin_arm64::ReadRe
case fpu_v29:
case fpu_v30:
case fpu_v31:
- value.SetBytes(fpu.v[reg].bytes.buffer, reg_info->byte_size,
+ value.SetBytes(fpu.v[reg - fpu_v0].bytes.buffer, reg_info->byte_size,
endian::InlHostByteOrder());
break;
@@ -621,7 +621,8 @@ bool RegisterContextDarwin_arm64::WriteR
case fpu_v29:
case fpu_v30:
case fpu_v31:
- ::memcpy(fpu.v[reg].bytes.buffer, value.GetBytes(), value.GetByteSize());
+ ::memcpy(fpu.v[reg - fpu_v0].bytes.buffer, value.GetBytes(),
+ value.GetByteSize());
break;
case fpu_fpsr:
More information about the lldb-commits
mailing list