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.
This commit is contained in:
parent
1736a7bd96
commit
55af478400
@ -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.
|
||||
|
@ -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"
|
||||
}
|
||||
|
33
binutils/testsuite/binutils-all/mips/mips16-extend-noinsn.d
Normal file
33
binutils/testsuite/binutils-all/mips/mips16-extend-noinsn.d
Normal file
@ -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
|
||||
\.\.\.
|
25
binutils/testsuite/binutils-all/mips/mips16-extend-noinsn.s
Normal file
25
binutils/testsuite/binutils-all/mips/mips16-extend-noinsn.s
Normal file
@ -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
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user