ubsan: nios2: undefined shift

* nios2-dis.c (nios2_print_insn_arg): Avoid shift left of negative
	values.
This commit is contained in:
Alan Modra 2020-05-28 22:07:11 +09:30
parent 8eff95bcb6
commit efcf5fb585
2 changed files with 10 additions and 11 deletions

View File

@ -1,3 +1,8 @@
2020-05-28 Alan Modra <amodra@gmail.com>
* nios2-dis.c (nios2_print_insn_arg): Avoid shift left of negative
values.
2020-05-28 Alan Modra <amodra@gmail.com>
* ns32k-dis.c (print_insn_arg): Handle d value of 'f' for

View File

@ -276,7 +276,7 @@ nios2_print_insn_arg (const char *argptr,
{
unsigned long i = 0;
long s = 0;
bfd_signed_vma o = 0;
int32_t o = 0;
struct nios2_reg *reg_base;
switch (*argptr)
@ -677,12 +677,10 @@ nios2_print_insn_arg (const char *argptr,
switch (op->format)
{
case iw_i_type:
o = ((int32_t) ((GET_IW_I_IMM16 (opcode) & 0xffff) ^ 0x8000)
- 0x8000);
o = ((GET_IW_I_IMM16 (opcode) & 0xffff) ^ 0x8000) - 0x8000;
break;
case iw_F2I16_type:
o = ((int32_t) ((GET_IW_F2I16_IMM16 (opcode) & 0xffff) ^ 0x8000)
- 0x8000);
o = ((GET_IW_F2I16_IMM16 (opcode) & 0xffff) ^ 0x8000) - 0x8000;
break;
default:
bad_opcode (op);
@ -696,9 +694,7 @@ nios2_print_insn_arg (const char *argptr,
switch (op->format)
{
case iw_I10_type:
o = (((int32_t) ((GET_IW_I10_IMM10 (opcode) & 0x3ff) ^ 0x400)
- 0x400)
<< 1);
o = (((GET_IW_I10_IMM10 (opcode) & 0x3ff) ^ 0x400) - 0x400) * 2;
break;
default:
bad_opcode (op);
@ -712,9 +708,7 @@ nios2_print_insn_arg (const char *argptr,
switch (op->format)
{
case iw_T1I7_type:
o = (((int32_t) ((GET_IW_T1I7_IMM7 (opcode) & 0x7f) ^ 0x40)
- 0x40)
<< 1);
o = (((GET_IW_T1I7_IMM7 (opcode) & 0x7f) ^ 0x40) - 0x40) * 2;
break;
default:
bad_opcode (op);