diff options
author | Maciej W. Rozycki <macro@imgtec.com> | 2016-12-09 22:27:00 +0000 |
---|---|---|
committer | Maciej W. Rozycki <macro@imgtec.com> | 2016-12-09 23:18:06 +0000 |
commit | 55af478400524cba7994e353fd9a98ef1543df2f (patch) | |
tree | ec2194cbeaf5733b21fc26a20d2d6d82b37d6339 | |
parent | 1736a7bd96e8927c3f889a35f9153df4fd19d833 (diff) | |
download | binutils-55af478400524cba7994e353fd9a98ef1543df2f.zip binutils-55af478400524cba7994e353fd9a98ef1543df2f.tar.gz binutils-55af478400524cba7994e353fd9a98ef1543df2f.tar.bz2 |
MIPS16/opcodes: Reformat raw EXTEND and undecoded output
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.
-rw-r--r-- | binutils/ChangeLog | 7 | ||||
-rw-r--r-- | binutils/testsuite/binutils-all/mips/mips.exp | 1 | ||||
-rw-r--r-- | binutils/testsuite/binutils-all/mips/mips16-extend-noinsn.d | 33 | ||||
-rw-r--r-- | binutils/testsuite/binutils-all/mips/mips16-extend-noinsn.s | 25 | ||||
-rw-r--r-- | opcodes/ChangeLog | 7 | ||||
-rw-r--r-- | opcodes/mips-dis.c | 8 |
6 files changed, 77 insertions, 4 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index f41e4ff..9d5c119 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,10 @@ +2016-12-09 Maciej W. Rozycki <macro@imgtec.com> + + * 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. + 2016-12-08 Maciej W. Rozycki <macro@imgtec.com> * testsuite/binutils-all/mips/mips16-pcrel.d: New test. diff --git a/binutils/testsuite/binutils-all/mips/mips.exp b/binutils/testsuite/binutils-all/mips/mips.exp index 5dc872d..f3d956f 100644 --- a/binutils/testsuite/binutils-all/mips/mips.exp +++ b/binutils/testsuite/binutils-all/mips/mips.exp @@ -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" } diff --git a/binutils/testsuite/binutils-all/mips/mips16-extend-noinsn.d b/binutils/testsuite/binutils-all/mips/mips16-extend-noinsn.d new file mode 100644 index 0000000..5694de6 --- /dev/null +++ b/binutils/testsuite/binutils-all/mips/mips16-extend-noinsn.d @@ -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 + \.\.\. diff --git a/binutils/testsuite/binutils-all/mips/mips16-extend-noinsn.s b/binutils/testsuite/binutils-all/mips/mips16-extend-noinsn.s new file mode 100644 index 0000000..252cacf --- /dev/null +++ b/binutils/testsuite/binutils-all/mips/mips16-extend-noinsn.s @@ -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 diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 1e5ca72..0d0e186 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,10 @@ +2016-12-09 Maciej W. Rozycki <macro@imgtec.com> + + * 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. + 2016-12-08 Maciej W. Rozycki <macro@imgtec.com> * mips-dis.c (print_mips16_insn_arg): Remove extraneous diff --git a/opcodes/mips-dis.c b/opcodes/mips-dis.c index c23e369..b3daacd 100644 --- a/opcodes/mips-dis.c +++ b/opcodes/mips-dis.c @@ -2042,7 +2042,7 @@ print_insn_mips16 (bfd_vma memaddr, struct disassemble_info *info) 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, struct disassemble_info *info) /* 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, struct disassemble_info *info) { 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, struct disassemble_info *info) #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; |