diff --git a/GNUmakefile b/GNUmakefile index b2ec5c69..3ece2acd 100755 --- a/GNUmakefile +++ b/GNUmakefile @@ -17,41 +17,47 @@ RANLIB ?= ranlib CP ?= cp MV ?= mv RM ?= rm -f -EGREP ?= egrep CHMOD ?= chmod MKDIR ?= mkdir LN ?= ln -sf LDCONF ?= /sbin/ldconfig -n UNAME := $(shell uname) -IS_X86 := $(shell uname -m | $(EGREP) -v "x86_64" | $(EGREP) -i -c "i.86|x86|i86") -IS_X64 := $(shell uname -m | $(EGREP) -i -c "(_64|d64)") -IS_PPC := $(shell uname -m | $(EGREP) -i -c "ppc|power") -IS_ARM32 := $(shell uname -m | $(EGREP) -i -c '\') -IS_ARM64 := $(shell uname -m | $(EGREP) -i -c 'aarch64') -IS_ARMV8 ?= $(shell uname -m | $(EGREP) -i -c 'aarch32|aarch64') -IS_NEON ?= $(shell uname -m | $(EGREP) -i -c 'armv7|armv8|aarch32|aarch64') -IS_SPARC := $(shell uname -m | $(EGREP) -i -c "sparc") -IS_SPARC64 := $(shell uname -m | $(EGREP) -i -c "sparc64") +# Solaris provides a non-Posix shell at /usr/bin +ifneq ($(wildcard /usr/xpg4/bin),) + GREP ?= /usr/xpg4/bin/grep +else + GREP ?= grep +endif -IS_SUN := $(shell uname | $(EGREP) -i -c "SunOS") -IS_LINUX := $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "Linux") -IS_MINGW := $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "MinGW") -IS_CYGWIN := $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "Cygwin") -IS_DARWIN := $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "Darwin") -IS_NETBSD := $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "NetBSD") +IS_X86 := $(shell uname -m | $(GREP) -v "x86_64" | $(GREP) -i -c -E "i.86|x86|i86") +IS_X64 := $(shell uname -m | $(GREP) -i -c -E "(_64|d64)") +IS_PPC := $(shell uname -m | $(GREP) -i -c "ppc|power") +IS_ARM32 := $(shell uname -m | $(GREP) -i -c '\') +IS_ARM64 := $(shell uname -m | $(GREP) -i -c 'aarch64') +IS_ARMV8 ?= $(shell uname -m | $(GREP) -i -c 'aarch32|aarch64') +IS_NEON ?= $(shell uname -m | $(GREP) -i -c -E 'armv7|armv8|aarch32|aarch64') +IS_SPARC := $(shell uname -m | $(GREP) -i -c "sparc") +IS_SPARC64 := $(shell uname -m | $(GREP) -i -c "sparc64") -SUN_COMPILER := $(shell $(CXX) -V 2>&1 | $(EGREP) -i -c "CC: (Sun|Studio)") -GCC_COMPILER := $(shell $(CXX) --version 2>&1 | $(EGREP) -i -v "clang" | $(EGREP) -i -c "(gcc|g\+\+)") -CLANG_COMPILER := $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "clang") -INTEL_COMPILER := $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "\(icc\)") -MACPORTS_COMPILER := $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "macports") +IS_SUN := $(shell uname | $(GREP) -i -c "SunOS") +IS_LINUX := $(shell $(CXX) -dumpmachine 2>&1 | $(GREP) -i -c "Linux") +IS_MINGW := $(shell $(CXX) -dumpmachine 2>&1 | $(GREP) -i -c "MinGW") +IS_CYGWIN := $(shell $(CXX) -dumpmachine 2>&1 | $(GREP) -i -c "Cygwin") +IS_DARWIN := $(shell $(CXX) -dumpmachine 2>&1 | $(GREP) -i -c "Darwin") +IS_NETBSD := $(shell $(CXX) -dumpmachine 2>&1 | $(GREP) -i -c "NetBSD") + +SUN_COMPILER := $(shell $(CXX) -V 2>&1 | $(GREP) -i -c -E "CC: (Sun|Studio)") +GCC_COMPILER := $(shell $(CXX) --version 2>&1 | $(GREP) -i -v "clang" | $(GREP) -i -c -E "(gcc|g\+\+)") +CLANG_COMPILER := $(shell $(CXX) --version 2>&1 | $(GREP) -i -c "clang") +INTEL_COMPILER := $(shell $(CXX) --version 2>&1 | $(GREP) -i -c "\(icc\)") +MACPORTS_COMPILER := $(shell $(CXX) --version 2>&1 | $(GREP) -i -c "macports") # Sun Studio 12.0 provides SunCC 0x0510; and Sun Studio 12.3 provides SunCC 0x0512 -SUNCC_510_OR_LATER := $(shell $(CXX) -V 2>&1 | $(EGREP) -c "CC: (Sun|Studio) .* (5\.1[0-9]|5\.[2-9]|6\.)") -SUNCC_511_OR_LATER := $(shell $(CXX) -V 2>&1 | $(EGREP) -c "CC: (Sun|Studio) .* (5\.1[1-9]|5\.[2-9]|6\.)") -SUNCC_512_OR_LATER := $(shell $(CXX) -V 2>&1 | $(EGREP) -c "CC: (Sun|Studio) .* (5\.1[2-9]|5\.[2-9]|6\.)") -SUNCC_513_OR_LATER := $(shell $(CXX) -V 2>&1 | $(EGREP) -c "CC: (Sun|Studio) .* (5\.1[3-9]|5\.[2-9]|6\.)") +SUNCC_510_OR_LATER := $(shell $(CXX) -V 2>&1 | $(GREP) -i -c -E "CC: (Sun|Studio) .* (5\.1[0-9]|5\.[2-9]|6\.)") +SUNCC_511_OR_LATER := $(shell $(CXX) -V 2>&1 | $(GREP) -i -c -E "CC: (Sun|Studio) .* (5\.1[1-9]|5\.[2-9]|6\.)") +SUNCC_512_OR_LATER := $(shell $(CXX) -V 2>&1 | $(GREP) -i -c -E "CC: (Sun|Studio) .* (5\.1[2-9]|5\.[2-9]|6\.)") +SUNCC_513_OR_LATER := $(shell $(CXX) -V 2>&1 | $(GREP) -i -c -E "CC: (Sun|Studio) .* (5\.1[3-9]|5\.[2-9]|6\.)") # Enable shared object versioning for Linux HAS_SOLIB_VERSION := $(IS_LINUX) @@ -70,12 +76,12 @@ endif # Fixup SunOS ifeq ($(IS_SUN),1) -IS_X86 := $(shell isainfo -k 2>/dev/null | $(EGREP) -i -c "i386") -IS_X64 := $(shell isainfo -k 2>/dev/null | $(EGREP) -i -c "amd64") +IS_X86 := $(shell isainfo -k 2>/dev/null | $(GREP) -i -c "i386") +IS_X64 := $(shell isainfo -k 2>/dev/null | $(GREP) -i -c "amd64") endif # Newlib needs _XOPEN_SOURCE=700 for signals -HAS_NEWLIB := $(shell $(CXX) -x c++ $(CXXFLAGS) -dM -E adhoc.cpp.proto 2>&1 | $(EGREP) -i -c "__NEWLIB__") +HAS_NEWLIB := $(shell $(CXX) -x c++ $(CXXFLAGS) -dM -E adhoc.cpp.proto 2>&1 | $(GREP) -i -c "__NEWLIB__") ########################################################### ##### General Variables ##### @@ -138,24 +144,24 @@ ifneq ($(IS_X86)$(IS_X32)$(IS_X64),000) # Fixup. Clang reports an error rather than "LLVM assembler" or similar. ifneq ($(MACPORTS_COMPILER),1) - HAVE_GAS := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler") + HAVE_GAS := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(GREP) -c "GNU assembler") endif ifneq ($(GCC_COMPILER),0) - IS_GCC_29 := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c gcc-9[0-9][0-9]) - GCC42_OR_LATER := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "gcc version (4\.[2-9]|[5-9]\.)") - GCC46_OR_LATER := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "gcc version (4\.[6-9]|[5-9]\.)") + IS_GCC_29 := $(shell $(CXX) -v 2>&1 | $(GREP) -i -c -E gcc-9[0-9][0-9]) + GCC42_OR_LATER := $(shell $(CXX) -v 2>&1 | $(GREP) -i -c -E "gcc version (4\.[2-9]|[5-9]\.)") + GCC46_OR_LATER := $(shell $(CXX) -v 2>&1 | $(GREP) -i -c -E "gcc version (4\.[6-9]|[5-9]\.)") endif ifneq ($(HAVE_GAS),0) - GAS210_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.[1-9][0-9]|[3-9])") - GAS217_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.1[7-9]|2\.[2-9]|[3-9])") - GAS218_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.1[8-9]|2\.[2-9]|[3-9])") - GAS219_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.19|2\.[2-9]|[3-9])") - GAS223_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.2[3-9]|2\.[3-9]|[3-9])") + GAS210_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(GREP) -c -E "GNU assembler version (2\.[1-9][0-9]|[3-9])") + GAS217_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(GREP) -c -E "GNU assembler version (2\.1[7-9]|2\.[2-9]|[3-9])") + GAS218_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(GREP) -c -E "GNU assembler version (2\.1[8-9]|2\.[2-9]|[3-9])") + GAS219_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(GREP) -c -E "GNU assembler version (2\.19|2\.[2-9]|[3-9])") + GAS223_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(GREP) -c -E "GNU assembler version (2\.2[3-9]|2\.[3-9]|[3-9])") endif -ICC111_OR_LATER := $(shell $(CXX) --version 2>&1 | $(EGREP) -c "\(ICC\) ([2-9][0-9]|1[2-9]|11\.[1-9])") +ICC111_OR_LATER := $(shell $(CXX) --version 2>&1 | $(GREP) -c -E "\(ICC\) ([2-9][0-9]|1[2-9]|11\.[1-9])") # Add -fPIC for targets *except* X86, X32, Cygwin or MinGW ifeq ($(IS_X86)$(IS_X32)$(IS_CYGWIN)$(IS_MINGW)$(SUN_COMPILER),00000) @@ -189,28 +195,28 @@ endif # -DCRYPTOPP_DISABLE_ASM endif # CXXFLAGS ifeq ($(findstring -DCRYPTOPP_DISABLE_SSSE3,$(CXXFLAGS)),) - HAVE_SSSE3 = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -mssse3 -dM -E - 2>/dev/null | $(EGREP) -i -c __SSSE3__) + HAVE_SSSE3 = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -mssse3 -dM -E - 2>/dev/null | $(GREP) -i -c __SSSE3__) ifeq ($(HAVE_SSSE3),1) ARIA_FLAG = -mssse3 SSSE3_FLAG = -mssse3 endif ifeq ($(findstring -DCRYPTOPP_DISABLE_SSE4,$(CXXFLAGS)),) - HAVE_SSE4 = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -msse4.2 -dM -E - 2>/dev/null | $(EGREP) -i -c __SSE4_2__) + HAVE_SSE4 = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -msse4.2 -dM -E - 2>/dev/null | $(GREP) -i -c __SSE4_2__) ifeq ($(HAVE_SSE4),1) BLAKE2_FLAG = -msse4.2 CRC_FLAG = -msse4.2 endif ifeq ($(findstring -DCRYPTOPP_DISABLE_AESNI,$(CXXFLAGS)),) - HAVE_CLMUL = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -mssse3 -mpclmul -dM -E - 2>/dev/null | $(EGREP) -i -c __PCLMUL__ ) + HAVE_CLMUL = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -mssse3 -mpclmul -dM -E - 2>/dev/null | $(GREP) -i -c __PCLMUL__ ) ifeq ($(HAVE_CLMUL),1) GCM_FLAG = -mssse3 -mpclmul endif - HAVE_AES = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -msse4.1 -maes -dM -E - 2>/dev/null | $(EGREP) -i -c __AES__) + HAVE_AES = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -msse4.1 -maes -dM -E - 2>/dev/null | $(GREP) -i -c __AES__) ifeq ($(HAVE_AES),1) AES_FLAG = -msse4.1 -maes endif ifeq ($(findstring -DCRYPTOPP_DISABLE_SHA,$(CXXFLAGS)),) - HAVE_SHA = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -msse4.2 -msha -dM -E - 2>/dev/null | $(EGREP) -i -c __SHA__) + HAVE_SHA = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -msse4.2 -msha -dM -E - 2>/dev/null | $(GREP) -i -c __SHA__) ifeq ($(HAVE_SHA),1) SHA_FLAG = -msse4.2 -msha endif @@ -221,25 +227,25 @@ endif # -DCRYPTOPP_DISABLE_SSSE3 # Begin SunCC ifeq ($(SUN_COMPILER),1) - COUNT := $(shell $(CXX) $(CXXFLAGS) -E -xarch=ssse3 -xdumpmacros /dev/null 2>&1 | $(EGREP) -i -c "illegal value ignored") + COUNT := $(shell $(CXX) $(CXXFLAGS) -E -xarch=ssse3 -xdumpmacros /dev/null 2>&1 | $(GREP) -i -c "illegal value ignored") ifeq ($(COUNT),0) SSSE3_FLAG = -xarch=ssse3 -D__SSSE3__=1 ARIA_FLAG = -xarch=ssse3 -D__SSSE3__=1 LDFLAGS += -xarch=ssse3 endif - COUNT := $(shell $(CXX) $(CXXFLAGS) -E -xarch=sse4_2 -xdumpmacros /dev/null 2>&1 | $(EGREP) -i -c "illegal value ignored") + COUNT := $(shell $(CXX) $(CXXFLAGS) -E -xarch=sse4_2 -xdumpmacros /dev/null 2>&1 | $(GREP) -i -c "illegal value ignored") ifeq ($(COUNT),0) BLAKE2_FLAG = -xarch=sse4_2 -D__SSE4_2__=1 CRC_FLAG = -xarch=sse4_2 -D__SSE4_2__=1 LDFLAGS += -xarch=sse4_2 endif - COUNT := $(shell $(CXX) $(CXXFLAGS) -E -xarch=aes -xdumpmacros /dev/null 2>&1 | $(EGREP) -i -c "illegal value ignored") + COUNT := $(shell $(CXX) $(CXXFLAGS) -E -xarch=aes -xdumpmacros /dev/null 2>&1 | $(GREP) -i -c "illegal value ignored") ifeq ($(COUNT),0) GCM_FLAG = -xarch=aes -D__PCLMUL__=1 AES_FLAG = -xarch=aes -D__AES__=1 LDFLAGS += -xarch=aes endif - COUNT := $(shell $(CXX) $(CXXFLAGS) -E -xarch=sha -xdumpmacros /dev/null 2>&1 | $(EGREP) -i -c "illegal value ignored") + COUNT := $(shell $(CXX) $(CXXFLAGS) -E -xarch=sha -xdumpmacros /dev/null 2>&1 | $(GREP) -i -c "illegal value ignored") ifeq ($(COUNT),0) SHA_FLAG = -xarch=sha -D__SHA__=1 LDFLAGS += -xarch=sha @@ -311,7 +317,7 @@ endif endif ifeq ($(IS_NEON),1) - HAVE_NEON = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv7-a -mfloat-abi=$(FP_ABI) -mfpu=neon -dM -E - 2>/dev/null | $(EGREP) -i -c '\<__ARM_NEON\>') + HAVE_NEON = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv7-a -mfloat-abi=$(FP_ABI) -mfpu=neon -dM -E - 2>/dev/null | $(GREP) -i -c -E '\<__ARM_NEON\>') ifeq ($(HAVE_NEON),1) NEON_FLAG = -march=armv7-a -mfloat-abi=$(FP_ABI) -mfpu=neon GCM_FLAG = -march=armv7-a -mfloat-abi=$(FP_ABI) -mfpu=neon @@ -321,17 +327,17 @@ ifeq ($(IS_NEON),1) endif ifeq ($(IS_ARMV8),1) - HAVE_NEON = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv8-a -dM -E - 2>/dev/null | $(EGREP) -i -c __ARM_NEON) + HAVE_NEON = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv8-a -dM -E - 2>/dev/null | $(GREP) -i -c __ARM_NEON) ifeq ($(HAVE_NEON),1) ARIA_FLAG = -march=armv8-a BLAKE2_FLAG = -march=armv8-a NEON_FLAG = -march=armv8-a endif - HAVE_CRC = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv8-a+crc -dM -E - 2>/dev/null | $(EGREP) -i -c __ARM_FEATURE_CRC32) + HAVE_CRC = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv8-a+crc -dM -E - 2>/dev/null | $(GREP) -i -c __ARM_FEATURE_CRC32) ifeq ($(HAVE_NEON),1) CRC_FLAG = -march=armv8-a+crc endif - HAVE_CRYPTO = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv8-a+crypto -dM -E - 2>/dev/null | $(EGREP) -i -c __ARM_FEATURE_CRYPTO) + HAVE_CRYPTO = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv8-a+crypto -dM -E - 2>/dev/null | $(GREP) -i -c __ARM_FEATURE_CRYPTO) ifeq ($(HAVE_NEON),1) AES_FLAG = -march=armv8-a+crypto GCM_FLAG = -march=armv8-a+crypto @@ -381,7 +387,7 @@ endif # Add -errtags=yes to get the name for a warning suppression ifneq ($(SUN_COMPILER),0) # override flags for CC Sun C++ compiler -IS_64 := $(shell isainfo -b 2>/dev/null | $(EGREP) -i -c "64") +IS_64 := $(shell isainfo -b 2>/dev/null | $(GREP) -i -c "64") ifeq ($(IS_64),1) CXXFLAGS += -m64 else ifeq ($(IS_64),0) @@ -397,7 +403,7 @@ CXXFLAGS += -template=no%extdef ifneq ($(IS_SPARC)$(IS_SPARC64),00) CXXFLAGS += -xmemalign=4i endif -SUN_CC10_BUGGY := $(shell $(CXX) -V 2>&1 | $(EGREP) -c "CC: Sun .* 5\.10 .* (2009|2010/0[1-4])") +SUN_CC10_BUGGY := $(shell $(CXX) -V 2>&1 | $(GREP) -c -E "CC: Sun .* 5\.10 .* (2009|2010/0[1-4])") ifneq ($(SUN_CC10_BUGGY),0) # -DCRYPTOPP_INCLUDE_VECTOR_CC is needed for Sun Studio 12u1 Sun C++ 5.10 SunOS_i386 128229-02 2009/09/21 and was fixed in May 2010 # remove it if you get "already had a body defined" errors in vector.cc @@ -458,7 +464,7 @@ endif # Asan # LD gold linker testing. Triggered by 'LD=ld.gold'. ifeq ($(findstring ld.gold,$(LD)),ld.gold) ifeq ($(findstring -fuse-ld=gold,$(CXXFLAGS)),) - ELF_FORMAT := $(shell file `which ld.gold` 2>&1 | cut -d":" -f 2 | $(EGREP) -i -c "elf") + ELF_FORMAT := $(shell file `which ld.gold` 2>&1 | cut -d":" -f 2 | $(GREP) -i -c "elf") ifneq ($(ELF_FORMAT),0) LDFLAGS += -fuse-ld=gold endif # ELF/ELF64 @@ -505,7 +511,7 @@ endif # Valgrind # Debug testing on GNU systems. Triggered by -DDEBUG. # Newlib test due to http://sourceware.org/bugzilla/show_bug.cgi?id=20268 ifneq ($(filter -DDEBUG -DDEBUG=1,$(CXXFLAGS)),) - USING_GLIBCXX := $(shell $(CXX) -x c++ $(CXXFLAGS) -E adhoc.cpp.proto 2>&1 | $(EGREP) -i -c "__GLIBCXX__") + USING_GLIBCXX := $(shell $(CXX) -x c++ $(CXXFLAGS) -E adhoc.cpp.proto 2>&1 | $(GREP) -i -c "__GLIBCXX__") ifneq ($(USING_GLIBCXX),0) ifeq ($(HAS_NEWLIB),0) ifeq ($(findstring -D_GLIBCXX_DEBUG,$(CXXFLAGS)),) @@ -535,7 +541,7 @@ ifeq ($(findstring lean,$(MAKECMDGOALS)),lean) endif # Dead code stripping # For Shared Objects, Diff, Dist/Zip rules -LIB_VER := $(shell $(EGREP) "define CRYPTOPP_VERSION" config.h | cut -d" " -f 3) +LIB_VER := $(shell $(GREP) "define CRYPTOPP_VERSION" config.h | cut -d" " -f 3) LIB_MAJOR := $(shell echo $(LIB_VER) | cut -c 1) LIB_MINOR := $(shell echo $(LIB_VER) | cut -c 2) LIB_PATCH := $(shell echo $(LIB_VER) | cut -c 3) @@ -663,7 +669,7 @@ sources: adhoc.cpp DOCUMENT_DIRECTORY := ref$(LIB_VER) # Directory Doxygen uses (specified in Doygen config file) ifeq ($(wildcard Doxyfile),Doxyfile) -DOXYGEN_DIRECTORY := $(strip $(shell $(EGREP) "OUTPUT_DIRECTORY" Doxyfile | $(EGREP) -v "\#" | cut -d "=" -f 2)) +DOXYGEN_DIRECTORY := $(strip $(shell $(GREP) "OUTPUT_DIRECTORY" Doxyfile | $(GREP) -v "\#" | cut -d "=" -f 2)) endif # Default directory (in case its missing in the config file) ifeq ($(strip $(DOXYGEN_DIRECTORY)),) diff --git a/TestScripts/cryptest.sh b/TestScripts/cryptest.sh index 8198119c..28533c9e 100755 --- a/TestScripts/cryptest.sh +++ b/TestScripts/cryptest.sh @@ -69,14 +69,30 @@ unset MallocScribble MallocPreScribble MallocGuardEdges # Setup tools and platforms GREP=grep -EGREP=egrep SED=sed AWK=awk +MAKE=make -# Code generation tests DISASS=objdump DISASSARGS=("--disassemble") +# Fixup, Solaris and friends +if [[ (-d /usr/xpg4/bin) ]]; then + SED=/usr/xpg4/bin/sed + AWK=/usr/xpg4/bin/awk + GREP=/usr/xpg4/bin/grep +elif [[ (-d /usr/bin/posix) ]]; then + SED=/usr/bin/posix/sed + AWK=/usr/bin/posix/awk + GREP=/usr/bin/posix/grep +fi + +# Fixup, Solaris and BSDs +GMAKE=$(which gmake 2>/dev/null | "$GREP" -v "no gmake" | head -1) +if [[ ! -z "$GMAKE" ]]; then + MAKE=$GMAKE +fi + THIS_SYSTEM=$(uname -s 2>&1) IS_DARWIN=$(echo -n "$THIS_SYSTEM" | "$GREP" -i -c darwin) IS_LINUX=$(echo -n "$THIS_SYSTEM" | "$GREP" -i -c linux) @@ -93,37 +109,16 @@ IS_FEDORA=$(lsb_release -a 2>&1 | "$GREP" -i -c fedora) IS_UBUNTU=$(lsb_release -a 2>&1 | "$GREP" -i -c ubuntu) THIS_MACHINE=$(uname -m 2>&1) -IS_X86=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(i386|i486|i686|i686)") -IS_X64=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(amd64|x86_64)") -IS_PPC=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(Power|PPC)") -IS_ARM32=$(echo -n "$THIS_MACHINE" | "$GREP" -v "64" | "$EGREP" -i -c "(arm|aarch32)") -IS_ARM64=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(arm64|aarch64)") -IS_S390=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "s390") +IS_X86=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(i386|i486|i686|i686)") +IS_X64=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(amd64|x86_64)") +IS_PPC=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(Power|PPC)") +IS_ARM32=$(echo -n "$THIS_MACHINE" | "$GREP" -v "64" | "$GREP" -i -c -E "(arm|aarch32)") +IS_ARM64=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(arm64|aarch64)") +IS_S390=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c "s390") IS_X32=0 # Fixup if [[ "$IS_SOLARIS" -ne "0" ]]; then - IS_X64=$(isainfo 2>/dev/null | "$GREP" -i -c "amd64") - if [[ "$IS_X64" -ne "0" ]]; then - IS_X86=0 - fi - - # Need something more powerful than the Posix versions - if [[ (-e "/usr/gnu/bin/grep") ]]; then - GREP=/usr/gnu/bin/grep; - fi - if [[ (-e "/usr/gnu/bin/egrep") ]]; then - EGREP=/usr/gnu/bin/egrep; - fi - if [[ (-e "/usr/gnu/bin/sed") ]]; then - SED=/usr/gnu/bin/sed; - fi - if [[ (-e "/usr/gnu/bin/awk") ]]; then - AWK=/usr/gnu/bin/awk; - else - AWK=nawk; - fi - DISASS=dis DISASSARGS=() fi @@ -134,18 +129,6 @@ if [[ "$IS_DARWIN" -ne 0 ]]; then DISASSARGS=("-tV") fi -# Fixup -if [[ ("$IS_FREEBSD" -ne "0" || "$IS_OPENBSD" -ne "0" || "$IS_NETBSD" -ne "0" || "$IS_DRAGONFLY" -ne "0") ]]; then - MAKE=gmake -elif [[ ("$IS_SOLARIS" -ne "0") ]]; then - MAKE=$(which gmake 2>/dev/null | "$GREP" -v "no gmake" | head -1) - if [[ (-z "$MAKE") && (-e "/usr/sfw/bin/gmake") ]]; then - MAKE=/usr/sfw/bin/gmake - fi -else - MAKE=make -fi - # CPU features and flags if [[ ("$IS_X86" -ne "0" || "$IS_X64" -ne "0") ]]; then if [[ ("$IS_DARWIN" -ne "0") ]]; then @@ -170,13 +153,13 @@ 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 + if [[ ($("$GREP" -ix "fast" <<< "$ARG") || $("$GREP" -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 + elif [[ ($("$GREP" -ix "farm" <<< "$ARG") || $("$GREP" -ix "nice" <<< "$ARG")) ]]; then WANT_NICE=1 - elif [[ ($("$EGREP" -ix "orig" <<< "$ARG") || $("$EGREP" -ix "original" <<< "$ARG") || $("$EGREP" -ix "config.h" <<< "$ARG")) ]]; then + elif [[ ($("$GREP" -ix "orig" <<< "$ARG") || $("$GREP" -ix "original" <<< "$ARG") || $("$GREP" -ix "config.h" <<< "$ARG")) ]]; then git checkout config.h > /dev/null 2>&1 else echo "Unknown option $ARG" @@ -217,32 +200,32 @@ if [[ ((-z "$CXX") || ("$CXX" == "gcc")) ]]; then fi fi -SUN_COMPILER=$("$CXX" -V 2>&1 | "$EGREP" -i -c "CC: (Sun|Studio)") -GCC_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -v "clang" | "$EGREP" -i -c "(gcc|g\+\+)") -INTEL_COMPILER=$("$CXX" --version 2>&1 | "$EGREP" -i -c "\(icc\)") -MACPORTS_COMPILER=$("$CXX" --version 2>&1 | "$EGREP" -i -c "MacPorts") -CLANG_COMPILER=$("$CXX" --version 2>&1 | "$EGREP" -i -c "clang") +SUN_COMPILER=$("$CXX" -V 2>&1 | "$GREP" -i -c -E "CC: (Sun|Studio)") +GCC_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -v "clang" | "$GREP" -i -c -E "(gcc|g\+\+)") +INTEL_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "\(icc\)") +MACPORTS_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "MacPorts") +CLANG_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "clang") if [[ ("$SUN_COMPILER" -eq "0") ]]; then - AMD64=$("$CXX" -dM -E - /dev/null | "$EGREP" -c "(__x64_64__|__amd64__)") - ILP32=$("$CXX" -dM -E - /dev/null | "$EGREP" -c "(__ILP32__|__ILP32)") + AMD64=$("$CXX" -dM -E - /dev/null | "$GREP" -i -c -E "(__x64_64__|__amd64__)") + ILP32=$("$CXX" -dM -E - /dev/null | "$GREP" -i -c -E "(__ILP32__|__ILP32)") if [[ ("$AMD64" -ne "0") && ("$ILP32" -ne "0") ]]; then IS_X32=1 fi fi # Now that the compiler is fixed, determine the compiler version for fixups -CLANG_37_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'clang version (3\.[7-9]|[4-9]\.[0-9])') -GCC_70_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version (7\.[0-9]|[8-9])') -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') -GCC_49_COMPILER=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version 4\.9') -GCC_49_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version (4\.9|[5-9]\.[0-9])') -SUNCC_510_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "CC: (Sun|Studio) .* (5\.1[0-9]|5\.[2-9]|[6-9]\.)") -SUNCC_511_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "CC: (Sun|Studio) .* (5\.1[1-9]|5\.[2-9]|[6-9]\.)") -SUNCC_512_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "CC: (Sun|Studio) .* (5\.1[2-9]|5\.[2-9]|[6-9]\.)") -SUNCC_513_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "CC: (Sun|Studio) .* (5\.1[3-9]|5\.[2-9]|[6-9]\.)") +CLANG_37_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'clang version (3\.[7-9]|[4-9]\.[0-9])') +GCC_70_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version (7\.[0-9]|[8-9])') +GCC_60_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version (6\.[0-9]|[7-9])') +GCC_51_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version (5\.[1-9]|[6-9])') +GCC_48_COMPILER=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version 4\.8') +GCC_49_COMPILER=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version 4\.9') +GCC_49_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version (4\.9|[5-9]\.[0-9])') +SUNCC_510_OR_ABOVE=$("$CXX" -V 2>&1 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[0-9]|5\.[2-9]|[6-9]\.)") +SUNCC_511_OR_ABOVE=$("$CXX" -V 2>&1 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[1-9]|5\.[2-9]|[6-9]\.)") +SUNCC_512_OR_ABOVE=$("$CXX" -V 2>&1 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[2-9]|5\.[2-9]|[6-9]\.)") +SUNCC_513_OR_ABOVE=$("$CXX" -V 2>&1 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[3-9]|5\.[2-9]|[6-9]\.)") # Fixup, bad code generation if [[ ("$SUNCC_510_OR_ABOVE" -ne "0") ]]; then @@ -480,7 +463,7 @@ OPT_PIC= rm -f "$TMPDIR/adhoc.exe" > /dev/null 2>&1 if [[ (-z "$HAVE_PIC") ]]; then HAVE_PIC=0 - PIC_PROBLEMS=$("$CXX" -DCRYPTOPP_ADHOC_MAIN -fPIC adhoc.cpp -o "$TMPDIR/adhoc.exe" 2>&1 | "$EGREP" -ic '(warning|error)') + PIC_PROBLEMS=$("$CXX" -DCRYPTOPP_ADHOC_MAIN -fPIC adhoc.cpp -o "$TMPDIR/adhoc.exe" 2>&1 | "$GREP" -i -c -E '(warning|error)') if [[ "$PIC_PROBLEMS" -eq "0" ]]; then HAVE_PIC=1 OPT_PIC=-fPIC @@ -605,7 +588,7 @@ if [[ (-z "$HAVE_LDGOLD") ]]; then LD_GOLD=$(which ld.gold 2>&1 | "$GREP" -v "no ld.gold" | head -1) ELF_FILE=$(which file 2>&1 | "$GREP" -v "no file" | head -1) if [[ (! -z "$LD_GOLD") && (! -z "$ELF_FILE") ]]; then - LD_GOLD=$(file "$LD_GOLD" | cut -d":" -f 2 | "$EGREP" -i -c "elf") + LD_GOLD=$(file "$LD_GOLD" | cut -d":" -f 2 | "$GREP" -i -c "elf") if [[ ("$LD_GOLD" -ne "0") ]]; then "$CXX" -DCRYPTOPP_ADHOC_MAIN -fuse-ld=gold adhoc.cpp -o "$TMPDIR/adhoc.exe" > /dev/null 2>&1 if [[ "$?" -eq "0" ]]; then @@ -624,7 +607,7 @@ if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then fi if [[ (-z "$HAVE_ARMV8A" && ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0")) ]]; then - HAVE_ARMV8A=$(echo -n "$ARM_CPU_FLAGS" | "$EGREP" -i -c '(asimd|crc|crypto)') + HAVE_ARMV8A=$(echo -n "$ARM_CPU_FLAGS" | "$GREP" -i -c -E '(asimd|crc|crypto)') if [[ ("$HAVE_ARMV8A" -gt "0") ]]; then HAVE_ARMV8A=1; fi fi @@ -658,7 +641,7 @@ if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then fi if [[ (-z "$HAVE_ARM_CRYPTO") ]]; then - HAVE_ARM_CRYPTO=$(echo -n "$ARM_CPU_FLAGS" | "$EGREP" -i -c '(aes|pmull|sha1|sha2)') + HAVE_ARM_CRYPTO=$(echo -n "$ARM_CPU_FLAGS" | "$GREP" -i -c -E '(aes|pmull|sha1|sha2)') if [[ ("$HAVE_ARM_CRYPTO" -gt "0") ]]; then HAVE_ARM_CRYPTO=1; fi fi @@ -827,7 +810,7 @@ CPU_COUNT=1 MEM_SIZE=512 if [[ (-e "/proc/cpuinfo") && (-e "/proc/meminfo") ]]; then - CPU_COUNT=$(cat /proc/cpuinfo 2>&1 | "$GREP" -c '^processor') + CPU_COUNT=$(cat /proc/cpuinfo 2>&1 | "$GREP" -c -E '^processor') MEM_SIZE=$(cat /proc/meminfo 2>&1 | "$GREP" "MemTotal" | "$AWK" '{print $2}') MEM_SIZE=$(($MEM_SIZE/1024)) elif [[ "$IS_DARWIN" -ne "0" ]]; then @@ -1038,7 +1021,7 @@ if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then # Soft/Hard floats only apply to 32-bit ARM # http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka16242.html if [[ ("$IS_ARM32" -ne "0") ]]; then - ARM_HARD_FLOAT=$("$CXX" -v 2>&1 | "$GREP" 'Target' | "$EGREP" -i -c '(armhf|gnueabihf)') + ARM_HARD_FLOAT=$("$CXX" -v 2>&1 | "$GREP" 'Target' | "$GREP" -i -c -E '(armhf|gnueabihf)') if [[ ("$ARM_HARD_FLOAT" -ne "0") ]]; then PLATFORM_CXXFLAGS+=("-mfloat-abi=hard") else @@ -1100,14 +1083,14 @@ if true; then FAILED=0 # Filter out C++ and Doxygen comments. - COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c '(assert.h|cassert)') + COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c -E '(assert.h|cassert)') if [[ "$COUNT" -ne "0" ]]; then FAILED=1 echo "FAILED: found Posix assert headers" | tee -a "$TEST_RESULTS" fi # Filter out C++ and Doxygen comments. - COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$EGREP" -c 'assert[[:space:]]*\(') + COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c -E 'assert[[:space:]]*\(') if [[ "$COUNT" -ne "0" ]]; then FAILED=1 echo "FAILED: found use of Posix assert" | tee -a "$TEST_RESULTS" @@ -1138,14 +1121,14 @@ if true; then FAILED=0 # If this fires, then use the library's STDMIN(a,b) or (std::min)(a, b); - COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$EGREP" -c 'std::min[[:space:]]*\(') + COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c -E 'std::min[[:space:]]*\(') if [[ "$COUNT" -ne "0" ]]; then FAILED=1 echo "FAILED: found std::min" | tee -a "$TEST_RESULTS" fi # If this fires, then use the library's STDMAX(a,b) or (std::max)(a, b); - COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$EGREP" -c 'std::max[[:space:]]*\(') + COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c -E 'std::max[[:space:]]*\(') if [[ "$COUNT" -ne "0" ]]; then FAILED=1 echo "FAILED: found std::max" | tee -a "$TEST_RESULTS" @@ -1176,15 +1159,15 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_X86" -ne "0" || "$IS_X64" -ne "0")) ]]; t DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null) X86_SSE2=$(echo -n "$X86_CPU_FLAGS" | "$GREP" -i -c sse2) - X86_SHA256_HASH_BLOCKS=$(echo -n "$DISASS_TEXT" | "$EGREP" -c 'SHA256_HashMultipleBlocks_SSE2') + X86_SHA256_HASH_BLOCKS=$(echo -n "$DISASS_TEXT" | "$GREP" -c 'SHA256_HashMultipleBlocks_SSE2') if [[ ("$X86_SHA256_HASH_BLOCKS" -ne "0") ]]; then - COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c '(rol.*0x|ror.*0x)') + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E '(rol.*0x|ror.*0x)') if [[ ("$COUNT" -le "250") ]]; then FAILED=1 echo "ERROR: failed to generate rotate immediate instruction (SHA256_HashMultipleBlocks_SSE2)" | tee -a "$TEST_RESULTS" fi else - COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c '(rol.*0x|ror.*0x)') + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E '(rol.*0x|ror.*0x)') if [[ ("$COUNT" -le "500") ]]; then FAILED=1 echo "ERROR: failed to generate rotate immediate instruction" | tee -a "$TEST_RESULTS" @@ -1323,13 +1306,13 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_X86" -ne "0" || "$IS_X64" -ne "0")) ]]; t FAILED=0 DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null) - COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c '(pclmulqdq|pclmullqhq|vpclmulqdq)') + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E '(pclmulqdq|pclmullqhq|vpclmulqdq)') if [[ ("$COUNT" -eq "0") ]]; then FAILED=1 echo "ERROR: failed to generate pclmullqhq instruction" | tee -a "$TEST_RESULTS" fi - COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c '(pclmulqdq|pclmullqlq|vpclmulqdq)') + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E '(pclmulqdq|pclmullqlq|vpclmulqdq)') if [[ ("$COUNT" -eq "0") ]]; then FAILED=1 echo "ERROR: failed to generate pclmullqlq instruction" | tee -a "$TEST_RESULTS" @@ -1462,7 +1445,7 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0")) ] ############################################ # ARM NEON code generation - ARM_NEON=$(echo -n "$ARM_CPU_FLAGS" | "$EGREP" -i -c '(neon|asimd)') + ARM_NEON=$(echo -n "$ARM_CPU_FLAGS" | "$GREP" -i -c -E '(neon|asimd)') if [[ ("$ARM_NEON" -ne "0" || "$HAVE_ARM_NEON" -ne "0") ]]; then echo echo "************************************" | tee -a "$TEST_RESULTS" @@ -1477,35 +1460,35 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0")) ] DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null) # ARIA::UncheckedKeySet: 8 vld1q.32 - COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vld') + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c 'vld') if [[ ("$COUNT" -lt "8") ]]; then FAILED=1 echo "ERROR: failed to generate expected vector load instructions" | tee -a "$TEST_RESULTS" fi # ARIA::UncheckedKeySet: 24 vstr1q.32 - COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vst') + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c 'vst') if [[ ("$COUNT" -lt "24") ]]; then FAILED=1 echo "ERROR: failed to generate expected vector store instructions" | tee -a "$TEST_RESULTS" fi # ARIA::UncheckedKeySet: 17 vshl.32 - COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vshl') + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c 'vshl') if [[ ("$COUNT" -lt "17") ]]; then FAILED=1 echo "ERROR: failed to generate expected vector shift left instructions" | tee -a "$TEST_RESULTS" fi # ARIA::UncheckedKeySet: 17 vshr.32 - COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vshl') + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c 'vshl') if [[ ("$COUNT" -lt "17") ]]; then FAILED=1 echo "ERROR: failed to generate expected vector shift right instructions" | tee -a "$TEST_RESULTS" fi # ARIA::UncheckedKeySet: 34 veor - COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'eor.*v|veor') + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E 'eor.*v|veor') if [[ ("$COUNT" -lt "34") ]]; then FAILED=1 echo "ERROR: failed to generate expected vector xor instructions" | tee -a "$TEST_RESULTS" @@ -5776,13 +5759,13 @@ echo | tee -a "$TEST_RESULTS" # "Error" is from the GNU assembler # "error" is from the sanitizers # "Illegal", "Conditional", "0 errors" and "suppressed errors" are from Valgrind. -ECOUNT=$("$EGREP" '(Error|ERROR|error|FAILED|Illegal|Conditional|CryptoPP::Exception)' $TEST_RESULTS | "$EGREP" -v '( 0 errors|suppressed errors|error detector|format-security)' | wc -l | "$AWK" '{print $1}') +ECOUNT=$("$GREP" -E '(Error|ERROR|error|FAILED|Illegal|Conditional|CryptoPP::Exception)' $TEST_RESULTS | "$GREP" -v -E '( 0 errors|suppressed errors|error detector|format-security)' | wc -l | "$AWK" '{print $1}') if (( "$ECOUNT" == "0" )); then echo "No failures detected" | tee -a "$TEST_RESULTS" else echo "$ECOUNT errors detected. See $TEST_RESULTS for details" | tee -a "$TEST_RESULTS" if (( "$ECOUNT" < 16 )); then - "$EGREP" -n '(Error|ERROR|error|FAILED|Illegal|Conditional|CryptoPP::Exception)' "$TEST_RESULTS" | "$EGREP" -v '( 0 errors|suppressed errors|error detector|Assertion|format-security)' + "$GREP" -n -E '(Error|ERROR|error|FAILED|Illegal|Conditional|CryptoPP::Exception)' "$TEST_RESULTS" | "$GREP" -v -E '( 0 errors|suppressed errors|error detector|Assertion|format-security)' fi fi @@ -5793,12 +5776,12 @@ echo echo "************************************************" | tee -a "$TEST_RESULTS" "$WARN_RESULTS" echo | tee -a "$TEST_RESULTS" "$WARN_RESULTS" -WCOUNT=$("$EGREP" '(warning:)' $WARN_RESULTS | wc -l | "$AWK" '{print $1}') +WCOUNT=$("$GREP" -E '(warning:)' $WARN_RESULTS | wc -l | "$AWK" '{print $1}') if (( "$WCOUNT" == "0" )); then echo "No warnings detected" | tee -a "$TEST_RESULTS" "$WARN_RESULTS" else echo "$WCOUNT warnings detected. See $WARN_RESULTS for details" | tee -a "$TEST_RESULTS" "$WARN_RESULTS" - # "$EGREP" -n '(warning:)' $WARN_RESULTS | "$GREP" -v 'deprecated-declarations' + # "$GREP" -n -E '(warning:)' $WARN_RESULTS | "$GREP" -v 'deprecated-declarations' fi ############################################ diff --git a/cryptest.sh b/cryptest.sh index 8198119c..28533c9e 100755 --- a/cryptest.sh +++ b/cryptest.sh @@ -69,14 +69,30 @@ unset MallocScribble MallocPreScribble MallocGuardEdges # Setup tools and platforms GREP=grep -EGREP=egrep SED=sed AWK=awk +MAKE=make -# Code generation tests DISASS=objdump DISASSARGS=("--disassemble") +# Fixup, Solaris and friends +if [[ (-d /usr/xpg4/bin) ]]; then + SED=/usr/xpg4/bin/sed + AWK=/usr/xpg4/bin/awk + GREP=/usr/xpg4/bin/grep +elif [[ (-d /usr/bin/posix) ]]; then + SED=/usr/bin/posix/sed + AWK=/usr/bin/posix/awk + GREP=/usr/bin/posix/grep +fi + +# Fixup, Solaris and BSDs +GMAKE=$(which gmake 2>/dev/null | "$GREP" -v "no gmake" | head -1) +if [[ ! -z "$GMAKE" ]]; then + MAKE=$GMAKE +fi + THIS_SYSTEM=$(uname -s 2>&1) IS_DARWIN=$(echo -n "$THIS_SYSTEM" | "$GREP" -i -c darwin) IS_LINUX=$(echo -n "$THIS_SYSTEM" | "$GREP" -i -c linux) @@ -93,37 +109,16 @@ IS_FEDORA=$(lsb_release -a 2>&1 | "$GREP" -i -c fedora) IS_UBUNTU=$(lsb_release -a 2>&1 | "$GREP" -i -c ubuntu) THIS_MACHINE=$(uname -m 2>&1) -IS_X86=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(i386|i486|i686|i686)") -IS_X64=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(amd64|x86_64)") -IS_PPC=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(Power|PPC)") -IS_ARM32=$(echo -n "$THIS_MACHINE" | "$GREP" -v "64" | "$EGREP" -i -c "(arm|aarch32)") -IS_ARM64=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(arm64|aarch64)") -IS_S390=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "s390") +IS_X86=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(i386|i486|i686|i686)") +IS_X64=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(amd64|x86_64)") +IS_PPC=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(Power|PPC)") +IS_ARM32=$(echo -n "$THIS_MACHINE" | "$GREP" -v "64" | "$GREP" -i -c -E "(arm|aarch32)") +IS_ARM64=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(arm64|aarch64)") +IS_S390=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c "s390") IS_X32=0 # Fixup if [[ "$IS_SOLARIS" -ne "0" ]]; then - IS_X64=$(isainfo 2>/dev/null | "$GREP" -i -c "amd64") - if [[ "$IS_X64" -ne "0" ]]; then - IS_X86=0 - fi - - # Need something more powerful than the Posix versions - if [[ (-e "/usr/gnu/bin/grep") ]]; then - GREP=/usr/gnu/bin/grep; - fi - if [[ (-e "/usr/gnu/bin/egrep") ]]; then - EGREP=/usr/gnu/bin/egrep; - fi - if [[ (-e "/usr/gnu/bin/sed") ]]; then - SED=/usr/gnu/bin/sed; - fi - if [[ (-e "/usr/gnu/bin/awk") ]]; then - AWK=/usr/gnu/bin/awk; - else - AWK=nawk; - fi - DISASS=dis DISASSARGS=() fi @@ -134,18 +129,6 @@ if [[ "$IS_DARWIN" -ne 0 ]]; then DISASSARGS=("-tV") fi -# Fixup -if [[ ("$IS_FREEBSD" -ne "0" || "$IS_OPENBSD" -ne "0" || "$IS_NETBSD" -ne "0" || "$IS_DRAGONFLY" -ne "0") ]]; then - MAKE=gmake -elif [[ ("$IS_SOLARIS" -ne "0") ]]; then - MAKE=$(which gmake 2>/dev/null | "$GREP" -v "no gmake" | head -1) - if [[ (-z "$MAKE") && (-e "/usr/sfw/bin/gmake") ]]; then - MAKE=/usr/sfw/bin/gmake - fi -else - MAKE=make -fi - # CPU features and flags if [[ ("$IS_X86" -ne "0" || "$IS_X64" -ne "0") ]]; then if [[ ("$IS_DARWIN" -ne "0") ]]; then @@ -170,13 +153,13 @@ 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 + if [[ ($("$GREP" -ix "fast" <<< "$ARG") || $("$GREP" -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 + elif [[ ($("$GREP" -ix "farm" <<< "$ARG") || $("$GREP" -ix "nice" <<< "$ARG")) ]]; then WANT_NICE=1 - elif [[ ($("$EGREP" -ix "orig" <<< "$ARG") || $("$EGREP" -ix "original" <<< "$ARG") || $("$EGREP" -ix "config.h" <<< "$ARG")) ]]; then + elif [[ ($("$GREP" -ix "orig" <<< "$ARG") || $("$GREP" -ix "original" <<< "$ARG") || $("$GREP" -ix "config.h" <<< "$ARG")) ]]; then git checkout config.h > /dev/null 2>&1 else echo "Unknown option $ARG" @@ -217,32 +200,32 @@ if [[ ((-z "$CXX") || ("$CXX" == "gcc")) ]]; then fi fi -SUN_COMPILER=$("$CXX" -V 2>&1 | "$EGREP" -i -c "CC: (Sun|Studio)") -GCC_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -v "clang" | "$EGREP" -i -c "(gcc|g\+\+)") -INTEL_COMPILER=$("$CXX" --version 2>&1 | "$EGREP" -i -c "\(icc\)") -MACPORTS_COMPILER=$("$CXX" --version 2>&1 | "$EGREP" -i -c "MacPorts") -CLANG_COMPILER=$("$CXX" --version 2>&1 | "$EGREP" -i -c "clang") +SUN_COMPILER=$("$CXX" -V 2>&1 | "$GREP" -i -c -E "CC: (Sun|Studio)") +GCC_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -v "clang" | "$GREP" -i -c -E "(gcc|g\+\+)") +INTEL_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "\(icc\)") +MACPORTS_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "MacPorts") +CLANG_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "clang") if [[ ("$SUN_COMPILER" -eq "0") ]]; then - AMD64=$("$CXX" -dM -E - /dev/null | "$EGREP" -c "(__x64_64__|__amd64__)") - ILP32=$("$CXX" -dM -E - /dev/null | "$EGREP" -c "(__ILP32__|__ILP32)") + AMD64=$("$CXX" -dM -E - /dev/null | "$GREP" -i -c -E "(__x64_64__|__amd64__)") + ILP32=$("$CXX" -dM -E - /dev/null | "$GREP" -i -c -E "(__ILP32__|__ILP32)") if [[ ("$AMD64" -ne "0") && ("$ILP32" -ne "0") ]]; then IS_X32=1 fi fi # Now that the compiler is fixed, determine the compiler version for fixups -CLANG_37_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'clang version (3\.[7-9]|[4-9]\.[0-9])') -GCC_70_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version (7\.[0-9]|[8-9])') -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') -GCC_49_COMPILER=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version 4\.9') -GCC_49_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version (4\.9|[5-9]\.[0-9])') -SUNCC_510_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "CC: (Sun|Studio) .* (5\.1[0-9]|5\.[2-9]|[6-9]\.)") -SUNCC_511_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "CC: (Sun|Studio) .* (5\.1[1-9]|5\.[2-9]|[6-9]\.)") -SUNCC_512_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "CC: (Sun|Studio) .* (5\.1[2-9]|5\.[2-9]|[6-9]\.)") -SUNCC_513_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "CC: (Sun|Studio) .* (5\.1[3-9]|5\.[2-9]|[6-9]\.)") +CLANG_37_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'clang version (3\.[7-9]|[4-9]\.[0-9])') +GCC_70_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version (7\.[0-9]|[8-9])') +GCC_60_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version (6\.[0-9]|[7-9])') +GCC_51_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version (5\.[1-9]|[6-9])') +GCC_48_COMPILER=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version 4\.8') +GCC_49_COMPILER=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version 4\.9') +GCC_49_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version (4\.9|[5-9]\.[0-9])') +SUNCC_510_OR_ABOVE=$("$CXX" -V 2>&1 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[0-9]|5\.[2-9]|[6-9]\.)") +SUNCC_511_OR_ABOVE=$("$CXX" -V 2>&1 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[1-9]|5\.[2-9]|[6-9]\.)") +SUNCC_512_OR_ABOVE=$("$CXX" -V 2>&1 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[2-9]|5\.[2-9]|[6-9]\.)") +SUNCC_513_OR_ABOVE=$("$CXX" -V 2>&1 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[3-9]|5\.[2-9]|[6-9]\.)") # Fixup, bad code generation if [[ ("$SUNCC_510_OR_ABOVE" -ne "0") ]]; then @@ -480,7 +463,7 @@ OPT_PIC= rm -f "$TMPDIR/adhoc.exe" > /dev/null 2>&1 if [[ (-z "$HAVE_PIC") ]]; then HAVE_PIC=0 - PIC_PROBLEMS=$("$CXX" -DCRYPTOPP_ADHOC_MAIN -fPIC adhoc.cpp -o "$TMPDIR/adhoc.exe" 2>&1 | "$EGREP" -ic '(warning|error)') + PIC_PROBLEMS=$("$CXX" -DCRYPTOPP_ADHOC_MAIN -fPIC adhoc.cpp -o "$TMPDIR/adhoc.exe" 2>&1 | "$GREP" -i -c -E '(warning|error)') if [[ "$PIC_PROBLEMS" -eq "0" ]]; then HAVE_PIC=1 OPT_PIC=-fPIC @@ -605,7 +588,7 @@ if [[ (-z "$HAVE_LDGOLD") ]]; then LD_GOLD=$(which ld.gold 2>&1 | "$GREP" -v "no ld.gold" | head -1) ELF_FILE=$(which file 2>&1 | "$GREP" -v "no file" | head -1) if [[ (! -z "$LD_GOLD") && (! -z "$ELF_FILE") ]]; then - LD_GOLD=$(file "$LD_GOLD" | cut -d":" -f 2 | "$EGREP" -i -c "elf") + LD_GOLD=$(file "$LD_GOLD" | cut -d":" -f 2 | "$GREP" -i -c "elf") if [[ ("$LD_GOLD" -ne "0") ]]; then "$CXX" -DCRYPTOPP_ADHOC_MAIN -fuse-ld=gold adhoc.cpp -o "$TMPDIR/adhoc.exe" > /dev/null 2>&1 if [[ "$?" -eq "0" ]]; then @@ -624,7 +607,7 @@ if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then fi if [[ (-z "$HAVE_ARMV8A" && ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0")) ]]; then - HAVE_ARMV8A=$(echo -n "$ARM_CPU_FLAGS" | "$EGREP" -i -c '(asimd|crc|crypto)') + HAVE_ARMV8A=$(echo -n "$ARM_CPU_FLAGS" | "$GREP" -i -c -E '(asimd|crc|crypto)') if [[ ("$HAVE_ARMV8A" -gt "0") ]]; then HAVE_ARMV8A=1; fi fi @@ -658,7 +641,7 @@ if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then fi if [[ (-z "$HAVE_ARM_CRYPTO") ]]; then - HAVE_ARM_CRYPTO=$(echo -n "$ARM_CPU_FLAGS" | "$EGREP" -i -c '(aes|pmull|sha1|sha2)') + HAVE_ARM_CRYPTO=$(echo -n "$ARM_CPU_FLAGS" | "$GREP" -i -c -E '(aes|pmull|sha1|sha2)') if [[ ("$HAVE_ARM_CRYPTO" -gt "0") ]]; then HAVE_ARM_CRYPTO=1; fi fi @@ -827,7 +810,7 @@ CPU_COUNT=1 MEM_SIZE=512 if [[ (-e "/proc/cpuinfo") && (-e "/proc/meminfo") ]]; then - CPU_COUNT=$(cat /proc/cpuinfo 2>&1 | "$GREP" -c '^processor') + CPU_COUNT=$(cat /proc/cpuinfo 2>&1 | "$GREP" -c -E '^processor') MEM_SIZE=$(cat /proc/meminfo 2>&1 | "$GREP" "MemTotal" | "$AWK" '{print $2}') MEM_SIZE=$(($MEM_SIZE/1024)) elif [[ "$IS_DARWIN" -ne "0" ]]; then @@ -1038,7 +1021,7 @@ if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then # Soft/Hard floats only apply to 32-bit ARM # http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka16242.html if [[ ("$IS_ARM32" -ne "0") ]]; then - ARM_HARD_FLOAT=$("$CXX" -v 2>&1 | "$GREP" 'Target' | "$EGREP" -i -c '(armhf|gnueabihf)') + ARM_HARD_FLOAT=$("$CXX" -v 2>&1 | "$GREP" 'Target' | "$GREP" -i -c -E '(armhf|gnueabihf)') if [[ ("$ARM_HARD_FLOAT" -ne "0") ]]; then PLATFORM_CXXFLAGS+=("-mfloat-abi=hard") else @@ -1100,14 +1083,14 @@ if true; then FAILED=0 # Filter out C++ and Doxygen comments. - COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c '(assert.h|cassert)') + COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c -E '(assert.h|cassert)') if [[ "$COUNT" -ne "0" ]]; then FAILED=1 echo "FAILED: found Posix assert headers" | tee -a "$TEST_RESULTS" fi # Filter out C++ and Doxygen comments. - COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$EGREP" -c 'assert[[:space:]]*\(') + COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c -E 'assert[[:space:]]*\(') if [[ "$COUNT" -ne "0" ]]; then FAILED=1 echo "FAILED: found use of Posix assert" | tee -a "$TEST_RESULTS" @@ -1138,14 +1121,14 @@ if true; then FAILED=0 # If this fires, then use the library's STDMIN(a,b) or (std::min)(a, b); - COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$EGREP" -c 'std::min[[:space:]]*\(') + COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c -E 'std::min[[:space:]]*\(') if [[ "$COUNT" -ne "0" ]]; then FAILED=1 echo "FAILED: found std::min" | tee -a "$TEST_RESULTS" fi # If this fires, then use the library's STDMAX(a,b) or (std::max)(a, b); - COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$EGREP" -c 'std::max[[:space:]]*\(') + COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c -E 'std::max[[:space:]]*\(') if [[ "$COUNT" -ne "0" ]]; then FAILED=1 echo "FAILED: found std::max" | tee -a "$TEST_RESULTS" @@ -1176,15 +1159,15 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_X86" -ne "0" || "$IS_X64" -ne "0")) ]]; t DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null) X86_SSE2=$(echo -n "$X86_CPU_FLAGS" | "$GREP" -i -c sse2) - X86_SHA256_HASH_BLOCKS=$(echo -n "$DISASS_TEXT" | "$EGREP" -c 'SHA256_HashMultipleBlocks_SSE2') + X86_SHA256_HASH_BLOCKS=$(echo -n "$DISASS_TEXT" | "$GREP" -c 'SHA256_HashMultipleBlocks_SSE2') if [[ ("$X86_SHA256_HASH_BLOCKS" -ne "0") ]]; then - COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c '(rol.*0x|ror.*0x)') + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E '(rol.*0x|ror.*0x)') if [[ ("$COUNT" -le "250") ]]; then FAILED=1 echo "ERROR: failed to generate rotate immediate instruction (SHA256_HashMultipleBlocks_SSE2)" | tee -a "$TEST_RESULTS" fi else - COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c '(rol.*0x|ror.*0x)') + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E '(rol.*0x|ror.*0x)') if [[ ("$COUNT" -le "500") ]]; then FAILED=1 echo "ERROR: failed to generate rotate immediate instruction" | tee -a "$TEST_RESULTS" @@ -1323,13 +1306,13 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_X86" -ne "0" || "$IS_X64" -ne "0")) ]]; t FAILED=0 DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null) - COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c '(pclmulqdq|pclmullqhq|vpclmulqdq)') + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E '(pclmulqdq|pclmullqhq|vpclmulqdq)') if [[ ("$COUNT" -eq "0") ]]; then FAILED=1 echo "ERROR: failed to generate pclmullqhq instruction" | tee -a "$TEST_RESULTS" fi - COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c '(pclmulqdq|pclmullqlq|vpclmulqdq)') + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E '(pclmulqdq|pclmullqlq|vpclmulqdq)') if [[ ("$COUNT" -eq "0") ]]; then FAILED=1 echo "ERROR: failed to generate pclmullqlq instruction" | tee -a "$TEST_RESULTS" @@ -1462,7 +1445,7 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0")) ] ############################################ # ARM NEON code generation - ARM_NEON=$(echo -n "$ARM_CPU_FLAGS" | "$EGREP" -i -c '(neon|asimd)') + ARM_NEON=$(echo -n "$ARM_CPU_FLAGS" | "$GREP" -i -c -E '(neon|asimd)') if [[ ("$ARM_NEON" -ne "0" || "$HAVE_ARM_NEON" -ne "0") ]]; then echo echo "************************************" | tee -a "$TEST_RESULTS" @@ -1477,35 +1460,35 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0")) ] DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null) # ARIA::UncheckedKeySet: 8 vld1q.32 - COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vld') + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c 'vld') if [[ ("$COUNT" -lt "8") ]]; then FAILED=1 echo "ERROR: failed to generate expected vector load instructions" | tee -a "$TEST_RESULTS" fi # ARIA::UncheckedKeySet: 24 vstr1q.32 - COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vst') + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c 'vst') if [[ ("$COUNT" -lt "24") ]]; then FAILED=1 echo "ERROR: failed to generate expected vector store instructions" | tee -a "$TEST_RESULTS" fi # ARIA::UncheckedKeySet: 17 vshl.32 - COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vshl') + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c 'vshl') if [[ ("$COUNT" -lt "17") ]]; then FAILED=1 echo "ERROR: failed to generate expected vector shift left instructions" | tee -a "$TEST_RESULTS" fi # ARIA::UncheckedKeySet: 17 vshr.32 - COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vshl') + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c 'vshl') if [[ ("$COUNT" -lt "17") ]]; then FAILED=1 echo "ERROR: failed to generate expected vector shift right instructions" | tee -a "$TEST_RESULTS" fi # ARIA::UncheckedKeySet: 34 veor - COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'eor.*v|veor') + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E 'eor.*v|veor') if [[ ("$COUNT" -lt "34") ]]; then FAILED=1 echo "ERROR: failed to generate expected vector xor instructions" | tee -a "$TEST_RESULTS" @@ -5776,13 +5759,13 @@ echo | tee -a "$TEST_RESULTS" # "Error" is from the GNU assembler # "error" is from the sanitizers # "Illegal", "Conditional", "0 errors" and "suppressed errors" are from Valgrind. -ECOUNT=$("$EGREP" '(Error|ERROR|error|FAILED|Illegal|Conditional|CryptoPP::Exception)' $TEST_RESULTS | "$EGREP" -v '( 0 errors|suppressed errors|error detector|format-security)' | wc -l | "$AWK" '{print $1}') +ECOUNT=$("$GREP" -E '(Error|ERROR|error|FAILED|Illegal|Conditional|CryptoPP::Exception)' $TEST_RESULTS | "$GREP" -v -E '( 0 errors|suppressed errors|error detector|format-security)' | wc -l | "$AWK" '{print $1}') if (( "$ECOUNT" == "0" )); then echo "No failures detected" | tee -a "$TEST_RESULTS" else echo "$ECOUNT errors detected. See $TEST_RESULTS for details" | tee -a "$TEST_RESULTS" if (( "$ECOUNT" < 16 )); then - "$EGREP" -n '(Error|ERROR|error|FAILED|Illegal|Conditional|CryptoPP::Exception)' "$TEST_RESULTS" | "$EGREP" -v '( 0 errors|suppressed errors|error detector|Assertion|format-security)' + "$GREP" -n -E '(Error|ERROR|error|FAILED|Illegal|Conditional|CryptoPP::Exception)' "$TEST_RESULTS" | "$GREP" -v -E '( 0 errors|suppressed errors|error detector|Assertion|format-security)' fi fi @@ -5793,12 +5776,12 @@ echo echo "************************************************" | tee -a "$TEST_RESULTS" "$WARN_RESULTS" echo | tee -a "$TEST_RESULTS" "$WARN_RESULTS" -WCOUNT=$("$EGREP" '(warning:)' $WARN_RESULTS | wc -l | "$AWK" '{print $1}') +WCOUNT=$("$GREP" -E '(warning:)' $WARN_RESULTS | wc -l | "$AWK" '{print $1}') if (( "$WCOUNT" == "0" )); then echo "No warnings detected" | tee -a "$TEST_RESULTS" "$WARN_RESULTS" else echo "$WCOUNT warnings detected. See $WARN_RESULTS for details" | tee -a "$TEST_RESULTS" "$WARN_RESULTS" - # "$EGREP" -n '(warning:)' $WARN_RESULTS | "$GREP" -v 'deprecated-declarations' + # "$GREP" -n -E '(warning:)' $WARN_RESULTS | "$GREP" -v 'deprecated-declarations' fi ############################################