[binutils-gdb] ubsan: integer overflow in tc-i386.c:offset_in_range
Alan Modra
amodra@sourceware.org
Wed May 21 23:16:21 GMT 2025
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=7d411b8d9b84904d8f9db1d3b17fedeef1757575
commit 7d411b8d9b84904d8f9db1d3b17fedeef1757575
Author: Alan Modra <amodra@gmail.com>
Date: Wed May 21 17:57:04 2025 +0930
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:
---
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));
More information about the Binutils-cvs
mailing list