Skip to content

Commit 6588457

Browse files
authored
Change hash algorithm from md5 to sha256 (#634)
* This patch changes the hash algorithm for tester3 from md5 to sha256 * Add internal sha256 subroutines --------- Co-authored-by: Naoki Shibata <shibatch.sf.net@gmail.com>
1 parent 4257080 commit 6588457

File tree

10 files changed

+664
-303
lines changed

10 files changed

+664
-303
lines changed

Configure.cmake

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,35 +11,40 @@ if (SLEEF_BUILD_STATIC_TEST_BINS)
1111
set(CMAKE_EXE_LINKER_FLAGS "-static")
1212
endif()
1313

14-
set(OPENSSL_EXTRA_LIBRARIES "" CACHE STRING "Extra libraries for openssl")
15-
if (NOT CMAKE_CROSSCOMPILING AND NOT SLEEF_FORCE_FIND_PACKAGE_SSL)
16-
if (SLEEF_BUILD_STATIC_TEST_BINS)
17-
set(OPENSSL_USE_STATIC_LIBS TRUE)
18-
endif()
19-
find_package(OpenSSL)
20-
if (OPENSSL_FOUND)
21-
set(SLEEF_OPENSSL_FOUND TRUE)
22-
set(SLEEF_OPENSSL_LIBRARIES ${OPENSSL_LIBRARIES})
23-
# Work around for tester3 sig segv, when linking versions of openssl (1.1.1) statically.
24-
# This is a known issue https://github.com/openssl/openssl/issues/13872.
14+
if (NOT SLEEF_DISABLE_SSL)
15+
set(OPENSSL_EXTRA_LIBRARIES "" CACHE STRING "Extra libraries for openssl")
16+
if (NOT CMAKE_CROSSCOMPILING AND NOT SLEEF_FORCE_FIND_PACKAGE_SSL)
2517
if (SLEEF_BUILD_STATIC_TEST_BINS)
26-
string(REGEX REPLACE
27-
"-lpthread" "-Wl,--whole-archive -lpthread -Wl,--no-whole-archive"
28-
SLEEF_OPENSSL_LIBRARIES "${OPENSSL_LIBRARIES}")
18+
set(OPENSSL_USE_STATIC_LIBS TRUE)
19+
endif()
20+
find_package(OpenSSL)
21+
if (OPENSSL_FOUND)
22+
set(SLEEF_OPENSSL_FOUND TRUE)
23+
set(SLEEF_OPENSSL_LIBRARIES ${OPENSSL_LIBRARIES})
24+
# Work around for tester3 sig segv, when linking versions of openssl (1.1.1) statically.
25+
# This is a known issue https://github.com/openssl/openssl/issues/13872.
26+
if (SLEEF_BUILD_STATIC_TEST_BINS)
27+
string(REGEX REPLACE
28+
"-lpthread" "-Wl,--whole-archive -lpthread -Wl,--no-whole-archive"
29+
SLEEF_OPENSSL_LIBRARIES "${OPENSSL_LIBRARIES}")
30+
endif()
31+
set(SLEEF_OPENSSL_VERSION ${OPENSSL_VERSION})
32+
set(SLEEF_OPENSSL_LIBRARIES ${SLEEF_OPENSSL_LIBRARIES} ${OPENSSL_EXTRA_LIBRARIES})
33+
set(SLEEF_OPENSSL_INCLUDE_DIR ${OPENSSL_INCLUDE_DIR})
34+
endif()
35+
else()
36+
# find_package cannot find OpenSSL when cross-compiling
37+
find_library(LIBSSL ssl)
38+
find_library(LIBCRYPTO crypto)
39+
if (LIBSSL AND LIBCRYPTO)
40+
set(SLEEF_OPENSSL_FOUND TRUE)
41+
set(SLEEF_OPENSSL_LIBRARIES ${LIBSSL} ${LIBCRYPTO} ${OPENSSL_EXTRA_LIBRARIES})
42+
set(SLEEF_OPENSSL_VERSION ${LIBSSL})
2943
endif()
30-
set(SLEEF_OPENSSL_VERSION ${OPENSSL_VERSION})
31-
set(SLEEF_OPENSSL_LIBRARIES ${SLEEF_OPENSSL_LIBRARIES} ${OPENSSL_EXTRA_LIBRARIES})
32-
set(SLEEF_OPENSSL_INCLUDE_DIR ${OPENSSL_INCLUDE_DIR})
3344
endif()
3445
else()
35-
# find_package cannot find OpenSSL when cross-compiling
36-
find_library(LIBSSL ssl)
37-
find_library(LIBCRYPTO crypto)
38-
if (LIBSSL AND LIBCRYPTO)
39-
set(SLEEF_OPENSSL_FOUND TRUE)
40-
set(SLEEF_OPENSSL_LIBRARIES ${LIBSSL} ${LIBCRYPTO} ${OPENSSL_EXTRA_LIBRARIES})
41-
set(SLEEF_OPENSSL_VERSION ${LIBSSL})
42-
endif()
46+
set(SLEEF_OPENSSL_FOUND FALSE)
47+
message(STATUS "Detection of OpenSSL is skipped since SLEEF_DISABLE_SSL is specified")
4348
endif()
4449

4550
if (SLEEF_ENFORCE_TESTER3 AND NOT SLEEF_OPENSSL_FOUND)
@@ -79,10 +84,6 @@ if (SLEEF_DISABLE_MPFR)
7984
set(LIB_MPFR "")
8085
endif()
8186

82-
if (SLEEF_DISABLE_SSL)
83-
set(SLEEF_OPENSSL_FOUND FALSE)
84-
endif()
85-
8687
# Include submodules
8788

8889
set(SLEEF_SUBMODULE_INSTALL_DIR "${CMAKE_BINARY_DIR}/submodules")

Jenkinsfile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ pipeline {
3636
bat """
3737
call "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\Build\\vcvars64.bat"
3838
if not %ERRORLEVEL% == 0 exit /b %ERRORLEVEL%
39-
call "winbuild-msvc.bat" -DCMAKE_BUILD_TYPE=Release -DSLEEF_SHOW_CONFIG=1 -DSLEEF_BUILD_DFT=TRUE -DSLEEF_BUILD_QUAD=TRUE -DSLEEF_ENFORCE_SSE2=TRUE -DSLEEF_ENFORCE_SSE4=TRUE -DSLEEF_ENFORCE_AVX=TRUE -DSLEEF_ENFORCE_AVX2=TRUE -DSLEEF_ENFORCE_AVX512F=TRUE -DSLEEF_ENABLE_TESTER4=True
39+
call "winbuild-msvc.bat" -DCMAKE_BUILD_TYPE=Release -DSLEEF_SHOW_CONFIG=1 -DSLEEF_BUILD_DFT=TRUE -DSLEEF_BUILD_QUAD=TRUE -DSLEEF_ENFORCE_SSE2=TRUE -DSLEEF_ENFORCE_SSE4=TRUE -DSLEEF_ENFORCE_AVX=TRUE -DSLEEF_ENFORCE_AVX2=TRUE -DSLEEF_ENFORCE_AVX512F=TRUE -DSLEEF_ENABLE_TESTER4=True -DSLEEF_DISABLE_SSL=True
4040
if not %ERRORLEVEL% == 0 exit /b %ERRORLEVEL%
4141
ctest -j 4 --output-on-failure
4242
exit /b %ERRORLEVEL%
@@ -48,6 +48,9 @@ pipeline {
4848
agent { label 'riscv && ubuntu23' }
4949
options { skipDefaultCheckout() }
5050
steps {
51+
script {
52+
System.setProperty("org.jenkinsci.plugins.durabletask.BourneShellScript.HEARTBEAT_CHECK_INTERVAL", "86400");
53+
}
5154
cleanWs()
5255
checkout scm
5356
sh '''

src/libm-tester/CMakeLists.txt

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,10 @@ endif()
167167

168168
set(IUT_SRC iutsimd.c ${sleef_SOURCE_DIR}/src/common/main_checkfeature.c testerutil.c)
169169

170+
if (NOT SLEEF_OPENSSL_FOUND)
171+
add_library(obj_psha OBJECT psha2_capi.cpp)
172+
endif()
173+
170174
# Add vector extension `iut`s
171175
macro(test_extension SIMD)
172176
if(COMPILER_SUPPORTS_${SIMD})
@@ -361,22 +365,30 @@ macro(test_extension SIMD)
361365
endforeach()
362366
endif()
363367

364-
if(NOT ${SIMD} STREQUAL NEON32 AND NOT ${SIMD} STREQUAL NEON32VFPV4 AND SLEEF_OPENSSL_FOUND)
368+
if(NOT ${SIMD} STREQUAL NEON32 AND NOT ${SIMD} STREQUAL NEON32VFPV4)
365369
# Build tester3
366370
string(TOLOWER ${SIMD} SCSIMD)
367371
set(T "tester3${SCSIMD}")
368372
add_executable(${T} tester3.c ${sleef_SOURCE_DIR}/src/common/main_checkfeature.c testerutil.c)
369373
target_compile_options(${T} PRIVATE ${FLAGS_ENABLE_${SIMD}})
370374
target_compile_definitions(${T} PRIVATE ${COMMON_TARGET_DEFINITIONS} ${TESTER3_DEFINITIONS_${SIMD}})
375+
if (NOT SLEEF_OPENSSL_FOUND)
376+
target_compile_definitions(${T} PRIVATE SLEEF_USE_INTERNAL_SHA256=1)
377+
endif()
371378
set_target_properties(${T} PROPERTIES ${COMMON_TARGET_PROPERTIES})
372379

373380
# Enable Vector PCS for Advanced SIMD (if supported)
374381
if(FORCE_AAVPCS)
375382
host_target_AAVPCS_definitions(${T})
376383
endif()
377384

378-
target_link_libraries(${T} ${TARGET_LIBSLEEF} ${LIBM} ${SLEEF_OPENSSL_LIBRARIES})
379-
target_include_directories(${T} PRIVATE ${SLEEF_OPENSSL_INCLUDE_DIR})
385+
if (SLEEF_OPENSSL_FOUND)
386+
target_link_libraries(${T} ${TARGET_LIBSLEEF} ${LIBM} ${SLEEF_OPENSSL_LIBRARIES})
387+
target_include_directories(${T} PRIVATE ${SLEEF_OPENSSL_INCLUDE_DIR})
388+
else()
389+
target_link_libraries(${T} ${TARGET_LIBSLEEF} ${LIBM} obj_psha)
390+
endif()
391+
380392
add_dependencies(${T} ${TARGET_HEADERS})
381393
add_dependencies(${T} ${TARGET_LIBSLEEF})
382394

@@ -644,3 +656,18 @@ if (FILECHECK_COMMAND AND COMPILER_SUPPORTS_OPENMP AND SLEEF_ARCH_X86 AND CMAKE_
644656
add_test(NAME testervecabi-sse2 COMMAND sh -c "${CMAKE_C_COMPILER} -Wno-attributes -fopenmp -msse2 -O3 ${CMAKE_CURRENT_SOURCE_DIR}/testervecabi.c -I${sleef_BINARY_DIR}/include -S -o- | ${FILECHECK_COMMAND} ${CMAKE_CURRENT_SOURCE_DIR}/testervecabi.c -check-prefix=CHECK-SSE2")
645657
add_test(NAME testervecabi-avx2 COMMAND sh -c "${CMAKE_C_COMPILER} -Wno-attributes -fopenmp -mavx2 -O3 ${CMAKE_CURRENT_SOURCE_DIR}/testervecabi.c -I${sleef_BINARY_DIR}/include -S -o- | ${FILECHECK_COMMAND} ${CMAKE_CURRENT_SOURCE_DIR}/testervecabi.c -check-prefix=CHECK-AVX2")
646658
endif()
659+
660+
# Tests for internal sha256
661+
662+
if (SLEEF_OPENSSL_FOUND)
663+
add_executable(test_psha test_psha2.cpp)
664+
target_link_libraries(test_psha ${SLEEF_OPENSSL_LIBRARIES})
665+
target_include_directories(test_psha PRIVATE ${SLEEF_OPENSSL_INCLUDE_DIR})
666+
add_test(NAME test_psha COMMAND test_psha)
667+
668+
add_executable(test_psha_capi test_psha2.cpp)
669+
target_compile_definitions(test_psha_capi PRIVATE TEST_CAPI=1)
670+
target_link_libraries(test_psha_capi ${SLEEF_OPENSSL_LIBRARIES})
671+
target_include_directories(test_psha_capi PRIVATE ${SLEEF_OPENSSL_INCLUDE_DIR})
672+
add_test(NAME test_psha_capi COMMAND test_psha_capi)
673+
endif()

0 commit comments

Comments
 (0)