diff options
author | Alan Modra <amodra@gmail.com> | 2025-07-05 10:55:47 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2025-07-06 20:35:50 +0930 |
commit | 35842f370e07b64a6ae332fdaaa0b5e795efe5a7 (patch) | |
tree | b0b9d42d2da5512492c51ee8577d42946564fdd1 | |
parent | 87f5e2edca1412326ae40489e2780821093481cb (diff) | |
download | binutils-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.c | 4 |
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 |