From c86a40c6c2902b73ec6f601176820c760524afd2 Mon Sep 17 00:00:00 2001 From: Yao Qi Date: Thu, 5 Nov 2015 09:44:32 +0000 Subject: [PATCH] Use aarch64_decode_insn in aarch64_displaced_step_copy_insn gdb: 2015-11-05 Yao Qi * aarch64-tdep.c (aarch64_displaced_step_copy_insn): Call aarch64_decode_insn and decode instruction by aarch64_inst. --- gdb/ChangeLog | 5 +++++ gdb/aarch64-tdep.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 93a2950caf..366ee4c4a7 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2015-11-05 Yao Qi + + * aarch64-tdep.c (aarch64_displaced_step_copy_insn): Call + aarch64_decode_insn and decode instruction by aarch64_inst. + 2015-11-05 Yao Qi * aarch64-tdep.c (extract_signed_bitfield): Remove. diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index 4bdd22753d..bc282e97bf 100644 --- a/gdb/aarch64-tdep.c +++ b/gdb/aarch64-tdep.c @@ -2500,9 +2500,13 @@ aarch64_displaced_step_copy_insn (struct gdbarch *gdbarch, enum bfd_endian byte_order_for_code = gdbarch_byte_order_for_code (gdbarch); uint32_t insn = read_memory_unsigned_integer (from, 4, byte_order_for_code); struct aarch64_displaced_step_data dsd; + aarch64_inst inst; + + if (aarch64_decode_insn (insn, &inst, 1) != 0) + return NULL; /* Look for a Load Exclusive instruction which begins the sequence. */ - if (decode_masked_match (insn, 0x3fc00000, 0x08400000)) + if (inst.opcode->iclass == ldstexcl && bit (insn, 22)) { /* We can't displaced step atomic sequences. */ return NULL;