aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2025-07-05 10:55:47 +0930
committerAlan Modra <amodra@gmail.com>2025-07-06 20:35:50 +0930
commit35842f370e07b64a6ae332fdaaa0b5e795efe5a7 (patch)
treeb0b9d42d2da5512492c51ee8577d42946564fdd1
parent87f5e2edca1412326ae40489e2780821093481cb (diff)
downloadbinutils-35842f370e07b64a6ae332fdaaa0b5e795efe5a7.zip
binutils-35842f370e07b64a6ae332fdaaa0b5e795efe5a7.tar.gz
binutils-35842f370e07b64a6ae332fdaaa0b5e795efe5a7.tar.bz2
ubsan: gas resolve_symbol_value
Avoid signed overflow when resolving constant +/- constant.
-rw-r--r--gas/symbols.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gas/symbols.c b/gas/symbols.c
index 02ea741..6a4dea8 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