ubsan: tc-z80.c:3656 shift exponent 32 is too large
Alan Modra
amodra@gmail.com
Wed Sep 2 08:42:55 GMT 2020
* config/tc-z80.c (is_overflow): Avoid too large shift.
diff --git a/gas/config/tc-z80.c b/gas/config/tc-z80.c
index 45fcd6fbf7..2e17d00552 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 = (1UL << bitsize) - 1;
+ long fieldmask = (2UL << (bitsize - 1)) - 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