diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/build/v-sanitizer.inc | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/scripts/build/v-sanitizer.inc b/scripts/build/v-sanitizer.inc index be9b3b39..9d605377 100644 --- a/scripts/build/v-sanitizer.inc +++ b/scripts/build/v-sanitizer.inc @@ -30,24 +30,29 @@ setup_variables_sanitizer() { SANITIZER_SUFFIX="" return 0 fi + + [[ -n ${SANITIZER_INIT+X} ]] && return 0 + SANITIZER_INIT=1 + # Remove ":" separator local sanitizers local e local sorted_sanitizers - + IFS=":" read -r -a sanitizers <<< "${SANITIZER_BUILD}" sorted_sanitizers=( $( for e in "${sanitizers[@]}"; do echo "$e"; done | sort) ) - - + SANITIZERS=("${sorted_sanitizers[@]}") + + # Set variables used by clients. ## Build variables [[ -z ${SANITIZER_CXX_FLAGS+x} ]] && SANITIZER_CXX_FLAGS=("") [[ -z ${SANITIZER_C_FLAGS+x} ]] && SANITIZER_C_FLAGS=("") [[ -z ${SANITIZER_LD_FLAGS+x} ]] && SANITIZER_LD_FLAGS=("") - + # Docker_suffix SANITIZER_SUFFIX="" - + local flags for sanitizer in "${sorted_sanitizers[@]}"; do [[ -z "${sanitizer}" ]] && continue @@ -61,28 +66,26 @@ setup_variables_sanitizer() { SANITIZER_SUFFIX+="_asan" continue fi - + # Undefined Behaviour Sanitizer if [ "${sanitizer}" == "undefined" ]; then echo "Using UBSan" - flags=("-fsanitize=undefined" "-fno-omit-frame-pointer" "-g") + flags=("-fsanitize=undefined" "-fno-omit-frame-pointer" "-g" "-fsanitize=integer") SANITIZER_CXX_FLAGS+=("${flags[@]}") SANITIZER_C_FLAGS+=("${flags[@]}") SANITIZER_LD_FLAGS+=("${flags[@]}" "-lubsan" "-fuse-ld=gold") SANITIZER_SUFFIX+="_ubsan" continue fi - + # Undefined Behaviour Sanitizer if [ "${sanitizer}" == "memory" ]; then echo "Using Memory Sanitizer" SANITIZER_SUFFIX+="_memsan" continue fi - + echo "Unknown sanitizer: $sanitizer" exit 1 done - - SANITIZERS=("${sorted_sanitizers[@]}") } \ No newline at end of file |