From 64d807e95d8d9969132f67f70e5ffb1acf9aedf9 Mon Sep 17 00:00:00 2001 From: Tamas Berghammer Date: Thu, 28 May 2015 10:38:32 +0000 Subject: Fix write register context in EmulateInstructionARM::EmulateADDRdSPImm llvm-svn: 238410 --- lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp b/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp index 9634664b485..d4dfe59381b 100644 --- a/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp +++ b/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp @@ -660,9 +660,12 @@ EmulateInstructionARM::EmulateADDRdSPImm (const uint32_t opcode, const ARMEncodi } addr_t sp_offset = imm32; addr_t addr = sp + sp_offset; // a pointer to the stack area - + EmulateInstruction::Context context; - context.type = eContextSetFramePointer; + if (Rd == GetFramePointerRegisterNumber()) + context.type = eContextSetFramePointer; + else + context.type = EmulateInstruction::eContextRegisterPlusOffset; RegisterInfo sp_reg; GetRegisterInfo (eRegisterKindDWARF, dwarf_sp, sp_reg); context.SetRegisterPlusOffset (sp_reg, sp_offset); -- cgit v1.2.3