binutils-gdb/binutils/testsuite/binutils-all
Maciej W. Rozycki 0674ee5dad MIPS16: Handle non-extensible instructions correctly
Identify non-extensible instructions in the MIPS16 opcode table and
disallow their use with the `.e' instruction size suffix in assembly and
do not interpret any EXTEND prefix present as a part of the instruction
in disassembly.

According to all versions of the MIPS16 ASE specifications the following
instructions encodings are not extensible [1][2][3][4][5][6]: I8/MOV32R,
I8/MOVR32, all RRR minor opcodes, all RR minor opcodes except from DSRA
and DSRL, and EXTEND itself, and as from revision 2.50 of the MIPS16e
ASE specifications it has been further clarified what was previously
implied, that non-extesiable instructions when preceded with an EXTEND
prefix must cause a Reserved Instruction exception [3][5].

Therefore in the presence of an EXTEND prefix none of these instructions
are supposed to be handled as extended instructions and supporting these
forms in disassembly causes confusion, and in the case of the RRR major
opcode it also clashes with the ASMACRO encoding.

References:

[1] "Product Description, MIPS16 Application-Specific Extension",
    Version 1.3, MIPS Technologies, Inc., 970130, Table 3. "MIPS16
    Instruction Set Summary", p. 5

[2] same, Table 5 "RR Minor Opcodes (RR-type instructions)", p.10

[3] "MIPS32 Architecture for Programmers, Volume IV-a: The MIPS16e
    Application-Specific Extension to the MIPS32 Architecture", MIPS
    Technologies, Inc., Document Number: MD00076, Revision 2.63, July
    16, 2013, Section 3.9 "MIPS16e Instruction Summaries", pp. 37-39

[4] same, Section 3.15 "Instruction Bit Encoding", pp. 46-49

[5] "MIPS64 Architecture for Programmers, Volume IV-a: The MIPS16e
    Application-Specific Extension to the MIPS64 Architecture", MIPS
    Technologies, Inc., Document Number: MD00077, Revision 2.60, June
    25, 2008, Section 1.9 "MIPS16e Instruction Summaries", pp. 38-41

[6] same, Section 1.15 "Instruction Bit Encoding", pp. 48-51

	include/
	* opcode/mips.h (INSN2_SHORT_ONLY): New macro.

	gas/
	* config/tc-mips.c (is_size_valid_16): Disallow a `.e' suffix
	instruction size override for INSN2_SHORT_ONLY opcode table
	entries.
	* testsuite/gas/mips/mips16-extend-swap.d: Adjust output.
	* testsuite/gas/mips/mips16-macro-e.l: Adjust error messages.
	* testsuite/gas/mips/mips16-32@mips16-macro-e.l: Adjust error
	messages.
	* testsuite/gas/mips/mips16e-32@mips16-macro-e.l: Adjust error
	messages.
	* testsuite/gas/mips/mips16-insn-e.d: New test.
	* testsuite/gas/mips/mips16-insn-t.d: New test.
	* testsuite/gas/mips/mips16-32@mips16-insn-e.d: New test.
	* testsuite/gas/mips/mips16-64@mips16-insn-e.d: New test.
	* testsuite/gas/mips/mips16e-32@mips16-insn-e.d: New test.
	* testsuite/gas/mips/mips16-32@mips16-insn-t.d: New test.
	* testsuite/gas/mips/mips16-64@mips16-insn-t.d: New test.
	* testsuite/gas/mips/mips16e-32@mips16-insn-t.d: New test.
	* testsuite/gas/mips/mips16-insn-e.l: New stderr output.
	* testsuite/gas/mips/mips16-insn-t.l: New stderr output.
	* testsuite/gas/mips/mips16-32@mips16-insn-e.l: New stderr
	output.
	* testsuite/gas/mips/mips16-64@mips16-insn-e.l: New stderr
	output.
	* testsuite/gas/mips/mips16e-32@mips16-insn-e.l: New stderr
	output.
	* testsuite/gas/mips/mips16-32@mips16-insn-t.l: New stderr
	output.
	* testsuite/gas/mips/mips16-64@mips16-insn-t.l: New stderr
	output.
	* testsuite/gas/mips/mips16e-32@mips16-insn-t.l: New stderr
	output.
	* testsuite/gas/mips/mips16-insn-e.s: New test source.
	* testsuite/gas/mips/mips16-insn-t.s: New test source.
	* testsuite/gas/mips/mips.exp: Run the new tests.

	opcodes/
	* mips-dis.c (print_insn_mips16): Disallow EXTEND prefix
	matching for INSN2_SHORT_ONLY opcode table entries.
	* mips16-opc.c (SH): New macro.
	(mips16_opcodes): Set SH in `pinfo2' for non-extensible
	instruction entries: "nop", "addu", "and", "break", "cmp",
	"daddu", "ddiv", "ddivu", "div", "divu", "dmult", "dmultu",
	"drem", "dremu", "dsllv", "dsll", "dsrav", "dsra", "dsrlv",
	"dsrl", "dsubu", "exit", "entry", "jalr", "jal", "jr", "j",
	"jalrc", "jrc", "mfhi", "mflo", "move", "mult", "multu", "neg",
	"not", "or", "rem", "remu", "sllv", "sll", "slt", "sltu",
	"srav", "sra", "srlv", "srl", "subu", "xor", "sdbbp", "seb",
	"seh", "sew", "zeb", "zeh", "zew" and "extend".

	binutils/
	* testsuite/binutils-all/mips/mips16-extend-insn.d: New test.
	* testsuite/binutils-all/mips/mips16-extend-insn.s: New test
	source.
	* testsuite/binutils-all/mips/mips.exp: Run the new tests.
2016-12-23 19:33:45 +00:00
..
aarch64 Add support to AArch64 disassembler for verifying instructions. Add verifier for LDPSW. 2016-04-28 09:11:03 +01:00
arc [ARC] Fix disassembler option. 2016-11-29 11:23:24 +01:00
arm Fix various binutils testsuite failures. 2016-06-22 14:42:26 +01:00
bfin Copyright update for binutils 2016-01-01 23:00:01 +10:30
hppa Copyright update for binutils 2016-01-01 23:00:01 +10:30
i386 Fix copying Solaris binaries with objcopy. 2016-04-14 12:04:09 +01:00
m68k Copyright update for binutils 2016-01-01 23:00:01 +10:30
mips MIPS16: Handle non-extensible instructions correctly 2016-12-23 19:33:45 +00:00
vax Copyright update for binutils 2016-01-01 23:00:01 +10:30
windres Copyright update for binutils 2016-01-01 23:00:01 +10:30
x86-64 Fix copying Solaris binaries with objcopy. 2016-04-14 12:04:09 +01:00
add-empty-section.d binutils/: 2010-01-20 00:09:13 +00:00
add-section.d binutils/: 2010-01-20 00:09:13 +00:00
add-symbol.d Run add-symbol test on mips 2015-10-22 12:49:17 +10:30
alias-2.def 2009-10-23 Kai Tietz <kai.tietz@onevision.com> 2009-10-23 14:53:57 +00:00
alias.def
ar.exp Relax previous restriction on running binutils ar tests for Alpha targets, allowing the tests to be run for ELF variants. 2016-06-28 14:05:34 +01:00
bintest.s
common-1.s Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-1a.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-1b.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-1c.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-1d.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-1e.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-1f.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-2.s Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-2a.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-2b.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-2c.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-2d.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-2e.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
common-2f.d Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
compress.exp Fix various binutils testsuite failures. 2016-06-22 14:42:26 +01:00
copy-1.d
copy-1.s
copy-2.d * binutils-all/copy-2.d: Change "hppa" to "hppa*" in not-target list. 2011-01-01 01:56:59 +00:00
copy-3.d Fix various binutils testsuite failures. 2016-06-22 14:42:26 +01:00
copy-4.d Fix various binutils testsuite failures. 2016-06-22 14:42:26 +01:00
copytest.s
data-sections.s objcopy/strip: Allow section patterns starting with '!'. 2016-07-14 11:32:48 +01:00
debug_str.d Fixes a problem with the BFD library running out of memory because it mistakenly 2014-04-30 17:04:04 +01:00
debug_str.s Fixes a problem with the BFD library running out of memory because it mistakenly 2014-04-30 17:04:04 +01:00
dlltool.exp Fix dlltool tests for ARM targets, which do not support the --leading-underscore option. 2016-01-20 14:52:33 +00:00
dumptest.s
dw2-1.S Copyright update for binutils 2016-01-01 23:00:01 +10:30
dw2-1.W Don't change compressed input debug section names 2015-04-23 07:59:59 -07:00
dw2-2.S Copyright update for binutils 2016-01-01 23:00:01 +10:30
dw2-3.rS Add SHF_COMPRESSED support to gas and objcopy 2015-04-08 07:54:09 -07:00
dw2-3.rt Add SHF_COMPRESSED support to gas and objcopy 2015-04-08 07:54:09 -07:00
dw2-3.S Copyright update for binutils 2016-01-01 23:00:01 +10:30
dw2-3.W Updated to accept .debug_* sections 2015-07-10 08:14:59 -07:00
dw2-3gabi.W Don't change compressed input debug section names 2015-04-23 07:59:59 -07:00
dw2-compressed.S Copyright update for binutils 2016-01-01 23:00:01 +10:30
dw2-decodedline-1.S Remove support for the (deprecated) openrisc and or32 configurations and replace 2014-04-22 15:57:47 +01:00
dw2-decodedline.S * binutils-all/dw2-decodedline.S: Always have whitespace before 2012-02-14 01:00:50 +00:00
dw2-empty.S Don't compress empty debug section 2012-07-03 16:06:34 +00:00
dw2-ranges.S Copyright update for binutils 2016-01-01 23:00:01 +10:30
dw2-ranges.W objdump: Handle 32-bit base address in debug_ranges / debug_loc. 2015-11-30 13:28:26 +00:00
elfedit-1.d Also skip x86_64-*-nacl* 2015-05-12 12:47:27 -07:00
elfedit-2.d Improve binutils testsuite coverage for GNU/Hurd. 2010-11-08 06:43:40 +00:00
elfedit-3.d Improve binutils testsuite coverage for GNU/Hurd. 2010-11-08 06:43:40 +00:00
elfedit-4.d bfd/ 2012-04-03 16:01:38 +00:00
elfedit-5.d Add EM_386/EM_IAMCU support to elfedit.c 2015-05-11 09:57:21 -07:00
elfedit.exp Copyright update for binutils 2016-01-01 23:00:01 +10:30
empty Allow zero length archive elements. 2016-03-07 17:29:25 +00:00
empty-file binutils/: 2010-01-20 00:09:13 +00:00
empty.s
exclude-1.s Implement generic SHF_EXCLUDE. 2010-05-18 03:31:07 +00:00
exclude-1a.d Implement generic SHF_EXCLUDE. 2010-05-18 03:31:07 +00:00
exclude-1b.d Implement generic SHF_EXCLUDE. 2010-05-18 03:31:07 +00:00
fastcall.def
group-2.s binutils/testsuite/ 2008-10-03 15:08:22 +00:00
group-3.s binutils/testsuite/ 2008-10-03 15:08:22 +00:00
group-4.s binutils/testsuite/ 2008-10-03 15:08:22 +00:00
group-5.d 2010-10-23 Mark Mitchell <mark@codesourcery.com> 2010-10-23 18:05:10 +00:00
group-5.s * binutils-all/group-5.s, * binutils-all/group-5.d: New test. 2010-02-18 00:13:30 +00:00
group-6.d Remove the group section if all members are removed. 2011-09-16 04:23:19 +00:00
group-6.s Remove the group section if all members are removed. 2011-09-16 04:23:19 +00:00
group.s binutils/testsuite/ 2008-10-03 15:08:22 +00:00
libdw2-compressed.out Add a dw2-3.S test 2015-04-04 07:34:25 -07:00
libdw2-compressedgabi.out Don't add the zlib header to SHF_COMPRESSED section 2015-05-14 16:02:08 -07:00
libdw2.out Add a dw2-3.S test 2015-04-04 07:34:25 -07:00
link-order.s
localize-hidden-1.d Fix the evaluation of RL78 complex relocs, by making immediate values be computed relative to a new absolute symbol. 2015-07-24 16:44:27 +01:00
localize-hidden-1.s binutils/testsuite/ 2009-04-16 04:24:07 +00:00
localize-hidden-2.d
localize-hidden-2.s binutils/testsuite/ 2009-04-16 04:24:07 +00:00
needed-by-reloc.s
nm-1.s * binutils-all/nm.exp: --size-sort test: Add more ELF-like 2013-08-22 11:29:43 +00:00
nm-elf-1.s binutils/ 2013-08-19 15:08:52 +00:00
nm-ver.s Add the ability for nm to display symbol version information. 2016-11-11 11:49:45 +00:00
nm.exp Add the ability for nm to display symbol version information. 2016-11-11 11:49:45 +00:00
note-1.d * binutils-all/ar.exp: Don't run unique_symbol on msp or hpux. 2010-09-23 12:04:37 +00:00
objcopy.exp objcopy/strip: Add option --remove-relocations=SECTIONPATTERN 2016-07-14 11:34:10 +01:00
objdump.exp Add support for RISC-V architecture. 2016-11-01 16:45:57 +00:00
objdump.s * binutils-all/objdump.W, binutils-all/objdump.s: Don't match 2009-03-11 22:49:54 +00:00
objdump.W Don't change compressed input debug section names 2015-04-23 07:59:59 -07:00
objdump.WL binutils/ 2011-10-04 14:25:40 +00:00
only-section-01.d objcopy/strip: Allow section patterns starting with '!'. 2016-07-14 11:32:48 +01:00
pr18374.s Fix PR18374 by making readelf and objdump ignore end-of-list markers in the .debug_loc section if there are relocations against them. 2015-05-15 11:24:33 +01:00
pr19020.in Don't use the output section size to copy input section 2015-09-29 13:31:57 -07:00
pr19020a.d Don't use the output section size to copy input section 2015-09-29 13:31:57 -07:00
pr19020b.d Don't use the output section size to copy input section 2015-09-29 13:31:57 -07:00
pr19547.c Clear HAS_RELOC if there are no relocations 2016-02-02 03:30:48 -08:00
readelf.exp MIPS objcopy --rename-section fix 2016-06-24 23:26:29 +09:30
readelf.h
readelf.n Display unknown notes. Decode NT_GNU_HWCAP notes. 2016-10-17 15:29:43 +01:00
readelf.pr18374 Fix PR18374 by making readelf and objdump ignore end-of-list markers in the .debug_loc section if there are relocations against them. 2015-05-15 11:24:33 +01:00
readelf.r Fix various binutils testsuite failures. 2016-06-22 14:42:26 +01:00
readelf.r-64
readelf.s Place .shstrtab section after .symtab and .strtab, thus restoring monotonically increasing section offsets. 2016-08-19 09:16:30 +01:00
readelf.s-64 Place .shstrtab section after .symtab and .strtab, thus restoring monotonically increasing section offsets. 2016-08-19 09:16:30 +01:00
readelf.ss readelf -s test: Skip extra symbols produced by MSP430 assembler. 2014-03-17 11:00:32 +00:00
readelf.ss-64 Fix the binutils readelf.ss test for the AArch64 target. 2015-04-02 15:28:02 +01:00
readelf.ss-mips MIPS testsuite cleanup - part 1 2014-09-06 17:58:37 +01:00
readelf.ss-tmips [MIPS] Implement O32 FPXX, FP64 and FP64A ABI extensions 2014-07-29 11:27:59 +01:00
readelf.wa Display null bytes in DWARF debug info 2012-08-02 13:42:59 +00:00
readelf.z Add --decompress option to readelf to decompress sections before they are dumped. 2015-05-15 17:16:31 +01:00
remove-relocs-01.d objcopy/strip: Add option --remove-relocations=SECTIONPATTERN 2016-07-14 11:34:10 +01:00
remove-relocs-01.s Use address sized relocs in remove-relocs-01.s 2016-07-15 17:02:20 +09:30
remove-relocs-02.d objcopy/strip: Add option --remove-relocations=SECTIONPATTERN 2016-07-14 11:34:10 +01:00
remove-relocs-03.d objcopy/strip: Add option --remove-relocations=SECTIONPATTERN 2016-07-14 11:34:10 +01:00
remove-relocs-04.d objcopy/strip: Add option --remove-relocations=SECTIONPATTERN 2016-07-14 11:34:10 +01:00
remove-relocs-05.d objcopy/strip: Add option --remove-relocations=SECTIONPATTERN 2016-07-14 11:34:10 +01:00
remove-relocs-06.d objcopy/strip: Add option --remove-relocations=SECTIONPATTERN 2016-07-14 11:34:10 +01:00
remove-section-01.d objcopy/strip: Allow section patterns starting with '!'. 2016-07-14 11:32:48 +01:00
size.exp Fix various binutils testsuite failures. 2016-06-22 14:42:26 +01:00
strip-1.d
strip-2.d 2010-10-23 Mark Mitchell <mark@codesourcery.com> 2010-10-23 18:05:10 +00:00
strip-3.d [MIPS] Implement O32 FPXX, FP64 and FP64A ABI extensions 2014-07-29 11:27:59 +01:00
strip-4.d
strip-5.d
strip-6.d
strip-7.d binutils/testsuite/ 2008-10-03 15:08:22 +00:00
strip-8.d 2008-10-01 H.J. Lu <hongjiu.lu@intel.com> 2008-10-02 01:06:12 +00:00
strip-9.d binutils/testsuite/ 2008-10-03 15:08:22 +00:00
strip-10.d My patch to the binutils strip-10.d test was wrong. The osabi field should always be set to 2014-01-29 14:01:54 +00:00
strip-11.d Fix the evaluation of RL78 complex relocs, by making immediate values be computed relative to a new absolute symbol. 2015-07-24 16:44:27 +01:00
strip-12.d Tweak binutils testsuite 2015-08-11 23:29:36 +09:30
strip-12.s Tweak binutils testsuite 2015-08-11 23:29:36 +09:30
symbols-1.d Tweak binutils testsuite 2015-08-11 23:29:36 +09:30
symbols-2.d Tweak binutils testsuite 2015-08-11 23:29:36 +09:30
symbols-3.d Tweak binutils testsuite 2015-08-11 23:29:36 +09:30
symbols-4.d Tweak binutils testsuite 2015-08-11 23:29:36 +09:30
symbols.s objcopy: Improve wildcard matching for symbols with '!' prefix. 2015-08-07 11:41:40 +02:00
testprog.c Fix copying Solaris binaries with objcopy. 2016-04-14 12:04:09 +01:00
testranges-ia64.d 2009-07-16 H.J. Lu <hongjiu.lu@intel.com> 2009-07-16 21:00:09 +00:00
testranges-ia64.s 2009-07-16 H.J. Lu <hongjiu.lu@intel.com> 2009-07-16 21:00:09 +00:00
testranges.d Also expect .zdebug in DWARF debug section name. 2010-11-15 18:14:11 +00:00
testranges.s binutils/ 2009-09-07 18:07:02 +00:00
unique.s 2009-08-03 H.J. Lu <hongjiu.lu@intel.com> 2009-08-06 16:22:36 +00:00
unknown.s
update-1.s objcopy: Add --update-section option. 2015-02-28 21:25:51 +00:00
update-2.s objcopy: Add --update-section option. 2015-02-28 21:25:51 +00:00
update-3.s objcopy: Add --update-section option. 2015-02-28 21:25:51 +00:00
update-4.s objcopy: Add --update-section option. 2015-02-28 21:25:51 +00:00
update-section.exp MIPS objcopy --rename-section fix 2016-06-24 23:26:29 +09:30
version.def ChangeLog binutils 2012-02-11 20:02:03 +00:00
version.s * binutils-all/dw2-decodedline.S: Always have whitespace before 2012-02-14 01:00:50 +00:00
z.s Add --decompress option to readelf to decompress sections before they are dumped. 2015-05-15 17:16:31 +01:00