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

* z8k-dis.c (unpack_instr): Formatting.  Cast unsigned short
	values to unsigned before shifting.
This commit is contained in:
Alan Modra
2020-01-14 09:17:09 +10:30
parent b959e62a55
commit ca1eaac0ed
2 changed files with 13 additions and 8 deletions

View File

@ -1,3 +1,8 @@
2020-01-14 Alan Modra <amodra@gmail.com>
* z8k-dis.c (unpack_instr): Formatting. Cast unsigned short
values to unsigned before shifting.
2020-01-13 Thomas Troeger <tstroege@gmx.de>
* arm-dis.c (print_insn_arm): Fill in insn info fields for control

View File

@ -369,8 +369,8 @@ unpack_instr (instr_data_s *instr_data, int is_segmented, disassemble_info *info
break;
case ARG_IMM32:
FETCH_DATA (info, nibl_count + 8);
instr_long = (instr_data->words[nibl_count] << 16)
| (instr_data->words[nibl_count + 4]);
instr_long = ((unsigned) instr_data->words[nibl_count] << 16
| instr_data->words[nibl_count + 4]);
instr_data->immediate = instr_long;
nibl_count += 7;
break;
@ -402,17 +402,17 @@ unpack_instr (instr_data_s *instr_data, int is_segmented, disassemble_info *info
if (instr_nibl & 0x8)
{
FETCH_DATA (info, nibl_count + 8);
instr_long = (instr_data->words[nibl_count] << 16)
| (instr_data->words[nibl_count + 4]);
instr_data->address = ((instr_word & 0x7f00) << 16)
+ (instr_long & 0xffff);
instr_long = ((unsigned) instr_data->words[nibl_count] << 16
| instr_data->words[nibl_count + 4]);
instr_data->address = ((instr_word & 0x7f00) << 16
| (instr_long & 0xffff));
nibl_count += 7;
seg_length = 2;
}
else
{
instr_data->address = ((instr_word & 0x7f00) << 16)
+ (instr_word & 0x00ff);
instr_data->address = ((instr_word & 0x7f00) << 16
| (instr_word & 0x00ff));
nibl_count += 3;
}
}