From: Alan Modra Date: Tue, 10 Dec 2019 22:27:45 +0000 (+1030) Subject: ubsan: vax: left shift cannot be represented in type 'int' X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5c05618a0a1f94565001a19da28595ce1dc537f8;p=binutils-gdb.git ubsan: vax: left shift cannot be represented in type 'int' * vax-dis.c (NEXTLONG): Avoid signed overflow. --- diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 2ad26cb5d6f..c1fce7f33cc 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,7 @@ +2019-12-11 Alan Modra + + * vax-dis.c (NEXTLONG): Avoid signed overflow. + 2019-12-11 Alan Modra * v850-dis.c (get_operand_value): Use unsigned arithmetic. Don't diff --git a/opcodes/vax-dis.c b/opcodes/vax-dis.c index 2c02c29d72d..3bdfa151920 100644 --- a/opcodes/vax-dis.c +++ b/opcodes/vax-dis.c @@ -64,7 +64,7 @@ static char *entry_mask_bit[] = #define COERCE32(x) ((int) (((x) ^ 0x80000000) - 0x80000000)) #define NEXTLONG(p) \ (p += 4, FETCH_DATA (info, p), \ - (COERCE32 ((((((p[-1] << 8) + p[-2]) << 8) + p[-3]) << 8) + p[-4]))) + (COERCE32 (((((((unsigned) p[-1] << 8) + p[-2]) << 8) + p[-3]) << 8) + p[-4]))) /* Maximum length of an instruction. */ #define MAXLEN 25