Fix prologue analysis for ldr.w and ldrd instruction
authorTaimoor Mirza <tmirza@codesourcery.com>
Fri, 16 May 2014 06:39:05 +0000 (11:39 +0500)
committerTaimoor Mirza <tmirza@codesourcery.com>
Fri, 16 May 2014 06:39:05 +0000 (11:39 +0500)
Prologue analysis for ldr.w and ldrd instruction obtains offset from
first two bytes that contains opcode of instruction. It should obtain
offset from next two bytes that actually contain operands.

       * arm-tdep.c (thumb_analyze_prologue): Fix offset calculation for
ldr.w and ldrd instructions.

Signed-off-by: Taimoor Mirza <tmirza@codesourcery.com>
gdb/ChangeLog
gdb/arm-tdep.c

index f32d1f7dc50b25b7dd53499155773c98baa4d385..8d90992470cd52bf82b11e5b777b6238573bdc32 100644 (file)
@@ -1,3 +1,8 @@
+2014-05-16  Taimoor Mirza  <tmirza@codesourcery.com>
+
+        * arm-tdep.c (thumb_analyze_prologue): Fix offset calculation for
+       ldr.w and ldrd instructions.
+
 2014-05-15  Doug Evans  <dje@google.com>
 
        * dwarf2read.c (read_structure_type): Delete outdated comments.
index e3b1c3d58c79ea20ea75768b057ab3c73e83e396..7271777ca0ea15d4b838824c8ac90ba44cf500fa 100644 (file)
@@ -1071,7 +1071,7 @@ thumb_analyze_prologue (struct gdbarch *gdbarch,
              unsigned int constant;
              CORE_ADDR loc;
 
-             offset = bits (insn, 0, 11);
+             offset = bits (inst2, 0, 11);
              if (insn & 0x0080)
                loc = start + 4 + offset;
              else
@@ -1087,7 +1087,7 @@ thumb_analyze_prologue (struct gdbarch *gdbarch,
              unsigned int constant;
              CORE_ADDR loc;
 
-             offset = bits (insn, 0, 7) << 2;
+             offset = bits (inst2, 0, 7) << 2;
              if (insn & 0x0080)
                loc = start + 4 + offset;
              else