From 4db5980a234802db1c379f3358230631636edf08 Mon Sep 17 00:00:00 2001
From: Dan Liew <daniel.liew@imperial.ac.uk>
Date: Fri, 6 Oct 2017 19:01:20 +0100
Subject: [PATCH] [TravisCI] Fix getting proper stack traces for ASan/LSan. The
 `llvm-symbolizer` tool needs to be installed and ASan/LSan needs to be told
 where to find it.

---
 contrib/ci/Dockerfiles/z3_base_ubuntu32_16.04.Dockerfile | 3 ++-
 contrib/ci/Dockerfiles/z3_base_ubuntu_14.04.Dockerfile   | 3 ++-
 contrib/ci/Dockerfiles/z3_base_ubuntu_16.04.Dockerfile   | 3 ++-
 contrib/ci/scripts/sanitizer_env.sh                      | 1 +
 4 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/contrib/ci/Dockerfiles/z3_base_ubuntu32_16.04.Dockerfile b/contrib/ci/Dockerfiles/z3_base_ubuntu32_16.04.Dockerfile
index d8a32edea..87e3c8d67 100644
--- a/contrib/ci/Dockerfiles/z3_base_ubuntu32_16.04.Dockerfile
+++ b/contrib/ci/Dockerfiles/z3_base_ubuntu32_16.04.Dockerfile
@@ -30,6 +30,7 @@ RUN apt-get update && \
         libgomp1 \
         libomp5 \
         libomp-dev \
+        llvm-3.9 \
         make \
         mono-devel \
         ninja-build \
@@ -47,4 +48,4 @@ RUN useradd -m user && \
     echo 'user  ALL=(root) NOPASSWD: ALL' >> /etc/sudoers
 USER user
 WORKDIR /home/user
-
+ENV ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-3.9/bin/llvm-symbolizer
diff --git a/contrib/ci/Dockerfiles/z3_base_ubuntu_14.04.Dockerfile b/contrib/ci/Dockerfiles/z3_base_ubuntu_14.04.Dockerfile
index c28e59e97..c963ce255 100644
--- a/contrib/ci/Dockerfiles/z3_base_ubuntu_14.04.Dockerfile
+++ b/contrib/ci/Dockerfiles/z3_base_ubuntu_14.04.Dockerfile
@@ -16,6 +16,7 @@ RUN apt-get update && \
         libgmp-dev \
         libgomp1 \
         lib32gomp1 \
+        llvm-3.9 \
         make \
         mono-devel \
         ninja-build \
@@ -32,4 +33,4 @@ RUN useradd -m user && \
     echo 'user  ALL=(root) NOPASSWD: ALL' >> /etc/sudoers
 USER user
 WORKDIR /home/user
-
+ENV ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-3.9/bin/llvm-symbolizer
diff --git a/contrib/ci/Dockerfiles/z3_base_ubuntu_16.04.Dockerfile b/contrib/ci/Dockerfiles/z3_base_ubuntu_16.04.Dockerfile
index 98a5a3e09..08686e275 100644
--- a/contrib/ci/Dockerfiles/z3_base_ubuntu_16.04.Dockerfile
+++ b/contrib/ci/Dockerfiles/z3_base_ubuntu_16.04.Dockerfile
@@ -18,6 +18,7 @@ RUN apt-get update && \
         libgomp1 \
         libomp5 \
         libomp-dev \
+        llvm-3.9 \
         make \
         mono-devel \
         ninja-build \
@@ -35,4 +36,4 @@ RUN useradd -m user && \
     echo 'user  ALL=(root) NOPASSWD: ALL' >> /etc/sudoers
 USER user
 WORKDIR /home/user
-
+ENV ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-3.9/bin/llvm-symbolizer
diff --git a/contrib/ci/scripts/sanitizer_env.sh b/contrib/ci/scripts/sanitizer_env.sh
index e9af255d3..3b1ff7297 100644
--- a/contrib/ci/scripts/sanitizer_env.sh
+++ b/contrib/ci/scripts/sanitizer_env.sh
@@ -9,6 +9,7 @@ if [ "X${ASAN_BUILD}" = "X1" ]; then
   # Use suppression files
   export LSAN_OPTIONS="print_suppressions=1,suppressions=${Z3_SRC_DIR}/contrib/suppressions/sanitizers/lsan.txt"
   export ASAN_OPTIONS="print_suppressions=1,suppressions=${Z3_SRC_DIR}/contrib/suppressions/sanitizers/asan.txt"
+  : ${ASAN_SYMBOLIZER_PATH?"ASAN_SYMBOLIZER_PATH must be specified"}
 fi
 
 if [ "X${UBSAN_BUILD}" = "X1" ]; then