Author: tberghammer Date: Wed Jul 29 10:15:42 2015 New Revision: 243521 URL: http://llvm.org/viewvc/llvm-project?rev=243521&view=rev Log: Fix read/write context in EmulateInstructionARM strd/ldrd
Modified: lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp Modified: lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp?rev=243521&r1=243520&r2=243521&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp (original) +++ lldb/trunk/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp Wed Jul 29 10:15:42 2015 @@ -10303,7 +10303,10 @@ EmulateInstructionARM::EmulateLDRDImmedi GetRegisterInfo (eRegisterKindDWARF, dwarf_r0 + n, base_reg); EmulateInstruction::Context context; - context.type = eContextRegisterLoad; + if (n == 13) + context.type = eContextPopRegisterOffStack; + else + context.type = eContextRegisterLoad; context.SetRegisterPlusOffset (base_reg, address - Rn); const uint32_t addr_byte_size = GetAddressByteSize(); @@ -10430,7 +10433,10 @@ EmulateInstructionARM::EmulateLDRDRegist address = Rn; EmulateInstruction::Context context; - context.type = eContextRegisterLoad; + if (n == 13) + context.type = eContextPopRegisterOffStack; + else + context.type = eContextRegisterLoad; context.SetRegisterPlusIndirectOffset (base_reg, offset_reg); // R[t] = MemA[address,4]; @@ -10581,7 +10587,10 @@ EmulateInstructionARM::EmulateSTRDImm (c return false; EmulateInstruction::Context context; - context.type = eContextRegisterStore; + if (n == 13) + context.type = eContextPushRegisterOnStack; + else + context.type = eContextRegisterStore; context.SetRegisterToRegisterPlusOffset (data_reg, base_reg, address - Rn); const uint32_t addr_byte_size = GetAddressByteSize(); @@ -10713,7 +10722,11 @@ EmulateInstructionARM::EmulateSTRDReg (c return false; EmulateInstruction::Context context; - context.type = eContextRegisterStore; + if (t == 13) + context.type = eContextPushRegisterOnStack; + else + context.type = eContextRegisterStore; + GetRegisterInfo (eRegisterKindDWARF, dwarf_r0 + t, data_reg); context.SetRegisterToRegisterPlusIndirectOffset (base_reg, offset_reg, data_reg); _______________________________________________ lldb-commits mailing list lldb-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits