summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYao Qi <yao.qi@linaro.org>2015-06-30 09:24:43 +0100
committerYao Qi <yao.qi@linaro.org>2015-06-30 09:24:43 +0100
commit7b9be803fed8f500b512d5685773c84fffcdf63f (patch)
tree98f1c2cc2a8d75fe034622053b4570efb72bfe98
parentfd6e021d8c989905bbb234fdf993799db5a18cb9 (diff)
downloadbinutils-gdb-7b9be803fed8f500b512d5685773c84fffcdf63f.tar.gz
Handle media instructions in arm software single step.
This patch fixes PR 18605 which is about incorrectly decoding media instructions in software single step. gdb: 2015-06-30 Yao Qi <yao.qi@linaro.org> PR tdep/18605 * arm-tdep.c (arm_get_next_pc_raw): Break for media instructions.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/arm-tdep.c7
2 files changed, 13 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 74a88dbc895..8a961c61e7d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2015-06-30 Yao Qi <yao.qi@linaro.org>
+
+ PR tdep/18605
+ * arm-tdep.c (arm_get_next_pc_raw): Break for media
+ instructions.
+
2015-06-29 Kevin Buettner <kevinb@redhat.com>
* rx-tdep.c (RX_PSW_REGNUM): New enum constant.
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index c99f2a97d29..527bd01875d 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -4927,6 +4927,13 @@ arm_get_next_pc_raw (struct frame_info *frame, CORE_ADDR pc)
case 0x5: /* data transfer */
case 0x6:
case 0x7:
+ if (bits (this_instr, 25, 27) == 0x3 && bit (this_instr, 4) == 1)
+ {
+ /* Media instructions and architecturally undefined
+ instructions. */
+ break;
+ }
+
if (bit (this_instr, 20))
{
/* load */