PR26509 UBSAN: tc-z80.c:3656 shift exponent is too large

Alan Modra amodra@gmail.com
Tue Sep 1 06:49:15 GMT 2020


	PR 26509
	* config/tc-z80.c (is_overflow): Use 1UL in mask shift expression.

diff --git a/gas/config/tc-z80.c b/gas/config/tc-z80.c
index 237425da35..45fcd6fbf7 100644
--- a/gas/config/tc-z80.c
+++ b/gas/config/tc-z80.c
@@ -3653,7 +3653,7 @@ md_assemble (char *str)
 static int
 is_overflow (long value, unsigned bitsize)
 {
-  long fieldmask = (1 << bitsize) - 1;
+  long fieldmask = (1UL << bitsize) - 1;
   long signmask = ~fieldmask;
   long a = value & fieldmask;
   long ss = a & signmask;

-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list