From: Yao Qi Date: Mon, 5 Oct 2015 10:15:58 +0000 (+0100) Subject: Pass noaliases_p to aarch64_decode_insn X-Git-Tag: users/hjl/linux/release/2.25.51.0.4~1^2~5^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=43cdf5aeb8ae6ac2ec3bdbf636cbb2731ccbbb2a;p=thirdparty%2Fbinutils-gdb.git Pass noaliases_p to aarch64_decode_insn Nowadays aarch64_decode_insn is a public interface used by both opcodes and gdb. However, its behaviour relies on a global variable no_aliases, which isn't a good practise. On the other hand, In default, no_aliases is zero, but in GDB, we do want no alias when decoding instructions for prologue analysis (patches to be posted), so that we can handle both instructions "add" and "mov" (an alias of "add") as "add". The code in GDB can be simplified. This patch adds a new argument in aarch64_decode_insn, and pass no_aliases to it. In GDB side, always pass 1 to it. include/opcode: 2015-10-28 Yao Qi * aarch64.h (aarch64_decode_insn): Update declaration. opcodes: 2015-10-28 Yao Qi * aarch64-dis.c (aarch64_decode_insn): Add one argument noaliases_p. Update comments. Pass noaliases_p rather than no_aliases to aarch64_opcode_decode. (print_insn_aarch64_word): Pass no_aliases to aarch64_decode_insn. gdb: 2015-10-28 Yao Qi * aarch64-tdep.c (aarch64_software_single_step): Pass 1 to aarch64_decode_insn. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 093619421ec..181991ae4b0 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2015-10-28 Yao Qi + + * aarch64-tdep.c (aarch64_software_single_step): Pass 1 to + aarch64_decode_insn. + 2015-10-27 Pedro Alves * common/print-utils.c (host_address_to_string): Rename to ... diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index 55c5fb86fcc..d01a83f8b3f 100644 --- a/gdb/aarch64-tdep.c +++ b/gdb/aarch64-tdep.c @@ -2499,7 +2499,7 @@ aarch64_software_single_step (struct frame_info *frame) int last_breakpoint = 0; /* Defaults to 0 (no breakpoints placed). */ aarch64_inst inst; - if (aarch64_decode_insn (insn, &inst) != 0) + if (aarch64_decode_insn (insn, &inst, 1) != 0) return 0; /* Look for a Load Exclusive instruction which begins the sequence. */ @@ -2512,7 +2512,7 @@ aarch64_software_single_step (struct frame_info *frame) insn = read_memory_unsigned_integer (loc, insn_size, byte_order_for_code); - if (aarch64_decode_insn (insn, &inst) != 0) + if (aarch64_decode_insn (insn, &inst, 1) != 0) return 0; /* Check if the instruction is a conditional branch. */ if (inst.opcode->iclass == condbranch) diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog index ea833f73657..b049302318b 100644 --- a/include/opcode/ChangeLog +++ b/include/opcode/ChangeLog @@ -1,3 +1,7 @@ +2015-10-28 Yao Qi + + * aarch64.h (aarch64_decode_insn): Update declaration. + 2015-10-07 Yao Qi * aarch64.h (aarch64_sys_ins_reg)