The following fails when I build binutils with: configure --build=x86_64-linux --disable-nls --disable-gdb --disable-gdbserver --disable-sim --disable-readline --disable-libdecnumber --enable-obsolete --target=dlx-elf CFLAGS="-g -O2 -fsanitize=address,undefined -Wno-error" CXXLAGS="-g -O2 -fsanitize=address,undefined -Wno-error" LDFLAGS="-ldl" Target: dlx-elf PASS: lhi Executing on host: sh -c {../as-new -o tmpdir/load.o /home/mliska/Programming/binutils/gas/testsuite/gas/dlx/load.s 2>&1} /dev/null dump.tmp (timeout = 300) /home/mliska/Programming/binutils/gas/symbols.c:1586:31: runtime error: left shift of negative value -20
The master branch has been updated by Alan Modra <amodra@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=d8d6da137d7ececcd0e10c575aa187bb8c9b24e0 commit d8d6da137d7ececcd0e10c575aa187bb8c9b24e0 Author: Alan Modra <amodra@gmail.com> Date: Wed Aug 26 17:39:58 2020 +0930 PR26448 UBSAN: symbols.c:1586 left shift of negative value Besides avoiding the UB, this also makes right shifts inside expression symbols unsigned, consistent with the way gas evaluates expressions in source. PR 26448 * symbols.c: Include limits.h. (resolve_symbol_value <O_left_shift, O_right_shift>): Do an unsigned shift. Warn if shift count larger than valueT size.
Fixed