diff --git a/browser/config/mozconfigs/linux64/opt-tsan b/browser/config/mozconfigs/linux64/opt-tsan new file mode 100644 index 00000000000..d1673fd51cf --- /dev/null +++ b/browser/config/mozconfigs/linux64/opt-tsan @@ -0,0 +1,8 @@ +ac_add_options --with-google-oauth-api-keyfile=/builds/google-oauth-api.key + +. $topsrcdir/build/unix/mozconfig.tsan + +# Need this to prevent name conflicts with the normal nightly build packages +export MOZ_PKG_SPECIAL=tsan + +. "$topsrcdir/build/mozconfig.common.override" diff --git a/build/unix/mozconfig.tsan b/build/unix/mozconfig.tsan new file mode 100644 index 00000000000..689f8fc188d --- /dev/null +++ b/build/unix/mozconfig.tsan @@ -0,0 +1,34 @@ +MOZ_AUTOMATION_L10N_CHECK=0 + +. "$topsrcdir/build/mozconfig.common" + +# Use Clang as specified in manifest +export CC="$topsrcdir/clang/bin/clang" +export CXX="$topsrcdir/clang/bin/clang++" +export LLVM_SYMBOLIZER="$topsrcdir/clang/bin/llvm-symbolizer" + +# Mandatory flag for TSan +export CFLAGS="-fsanitize=thread" +export CXXFLAGS="-fsanitize=thread" +export LDFLAGS="-fsanitize=thread" + +# Enable TSan specific code and build workarounds +ac_add_options --enable-thread-sanitizer + +# The ThreadSanitizer is not compatible with sanboxing +# (see bug 1182565) +ac_add_options --disable-sandbox + +# These are required by TSan +ac_add_options --disable-jemalloc +ac_add_options --disable-crashreporter +ac_add_options --disable-elf-hack +ac_add_options --enable-pie + +# Keep symbols to symbolize TSan traces +ac_add_options --disable-install-strip +# -gline-tables-only results in significantly smaller binaries. +ac_add_options --enable-debug-symbols="-gline-tables-only" + +# Avoid dependency on libstdc++ 4.7 +ac_add_options --enable-stdcxx-compat