summaryrefslogtreecommitdiff
path: root/build.sh
diff options
context:
space:
mode:
authorTim Taubert <ttaubert@mozilla.com>2016-12-22 11:40:27 +0100
committerTim Taubert <ttaubert@mozilla.com>2016-12-22 11:40:27 +0100
commita9fad3b9632b1e28bf33e531aa8f038a8507daca (patch)
treed3a6eac0f95d88e01936cc990a3e9572d347174a /build.sh
parent1300459a82c8ac8ee3d4ef9da643c8efae408e36 (diff)
downloadnss-hg-a9fad3b9632b1e28bf33e531aa8f038a8507daca.tar.gz
Bug 1325089 - Use clang-4.0 and sancov=trace-pc-guard for fuzzing r=franziskus
Differential Revision: https://nss-review.dev.mozaws.net/D128
Diffstat (limited to 'build.sh')
-rwxr-xr-xbuild.sh29
1 files changed, 24 insertions, 5 deletions
diff --git a/build.sh b/build.sh
index 7da99daa3..feee2a923 100755
--- a/build.sh
+++ b/build.sh
@@ -36,6 +36,7 @@ NSS build tool options:
--opt|-o do an opt build
--asan do an asan build
--ubsan do an ubsan build
+ --ubsan=bool,shift,... sets specific UB sanitizers
--msan do an msan build
--sancov do sanitize coverage builds
--sancov=func sets coverage to function level for example
@@ -54,7 +55,7 @@ rebuild_gyp=0
target=Debug
verbose=0
fuzz=0
-sancov_default=edge,indirect-calls,8bit-counters
+ubsan_default=bool,signed-integer-overflow,shift,vptr
# parse parameters to store in config
params=$(echo "$*" | perl -pe 's/-c|-v|-g|-j [0-9]*|-h//g' | perl -pe 's/^\s*(.*?)\s*$/\1/')
@@ -74,13 +75,30 @@ gyp_params=()
ninja_params=()
scanbuild=()
+sancov_default()
+{
+ clang_version=$($CC --version | grep -oE 'clang version (3\.9\.|4\.)')
+ if [ -z "$clang_version" ]; then
+ echo "Need at least clang-3.9 (better 4.0) for sancov." 1>&2
+ exit 1
+ fi
+
+ if [ "$clang_version" = "clang version 3.9." ]; then
+ echo edge,indirect-calls,8bit-counters
+ else
+ echo trace-pc-guard
+ fi
+}
+
enable_fuzz()
{
fuzz=1
nspr_sanitizer asan
- nspr_sanitizer sancov $sancov_default
+ nspr_sanitizer ubsan $ubsan_default
+ nspr_sanitizer sancov $(sancov_default)
gyp_params+=(-Duse_asan=1)
- gyp_params+=(-Duse_sancov=$sancov_default)
+ gyp_params+=(-Duse_ubsan=$ubsan_default)
+ gyp_params+=(-Duse_sancov=$(sancov_default))
# Adding debug symbols even for opt builds.
nspr_opt+=(--enable-debug-symbols)
@@ -100,8 +118,9 @@ while [ $# -gt 0 ]; do
--opt|-o) opt_build=1 ;;
-m32|--m32) build_64=0 ;;
--asan) gyp_params+=(-Duse_asan=1); nspr_sanitizer asan ;;
- --ubsan) gyp_params+=(-Duse_ubsan=1); nspr_sanitizer ubsan ;;
- --sancov) gyp_params+=(-Duse_sancov=$sancov_default); nspr_sanitizer sancov $sancov_default ;;
+ --ubsan) gyp_params+=(-Duse_ubsan=$ubsan_default); nspr_sanitizer ubsan $ubsan_default ;;
+ --ubsan=?*) gyp_params+=(-Duse_ubsan="${1#*=}"); nspr_sanitizer ubsan "${1#*=}" ;;
+ --sancov) gyp_params+=(-Duse_sancov=$(sancov_default)); nspr_sanitizer sancov $(sancov_default) ;;
--sancov=?*) gyp_params+=(-Duse_sancov="${1#*=}"); nspr_sanitizer sancov "${1#*=}" ;;
--pprof) gyp_params+=(-Duse_pprof=1) ;;
--msan) gyp_params+=(-Duse_msan=1); nspr_sanitizer msan ;;