ubsan: gas resolve_symbol_value
Alan Modra
amodra@gmail.com
Sun Jul 6 10:58:06 GMT 2025
Avoid signed overflow when resolving constant +/- constant.
diff --git a/gas/symbols.c b/gas/symbols.c
index 02ea741bde2..6a4dea88b8f 100644
--- a/gas/symbols.c
+++ b/gas/symbols.c
@@ -1729,8 +1729,8 @@ resolve_symbol_value (symbolS *symp)
case O_bit_or_not: left |= ~right; break;
case O_bit_exclusive_or: left ^= right; break;
case O_bit_and: left &= right; break;
- case O_add: left += right; break;
- case O_subtract: left -= right; break;
+ case O_add: left += (valueT) right; break;
+ case O_subtract: left -= (valueT) right; break;
case O_eq:
case O_ne:
left = (left == right && seg_left == seg_right
--
Alan Modra
More information about the Binutils
mailing list