In my Void Linux
, using clang
with -fsanitize=address
option is OK:
$ clang -std=c11 -fsanitize=address test.c
$
Whilst gcc
reports following error:
$ gcc -std=c11 -fsanitize=address test.c
/usr/bin/ld: cannot find libasan_preinit.o: No such file or directory
/usr/bin/ld: cannot find -lasan
collect2: error: ld returned 1 exit status
The solution is to install libsanitizer-devel
:
$ sudo xbps-install -Su libsanitizer-devel
$ gcc -std=c11 -fsanitize=address test.c
$
Check the linked libraries of executalbe file:
$ ldd a.out
linux-vdso.so.1 (0x00007fff1a58b000)
libasan.so.5 => /usr/lib/libasan.so.5 (0x00007fc1f0f02000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007fc1f0d3f000)
libdl.so.2 => /usr/lib/../lib/libdl.so.2 (0x00007fc1f0d3a000)
librt.so.1 => /usr/lib/../lib/librt.so.1 (0x00007fc1f0d2f000)
libpthread.so.0 => /usr/lib/../lib/libpthread.so.0 (0x00007fc1f0d0e000)
libstdc++.so.6 => /usr/lib/../lib/libstdc++.so.6 (0x00007fc1f0a99000)
libm.so.6 => /usr/lib/../lib/libm.so.6 (0x00007fc1f0952000)
libgcc_s.so.1 => /usr/lib/../lib/libgcc_s.so.1 (0x00007fc1f0938000)
/lib/ld-linux-x86-64.so.2 (0x00007fc1f193d000)
Reference:
How to use gcc with sanitizers in Void Linux?.