scons: Allow building with Address Sanitizer.
authorJose Fonseca <jfonseca@vmware.com>
Sat, 9 Apr 2016 19:26:42 +0000 (20:26 +0100)
committerJose Fonseca <jfonseca@vmware.com>
Wed, 13 Apr 2016 05:54:32 +0000 (06:54 +0100)
commitfa46848e51a619aba5a748316fe8fe4c2e17d243
tree0e3beb3c36eb1940e31ff5aaacd7e39dc02b9a3f
parentd1c89f60050fa5acd0bd1faa993de902631482a0
scons: Allow building with Address Sanitizer.

libasan is never linked to shared objects (which doesn't go well with
-z,defs).  It must either be linked to the main executable, or (more
practically for OpenGL drivers) be pre-loaded via LD_PRELOAD.

Otherwise works.

I didn't find anything with llvmpipe.  I suspect the fact that the
JIT compiled code isn't instrumented means there are lots of errors it
can't catch.

But for non-JIT drivers, the Address/Leak Sanitizers seem like a faster
alternative to Valgrind.

Usage (Ubuntu 15.10):

   scons asan=1 libgl-xlib
   export LD_LIBRARY_PATH=$PWD/build/linux-x86_64-debug/gallium/targets/libgl-xlib
   LD_PRELOAD=libasan.so.2 any-opengl-application

Acked-by: Roland Scheidegger <sroland@vmware.com>
common.py
scons/gallium.py
src/gallium/targets/libgl-xlib/SConscript
src/mesa/drivers/x11/SConscript