forked from Imagelibrary/binutils-gdb
* arm-tdep.c (thumb_get_next_pc_raw): Handle Thumb-16 encoding
for "mov pc, REG" as well. (thumb_instruction_changes_pc): Likewise.
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
2010-10-19 Ulrich Weigand <uweigand@de.ibm.com>
|
||||||
|
|
||||||
|
* arm-tdep.c (thumb_get_next_pc_raw): Handle Thumb-16 encoding
|
||||||
|
for "mov pc, REG" as well.
|
||||||
|
(thumb_instruction_changes_pc): Likewise.
|
||||||
|
|
||||||
2010-10-19 Sami Wagiaalla <swagiaal@redhat.com>
|
2010-10-19 Sami Wagiaalla <swagiaal@redhat.com>
|
||||||
|
|
||||||
PR C++/11500:
|
PR C++/11500:
|
||||||
|
|||||||
@@ -537,6 +537,9 @@ thumb_instruction_changes_pc (unsigned short inst)
|
|||||||
if ((inst & 0xff00) == 0x4700) /* bx REG, blx REG */
|
if ((inst & 0xff00) == 0x4700) /* bx REG, blx REG */
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
if ((inst & 0xff87) == 0x4687) /* mov pc, REG */
|
||||||
|
return 1;
|
||||||
|
|
||||||
if ((inst & 0xf500) == 0xb100) /* CBNZ or CBZ. */
|
if ((inst & 0xf500) == 0xb100) /* CBNZ or CBZ. */
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
@@ -3572,6 +3575,15 @@ thumb_get_next_pc_raw (struct frame_info *frame, CORE_ADDR pc, int insert_bkpt)
|
|||||||
else
|
else
|
||||||
nextpc = get_frame_register_unsigned (frame, bits (inst1, 3, 6));
|
nextpc = get_frame_register_unsigned (frame, bits (inst1, 3, 6));
|
||||||
}
|
}
|
||||||
|
else if ((inst1 & 0xff87) == 0x4687) /* mov pc, REG */
|
||||||
|
{
|
||||||
|
if (bits (inst1, 3, 6) == 0x0f)
|
||||||
|
nextpc = pc_val;
|
||||||
|
else
|
||||||
|
nextpc = get_frame_register_unsigned (frame, bits (inst1, 3, 6));
|
||||||
|
|
||||||
|
nextpc = MAKE_THUMB_ADDR (nextpc);
|
||||||
|
}
|
||||||
else if ((inst1 & 0xf500) == 0xb100)
|
else if ((inst1 & 0xf500) == 0xb100)
|
||||||
{
|
{
|
||||||
/* CBNZ or CBZ. */
|
/* CBNZ or CBZ. */
|
||||||
|
|||||||
Reference in New Issue
Block a user