From c1317759f2b4ab4f2d5e4bb8ac7b177aaab39c21 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Tue, 5 Oct 2021 09:36:03 +0200 Subject: [PATCH 1/6] Build with -O2 when running ssl-opt SSL testing benefits from faster executables, so use -O2 rather than -O1. Some builds use -O1, but that's intended for jobs that only run unit tests, where the build takes longer than the tests. Signed-off-by: Gilles Peskine --- tests/scripts/all.sh | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 515b0b7d86..0674a83a46 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -794,7 +794,7 @@ component_test_full_cmake_gcc_asan () { component_test_zlib_make() { msg "build: zlib enabled, make" scripts/config.pl set MBEDTLS_ZLIB_SUPPORT - make ZLIB=1 CFLAGS='-Werror -O1' + make ZLIB=1 CFLAGS='-Werror -O2' msg "test: main suites (zlib, make)" make test @@ -1442,7 +1442,7 @@ component_build_mbedtls_config_file () { } component_test_m32_o0 () { - # Build once with -O0, to compile out the i386 specific inline assembly + # Build without optimization, to not use the i386 specific inline assembly. msg "build: i386, make, gcc -O0 (ASan build)" # ~ 30s scripts/config.pl full make CC=gcc CFLAGS="$ASAN_CFLAGS -m32 -O0" LDFLAGS="-m32 $ASAN_CFLAGS" @@ -1457,16 +1457,17 @@ support_test_m32_o0 () { esac } -component_test_m32_o1 () { - # Build again with -O1, to compile in the i386 specific inline assembly - msg "build: i386, make, gcc -O1 (ASan build)" # ~ 30s +component_test_m32_o2 () { + # Build with optimization, to use the i386 specific inline assembly + # and go faster for tests. + msg "build: i386, make, gcc -O2 (ASan build)" # ~ 30s scripts/config.pl full - make CC=gcc CFLAGS="$ASAN_CFLAGS -m32 -O1" LDFLAGS="-m32 $ASAN_CFLAGS" + make CC=gcc CFLAGS="$ASAN_CFLAGS -m32 -O2" LDFLAGS="-m32 $ASAN_CFLAGS" - msg "test: i386, make, gcc -O1 (ASan build)" + msg "test: i386, make, gcc -O2 (ASan build)" make test - msg "test ssl-opt.sh, i386, make, gcc-O1" + msg "test ssl-opt.sh, i386, make, gcc-O2" if_build_succeeded tests/ssl-opt.sh } support_test_m32_o1 () { From 2ae243139dbf23940f814b6cd83d2671e94446d8 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 7 Oct 2021 19:25:29 +0200 Subject: [PATCH 2/6] Correct support function name Signed-off-by: Gilles Peskine --- tests/scripts/all.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 0674a83a46..8d26408765 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -1470,7 +1470,7 @@ component_test_m32_o2 () { msg "test ssl-opt.sh, i386, make, gcc-O2" if_build_succeeded tests/ssl-opt.sh } -support_test_m32_o1 () { +support_test_m32_o2 () { support_test_m32_o0 "$@" } From 3638a962bc5b413e32a5b408e35cd4ea805d29e7 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 7 Oct 2021 19:27:16 +0200 Subject: [PATCH 3/6] Clarify a comment Signed-off-by: Gilles Peskine --- tests/scripts/all.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 8d26408765..8f65807e31 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -1442,7 +1442,8 @@ component_build_mbedtls_config_file () { } component_test_m32_o0 () { - # Build without optimization, to not use the i386 specific inline assembly. + # Build without optimization, so as to use portable C code (in a 32-bit + # build) and not the i386-specific inline assembly. msg "build: i386, make, gcc -O0 (ASan build)" # ~ 30s scripts/config.pl full make CC=gcc CFLAGS="$ASAN_CFLAGS -m32 -O0" LDFLAGS="-m32 $ASAN_CFLAGS" From 858373a26e3bcc3061b200b7c0943f6df0dce18b Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 7 Oct 2021 19:34:57 +0200 Subject: [PATCH 4/6] Switch cmake -O2 builds around to where we test a lot Use Release mode (-O2) for component_test_full_cmake_clang which runs SSL tests. To have some coverage with Check mode (which enables more compiler warnings but compiles with -Os), change a few other builds that only run unit tests at most to Check mode. Don't add any new builds, to keep the total build volume down. We don't need extensive coverage of all combinations, just a reasonable set. Signed-off-by: Gilles Peskine --- tests/scripts/all.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 8f65807e31..dc576ddc29 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -817,7 +817,7 @@ EOF component_test_zlib_cmake() { msg "build: zlib enabled, cmake" scripts/config.pl set MBEDTLS_ZLIB_SUPPORT - cmake -D ENABLE_ZLIB_SUPPORT=On -D CMAKE_BUILD_TYPE:String=Check . + cmake -D ENABLE_ZLIB_SUPPORT=On -D CMAKE_BUILD_TYPE:String=Release . make msg "test: main suites (zlib, cmake)" @@ -1055,7 +1055,7 @@ component_test_small_mbedtls_ssl_dtls_max_buffering () { component_test_full_cmake_clang () { msg "build: cmake, full config, clang" # ~ 50s scripts/config.pl full - CC=clang cmake -D CMAKE_BUILD_TYPE:String=Check -D ENABLE_TESTING=On . + CC=clang cmake -D CMAKE_BUILD_TYPE:String=Release -D ENABLE_TESTING=On . make msg "test: main suites (full config)" # ~ 5s @@ -1330,7 +1330,7 @@ component_test_null_entropy () { component_test_no_date_time () { msg "build: default config without MBEDTLS_HAVE_TIME_DATE" scripts/config.pl unset MBEDTLS_HAVE_TIME_DATE - CC=gcc cmake + CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Check make msg "test: !MBEDTLS_HAVE_TIME_DATE - main suites" @@ -1722,7 +1722,7 @@ component_test_cmake_out_of_source () { MBEDTLS_ROOT_DIR="$PWD" mkdir "$OUT_OF_SOURCE_DIR" cd "$OUT_OF_SOURCE_DIR" - cmake "$MBEDTLS_ROOT_DIR" + cmake -D CMAKE_BUILD_TYPE:String=Check "$MBEDTLS_ROOT_DIR" make msg "test: cmake 'out-of-source' build" From 13236707a20766cac6537b1c192239d90397fa1f Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 8 Oct 2021 11:45:47 +0200 Subject: [PATCH 5/6] Fix cmake invocation syntax Signed-off-by: Gilles Peskine --- tests/scripts/all.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index dc576ddc29..945a0f4eed 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -1330,7 +1330,7 @@ component_test_null_entropy () { component_test_no_date_time () { msg "build: default config without MBEDTLS_HAVE_TIME_DATE" scripts/config.pl unset MBEDTLS_HAVE_TIME_DATE - CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Check + CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Check . make msg "test: !MBEDTLS_HAVE_TIME_DATE - main suites" From 77624b2bd8ef1bbf8bdd944304e5abbe8fca97f1 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Tue, 19 Oct 2021 21:33:32 +0200 Subject: [PATCH 6/6] Always set a build type for cmake when building for testing Set the build type to Release (-O2) when running CPU-intensive tests (ssl-opt, or unit tests with debug features). A build type of Check (-Os) would be best when the main objective of the build is to check for build errors or warnings and there aren't many tests to run; in this commit there are no such test cases to change. Only use cmake with no build type (which results in not passing a -O option, and thus missing some GCC warnings) when exercising cmake features. Signed-off-by: Gilles Peskine --- tests/scripts/all.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 945a0f4eed..3e52e6e84b 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -1266,7 +1266,7 @@ component_test_memory_buffer_allocator_backtrace () { scripts/config.pl set MBEDTLS_PLATFORM_MEMORY scripts/config.pl set MBEDTLS_MEMORY_BACKTRACE scripts/config.pl set MBEDTLS_MEMORY_DEBUG - CC=gcc cmake . + CC=gcc cmake -DCMAKE_BUILD_TYPE:String=Release . make msg "test: MBEDTLS_MEMORY_BUFFER_ALLOC_C and MBEDTLS_MEMORY_BACKTRACE" @@ -1277,7 +1277,7 @@ component_test_memory_buffer_allocator () { msg "build: default config with memory buffer allocator" scripts/config.pl set MBEDTLS_MEMORY_BUFFER_ALLOC_C scripts/config.pl set MBEDTLS_PLATFORM_MEMORY - CC=gcc cmake . + CC=gcc cmake -DCMAKE_BUILD_TYPE:String=Release . make msg "test: MBEDTLS_MEMORY_BUFFER_ALLOC_C"