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

Alan Modra amodra@gmail.com
Wed Dec 11 01:01:00 GMT 2019


	* vax-dis.c (NEXTLONG): Avoid signed overflow.

diff --git a/opcodes/vax-dis.c b/opcodes/vax-dis.c
index 2c02c29d72..3bdfa15192 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

-- 
Alan Modra
Australia Development Lab, IBM



More information about the Binutils mailing list