diff --git a/.travis.yml b/.travis.yml index 4feaf6a8..04f04d4d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,8 +34,8 @@ packages: &gcc5_pkgs - autotools-dev - libc6-dbg -packages: &clang36_pkgs - - clang-3.6 +packages: &clang38_pkgs + - clang-3.8 - g++-5 - python-software-properties - libssl-dev @@ -53,56 +53,57 @@ packages: &clang36_pkgs matrix: include: # GCC/Debug + # - compiler: gcc + # env: GCC_VER=5 VARIANT=debug ADDRESS_MODEL=64 + # addons: &ao_gcc5 + # apt: + # sources: ['ubuntu-toolchain-r-test'] + # packages: *gcc5_pkgs + + # # GCC/Release + # - compiler: gcc + # env: GCC_VER=5 VARIANT=release ADDRESS_MODEL=64 + # addons: *ao_gcc5 + + # Coverage - compiler: gcc - env: GCC_VER=5 VARIANT=debug ADDRESS_MODEL=64 + env: GCC_VER=5 VARIANT=coverage ADDRESS_MODEL=64 addons: &ao_gcc5 apt: sources: ['ubuntu-toolchain-r-test'] packages: *gcc5_pkgs - # - compiler: gcc - # env: GCC_VER=5 VARIANT=debug ADDRESS_MODEL=32 - # addons: *ao_gcc5 + # # Clang/Debug + # - compiler: clang + # env: GCC_VER=5 VARIANT=debug CLANG_VER=3.8 ADDRESS_MODEL=64 + # addons: &ao_clang38 + # apt: + # sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.8'] + # packages: *clang38_pkgs - # GCC/Release - - compiler: gcc - env: GCC_VER=5 VARIANT=release ADDRESS_MODEL=64 - addons: *ao_gcc5 + # # Clang/Release + # - compiler: clang + # env: GCC_VER=5 VARIANT=release CLANG_VER=3.8 ADDRESS_MODEL=64 + # addons: *ao_clang38 - # # - compiler: gcc - # # env: GCC_VER=5 VARIANT=release ADDRESS_MODEL=32 - # # addons: *ao_gcc5 - - # Clang/Debug + # Clang/AddressSanitizer - compiler: clang - env: GCC_VER=5 VARIANT=debug CLANG_VER=3.6 ADDRESS_MODEL=64 - addons: &ao_clang36 + env: GCC_VER=5 VARIANT=asan CLANG_VER=3.8 ADDRESS_MODEL=64 + addons: &ao_clang38 apt: - sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6'] - packages: *clang36_pkgs + sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.8'] + packages: *clang38_pkgs - # # - compiler: clang - # # env: GCC_VER=5 VARIANT=debug CLANG_VER=3.6 ADDRESS_MODEL=32 - # # addons: *ao_clang36 + # Clang/MemorySanitizer + # VFALCO Generates false positives unless libc++ is compiled with msan turned on + #- compiler: clang + # env: GCC_VER=5 VARIANT=msan CLANG_VER=3.8 ADDRESS_MODEL=64 MSAN_OPTIONS=poison_in_dtor=1,sanitize-memory-track-origins=2 + # addons: *ao_clang38 - # Clang/Release + # Clang/UndefinedBehaviourSanitizer - compiler: clang - env: GCC_VER=5 VARIANT=release CLANG_VER=3.6 ADDRESS_MODEL=64 - addons: *ao_clang36 - - # # - compiler: clang - # # env: GCC_VER=5 VARIANT=release CLANG_VER=3.6 ADDRESS_MODEL=32 - # # addons: *ao_clang36 - - # Coverage - - compiler: gcc - env: GCC_VER=5 VARIANT=coverage ADDRESS_MODEL=64 - addons: *ao_gcc5 - - # ASAN - - compiler: gcc - env: GCC_VER=5 VARIANT=asan ADDRESS_MODEL=64 - addons: *ao_gcc5 + env: GCC_VER=5 VARIANT=usan CLANG_VER=3.8 ADDRESS_MODEL=64 + addons: *ao_clang38 cache: directories: diff --git a/Jamroot b/Jamroot index 5013bd00..3414731c 100644 --- a/Jamroot +++ b/Jamroot @@ -61,6 +61,22 @@ variant asan "-fsanitize=address" ; +variant msan + : + debug + : + "-fsanitize=memory -fno-omit-frame-pointer -fsanitize-memory-track-origins=2 -fsanitize-memory-use-after-dtor" + "-fsanitize=memory" + ; + +variant usan + : + debug + : + "-fsanitize=undefined -fno-omit-frame-pointer" + "-fsanitize=undefined" + ; + project beast : requirements . diff --git a/scripts/build-and-test.sh b/scripts/build-and-test.sh index 42f04810..0ddb95c4 100755 --- a/scripts/build-and-test.sh +++ b/scripts/build-and-test.sh @@ -6,7 +6,16 @@ set -ex ################################## ENVIRONMENT ################################# -export PATH=$VALGRIND_ROOT/bin:$LCOV_ROOT/usr/bin:$PATH +# If not CI, then set some defaults +if [[ "${CI:-}" == "" ]]; then + TRAVIS_BRANCH=${TRAVIS_BRANCH:-feature} + CC=${CC:-gcc} + ADDRESS_MODEL=${ADDRESS_MODEL:-64} + VARIANT=${VARIANT:-debug} + # If running locally we assume we have lcov/valgrind on PATH +else + export PATH=$VALGRIND_ROOT/bin:$LCOV_ROOT/usr/bin:$PATH +fi echo "using toolset: $CC" echo "using variant: $VARIANT" @@ -46,8 +55,8 @@ if [[ $VARIANT == "coverage" ]]; then # We need to wait a while so wstest can connect! sleep 5 -# cd scripts && wstest -m fuzzingclient -# cd .. + cd scripts && wstest -m fuzzingclient + cd .. # Show the output cat nohup.out rm nohup.out diff --git a/scripts/install-dependencies.sh b/scripts/install-dependencies.sh index 1408d709..34eb8604 100755 --- a/scripts/install-dependencies.sh +++ b/scripts/install-dependencies.sh @@ -9,7 +9,7 @@ do test -x $( type -p ${g}-$GCC_VER ) ln -sv $(type -p ${g}-$GCC_VER) $HOME/bin/${g} done -for c in clang clang++ +for c in clang clang++ llvm-symbolizer do test -x $( type -p ${c}-$CLANG_VER ) ln -sv $(type -p ${c}-$CLANG_VER) $HOME/bin/${c}