ubsan: microblaze: left shift cannot be represented in type 'int'
Michael Eager
eager@eagerm.com
Thu Dec 19 17:18:00 GMT 2019
On 12/15/19 11:10 PM, Alan Modra wrote:
> * microblaze-dis.c (read_insn_microblaze): Avoid signed overflow.
>
> diff --git a/opcodes/microblaze-dis.c b/opcodes/microblaze-dis.c
> index 2b3aa8e078..5df7ae497e 100644
> --- a/opcodes/microblaze-dis.c
> +++ b/opcodes/microblaze-dis.c
> @@ -200,9 +200,11 @@ read_insn_microblaze (bfd_vma memaddr,
> }
>
> if (info->endian == BFD_ENDIAN_BIG)
> - inst = (ibytes[0] << 24) | (ibytes[1] << 16) | (ibytes[2] << 8) | ibytes[3];
> + inst = (((unsigned) ibytes[0] << 24) | (ibytes[1] << 16)
> + | (ibytes[2] << 8) | ibytes[3]);
> else if (info->endian == BFD_ENDIAN_LITTLE)
> - inst = (ibytes[3] << 24) | (ibytes[2] << 16) | (ibytes[1] << 8) | ibytes[0];
> + inst = (((unsigned) ibytes[3] << 24) | (ibytes[2] << 16)
> + | (ibytes[1] << 8) | ibytes[0]);
> else
> abort ();
OK
--
Michael Eager eager@eagerm.com
1960 Park Blvd., Palo Alto, CA 94306
More information about the Binutils
mailing list