This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, MIPS, OPCODE] mips-dis.c build error


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]