]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
ubsan: gas resolve_symbol_value
authorAlan Modra <amodra@gmail.com>
Sat, 5 Jul 2025 01:25:47 +0000 (10:55 +0930)
committerAlan Modra <amodra@gmail.com>
Sun, 6 Jul 2025 11:05:50 +0000 (20:35 +0930)
Avoid signed overflow when resolving constant +/- constant.

gas/symbols.c

index 02ea741bde2ac941ff098dca31db3aec8ad9d9e6..6a4dea88b8f8544f17c98080e5e26b05b00932b7 100644 (file)
@@ -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