cdbf577973
Code without PEDANTIC has intentional "undefined" behaviour. To get best coverage for both PEDANTIC and non-PEDANTIC codepaths, run the sanitizer builds in two different configurations: 1) Without PEDANTIC but with alignment checks disabled. 2) With PEDANTIC. To not overload Travis too much, run one build with clang and the other with gcc (chosen at random). Also remove a micro-optimization in CAST code to be able to -fsanitize=shift. Whether shift sanitization is meaningful for crypto or an obstacle is debatable but since this appears to be the only offender, we might as well keep the check for now. Reviewed-by: Richard Levitte <levitte@openssl.org>
105 lines
2.9 KiB
YAML
105 lines
2.9 KiB
YAML
language: c
|
|
cache: ccache
|
|
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- ccache
|
|
- clang-3.6
|
|
- gcc-5
|
|
- binutils-mingw-w64
|
|
- gcc-mingw-w64
|
|
- wine
|
|
sources:
|
|
- llvm-toolchain-precise-3.6
|
|
- ubuntu-toolchain-r-test
|
|
|
|
os:
|
|
- linux
|
|
- osx
|
|
|
|
compiler:
|
|
- clang
|
|
- gcc
|
|
|
|
env:
|
|
- CONFIG_OPTS="shared"
|
|
- CONFIG_OPTS="--debug enable-crypto-mdebug enable-rc5 enable-md2"
|
|
- CONFIG_OPTS="--strict-warnings" BUILDONLY="yes"
|
|
- CONFIG_OPTS="--classic" BUILDONLY="yes"
|
|
- CONFIG_OPTS="--classic shared" BUILDONLY="yes"
|
|
- CONFIG_OPTS="no-pic --strict-warnings" BUILDONLY="yes"
|
|
- CONFIG_OPTS="no-engine --strict-warnings" BUILDONLY="yes"
|
|
|
|
matrix:
|
|
include:
|
|
- os: linux
|
|
compiler: clang-3.6
|
|
env: CONFIG_OPTS="-fsanitize=address"
|
|
- os: linux
|
|
compiler: clang-3.6
|
|
env: CONFIG_OPTS="no-asm -fno-sanitize-recover -fsanitize=address -fsanitize=undefined enable-rc5 enable-md2 -fno-sanitize=alignment"
|
|
- os: linux
|
|
compiler: gcc-5
|
|
env: CONFIG_OPTS="-fsanitize=address"
|
|
- os: linux
|
|
compiler: gcc-5
|
|
env: CONFIG_OPTS="no-asm -fno-sanitize-recover -DPEDANTIC -fsanitize=address -fsanitize=undefined enable-rc5 enable-md2"
|
|
- os: linux
|
|
compiler: i686-w64-mingw32-gcc
|
|
env: CONFIG_OPTS="no-pic"
|
|
- os: linux
|
|
compiler: x86_64-w64-mingw32-gcc
|
|
env: CONFIG_OPTS="no-pic"
|
|
exclude:
|
|
- os: linux
|
|
compiler: clang
|
|
- os: osx
|
|
compiler: gcc
|
|
|
|
before_script:
|
|
- sh .travis-create-release.sh $TRAVIS_OS_NAME
|
|
- tar -xvzf _srcdist.tar.gz
|
|
- if echo "$CONFIG_OPTS" | grep -e "--classic" >/dev/null; then
|
|
srcdir=.;
|
|
cd _srcdist;
|
|
else
|
|
srcdir=../_srcdist;
|
|
mkdir _build;
|
|
cd _build;
|
|
fi
|
|
- if [ "$CC" == i686-w64-mingw32-gcc ]; then
|
|
export CROSS_COMPILE=${CC%%gcc}; unset CC;
|
|
$srcdir/Configure mingw $CONFIG_OPTS -Wno-pedantic-ms-format;
|
|
elif [ "$CC" == x86_64-w64-mingw32-gcc ]; then
|
|
export CROSS_COMPILE=${CC%%gcc}; unset CC;
|
|
$srcdir/Configure mingw64 $CONFIG_OPTS -Wno-pedantic-ms-format;
|
|
else
|
|
if which ccache >/dev/null && [ "$CC" != clang-3.6 ]; then
|
|
CC="ccache $CC";
|
|
fi;
|
|
$srcdir/config $CONFIG_OPTS;
|
|
fi
|
|
- cd ..
|
|
|
|
script:
|
|
- if echo "$CONFIG_OPTS" | grep -e "--classic" >/dev/null; then
|
|
cd _srcdist;
|
|
else
|
|
cd _build;
|
|
fi
|
|
- make
|
|
- if [ -z "$BUILDONLY" ]; then
|
|
if [ -n "$CROSS_COMPILE" ]; then
|
|
export EXE_SHELL="wine" WINEPREFIX=`pwd`;
|
|
fi;
|
|
HARNESS_VERBOSE=yes make test;
|
|
else
|
|
make build_tests;
|
|
fi
|
|
- cd ..
|
|
|
|
notifications:
|
|
email:
|
|
- openssl-commits@openssl.org
|
|
|