radare2/sys/asan.sh

50 lines
1.4 KiB
Bash
Raw Normal View History

#!/bin/sh
# ASAN="address leak memory undefined"
ASAN=${ASAN:="address undefined signed-integer-overflow"}
2015-10-23 01:23:12 +00:00
printf "\033[32m"
echo "========================================================================="
2015-10-23 01:23:12 +00:00
printf "\033[33m"
echo "ASAN build script can be configured with the ASAN environment variable."
echo "Use one of the following words to specify which build flags to use:"
echo " - address - set by default, detect overflows"
echo " - leak - find memory leaks"
echo " - memory - detect uninitialized reads"
echo " - undefined - undefined behaviour"
echo " - ..."
echo "For more information:"
echo " http://clang.llvm.org/docs/UsersManual.html#controlling-code-generation"
echo "For example:"
echo " $ ASAN='leak memory address' sys/asan.sh"
echo "Current value:"
echo " ASAN=${ASAN}"
2015-10-23 01:23:12 +00:00
printf "\033[32m"
echo "========================================================================="
2015-10-23 01:23:12 +00:00
printf "\033[0m"
sleep 1
for a in $ASAN ; do
export CFLAGS="${CFLAGS} -fsanitize=$a"
done
2017-12-18 11:35:48 +00:00
if [ "`uname`" != Darwin ]; then
export CFLAGS="${CFLAGS} -lasan"
export LDFLAGS="-lasan"
fi
2014-11-06 21:30:24 +00:00
echo 'int main(){return 0;}' > .a.c
[ -z "${CC}" ] && CC=gcc
${CC} ${CFLAGS} ${LDFLAGS} -o .a.out .a.c
RET=$?
2014-11-17 11:27:35 +00:00
rm -f .a.out .a.c
if [ "$RET" != 0 ]; then
echo "Your compiler doesn't support ASAN."
2014-11-06 21:30:24 +00:00
exit 1
fi
2018-09-22 08:50:34 +00:00
SCRIPT=install.sh
if [ "$1" = "-u" ]; then
shift
SCRIPT=user.sh
fi
exec sys/${SCRIPT} $*