This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: Is this "gdb disassembler" code still needed?
- From: Richard Sandiford <rdsandiford at googlemail dot com>
- To: "Maciej W. Rozycki" <macro at codesourcery dot com>
- Cc: <gdb at sourceware dot org>
- Date: Wed, 31 Jul 2013 18:24:23 +0100
- Subject: Re: Is this "gdb disassembler" code still needed?
- References: <87d2r83elf dot fsf at talisman dot default> <alpine dot DEB dot 1 dot 10 dot 1306261959000 dot 16287 at tp dot orcam dot me dot uk> <878v1w34ms dot fsf at talisman dot default> <alpine dot DEB dot 1 dot 10 dot 1307311715470 dot 32382 at tp dot orcam dot me dot uk>
"Maciej W. Rozycki" <macro@codesourcery.com> writes:
> On Wed, 26 Jun 2013, Richard Sandiford wrote:
>
>> > Other than that I am fairly sure the behaviour is intentional, so except
>> > from any microMIPS change to match the MIPS16 variant please refrain from
>> > fiddling with these bits until I am done with the change proposed here:
>> >
>> > http://sourceware.org/ml/binutils/2012-05/msg00183.html
>> > http://sourceware.org/ml/binutils/2012-06/msg00114.html
>>
>> OK, thanks. I'll change microMIPS to match MIPS16 like you say.
>
> What happened to this code after your recent changes? I get rubbish in
> disassembly now, e.g.:
>
> Dump of assembler code for function t1:
> 0x00400991 <+0>: save a0-a3,32,ra,s1
> 0x00400995 <+4>: addiu s1,sp,16
> 0x00400997 <+6>: lw v1,0x4009f4 <t1+99>
> 0x00400999 <+8>: lw v0,0x4009f0 <t1+95>
> 0x0040099b <+10>: move t9,v1
> 0x0040099d <+12>: move t8,v0
> 0x0040099f <+14>: lw v0,24(s1)
> 0x004009a1 <+16>: move a1,t9
> 0x004009a3 <+18>: move a0,t8
> 0x004009a5 <+20>: jal 0x400da0 <exit@mips16plt+15>
> 0x004009a9 <+24>: nop
> [...]
Gah, sorry. The code is still there, but I think in the MIPS16 case it's
being thwarted by an even base address. Does this fix it? (microMIPS
should be OK.)
Richard
opcodes/
* mips-dis.c (print_mips16_insn_arg): Include ISA bit in base address.
Index: opcodes/mips-dis.c
===================================================================
--- opcodes/mips-dis.c 2013-07-31 18:16:42.972774949 +0100
+++ opcodes/mips-dis.c 2013-07-31 18:19:37.661036158 +0100
@@ -1565,7 +1565,7 @@ print_mips16_insn_arg (struct disassembl
}
}
- print_insn_arg (info, state, opcode, operand, baseaddr, uval);
+ print_insn_arg (info, state, opcode, operand, baseaddr + 1, uval);
break;
}
}