From 0afe438667c2173c458c5f45adfe99506a076c61 Mon Sep 17 00:00:00 2001 From: Martin Nowack Date: Sun, 10 Mar 2019 21:02:03 +0000 Subject: Add integer sanitizer to UBSan --- scripts/build/v-sanitizer.inc | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'scripts/build') 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 -- cgit 1.4.1