diff options
author | Timotej Kapus <tk1713@ic.ac.uk> | 2019-03-22 16:00:29 +0000 |
---|---|---|
committer | MartinNowack <martin.nowack@gmail.com> | 2019-04-04 20:37:41 +0100 |
commit | 1e6b42fad776a56332d95b2e987bbe468794c306 (patch) | |
tree | 994da16e01566ea692b3ee0dadb2a85cf3bc98b9 /scripts | |
parent | e60393614f7507c1c5fe7dbf87754d18ed4cd7d0 (diff) | |
download | klee-1e6b42fad776a56332d95b2e987bbe468794c306.tar.gz |
Add MSan support for sqlite
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/build/p-klee-linux-ubuntu-16.04.inc | 1 | ||||
-rw-r--r-- | scripts/build/p-klee.inc | 3 | ||||
-rw-r--r-- | scripts/build/p-sqlite-linux-ubuntu-16.04.inc | 35 | ||||
-rw-r--r-- | scripts/build/p-sqlite.inc | 55 | ||||
-rw-r--r-- | scripts/build/v-klee.inc | 4 | ||||
-rw-r--r-- | scripts/build/v-sanitizer.inc | 4 | ||||
-rw-r--r-- | scripts/build/v-sqlite.inc | 5 |
7 files changed, 101 insertions, 6 deletions
diff --git a/scripts/build/p-klee-linux-ubuntu-16.04.inc b/scripts/build/p-klee-linux-ubuntu-16.04.inc index 5350b633..7748d104 100644 --- a/scripts/build/p-klee-linux-ubuntu-16.04.inc +++ b/scripts/build/p-klee-linux-ubuntu-16.04.inc @@ -4,7 +4,6 @@ install_build_dependencies_klee() { dependencies=( build-essential cmake - libsqlite3-dev python-pip #for lit python-setuptools #for lit python-wheel #for lit diff --git a/scripts/build/p-klee.inc b/scripts/build/p-klee.inc index 5872ba4a..8479a2ca 100644 --- a/scripts/build/p-klee.inc +++ b/scripts/build/p-klee.inc @@ -122,6 +122,7 @@ fi CMAKE_ARGUMENTS+=("-DENABLE_TCMALLOC=FALSE") fi + CMAKE_PREFIX_PATH+=("${SQLITE_INSTALL_PATH}") ############################################################################### # KLEE ############################################################################### @@ -209,4 +210,4 @@ get_build_artifacts_klee() { setup_build_variables_klee echo "${KLEE_BUILD_DIR}" ) -} \ No newline at end of file +} diff --git a/scripts/build/p-sqlite-linux-ubuntu-16.04.inc b/scripts/build/p-sqlite-linux-ubuntu-16.04.inc new file mode 100644 index 00000000..ee5531a2 --- /dev/null +++ b/scripts/build/p-sqlite-linux-ubuntu-16.04.inc @@ -0,0 +1,35 @@ +install_build_dependencies_sqlite() { + apt update -y + + dependencies=( + build-essential + unzip + git + wget + ) + + apt -y --no-install-recommends install "${dependencies[@]}" +} +install_binary_artifact_sqlite() { + + if [[ "${SANITIZER_SUFFIX}x" != "x" ]]; then + return 1 + fi + apt update -y + + dependencies=( + libsqlite3-dev + ) + + #Install essential dependencies + apt -y --no-install-recommends install "${dependencies[@]}" +} + +# Check if the binary artifact is installed +is_installed_sqlite() { + [[ -f /usr/lib/x86_64-linux-gnu/libsqlite3.so ]] || return 1 +} + +get_docker_config_id_sqlite() { + return 0 +} diff --git a/scripts/build/p-sqlite.inc b/scripts/build/p-sqlite.inc new file mode 100644 index 00000000..8f94cc87 --- /dev/null +++ b/scripts/build/p-sqlite.inc @@ -0,0 +1,55 @@ +setup_build_variables_sqlite() { + SQLITE_SRC_PATH="${BASE}/sqlite-amalgamation-3270200" + SQLITE_INSTALL_PATH=${SQLITE_SRC_PATH} + SQLITE_SUFFIX="${SANITIZER_SUFFIX}" +} + +download_sqlite() { + # Get sqlite release + cd "${BASE}" + wget "http://www.sqlite.org/2019/sqlite-amalgamation-3270200.zip" + unzip "sqlite-amalgamation-3270200.zip" +} + +build_sqlite() { + cd "${SQLITE_SRC_PATH}" + + local CFLAGS="" + local COMP=${CC} + + # Check if sanitizers should be used to build stp + if [[ "${SANITIZER_SUFFIX}x" != "x" ]]; then + CFLAGS="${SANITIZER_C_FLAGS[*]}" + COMP=${SANITIZER_C_COMPILER} + fi + + ${COMP} ${CFLAGS} -fPIC -o libsqlite3.so -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -shared sqlite3.c +} + +install_sqlite() { + return 0 +} + +is_installed_sqlite() { + ( + setup_build_variables_sqlite + [[ -f "${SQLITE_INSTALL_PATH}"/libsqlite3.so ]] + ) || return 1 +} + +setup_artifact_variables_sqlite() { + setup_build_variables_sqlite +} + + +get_docker_config_id_sqlite() { + setup_build_variables_sqlite + echo "sqlite${SQLITE_SUFFIX}" +} + +get_build_artifacts_sqlite() { + ( + setup_build_variables_sqlite + echo "${SQLITE_SRC_PATH}" + ) +} diff --git a/scripts/build/v-klee.inc b/scripts/build/v-klee.inc index 7ed69001..62fdf9dd 100644 --- a/scripts/build/v-klee.inc +++ b/scripts/build/v-klee.inc @@ -13,7 +13,7 @@ required_variables_check_klee() { # On which artifacts does KLEE depend on artifact_dependency_klee(){ - local dependencies=("llvm" "solvers" "gtest") + local dependencies=("llvm" "solvers" "gtest" "sqlite") if [[ "${OS}" != "osx" ]]; then dependencies+=(uclibc) fi @@ -31,7 +31,7 @@ runtime_artifact_dependency_klee(){ if [[ "${OS}" != "osx" ]]; then echo "uclibc" fi - dependencies+=("llvm" "solvers" "gtest") + dependencies+=("llvm" "solvers" "gtest" "sqlite") [[ "${USE_TCMALLOC}" -eq 1 ]] && dependencies+=("tcmalloc") [[ "${USE_LIBCXX}" -eq 1 ]] && dependencies+=("libcxx") diff --git a/scripts/build/v-sanitizer.inc b/scripts/build/v-sanitizer.inc index 9d605377..6ac9d19f 100644 --- a/scripts/build/v-sanitizer.inc +++ b/scripts/build/v-sanitizer.inc @@ -78,7 +78,7 @@ setup_variables_sanitizer() { continue fi - # Undefined Behaviour Sanitizer + # Memory Sanitizer if [ "${sanitizer}" == "memory" ]; then echo "Using Memory Sanitizer" SANITIZER_SUFFIX+="_memsan" @@ -88,4 +88,4 @@ setup_variables_sanitizer() { echo "Unknown sanitizer: $sanitizer" exit 1 done - } \ No newline at end of file + } diff --git a/scripts/build/v-sqlite.inc b/scripts/build/v-sqlite.inc new file mode 100644 index 00000000..1a4f7db5 --- /dev/null +++ b/scripts/build/v-sqlite.inc @@ -0,0 +1,5 @@ +artifact_dependency_sqlite=("sanitizer_compiler") + +required_variables_sqlite=( + "CC" +) |