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