mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-18 16:53:50 +08:00
ubsan: h8300: left shift cannot be represented in type 'int'
This is *cst = (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3]; data is unsigned char which promotes to int. * h8300-dis.c (extract_immediate): Avoid signed overflow. (bfd_h8_disassemble): Likewise.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2019-12-11 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
* h8300-dis.c (extract_immediate): Avoid signed overflow.
|
||||||
|
(bfd_h8_disassemble): Likewise.
|
||||||
|
|
||||||
2019-12-11 Alan Modra <amodra@gmail.com>
|
2019-12-11 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* d30v-dis.c (print_insn): Make opind unsigned. Don't access
|
* d30v-dis.c (print_insn): Make opind unsigned. Don't access
|
||||||
|
@ -140,7 +140,8 @@ extract_immediate (FILE *stream,
|
|||||||
break;
|
break;
|
||||||
case L_32:
|
case L_32:
|
||||||
*len = 32;
|
*len = 32;
|
||||||
*cst = (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3];
|
*cst = (((unsigned) data[0] << 24) + (data[1] << 16)
|
||||||
|
+ (data[2] << 8) + data[3]);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
*len = 0;
|
*len = 0;
|
||||||
@ -530,7 +531,7 @@ bfd_h8_disassemble (bfd_vma addr, disassemble_info *info, int mach)
|
|||||||
{
|
{
|
||||||
int i = len / 2;
|
int i = len / 2;
|
||||||
|
|
||||||
cst[opnr] = ((data[i] << 24)
|
cst[opnr] = (((unsigned) data[i] << 24)
|
||||||
| (data[i + 1] << 16)
|
| (data[i + 1] << 16)
|
||||||
| (data[i + 2] << 8)
|
| (data[i + 2] << 8)
|
||||||
| (data[i + 3]));
|
| (data[i + 3]));
|
||||||
|
Reference in New Issue
Block a user