How to build gas with ASAN/UBSAN?
Martin Liška
mliska@suse.cz
Thu Aug 20 07:17:04 GMT 2020
On 8/19/20 6:00 PM, Nick Clifton wrote:
> 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' \
Hey.
Works for me, thank you! It's smart to only set -ldl to LDFLAGS.
>
>
>> ./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 ?
Sure, I'm going to collect bugs for all targets. It will be quite long list..
Martin
>
>
>
>> /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