This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH, MIPS, OPCODE] mips-dis.c build error
- From: "Maciej W. Rozycki" <macro at codesourcery dot com>
- To: Michael Eager <eager at eagerm dot com>
- Cc: Binutils <binutils at sourceware dot org>
- Date: Fri, 8 Mar 2013 19:29:00 +0000
- Subject: Re: [PATCH, MIPS, OPCODE] mips-dis.c build error
- References: <513A2FCB.5020200@eagerm.com>
On Fri, 8 Mar 2013, Michael Eager wrote:
> I get an error complaining about mismatched unsigned/signed
> initialization in opcpode/mips-dis.c while building gdb using
> gcc-4.7.2.
>
> Here is a simple fix:
>
> ChangeLog
> * opcodes/mips-dis.c (print_insn_args): Modify def of reg.
>
> Index: opcodes/mips-dis.c
> ===================================================================
> RCS file: /cvs/src/src/opcodes/mips-dis.c,v
> retrieving revision 1.98
> diff -u -r1.98 mips-dis.c
> --- opcodes/mips-dis.c 13 Feb 2013 17:09:09 -0000 1.98
> +++ opcodes/mips-dis.c 8 Mar 2013 18:32:32 -0000
> @@ -1273,7 +1273,9 @@
> case 'U':
> {
> /* First check for both rd and rt being equal. */
> - unsigned int reg = GET_OP (l, RD);
> + unsigned int reg;
> +
> + reg = GET_OP (l, RD);
> if (reg == GET_OP (l, RT))
> infprintf (is, "%s", mips_gpr_names[reg]);
> else
Hmm, I find it suspicious that l is signed in the first place -- what the
heck for is a machine instruction word held in a signed variable?
There's no arithmetic meaning to the word, it's just a bit pattern,
unsigned would seem more consistent to me, e.g. if you shift the major
opcode field right so that it could index a table (the usual
interpretation), why should an arithmetic shift operation cause the MSB to
be kept and copied across, requiring an extra masking operation?
Nothing wrong with your change, but perhaps we should fix the cause
instead?
Maciej