How to build gas with ASAN/UBSAN?
Nick Clifton
nickc@redhat.com
Wed Aug 19 16:00:08 GMT 2020
Hi Martin,
> One can't do that with CFLAGS="..." ../configure as it would
> build all .a file with that as well. And test would fail then due to unresolved
> sanitizer-related symbols.
Err, I use that particular method and it works for me. You just need to
add in a definition of LDFLAGS so that the appropriate library is included
as well. For example:
% $BINUTILS_SRCDIR/configure \
--enable-targets=all \
--enable-64-bit-bfd \
CFLAGS='-g -O2 -fsanitize=address' \
CXXFLAGS='-g -O2 -fsanitize=address' \
LDFLAGS='-ldl' \
> ./as-new /home/marxin/Programming/binutils/gas/testsuite/gas/all/org-1.s
> /home/marxin/Programming/binutils/gas/symbols.c:1818:3: runtime error: null pointer passed as argument 1, which is declared to never be null
> #0 0x406021 in colon /home/marxin/Programming/binutils/gas/symbols.c:1818
> #1 0x4946da in read_a_source_file /home/marxin/Programming/binutils/gas/read.c:1020
> #2 0x40bba2 in perform_an_assembly_pass /home/marxin/Programming/binutils/gas/as.c:1253
> #3 0x40bba2 in main /home/marxin/Programming/binutils/gas/as.c:1417
> #4 0x7ffff6aa5cc9 in __libc_start_main ../csu/libc-start.c:308
> #5 0x40d1b9 in _start (/home/marxin/Programming/binutils/objdir/gas/as-new+0x40d1b9)
So, is this a bug that you have discovered using sanitization ?
If so, please can you file a bug report for it ?
> /home/marxin/Programming/binutils/gas/config/tc-arm.c:23588:32: runtime error: left shift of 14 by 28 places cannot be represented in type 'int'
> #0 0x408c41 in md_assemble /home/marxin/Programming/binutils/gas/config/tc-arm.c:23588
> #1 0x493aaa in assemble_one /home/marxin/Programming/binutils/gas/read.c:713
> #2 0x493aaa in read_a_source_file /home/marxin/Programming/binutils/gas/read.c:1182
> #3 0x40bba2 in perform_an_assembly_pass /home/marxin/Programming/binutils/gas/as.c:1253
> #4 0x40bba2 in main /home/marxin/Programming/binutils/gas/as.c:1417
> #5 0x7ffff6aa5cc9 in __libc_start_main ../csu/libc-start.c:308
> #6 0x40d1b9 in _start (/home/marxin/Programming/binutils/objdir/gas/as-new+0x40d1b9)
This looks like a case of an 'int' field which needs to be an 'unsigned int' field.
But please file a bug report anyway...
Cheers
Nick
More information about the Binutils
mailing list