From f5debe2259c900a7d5bba12ecb18bf2dc7fae4e7 Mon Sep 17 00:00:00 2001 From: Frederic Riss Date: Sun, 9 Dec 2018 02:35:19 +0000 Subject: [PATCH] Remove some UB in RegisterContextDarwin_arm64.cpp llvm-svn: 348710 --- .../Plugins/Instruction/ARM64/EmulateInstructionARM64.cpp | 2 +- .../Plugins/Process/Utility/RegisterContextDarwin_arm64.cpp | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lldb/source/Plugins/Instruction/ARM64/EmulateInstructionARM64.cpp b/lldb/source/Plugins/Instruction/ARM64/EmulateInstructionARM64.cpp index bab2493..b053f5a 100644 --- a/lldb/source/Plugins/Instruction/ARM64/EmulateInstructionARM64.cpp +++ b/lldb/source/Plugins/Instruction/ARM64/EmulateInstructionARM64.cpp @@ -90,7 +90,7 @@ static inline uint64_t AddWithCarry(uint32_t N, uint64_t x, uint64_t y, bit carry_in, EmulateInstructionARM64::ProcState &proc_state) { uint64_t unsigned_sum = UInt(x) + UInt(y) + UInt(carry_in); - int64_t signed_sum = SInt(x) + SInt(y) + UInt(carry_in); + int64_t signed_sum = 0;//SInt(x) + SInt(y) + UInt(carry_in); uint64_t result = unsigned_sum; if (N < 64) result = Bits64(result, N - 1, 0); diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_arm64.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_arm64.cpp index a4722aaa..ff8a787 100644 --- a/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_arm64.cpp +++ b/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_arm64.cpp @@ -338,12 +338,22 @@ bool RegisterContextDarwin_arm64::ReadRegister(const RegisterInfo *reg_info, case gpr_x26: case gpr_x27: case gpr_x28: + value.SetUInt64(gpr.x[reg - gpr_x0]); + break; case gpr_fp: + value.SetUInt64(gpr.fp); + break; case gpr_sp: + value.SetUInt64(gpr.sp); + break; case gpr_lr: + value.SetUInt64(gpr.lr); + break; case gpr_pc: + value.SetUInt64(gpr.pc); + break; case gpr_cpsr: - value.SetUInt64(gpr.x[reg - gpr_x0]); + value.SetUInt64(gpr.cpsr); break; case gpr_w0: -- 2.7.4