Fixed failed compile on OS X using "-arch i386" due to Clang defining __ILP32__ for everything that is 32-bit. MSVC, GCC, ICC and Comeau were OK
parent
b7d461b4e2
commit
c08cac0cd1
5
config.h
5
config.h
|
|
@ -468,8 +468,9 @@ NAMESPACE_END
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Linux provides X32, which is 32-bit integers, longs and pointers on x86_64 using the full x86_64 register set.
|
// Linux provides X32, which is 32-bit integers, longs and pointers on x86_64 using the full x86_64 register set.
|
||||||
// Detect via __ILP32__ (http://wiki.debian.org/X32Port). Both GCC and Clang provide the preprocessor macro.
|
// Detect via __ILP32__ (http://wiki.debian.org/X32Port). However, __ILP32__ shows up in more places than
|
||||||
#if ((__ILP32__ >= 1) || (_ILP32 >= 1))
|
// the System V ABI specs calls out, like on just about any 32-bit system with Clang.
|
||||||
|
#if ((__ILP32__ >= 1) || (_ILP32 >= 1)) && defined(__x86_64__)
|
||||||
#define CRYPTOPP_BOOL_X32 1
|
#define CRYPTOPP_BOOL_X32 1
|
||||||
#else
|
#else
|
||||||
#define CRYPTOPP_BOOL_X32 0
|
#define CRYPTOPP_BOOL_X32 0
|
||||||
|
|
|
||||||
60
cryptest.sh
60
cryptest.sh
|
|
@ -14,7 +14,7 @@
|
||||||
# Set to suite your taste
|
# Set to suite your taste
|
||||||
TEST_RESULTS=cryptest-result.txt
|
TEST_RESULTS=cryptest-result.txt
|
||||||
BENCHMARK_RESULTS=cryptest-bench.txt
|
BENCHMARK_RESULTS=cryptest-bench.txt
|
||||||
WARN_TEST_RESULTS=cryptest-warn-result.txt
|
WARN_TEST_RESULTS=cryptest-warn.txt
|
||||||
|
|
||||||
# Respect user's preferred flags, but filter the stuff we expliclty test
|
# Respect user's preferred flags, but filter the stuff we expliclty test
|
||||||
#if [ ! -z "CXXFLAGS" ]; then
|
#if [ ! -z "CXXFLAGS" ]; then
|
||||||
|
|
@ -33,6 +33,7 @@ IS_LINUX=$(uname -s | grep -i -c linux)
|
||||||
IS_CYGWIN=$(uname -s | grep -i -c cygwin)
|
IS_CYGWIN=$(uname -s | grep -i -c cygwin)
|
||||||
IS_MINGW=$(uname -s | grep -i -c mingw)
|
IS_MINGW=$(uname -s | grep -i -c mingw)
|
||||||
IS_OPENBSD=$(uname -s | grep -i -c openbsd)
|
IS_OPENBSD=$(uname -s | grep -i -c openbsd)
|
||||||
|
IS_X86_OR_X64=$(uname -m | egrep -i -c "(i386|i586|i686|amd64|x86_64)")
|
||||||
|
|
||||||
# We need to use the C++ compiler to determine if c++11 is available. Otherwise
|
# We need to use the C++ compiler to determine if c++11 is available. Otherwise
|
||||||
# a mis-detection occurs on Mac OS X 10.9 and above. Below, we use the same
|
# a mis-detection occurs on Mac OS X 10.9 and above. Below, we use the same
|
||||||
|
|
@ -105,12 +106,22 @@ if [ "$IS_CYGWIN" -ne "0" ] || [ "$IS_MINGW" -ne "0" ]; then
|
||||||
HAVE_ASAN=0
|
HAVE_ASAN=0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#Final fixups for compilers liek GCC on ARM64
|
# Final fixups for compilers like GCC on ARM64
|
||||||
if [ "$HAVE_UBSAN" -eq "0" ] || [ "$HAVE_ASAN" -eq "0" ]; then
|
if [ "$HAVE_UBSAN" -eq "0" ] || [ "$HAVE_ASAN" -eq "0" ]; then
|
||||||
HAVE_UBAN=0
|
HAVE_UBAN=0
|
||||||
HAVE_ASAN=0
|
HAVE_ASAN=0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Set to 0 if you don't have Multiarch
|
||||||
|
if [ "$IS_X86_OR_X64" -ne "0" ]; then
|
||||||
|
$CXX -x c++ -arch i386 -arch x86_64 -c adhoc.cpp.proto -o $TMP/adhoc > /dev/null 2>&1
|
||||||
|
if [ "$?" -eq "0" ]; then
|
||||||
|
HAVE_MULTIARCH=1
|
||||||
|
else
|
||||||
|
HAVE_MULTIARCH=0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Set to 0 if you don't have Valgrind. Valgrind tests take a long time...
|
# Set to 0 if you don't have Valgrind. Valgrind tests take a long time...
|
||||||
HAVE_VALGRIND=$(which valgrind 2>&1 | grep -v "no valgrind" | grep -i -c valgrind)
|
HAVE_VALGRIND=$(which valgrind 2>&1 | grep -v "no valgrind" | grep -i -c valgrind)
|
||||||
|
|
||||||
|
|
@ -128,6 +139,9 @@ if [ "$IS_DARWIN" -ne "0" ]; then
|
||||||
echo "IS_DARWIN: $IS_DARWIN"
|
echo "IS_DARWIN: $IS_DARWIN"
|
||||||
unset MallocScribble MallocPreScribble MallocGuardEdges
|
unset MallocScribble MallocPreScribble MallocGuardEdges
|
||||||
fi
|
fi
|
||||||
|
if [ "$HAVE_MULTIARCH" -ne "0" ]; then
|
||||||
|
echo "HAVE_MULTIARCH: $HAVE_MULTIARCH"
|
||||||
|
fi
|
||||||
if [ "$IS_LINUX" -ne "0" ]; then
|
if [ "$IS_LINUX" -ne "0" ]; then
|
||||||
echo "IS_LINUX: $IS_LINUX"
|
echo "IS_LINUX: $IS_LINUX"
|
||||||
fi
|
fi
|
||||||
|
|
@ -611,6 +625,48 @@ if [ "$IS_DARWIN" -ne "0" ] && [ "$HAVE_CXX11" -ne "0" ]; then
|
||||||
./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS"
|
./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
############################################
|
||||||
|
# Darwin, Multiarch, c++03
|
||||||
|
if [ "$IS_DARWIN" -ne "0" ] && [ "$IS_X86_OR_X64" -ne "0" ]; then
|
||||||
|
echo
|
||||||
|
echo "************************************" | tee -a "$TEST_RESULTS"
|
||||||
|
echo "Testing: Darwin, Multiarch, c++03" | tee -a "$TEST_RESULTS"
|
||||||
|
echo
|
||||||
|
|
||||||
|
unset CXXFLAGS
|
||||||
|
"$MAKE" clean > /dev/null 2>&1
|
||||||
|
export CXXFLAGS="-DNDEBUG -g2 -O2 -arch i386 -arch x86_64 -std=c++03 $ADD_CXXFLAGS"
|
||||||
|
"$MAKE" static cryptest.exe 2>&1 | tee -a "$TEST_RESULTS"
|
||||||
|
|
||||||
|
echo "Running i386 version..."
|
||||||
|
arch -i386 ./cryptest.exe v 2>&1 | tee -a "$TEST_RESULTS"
|
||||||
|
arch -i386 ./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS"
|
||||||
|
echo "Running x86_64 version..."
|
||||||
|
arch -x86_64 ./cryptest.exe v 2>&1 | tee -a "$TEST_RESULTS"
|
||||||
|
arch -x86_64 ./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
############################################
|
||||||
|
# Darwin, Multiarch, c++11
|
||||||
|
if [ "$IS_DARWIN" -ne "0" ] && [ "$IS_X86_OR_X64" -ne "0" ]; then
|
||||||
|
echo
|
||||||
|
echo "************************************" | tee -a "$TEST_RESULTS"
|
||||||
|
echo "Testing: Darwin, Multiarch, c++11" | tee -a "$TEST_RESULTS"
|
||||||
|
echo
|
||||||
|
|
||||||
|
unset CXXFLAGS
|
||||||
|
"$MAKE" clean > /dev/null 2>&1
|
||||||
|
export CXXFLAGS="-DNDEBUG -g2 -O2 -arch i386 -arch x86_64 -std=c++11 $ADD_CXXFLAGS"
|
||||||
|
"$MAKE" static cryptest.exe 2>&1 | tee -a "$TEST_RESULTS"
|
||||||
|
|
||||||
|
echo "Running i386 version..."
|
||||||
|
arch -i386 ./cryptest.exe v 2>&1 | tee -a "$TEST_RESULTS"
|
||||||
|
arch -i386 ./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS"
|
||||||
|
echo "Running x86_64 version..."
|
||||||
|
arch -x86_64 ./cryptest.exe v 2>&1 | tee -a "$TEST_RESULTS"
|
||||||
|
arch -x86_64 ./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS"
|
||||||
|
fi
|
||||||
|
|
||||||
############################################
|
############################################
|
||||||
# Darwin, c++03, Malloc Guards
|
# Darwin, c++03, Malloc Guards
|
||||||
if [ "$IS_DARWIN" -ne "0" ] && [ "$HAVE_CXX03" -ne "0" ]; then
|
if [ "$IS_DARWIN" -ne "0" ] && [ "$HAVE_CXX03" -ne "0" ]; then
|
||||||
|
|
|
||||||
6
gcm.cpp
6
gcm.cpp
|
|
@ -686,7 +686,7 @@ size_t GCM_Base::AuthenticateBlocks(const byte *data, size_t len)
|
||||||
AS2( psrldq xmm0, 15 )
|
AS2( psrldq xmm0, 15 )
|
||||||
#if (CRYPTOPP_CLANG_VERSION >= 30600) || (CRYPTOPP_APPLE_CLANG_VERSION >= 70000)
|
#if (CRYPTOPP_CLANG_VERSION >= 30600) || (CRYPTOPP_APPLE_CLANG_VERSION >= 70000)
|
||||||
AS2( movd edi, xmm0 )
|
AS2( movd edi, xmm0 )
|
||||||
#elif defined(CRYPTOPP_CLANG_VERSION) || defined(CRYPTOPP_APPLE_CLANG_VERSION)
|
#elif (defined(CRYPTOPP_CLANG_VERSION) || defined(CRYPTOPP_APPLE_CLANG_VERSION)) && defined(CRYPTOPP_X64_ASM_AVAILABLE)
|
||||||
AS2( mov WORD_REG(di), xmm0 )
|
AS2( mov WORD_REG(di), xmm0 )
|
||||||
#else // GNU Assembler
|
#else // GNU Assembler
|
||||||
AS2( movd WORD_REG(di), xmm0 )
|
AS2( movd WORD_REG(di), xmm0 )
|
||||||
|
|
@ -701,7 +701,7 @@ size_t GCM_Base::AuthenticateBlocks(const byte *data, size_t len)
|
||||||
AS2( psrldq xmm1, 15 )
|
AS2( psrldq xmm1, 15 )
|
||||||
#if (CRYPTOPP_CLANG_VERSION >= 30600) || (CRYPTOPP_APPLE_CLANG_VERSION >= 70000)
|
#if (CRYPTOPP_CLANG_VERSION >= 30600) || (CRYPTOPP_APPLE_CLANG_VERSION >= 70000)
|
||||||
AS2( movd edi, xmm1 )
|
AS2( movd edi, xmm1 )
|
||||||
#elif defined(CRYPTOPP_CLANG_VERSION) || defined(CRYPTOPP_APPLE_CLANG_VERSION)
|
#elif (defined(CRYPTOPP_CLANG_VERSION) || defined(CRYPTOPP_APPLE_CLANG_VERSION)) && defined(CRYPTOPP_X64_ASM_AVAILABLE)
|
||||||
AS2( mov WORD_REG(di), xmm1 )
|
AS2( mov WORD_REG(di), xmm1 )
|
||||||
#else
|
#else
|
||||||
AS2( movd WORD_REG(di), xmm1 )
|
AS2( movd WORD_REG(di), xmm1 )
|
||||||
|
|
@ -712,7 +712,7 @@ size_t GCM_Base::AuthenticateBlocks(const byte *data, size_t len)
|
||||||
AS2( psrldq xmm0, 15 )
|
AS2( psrldq xmm0, 15 )
|
||||||
#if (CRYPTOPP_CLANG_VERSION >= 30600) || (CRYPTOPP_APPLE_CLANG_VERSION >= 70000)
|
#if (CRYPTOPP_CLANG_VERSION >= 30600) || (CRYPTOPP_APPLE_CLANG_VERSION >= 70000)
|
||||||
AS2( movd edi, xmm0 )
|
AS2( movd edi, xmm0 )
|
||||||
#elif defined(CRYPTOPP_CLANG_VERSION) || defined(CRYPTOPP_APPLE_CLANG_VERSION)
|
#elif (defined(CRYPTOPP_CLANG_VERSION) || defined(CRYPTOPP_APPLE_CLANG_VERSION)) && defined(CRYPTOPP_X64_ASM_AVAILABLE)
|
||||||
AS2( mov WORD_REG(di), xmm0 )
|
AS2( mov WORD_REG(di), xmm0 )
|
||||||
#else
|
#else
|
||||||
AS2( movd WORD_REG(di), xmm0 )
|
AS2( movd WORD_REG(di), xmm0 )
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue