From 488d02fe7729dda5b9414a3942df68e0c316ce53 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 16 Dec 2019 09:59:23 +1030 Subject: [PATCH] ubsan: microblaze: left shift cannot be represented in type 'int' * microblaze-dis.c (read_insn_microblaze): Avoid signed overflow. --- opcodes/ChangeLog | 4 ++++ opcodes/microblaze-dis.c | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 113fd09264..d33c7a17d0 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,7 @@ +2019-12-16 Alan Modra + + * microblaze-dis.c (read_insn_microblaze): Avoid signed overflow. + 2019-12-16 Alan Modra * nios2-dis.c (nios2_print_insn_arg): 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 (); -- 2.34.1