This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[committed] MIPS16/opcodes: Reformat raw EXTEND and undecoded output
- From: "Maciej W. Rozycki" <macro at imgtec dot com>
- To: <binutils at sourceware dot org>
- Date: Fri, 9 Dec 2016 23:26:39 +0000
- Subject: [committed] MIPS16/opcodes: Reformat raw EXTEND and undecoded output
- Authentication-results: sourceware.org; auth=none
Use a tab rather than a space to separate `extend' and its uninterpreted
argument output, like with regular instructions. Separate hexadecimal
halves of undecoded extended instructions output with a space instead of
presenting them concatenated.
opcodes/
* mips-dis.c (print_insn_mips16): Use a tab rather than a space
to separate `extend' and its uninterpreted argument output.
Separate hexadecimal halves of undecoded extended instructions
output.
binutils/
* testsuite/binutils-all/mips/mips16-extend-noinsn.d: New test.
* testsuite/binutils-all/mips/mips16-extend-noinsn.s: New test
source.
* testsuite/binutils-all/mips/mips.exp: Run the new test.
---
binutils-mips16-opcode-print-hex-format.diff
Index: binutils/binutils/testsuite/binutils-all/mips/mips.exp
===================================================================
--- binutils.orig/binutils/testsuite/binutils-all/mips/mips.exp 2016-12-09 21:51:07.023448327 +0000
+++ binutils/binutils/testsuite/binutils-all/mips/mips.exp 2016-12-09 21:52:21.081528168 +0000
@@ -25,4 +25,5 @@ if [is_elf_format] {
run_dump_test "mixed-mips16-micromips"
run_dump_test "mips16-undecoded"
run_dump_test "mips16-pcrel"
+ run_dump_test "mips16-extend-noinsn"
}
Index: binutils/binutils/testsuite/binutils-all/mips/mips16-extend-noinsn.d
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils/binutils/testsuite/binutils-all/mips/mips16-extend-noinsn.d 2016-12-09 21:52:21.092808717 +0000
@@ -0,0 +1,33 @@
+#PROG: objcopy
+#objdump: -d --prefix-addresses --show-raw-insn
+#name: MIPS16 unsupported EXTEND and undefined opcode disassembly
+#as: -32
+
+# Verify raw hexadecimal EXTEND and inexistent opcode disassembly.
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> 6500 nop
+[0-9a-f]+ <[^>]*> f123 extend 0x123
+[0-9a-f]+ <[^>]*> f456 extend 0x456
+[0-9a-f]+ <[^>]*> f765 extend 0x765
+[0-9a-f]+ <[^>]*> 1800 0000 jal 00000000 <foo>
+[0-9a-f]+ <[^>]*> 6500 nop
+[0-9a-f]+ <[^>]*> f432 extend 0x432
+[0-9a-f]+ <[^>]*> 1c00 0000 jalx 00000000 <foo>
+[0-9a-f]+ <[^>]*> 6500 nop
+[0-9a-f]+ <[^>]*> f123 6621 0xf123 0x6621
+[0-9a-f]+ <[^>]*> f456 e935 0xf456 0xe935
+[0-9a-f]+ <[^>]*> f765 ea60 0xf765 0xea60
+[0-9a-f]+ <[^>]*> f432 ece0 0xf432 0xece0
+[0-9a-f]+ <[^>]*> f5aa e971 0xf5aa 0xe971
+[0-9a-f]+ <[^>]*> f655 ebf1 0xf655 0xebf1
+[0-9a-f]+ <[^>]*> 6621 0x6621
+[0-9a-f]+ <[^>]*> e935 0xe935
+[0-9a-f]+ <[^>]*> ea60 0xea60
+[0-9a-f]+ <[^>]*> ece0 0xece0
+[0-9a-f]+ <[^>]*> e971 0xe971
+[0-9a-f]+ <[^>]*> ebf1 0xebf1
+[0-9a-f]+ <[^>]*> 6500 nop
+ \.\.\.
Index: binutils/binutils/testsuite/binutils-all/mips/mips16-extend-noinsn.s
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils/binutils/testsuite/binutils-all/mips/mips16-extend-noinsn.s 2016-12-09 21:52:21.111258055 +0000
@@ -0,0 +1,25 @@
+ .set mips16
+foo:
+ nop
+ .half 0xf123, 0xf456
+ .half 0xf765
+ jal bar
+ .half 0xf432
+ jalx baz
+ .half 0xf123, 0x6621
+ .half 0xf456, 0xe935
+ .half 0xf765, 0xea60
+ .half 0xf432, 0xece0
+ .half 0xf5aa, 0xe971
+ .half 0xf655, 0xebf1
+ .half 0x6621
+ .half 0xe935
+ .half 0xea60
+ .half 0xece0
+ .half 0xe971
+ .half 0xebf1
+ nop
+
+# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
+ .align 4, 0
+ .space 16
Index: binutils/opcodes/mips-dis.c
===================================================================
--- binutils.orig/opcodes/mips-dis.c 2016-12-09 21:51:06.783083201 +0000
+++ binutils/opcodes/mips-dis.c 2016-12-09 21:52:05.065238238 +0000
@@ -2042,7 +2042,7 @@ print_insn_mips16 (bfd_vma memaddr, stru
status = (*info->read_memory_func) (memaddr, buffer, 2, info);
if (status != 0)
{
- infprintf (is, "extend 0x%x", (unsigned int) extend);
+ infprintf (is, "extend\t0x%x", (unsigned int) extend);
(*info->memory_error_func) (status, memaddr, info);
return -1;
}
@@ -2055,7 +2055,7 @@ print_insn_mips16 (bfd_vma memaddr, stru
/* Check for an extend opcode followed by an extend opcode. */
if ((insn & 0xf800) == 0xf000)
{
- infprintf (is, "extend 0x%x", (unsigned int) extend);
+ infprintf (is, "extend\t0x%x", (unsigned int) extend);
info->insn_type = dis_noninsn;
return length;
}
@@ -2078,7 +2078,7 @@ print_insn_mips16 (bfd_vma memaddr, stru
{
if (use_extend)
{
- infprintf (is, "extend 0x%x", (unsigned int) extend);
+ infprintf (is, "extend\t0x%x", (unsigned int) extend);
info->insn_type = dis_noninsn;
return length - 2;
}
@@ -2147,7 +2147,7 @@ print_insn_mips16 (bfd_vma memaddr, stru
#undef GET_OP
if (use_extend)
- infprintf (is, "0x%x", extend | 0xf000);
+ infprintf (is, "0x%x ", extend | 0xf000);
infprintf (is, "0x%x", insn);
info->insn_type = dis_noninsn;