From 7d411b8d9b84904d8f9db1d3b17fedeef1757575 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 21 May 2025 17:57:04 +0930 Subject: [PATCH] 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. --- gas/config/tc-i386.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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)); -- 2.47.2