Skip to content
This repository has been archived by the owner on Jun 12, 2018. It is now read-only.

MUL-1398: CI memory sanitizer #96

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 48 additions & 42 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,49 +10,55 @@ os:
matrix:
fast_finish: true
include:
- os: linux
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-5
#- os: linux
#addons:
#apt:
#sources:
#- ubuntu-toolchain-r-test
#packages:
#- g++-5
#env:
#- MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
#- BUILD_TYPE=Debug

#- os: linux
#addons:
#apt:
#sources:
#- ubuntu-toolchain-r-test
#packages:
#- g++-5
#env:
#- MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
#- BUILD_TYPE=Release

#- os: linux
#addons:
#apt:
#sources:
#- ubuntu-toolchain-r-test
#packages:
#- g++-5
#env:
#- MATRIX_EVAL="CC=clang && CXX=clang++"
#- BUILD_TYPE=Debug

#- os: linux
#addons:
#apt:
#sources:
#- ubuntu-toolchain-r-test
#packages:
#- g++-5
#env:
#- MATRIX_EVAL="CC=clang && CXX=clang++"
#- BUILD_TYPE=Release

- os: osx
env:
- MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
- BUILD_TYPE=Debug

- os: linux
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-5
env:
- MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
- BUILD_TYPE=Release

- os: linux
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-5
env:
- MATRIX_EVAL="CC=clang && CXX=clang++"
- BUILD_TYPE=Debug

- os: linux
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-5
env:
- MATRIX_EVAL="CC=clang && CXX=clang++"
- BUILD_TYPE=Release
- EXTRA_CMAKE_OPTIONS=-DMULTY_TEST_WITH_MEMORY_SANITIZER=1
- MATRIX_EVAL="export ASAN_OPTIONS=detect_container_overflow=0"

- language: android
jdk: oraclejdk8
Expand Down Expand Up @@ -130,6 +136,6 @@ before_script:

script:
- mkdir build && cd build
- cmake .. -G'Unix Makefiles' -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DMULTY_MORE_WARNINGS=ON -DMULTY_TEST_DISABLE_DEATH_TESTS=ON -DMULTY_WARNINGS_AS_ERRORS=ON -DMULTY_WITH_TESTS=ON -DMULTY_WITH_TEST_APP=ON
- cmake .. -G'Unix Makefiles' -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DMULTY_MORE_WARNINGS=ON -DMULTY_TEST_DISABLE_DEATH_TESTS=ON -DMULTY_WARNINGS_AS_ERRORS=ON -DMULTY_WITH_TESTS=ON -DMULTY_WITH_TEST_APP=ON ${EXTRA_CMAKE_OPTIONS}
- cmake --build . --target all
- ./multy
6 changes: 4 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,17 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

# General options
option(MULTY_WITH_TESTS "Build multy_test library" NO)
option(MULTY_MORE_WARNINGS "More warnings" OFF)
option(MULTY_WARNINGS_AS_ERRORS "Treat warnings as errors" OFF)
option(MULTY_ENABLE_SIMULATE_ERROR "Enable simulating errors in multy_core, see THROW_IF_WALLY_ERROR for details." OFF)
# This is a standard CMake option, but we are putting it here to emphasise.
option(BUILD_SHARED_LIBS "Build as shared libraries." OFF)
option(MULTY_FORCE_ENABLE_ERROR_BACKTRACE "Force collecting backtrace for Release builds." OFF)

# Tests options
option(MULTY_WITH_TEST_APP "Build sample app that runs the tests (consider MULTY_WITH_TESTS)." OFF)
option(MULTY_TEST_DISABLE_DEATH_TESTS "Explicitly disable death tests." ON)
option(MULTY_FORCE_ENABLE_ERROR_BACKTRACE "Force collecting backtrace for Release builds." OFF)
option(MULTY_TEST_WITH_MEMORY_SANITIZER "Enable memory sanitizer for multy_test." OFF)

project(multy C CXX)

Expand Down
14 changes: 14 additions & 0 deletions multy_test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,20 @@ target_link_libraries(
libwally-core
)

if (MULTY_TEST_WITH_MEMORY_SANITIZER)
target_compile_options(
multy_test
PUBLIC
-fsanitize=address -fno-omit-frame-pointer
)

target_link_libraries(
multy_test
PUBLIC
-fsanitize=address
)
endif()

if (MULTY_TEST_DISABLE_DEATH_TESTS)
target_compile_definitions(multy_test PRIVATE MULTY_TEST_DISABLE_DEATH_TESTS)
message("DEATH tests disabled.")
Expand Down