ubsan: crx: left shift cannot be represented in type 'int'

The ubsan complaint is fixed by the SBM change, with similar possible
complaints fixed by the EXTRACT change.  The rest is just cleanup.

include/
	* opcode/crx.h (inst <match>): Make unsigned int.
opcodes/
	* crx-dis.c (EXTRACT, SBM): Avoid signed overflow.
	(get_number_of_operands, getargtype, getbits, getregname),
	(getcopregname, getprocregname, gettrapstring, getcinvstring),
	(getregliststring, get_word_at_PC, get_words_at_PC, build_mask),
	(powerof2, match_opcode, make_instruction, print_arguments),
	(print_arg): Delete forward declarations, moving static to..
	(getregname, getcopregname, getregliststring): ..these definitions.
	(build_mask): Return unsigned int mask.
	(match_opcode): Use unsigned int vars.
This commit is contained in:
Alan Modra
2019-12-16 09:58:09 +10:30
parent cedfc77485
commit 36bd8ea7f0
4 changed files with 26 additions and 28 deletions

View File

@ -260,7 +260,7 @@ typedef struct
/* Size (in words). */
unsigned int size;
/* Constant prefix (matched by the disassembler). */
unsigned long match;
unsigned int match;
/* Match size (in bits). */
int match_bits;
/* Attributes. */