forked from Imagelibrary/binutils-gdb
MIPS16/opcodes: Keep the LSB of PC-relative offsets in disassembly
Correct the disassembly of the PC-relative immediate argument of the MIPS16 synthetic LA, LW, DLA and LD instructions and do not mask the LSB, which in this case is a part of the data address rather than the ISA bit and has to be fully presented. opcodes/ * mips-dis.c (print_insn_arg): Only clear the ISA bit for jumps and branches and not synthetic data instructions. binutils/ * testsuite/binutils-all/mips/mips16-undecoded.d: Adjust the disassembly of PC-relative LA and LW synthetic instructions.
This commit is contained in:
@@ -1281,9 +1281,10 @@ print_insn_arg (struct disassemble_info *info,
|
||||
pcrel_op = (const struct mips_pcrel_operand *) operand;
|
||||
info->target = mips_decode_pcrel_operand (pcrel_op, base_pc, uval);
|
||||
|
||||
/* Preserve the ISA bit for the GDB disassembler,
|
||||
otherwise clear it. */
|
||||
if (info->flavour != bfd_target_unknown_flavour)
|
||||
/* For jumps and branches clear the ISA bit except for
|
||||
the GDB disassembler. */
|
||||
if (pcrel_op->include_isa_bit
|
||||
&& info->flavour != bfd_target_unknown_flavour)
|
||||
info->target &= -2;
|
||||
|
||||
(*info->print_address_func) (info->target, info);
|
||||
|
||||
Reference in New Issue
Block a user