From 93084fcd9b85e9f982b75f63f366081f5fe8e2d8 Mon Sep 17 00:00:00 2001 From: Simon Dardis Date: Wed, 28 Oct 2015 09:52:17 -0700 Subject: [PATCH] Move encoded as 'or' in binutils. A patch (http://sourceware.org/ml/binutils/2015-07/msg00376.html) submitted to binutils will be encoding move as an 'or' instruction over [d]addu in assembly and various code stubs. This patch for gdb addresses that change for the mips specific parts of gdb. gdb/ChangeLog: * mips-linux-tdep.c (mips_linux_in_dynsym_stub): Recognise 'or' as move along with [d]addu. --- gdb/ChangeLog | 5 +++++ gdb/mips-linux-tdep.c | 10 ++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 181991ae4b..7209666af9 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2015-10-28 Simon Dardis + + * mips-linux-tdep.c (mips_linux_in_dynsym_stub): Recognise 'or' + as move along with [d]addu. + 2015-10-28 Yao Qi * aarch64-tdep.c (aarch64_software_single_step): Pass 1 to diff --git a/gdb/mips-linux-tdep.c b/gdb/mips-linux-tdep.c index f7eaf34ff1..b29073b734 100644 --- a/gdb/mips-linux-tdep.c +++ b/gdb/mips-linux-tdep.c @@ -739,15 +739,17 @@ mips_linux_in_dynsym_stub (CORE_ADDR pc) insn = extract_unsigned_integer (p + 4, 4, byte_order); if (n64) { - /* daddu t7,ra */ - if (insn != 0x03e0782d) + /* 'daddu t7,ra' or 'or t7, ra, zero'*/ + if (insn != 0x03e0782d || insn != 0x03e07825) return 0; + } else { - /* addu t7,ra */ - if (insn != 0x03e07821) + /* 'addu t7,ra' or 'or t7, ra, zero'*/ + if (insn != 0x03e07821 || insn != 0x03e07825) return 0; + } insn = extract_unsigned_integer (p + 8, 4, byte_order);