From db614269deb8e6ba3c394d87866c2232ccf772e6 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Wed, 15 Jun 2016 18:25:33 -0400 Subject: [PATCH] Declare default values for variables like HAVE_CXX03. Add additional tests for Clang --- cryptest.sh | 100 ++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 81 insertions(+), 19 deletions(-) diff --git a/cryptest.sh b/cryptest.sh index 2c638efd..e1188cef 100755 --- a/cryptest.sh +++ b/cryptest.sh @@ -138,51 +138,45 @@ if [ "$?" -eq "0" ]; then fi # Hit or miss, only latest compilers. +HAVE_CXX17=0 $CXX -DCRYPTOPP_ADHOC_MAIN -std=c++17 adhoc.cpp -o $TMP/adhoc.exe > /dev/null 2>&1 if [ "$?" -eq "0" ]; then HAVE_CXX17=1 -else - HAVE_CXX17=0 fi # Hit or miss, mostly miss. +HAVE_CXX14=0 $CXX -DCRYPTOPP_ADHOC_MAIN -std=c++14 adhoc.cpp -o $TMP/adhoc.exe > /dev/null 2>&1 if [ "$?" -eq "0" ]; then HAVE_CXX14=1 -else - HAVE_CXX14=0 fi # Hit or miss, mostly hit. +HAVE_CXX11=0 $CXX -DCRYPTOPP_ADHOC_MAIN -std=c++11 adhoc.cpp -o $TMP/adhoc.exe > /dev/null 2>&1 if [ "$?" -eq "0" ]; then HAVE_CXX11=1 -else - HAVE_CXX11=0 fi # OpenBSD 5.7 and OS X 10.5 cannot consume -std=c++03 +HAVE_CXX03=0 $CXX -DCRYPTOPP_ADHOC_MAIN -std=c++03 adhoc.cpp -o $TMP/adhoc.exe > /dev/null 2>&1 if [ "$?" -eq "0" ]; then HAVE_CXX03=1 -else - HAVE_CXX03=0 fi # Undefined Behavior sanitizer +HAVE_UBSAN=0 $CXX -DCRYPTOPP_ADHOC_MAIN -fsanitize=undefined adhoc.cpp -o $TMP/adhoc.exe > /dev/null 2>&1 if [ "$?" -eq "0" ] && [ "$IS_X86" -ne "0" ]; then HAVE_UBSAN=1 -else - HAVE_UBSAN=0 fi # Address sanitizer +HAVE_ASAN=0 $CXX -DCRYPTOPP_ADHOC_MAIN -fsanitize=address adhoc.cpp -o $TMP/adhoc.exe > /dev/null 2>&1 if [ "$?" -eq "0" ] && [ "$IS_X86" -ne "0" ]; then HAVE_ASAN=1 -else - HAVE_ASAN=0 fi # Darwin and Intel multiarch @@ -399,7 +393,7 @@ if [ ! -z "$GIT_BRANCH" ]; then fi if [ "$SUN_COMPILER" -ne "0" ]; then - echo $($CXX -V | head -1) | tee -a "$TEST_RESULTS" + echo $($CXX -V 2>&1 | head -1 | sed 's|CC|Compiler|g') | tee -a "$TEST_RESULTS" else echo "Compiler:" $($CXX --version | head -1) | tee -a "$TEST_RESULTS" fi @@ -1131,7 +1125,7 @@ fi # Basic debug build, using SHA3/FIPS 202 echo echo "************************************" | tee -a "$TEST_RESULTS" -echo "Testing: debug, default CXXFLAGS, CRYPTOPP_USE_FIPS_202_SHA3" | tee -a "$TEST_RESULTS" +echo "Testing: debug, default CXXFLAGS, USE_FIPS_202_SHA3" | tee -a "$TEST_RESULTS" echo unset CXXFLAGS @@ -1163,7 +1157,7 @@ fi # Basic release build, using SHA3/FIPS 202 echo echo "************************************" | tee -a "$TEST_RESULTS" -echo "Testing: release, default CXXFLAGS, CRYPTOPP_USE_FIPS_202_SHA3" | tee -a "$TEST_RESULTS" +echo "Testing: release, default CXXFLAGS, USE_FIPS_202_SHA3" | tee -a "$TEST_RESULTS" echo unset CXXFLAGS @@ -1632,7 +1626,7 @@ if [ "$IS_SOLARIS" -ne "0" ]; then ############################################ # Sun Studio 12.2 - if [ "$CXX" != "/opt/solstudio12.2/bin/CC" ] && [ -e "/opt/solstudio12.2/bin/CC" ]; then + if [ -e "/opt/solstudio12.2/bin/CC" ]; then ############################################ # Basic debug build @@ -1691,7 +1685,7 @@ if [ "$IS_SOLARIS" -ne "0" ]; then ############################################ # Sun Studio 12.3 - if [ "$CXX" != "/opt/solarisstudio12.3/bin/CC" ] && [ -e "/opt/solarisstudio12.3/bin/CC" ]; then + if [ -e "/opt/solarisstudio12.3/bin/CC" ]; then ############################################ # Basic debug build @@ -1750,7 +1744,7 @@ if [ "$IS_SOLARIS" -ne "0" ]; then ############################################ # Sun Studio 12.4 - if [ "$CXX" != "/opt/solarisstudio12.4/bin/CC" ] && [ -e "/opt/solarisstudio12.4/bin/CC" ]; then + if [ -e "/opt/solarisstudio12.4/bin/CC" ]; then ############################################ # Basic debug build @@ -1809,7 +1803,7 @@ if [ "$IS_SOLARIS" -ne "0" ]; then ############################################ # Sun Studio 12.5 - if [ "$CXX" != "/opt/solarisstudio12.5/bin/CC" ] && [ -e "/opt/solarisstudio12.5/bin/CC" ]; then + if [ -e "/opt/solarisstudio12.5/bin/CC" ]; then ############################################ # Basic debug build @@ -2222,6 +2216,46 @@ if [ "$IS_DARWIN" -ne "0" ] && [ "$HAVE_INTEL_MULTIARCH" -ne "0" ] && [ "$HAVE_C fi fi +############################################ +# Darwin, Intel multiarch, c++17 +if [ "$IS_DARWIN" -ne "0" ] && [ "$HAVE_INTEL_MULTIARCH" -ne "0" ] && [ "$HAVE_CXX17" -ne "0" ]; then + echo + echo "************************************" | tee -a "$TEST_RESULTS" + echo "Testing: Darwin, Intel multiarch, c++17" | tee -a "$TEST_RESULTS" + echo + + unset CXXFLAGS + "$MAKE" clean > /dev/null 2>&1 + rm -f adhoc.cpp > /dev/null 2>&1 + + export CXXFLAGS="-DNDEBUG -g2 -O2 -arch i386 -arch x86_64 -std=c++17 ${RETAINED_CXXFLAGS[@]}" + "$MAKE" "${MAKEARGS[@]}" CXX="$CXX" static cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" + + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to make cryptest.exe" | tee -a "$TEST_RESULTS" + else + echo "Running i386 version..." + arch -i386 ./cryptest.exe v 2>&1 | tee -a "$TEST_RESULTS" + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to execute validation suite (i386)" | tee -a "$TEST_RESULTS" + fi + arch -i386 ./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS" + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to execute test vectors (i386)" | tee -a "$TEST_RESULTS" + fi + + echo "Running x86_64 version..." + arch -x86_64 ./cryptest.exe v 2>&1 | tee -a "$TEST_RESULTS" + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to execute validation suite (x86_64)" | tee -a "$TEST_RESULTS" + fi + arch -x86_64 ./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS" + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to execute test vectors (x86_64)" | tee -a "$TEST_RESULTS" + fi + fi +fi + ############################################ # Darwin, PowerPC multiarch if [ "$IS_DARWIN" -ne "0" ] && [ "$HAVE_PPC_MULTIARCH" -ne "0" ]; then @@ -2775,6 +2809,34 @@ if [ "$HAVE_VALGRIND" -ne "0" ] && [ "$HAVE_CXX14" -ne "0" ]; then fi fi +############################################ +# Valgrind, c++17. Requires -O1 for accurate results +if [ "$HAVE_VALGRIND" -ne "0" ] && [ "$HAVE_CXX17" -ne "0" ]; then + echo + echo "************************************" | tee -a "$TEST_RESULTS" + echo "Testing: Valgrind, c++17" | tee -a "$TEST_RESULTS" + echo + + unset CXXFLAGS + "$MAKE" clean > /dev/null 2>&1 + rm -f adhoc.cpp > /dev/null 2>&1 + + if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DNDEBUG -g3 -xO1 -std=c++17 ${RETAINED_CXXFLAGS[@]}" + else + export CXXFLAGS="-DNDEBUG -g3 -O1 -std=c++17 ${RETAINED_CXXFLAGS[@]}" + fi + + "$MAKE" "${MAKEARGS[@]}" CXX="$CXX" static cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" + + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to make cryptest.exe" | tee -a "$TEST_RESULTS" + else + valgrind --track-origins=yes ./cryptest.exe v 2>&1 | tee -a "$TEST_RESULTS" + valgrind --track-origins=yes ./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS" + fi +fi + ############################################ # Build with elevated warnings if [ "$HAVE_CXX03" -ne "0" ] && [ "$SUN_COMPILER" -eq "0" ]; then