Merge branch 'master' into hmqv
commit
affeab6213
54
cryptest.sh
54
cryptest.sh
|
|
@ -25,6 +25,10 @@
|
|||
# Using 'fast' is shorthand for it:
|
||||
# ./cryptest.sh fast
|
||||
|
||||
# You can also reduce CPU load with the folowing. It will use half the number of CPU cores
|
||||
# rather than all of them. Its usefu for the GCC Compile Farm, where its policy.
|
||||
# ./cryptest.sh nice
|
||||
|
||||
############################################
|
||||
# Set to suite your taste
|
||||
|
||||
|
|
@ -81,7 +85,7 @@ THIS_MACHINE=$(uname -m 2>&1)
|
|||
IS_X86=$(echo "$THIS_MACHINE" | "$EGREP" -i -c "(i386|i586|i686|amd64|x86_64)")
|
||||
IS_X64=$(echo "$THIS_MACHINE" | "$EGREP" -i -c "(amd64|x86_64)")
|
||||
IS_PPC=$(echo "$THIS_MACHINE" | "$EGREP" -i -c "(Power|PPC)")
|
||||
IS_ARM32=$(echo "$THIS_MACHINE" | "$GREP" -v "arm64" | "$EGREP" -i -c "arm|aarch32")
|
||||
IS_ARM32=$(echo "$THIS_MACHINE" | "$GREP" -v "arm64" | "$EGREP" -i -c "(arm|aarch32)")
|
||||
IS_ARM64=$(echo "$THIS_MACHINE" | "$EGREP" -i -c "(arm64|aarch64)")
|
||||
IS_S390=$(echo "$THIS_MACHINE" | "$EGREP" -i -c "s390")
|
||||
IS_X32=0
|
||||
|
|
@ -110,11 +114,17 @@ if [[ "$IS_SOLARIS" -ne "0" ]]; then
|
|||
fi
|
||||
fi
|
||||
|
||||
# Recognize "fast" and "quick"...
|
||||
if [[ ("$#" -eq "1") && ($("$EGREP" -ix "fast" <<< "$1") || $("$EGREP" -ix "quick" <<< "$1")) ]]; then
|
||||
HAVE_VALGRIND=0
|
||||
WANT_BENCHMARKS=0
|
||||
fi
|
||||
for ARG in "$@"
|
||||
do
|
||||
# Recognize "fast" and "quick", which does not perform tests that take more time to execute
|
||||
if [[ ($("$EGREP" -ix "fast" <<< "$ARG") || $("$EGREP" -ix "quick" <<< "$ARG")) ]]; then
|
||||
HAVE_VALGRIND=0
|
||||
WANT_BENCHMARKS=0
|
||||
# Recognize "farm" and "nice", which uses 1/2 the CPU cores in accordance with GCC Compile Farm policy
|
||||
elif [[ ($("$EGREP" -ix "farm" <<< "$ARG") || $("$EGREP" -ix "nice" <<< "$ARG")) ]]; then
|
||||
WANT_NICE=1
|
||||
fi
|
||||
done
|
||||
|
||||
# We need to use the C++ compiler to determine feature availablility. Otherwise
|
||||
# mis-detections occur on a number of platforms.
|
||||
|
|
@ -163,7 +173,7 @@ if [[ ("$SUN_COMPILER" -eq "0") ]]; then
|
|||
fi
|
||||
fi
|
||||
|
||||
# Now that the compiler is fixed, set some GCC specific flags
|
||||
# Now that the compiler is fixed, determine the compiler version for fixups
|
||||
GCC_60_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version (6\.[0-9]|[7-9])')
|
||||
GCC_51_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version (5\.[1-9]|[6-9])')
|
||||
GCC_48_COMPILER=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version 4\.8')
|
||||
|
|
@ -500,19 +510,16 @@ if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then
|
|||
HAVE_ARMV7A=$(echo "$ARM_FEATURES" | "$GREP" -i -c 'neon')
|
||||
fi
|
||||
|
||||
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
|
||||
if [[ (-z "$HAVE_ARM_NEON") ]]; then
|
||||
HAVE_ARM_NEON=$(echo "$ARM_FEATURES" | "$GREP" -i -c 'neon')
|
||||
fi
|
||||
|
||||
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
|
||||
if [[ (-z "$HAVE_ARM_CRYPTO") ]]; then
|
||||
HAVE_ARM_CRYPTO=$(echo "$ARM_FEATURES" | "$EGREP" -i -c '(aes|pmull|sha1|sha2)')
|
||||
fi
|
||||
|
||||
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
|
||||
if [[ (-z "$HAVE_ARM_CRC") ]]; then
|
||||
HAVE_ARM_CRC=$(echo "$ARM_FEATURES" | "$GREP" -i -c "crc32")
|
||||
HAVE_ARM_CRC=$(echo "$ARM_FEATURES" | "$GREP" -i -c 'crc32')
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
@ -649,7 +656,7 @@ fi
|
|||
# Tools available for testing
|
||||
echo | tee -a "$TEST_RESULTS"
|
||||
echo "HAVE_ASAN: $HAVE_ASAN" | tee -a "$TEST_RESULTS"
|
||||
if [[ (! -z "$ASAN_SYMBOLIZE") ]]; then echo "ASAN_SYMBOLIZE: $ASAN_SYMBOLIZE" | tee -a "$TEST_RESULTS"; fi
|
||||
if [[ ("$HAVE_ASAN" -ne "0") && (! -z "$ASAN_SYMBOLIZE") ]]; then echo "ASAN_SYMBOLIZE: $ASAN_SYMBOLIZE" | tee -a "$TEST_RESULTS"; fi
|
||||
echo "HAVE_UBSAN: $HAVE_UBSAN" | tee -a "$TEST_RESULTS"
|
||||
echo "HAVE_VALGRIND: $HAVE_VALGRIND" | tee -a "$TEST_RESULTS"
|
||||
|
||||
|
|
@ -718,6 +725,9 @@ echo "FREQ: $CPU_FREQ GHz" | tee -a "$TEST_RESULTS"
|
|||
echo "MEM: $MEM_SIZE MB" | tee -a "$TEST_RESULTS"
|
||||
|
||||
if [[ ("$CPU_COUNT" -ge "2" && "$MEM_SIZE" -ge "1280" && "$HAVE_SWAP" -ne "0") ]]; then
|
||||
if [[ ("$WANT_NICE" -eq "1") ]]; then
|
||||
CPU_COUNT=$(echo "$CPU_COUNT 2" | "$AWK" '{print int($1/$2)}')
|
||||
fi
|
||||
MAKEARGS=(-j "$CPU_COUNT")
|
||||
echo "Using $MAKE -j $CPU_COUNT"
|
||||
fi
|
||||
|
|
@ -728,9 +738,9 @@ fi
|
|||
FILTERED_CXXFLAGS=("-DDEBUG" "-DNDEBUG" "-g" "-g0" "-g1" "-g2" "-g3" "-O0" "-O1" "-O2" "-O3" "-O4" "-O5" "-Os" "-Og"
|
||||
"-Ofast" "-xO0" "-xO1" "-xO2" "-xO3" "-xO4" "-xO5" "-std=c++03" "-std=c++11" "-std=c++14" "-std=c++17"
|
||||
"-m32" "-m64" "-mx32" "-maes" "-mrdrand" "-mrdrnd" "-mrdseed" "-mpclmul" "-Wa,-q" "-mfpu=neon"
|
||||
"-march=armv7a" "-Wall" "-Wextra" "-Wconversion" "-Wcast-align" "-Wformat-security" "-Wtrampolines"
|
||||
"-DCRYPTOPP_DISABLE_ASM" "-DCRYPTOPP_DISABLE_SSSE3" "-DCRYPTOPP_DISABLE_AESNI"
|
||||
"-fsanitize=address" "-fsanitize=undefined" "-march=armv8-a+crypto" "-march=armv8-a+crc"
|
||||
"-march=armv7-a" "-Wall" "-Wextra" "-Wconversion" "-Wcast-align" "-Wformat-security" "-Wtrampolines"
|
||||
"-DCRYPTOPP_DISABLE_ASM" "-DCRYPTOPP_DISABLE_SSSE3" "-DCRYPTOPP_DISABLE_AESNI" "-fsanitize=address"
|
||||
"-fsanitize=undefined" "-march=armv8-a+crypto" "-march=armv8-a+crc" "-march=armv8-a+crc+crypto"
|
||||
"-DDCRYPTOPP_NO_BACKWARDS_COMPATIBILITY_562" "-DCRYPTOPP_NO_UNALIGNED_DATA_ACCESS")
|
||||
|
||||
# Additional CXXFLAGS we did not filter
|
||||
|
|
@ -804,7 +814,7 @@ fi
|
|||
# Add to exercise ARMv7a and NEON more thoroughly
|
||||
if [[ ("$IS_ARM32" -ne "0") ]]; then
|
||||
if [[ ("$HAVE_ARMV7A" -ne "0") ]]; then
|
||||
PLATFORM_CXXFLAGS+=("-march=armv7a ")
|
||||
PLATFORM_CXXFLAGS+=("-march=armv7-a ")
|
||||
fi
|
||||
|
||||
if [[ ("$HAVE_ARM_NEON" -ne "0") ]]; then
|
||||
|
|
@ -862,8 +872,9 @@ echo | tee -a "$TEST_RESULTS"
|
|||
echo "DEBUG_CXXFLAGS: $DEBUG_CXXFLAGS" | tee -a "$TEST_RESULTS"
|
||||
echo "RELEASE_CXXFLAGS: $RELEASE_CXXFLAGS" | tee -a "$TEST_RESULTS"
|
||||
echo "VALGRIND_CXXFLAGS: $VALGRIND_CXXFLAGS" | tee -a "$TEST_RESULTS"
|
||||
if [[ ("${#PLATFORM_CXXFLAGS[@]}" -ne "0") ]]; then echo "PLATFORM_CXXFLAGS: ${PLATFORM_CXXFLAGS[@]}"; fi
|
||||
# echo "ELEVATED_CXXFLAGS: ${ELEVATED_CXXFLAGS[@]}" | tee -a "$TEST_RESULTS"
|
||||
if [[ ("${#PLATFORM_CXXFLAGS[@]}" -ne "0") ]]; then
|
||||
echo "PLATFORM_CXXFLAGS: ${PLATFORM_CXXFLAGS[@]}" | tee -a "$TEST_RESULTS"
|
||||
fi
|
||||
|
||||
#############################################
|
||||
#############################################
|
||||
|
|
@ -2664,6 +2675,9 @@ if [[ "$IS_SOLARIS" -ne "0" ]]; then
|
|||
# Sun Studio 12.2
|
||||
if [[ (-e "/opt/solstudio12.2/bin/CC") ]]; then
|
||||
|
||||
# Sun Studio 12.2 and below workaround, http://github.com/weidai11/cryptopp/issues/228
|
||||
SUNCC_122_CXXFLAGS=$(echo "$SUNCC_CXXFLAGS" | "$AWK" '/SSE/' ORS=' ' RS=' ')
|
||||
|
||||
############################################
|
||||
# Debug build
|
||||
echo
|
||||
|
|
@ -2674,7 +2688,7 @@ if [[ "$IS_SOLARIS" -ne "0" ]]; then
|
|||
"$MAKE" clean > /dev/null 2>&1
|
||||
rm -f adhoc.cpp > /dev/null 2>&1
|
||||
|
||||
CXXFLAGS="-DDEBUG -g -xO0 $SUNCC_CXXFLAGS"
|
||||
CXXFLAGS="-DDEBUG -g -xO0 $SUNCC_122_CXXFLAGS"
|
||||
CXX=/opt/solstudio12.2/bin/CC CXXFLAGS="$CXXFLAGS" "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS"
|
||||
|
||||
if [[ ("${PIPESTATUS[0]}" -ne "0") ]]; then
|
||||
|
|
@ -2700,7 +2714,7 @@ if [[ "$IS_SOLARIS" -ne "0" ]]; then
|
|||
"$MAKE" clean > /dev/null 2>&1
|
||||
rm -f adhoc.cpp > /dev/null 2>&1
|
||||
|
||||
CXXFLAGS="-DNDEBUG -g0 -xO2 $SUNCC_CXXFLAGS"
|
||||
CXXFLAGS="-DNDEBUG -g0 -xO2 $SUNCC_122_CXXFLAGS"
|
||||
CXX=/opt/solstudio12.2/bin/CC CXXFLAGS="$CXXFLAGS" "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS"
|
||||
|
||||
if [[ ("${PIPESTATUS[0]}" -ne "0") ]]; then
|
||||
|
|
|
|||
4
gcm.cpp
4
gcm.cpp
|
|
@ -12,8 +12,8 @@
|
|||
#ifndef CRYPTOPP_IMPORTS
|
||||
#ifndef CRYPTOPP_GENERATE_X64_MASM
|
||||
|
||||
// Clang 3.3 integrated assembler crash on Linux. MacPorts GCC compile error. SunCC crash under Sun Studio 12.5
|
||||
#if (defined(CRYPTOPP_LLVM_CLANG_VERSION) && (CRYPTOPP_LLVM_CLANG_VERSION < 30400)) || defined(CRYPTOPP_CLANG_INTEGRATED_ASSEMBLER) || (__SUNPRO_CC == 0x5140)
|
||||
// Clang 3.3 integrated assembler crash on Linux. MacPorts GCC compile error. SunCC crash under Sun Studio 12.5 and below.
|
||||
#if (defined(CRYPTOPP_LLVM_CLANG_VERSION) && (CRYPTOPP_LLVM_CLANG_VERSION < 30400)) || defined(CRYPTOPP_CLANG_INTEGRATED_ASSEMBLER) || (__SUNPRO_CC <= 0x5140)
|
||||
# undef CRYPTOPP_X86_ASM_AVAILABLE
|
||||
# undef CRYPTOPP_X32_ASM_AVAILABLE
|
||||
# undef CRYPTOPP_X64_ASM_AVAILABLE
|
||||
|
|
|
|||
Loading…
Reference in New Issue