aboutsummaryrefslogtreecommitdiff
path: root/.ci/clang-asan.sh
diff options
context:
space:
mode:
Diffstat (limited to '.ci/clang-asan.sh')
-rw-r--r--.ci/clang-asan.sh39
1 files changed, 39 insertions, 0 deletions
diff --git a/.ci/clang-asan.sh b/.ci/clang-asan.sh
new file mode 100644
index 0000000000..2c67a3c1c6
--- /dev/null
+++ b/.ci/clang-asan.sh
@@ -0,0 +1,39 @@
+. "$CI_SCRIPTS/common.sh"
+
+set_environment /opt/neovim-deps
+
+sudo pip install cpp-coveralls
+
+clang_version=3.4
+if [ ! -d /usr/local/clang-$clang_version ]; then
+ echo "Downloading clang $clang_version..."
+ sudo mkdir /usr/local/clang-$clang_version
+ wget -q -O - http://llvm.org/releases/$clang_version/clang+llvm-$clang_version-x86_64-unknown-ubuntu12.04.xz \
+ | sudo tar xJf - --strip-components=1 -C /usr/local/clang-$clang_version
+ export CC=/usr/local/clang-$clang_version/bin/clang
+else
+ export CC=clang
+fi
+symbolizer=/usr/local/clang-$clang_version/bin/llvm-symbolizer
+
+export SANITIZE=1
+export ASAN_SYMBOLIZER_PATH=$symbolizer
+export ASAN_OPTIONS="detect_leaks=1:log_path=$tmpdir/asan"
+export TSAN_OPTIONS="external_symbolizer_path=$symbolizer:log_path=$tmpdir/tsan"
+
+export SKIP_UNITTEST=1
+export UBSAN_OPTIONS="log_path=$tmpdir/ubsan" # not sure if this works
+
+install_dir="$(pwd)/dist"
+$MAKE_CMD cmake CMAKE_EXTRA_FLAGS="-DTRAVIS_CI_BUILD=ON -DCMAKE_INSTALL_PREFIX=$install_dir -DUSE_GCOV=ON"
+$MAKE_CMD
+if ! $MAKE_CMD test; then
+ reset
+ asan_check "$tmpdir"
+ exit 1
+fi
+
+asan_check "$tmpdir"
+coveralls --encoding iso-8859-1 || echo 'coveralls upload failed.'
+
+$MAKE_CMD install