From: Alan Modra Date: Wed, 21 May 2025 08:27:04 +0000 (+0930) Subject: ubsan: integer overflow in tc-i386.c:offset_in_range X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7d411b8d9b84904d8f9db1d3b17fedeef1757575;p=thirdparty%2Fbinutils-gdb.git ubsan: integer overflow in tc-i386.c:offset_in_range or $9223372036854775808,%eax runtime error: negation of -9223372036854775808 cannot be represented in type 'offsetT' (aka 'long'); cast to an unsigned type to negate this value to itself * config/tc-i386.c (offset_in_range): Avoid signed overflow. --- diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 162e28e0325..25bbc5360a8 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -2990,7 +2990,7 @@ offset_in_range (offsetT val, int size) default: abort (); } - if ((val & ~mask) != 0 && (-val & ~mask) != 0) + if ((val & ~mask) != 0 && (-(addressT) val & ~mask) != 0) as_warn (_("0x%" PRIx64 " shortened to 0x%" PRIx64), (uint64_t) val, (uint64_t) (val & mask));