Fix single stepping over the IT instruction
authorTamas Berghammer <tberghammer@google.com>
Tue, 2 Feb 2016 14:32:11 +0000 (14:32 +0000)
committerTamas Berghammer <tberghammer@google.com>
Tue, 2 Feb 2016 14:32:11 +0000 (14:32 +0000)
commit8e18fe6e5423163d8f3f9b56aadc8c5b3eb2be91
treed20764245ea183874a9293c2dca9d88604caa00a
parent926b189a813cc434beadc831fc5beca621fb8612
Fix single stepping over the IT instruction

The ARM instruction emulator had 2 bugs related to the handling of the
IT instruction causing an error in single stepping:
* We haven't initialized the IT mask from the CPSR so if the last
  instruction of the IT block is a branch and the condition is false
  then the emulator evaluated the branch what resulted in an incorrect
  pc for the next instruction.
* The ITSTATE was advanced before the execution of each instruction. As
  a result the emulator was using the condition of following instruction
  in every case. The ITSTATE should be edvanced after the execution of
  an instruction except after an IT instruction.

Differential revision: http://reviews.llvm.org/D16772

llvm-svn: 259509
lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp