mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-26 22:07:58 +08:00
arc: Detect usage of illegal double register pairs
ARC can use odd-even double register pairs in some selected instructions. Although the GNU assembler doesn't allow even-odd registers to be used, there may be cases when the disassembler is presented with such situation. This patch add a test and detects such cases. opcodes/ 2020-07-14 Claudiu Zissulescu <claziss@gmail.com> * arc-dis.c (print_insn_arc): Detect and emit a warning when a faulty double register pair is detected. binutils/ 2020-07-14 Claudiu Zissulescu <claziss@gmail.com> * testsuite/binutils-all/arc/double_regs.s: New test. * testsuite/binutils-all/arc/objdump.exp: Add the above test. Signed-off-by: Claudiu Zissulescu <claziss@gmail.com>
This commit is contained in:
@ -1,3 +1,8 @@
|
||||
2020-07-14 Claudiu Zissulescu <claziss@gmail.com>
|
||||
|
||||
* testsuite/binutils-all/arc/double_regs.s: New test.
|
||||
* testsuite/binutils-all/arc/objdump.exp: Add the above test.
|
||||
|
||||
2020-07-13 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* po/fr.po: Updated French translation.
|
||||
|
3
binutils/testsuite/binutils-all/arc/double_regs.s
Normal file
3
binutils/testsuite/binutils-all/arc/double_regs.s
Normal file
@ -0,0 +1,3 @@
|
||||
.cpu HS
|
||||
.text
|
||||
.byte 0x9e,0x2f,0x20,0x75
|
@ -72,6 +72,9 @@ proc check_assembly { testname objfile expected { disas_flags "" } } {
|
||||
# disassembler has had to guess as the instruction class in use).
|
||||
set want "Warning: disassembly.*vmac2hnfr\[ \t\]*r0,r2,r4.*dmulh12.f\[ \t\]*r0,r2,r4.*dmulh11.f"
|
||||
check_assembly "Warning test" [do_objfile dsp.s] $want
|
||||
set warn_double_reg "Warning: illegal use of double register pair."
|
||||
check_assembly "Warning faulty double regs" [do_objfile double_regs.s] \
|
||||
$warn_double_reg
|
||||
|
||||
set double_store_hs_expected {std\s*r0r1,\[r3\]}
|
||||
set objfile [do_objfile double_store.s]
|
||||
|
@ -1,3 +1,8 @@
|
||||
2020-07-14 Claudiu Zissulescu <claziss@gmail.com>
|
||||
|
||||
* arc-dis.c (print_insn_arc): Detect and emit a warning when a
|
||||
faulty double register pair is detected.
|
||||
|
||||
2020-07-14 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
* i386-dis.c (OP_D): Print dr<N> instead of db<N> in Intel mode.
|
||||
|
@ -1269,11 +1269,19 @@ print_insn_arc (bfd_vma memaddr,
|
||||
if (!rname)
|
||||
rname = regnames[value];
|
||||
(*info->fprintf_func) (info->stream, "%s", rname);
|
||||
|
||||
/* Check if we have a double register to print. */
|
||||
if (operand->flags & ARC_OPERAND_TRUNCATE)
|
||||
{
|
||||
if ((value & 0x01) == 0)
|
||||
{
|
||||
rname = arcExtMap_coreRegName (value + 1);
|
||||
if (!rname)
|
||||
rname = regnames[value + 1];
|
||||
}
|
||||
else
|
||||
rname = _("\nWarning: illegal use of double register "
|
||||
"pair.\n");
|
||||
(*info->fprintf_func) (info->stream, "%s", rname);
|
||||
}
|
||||
if (value == 63)
|
||||
|
Reference in New Issue
Block a user