openssl/.travis.yml
Emilia Kasper cdbf577973 Disable some sanitizer checks without PEDANTIC
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>
2016-04-10 01:50:45 +02:00

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