| 1 | #!/usr/bin/env bash |
| 2 | |
| 3 | export PS4='\033[0;33m+ >>>>> (${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }\033[0m' |
| 4 | |
| 5 | set -xe |
| 6 | |
| 7 | echo " Setup environment ..." |
| 8 | export DEBUG_OPTS=${DEBUG_OPTS:-"-keepc -cg -cflags -fno-omit-frame-pointer"} |
| 9 | export VFLAGS=${VFLAGS:-"-cc clang"} |
| 10 | v version |
| 11 | v -show-c-output -cflags --version -e ';' || true |
| 12 | |
| 13 | echo " Compile and run sanitizers ..." |
| 14 | |
| 15 | v ${VFLAGS} ${DEBUG_OPTS} -o v2 cmd/v -cflags -fsanitize=memory |
| 16 | UBSAN_OPTIONS="print_stacktrace=1:halt_on_error=1" ./v2 -o v.c cmd/v |
| 17 | |
| 18 | v ${VFLAGS} ${DEBUG_OPTS} -o v3 cmd/v -cflags -fsanitize=thread |
| 19 | TSAN_OPTIONS="suppressions=.github/workflows/run_sanitizers_thread.suppressions" UBSAN_OPTIONS="print_stacktrace=1:halt_on_error=1" ./v3 -o v.c cmd/v |
| 20 | |
| 21 | v ${VFLAGS} ${DEBUG_OPTS} -o v4 cmd/v -cflags -fsanitize=undefined |
| 22 | UBSAN_OPTIONS="suppressions=.github/workflows/run_sanitizers_undefined.suppressions:print_stacktrace=1:halt_on_error=1" ./v4 -o v.c cmd/v |
| 23 | |
| 24 | v ${VFLAGS} ${DEBUG_OPTS} -o v5 cmd/v -cflags -fsanitize=address,pointer-compare,pointer-subtract |
| 25 | ASAN_OPTIONS="detect_leaks=0" UBSAN_OPTIONS="print_stacktrace=1:halt_on_error=1" ./v5 -o v.c cmd/v |
| 26 | |