MIPS16/opcodes: Respect ISA and ASE in disassembly
authorMaciej W. Rozycki <macro@imgtec.com>
Tue, 20 Dec 2016 11:38:53 +0000 (11:38 +0000)
committerMaciej W. Rozycki <macro@imgtec.com>
Tue, 20 Dec 2016 12:05:48 +0000 (12:05 +0000)
commit11dd08e9a0a2b7115aac32d9599f1bdb0ad12ea6
tree10c46667a26b08493e757b3181519d039b5ced4a
parent853faf5cc34cfac362f33939543ce569c8ba6341
MIPS16/opcodes: Respect ISA and ASE in disassembly

Limit MIPS16 instruction disassembly according to the ISA level and ASE
set selected, as with the regular MIPS and microMIPS instruction sets.
Retain the property of `objdump -m mips:16' disassembling all MIPS16
instructions however, regardless of any ISA level recorded in the binary
examined.

To validate the disassembler use the GAS test suite for its convenience
of running tests across multiple ISAs, even though placing the tests in
the binutils test suite would be more appropriate.  Adjust the single
binutils test which depends on 64-bit instruction disassembly to have
the ISA level required actually recorded in the binary examined.

opcodes/
* mips-dis.c (mips_arch_choices): Use ISA_MIPS64 rather than
ISA_MIPS3 as the `isa' selection in the `bfd_mach_mips16' entry.
(print_insn_mips16): Check opcode entries for validity against
the ISA level and ASE set selected.

binutils/
* testsuite/binutils-all/mips/mips16-undecoded.s: Use `.module'
rather than `.set' to set the ISA level.

gas/
* testsuite/gas/mips/mips16-sub.d: New test.
* testsuite/gas/mips/mips16-32@mips16-sub.d: New test.
* testsuite/gas/mips/mips16e-32@mips16-sub.d: New test.
* testsuite/gas/mips/mips16e-sub.d: New test.
* testsuite/gas/mips/mips16-32@mips16e-sub.d: New test.
* testsuite/gas/mips/mips16-64@mips16e-sub.d: New test.
* testsuite/gas/mips/mips16e-64-sub.d: New test.
* testsuite/gas/mips/mips16-32@mips16e-64-sub.d: New test.
* testsuite/gas/mips/mips16-64@mips16e-64-sub.d: New test.
* testsuite/gas/mips/mips16e-32@mips16e-64-sub.d: New test.
* testsuite/gas/mips/mips16-sub.s: New test source.
* testsuite/gas/mips/mips16e-sub.s: New test source.
* testsuite/gas/mips/mips16e-64-sub.s: New test source.
* testsuite/gas/mips/mips.exp: Run the new tests.
19 files changed:
binutils/ChangeLog
binutils/testsuite/binutils-all/mips/mips16-undecoded.s
gas/ChangeLog
gas/testsuite/gas/mips/mips.exp
gas/testsuite/gas/mips/mips16-32@mips16-sub.d [new file with mode: 0644]
gas/testsuite/gas/mips/mips16-32@mips16e-64-sub.d [new file with mode: 0644]
gas/testsuite/gas/mips/mips16-32@mips16e-sub.d [new file with mode: 0644]
gas/testsuite/gas/mips/mips16-64@mips16e-64-sub.d [new file with mode: 0644]
gas/testsuite/gas/mips/mips16-64@mips16e-sub.d [new file with mode: 0644]
gas/testsuite/gas/mips/mips16-sub.d [new file with mode: 0644]
gas/testsuite/gas/mips/mips16-sub.s [new file with mode: 0644]
gas/testsuite/gas/mips/mips16e-32@mips16-sub.d [new file with mode: 0644]
gas/testsuite/gas/mips/mips16e-32@mips16e-64-sub.d [new file with mode: 0644]
gas/testsuite/gas/mips/mips16e-64-sub.d [new file with mode: 0644]
gas/testsuite/gas/mips/mips16e-64-sub.s [new file with mode: 0644]
gas/testsuite/gas/mips/mips16e-sub.d [new file with mode: 0644]
gas/testsuite/gas/mips/mips16e-sub.s [new file with mode: 0644]
opcodes/ChangeLog
opcodes/mips-dis.c