From 01a6f9da644e52fbd644a8e8f58d58c0383118c8 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 2 Sep 2020 10:26:31 +0930 Subject: [PATCH] ubsan: tc-z80.c:3656 shift exponent 32 is too large * config/tc-z80.c (is_overflow): Avoid too large shift. --- gas/ChangeLog | 4 ++++ gas/config/tc-z80.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index d6b58b4852..641b68de66 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,7 @@ +2020-09-02 Alan Modra + + * config/tc-z80.c (is_overflow): Avoid too large shift. + 2020-09-02 Alan Modra * config/tc-sparc.c (in_signed_range): Use an unsigned type for 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; -- 2.34.1