MIPS16/opcodes: Fix PC-relative operation delay-slot adjustment
authorMaciej W. Rozycki <macro@imgtec.com>
Thu, 8 Dec 2016 23:29:01 +0000 (23:29 +0000)
committerMaciej W. Rozycki <macro@imgtec.com>
Thu, 8 Dec 2016 23:30:57 +0000 (23:30 +0000)
commit860b03a8f357d1565bd9d79ae25121059b2d28ae
treec76f74a44626b05d308861754e7561fe8f73bcb3
parent731f7c4ea30cc409c45412eec15e3d66afe051f5
MIPS16/opcodes: Fix PC-relative operation delay-slot adjustment

Complement commit dd8b7c222e0e ("MIPS: mips16e jalrc/jrc opcodes"),
<https://sourceware.org/ml/binutils/2005-07/msg00349.html>, and stop the
disassembler making a delay-slot adjustment for PC-relative operations
following either MIPS16e compact jumps, or undefined RR/J(AL)R(C)
encodings that have the `l' (link) and `ra' (source register is `ra')
bits set both at a time.  Adjust code description for accuracy.  Add a
suitable test case.

opcodes/
* mips-dis.c (print_mips16_insn_arg): Avoid delay-slot
adjustment for PC-relative operations following MIPS16e compact
jumps or undefined RR/J(AL)R(C) encodings.

binutils/
* testsuite/binutils-all/mips/mips16-pcrel.d: New test.
* testsuite/binutils-all/mips/mips16-pcrel.s: New test source.
* testsuite/binutils-all/mips/mips.exp: Run the new test.
binutils/ChangeLog
binutils/testsuite/binutils-all/mips/mips.exp
binutils/testsuite/binutils-all/mips/mips16-pcrel.d [new file with mode: 0644]
binutils/testsuite/binutils-all/mips/mips16-pcrel.s [new file with mode: 0644]
opcodes/ChangeLog
opcodes/mips-dis.c