Skip to content

Commit 91972cc

Browse files
Merge pull request #9608 from gilles-peskine-arm/outcome-check-repeated-configurations-all.sh-preliminaries-3.6
Backport 3.6: Fix some all.sh components with sub-components
2 parents 0b8b7a1 + 77e6ded commit 91972cc

File tree

5 files changed

+74
-72
lines changed

5 files changed

+74
-72
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ massif-*
3535

3636
# Unix-like build artifacts:
3737
*.o
38+
*.s
3839

3940
# MSVC build artifacts:
4041
*.exe

library/Makefile

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,10 @@ libmbedcrypto.dll: $(OBJS_CRYPTO)
337337
echo " CC $<"
338338
$(CC) $(LOCAL_CFLAGS) $(CFLAGS) -o $@ -c $<
339339

340+
.c.s:
341+
echo " CC $<"
342+
$(CC) $(LOCAL_CFLAGS) $(CFLAGS) -S -o $@ -c $<
343+
340344
.PHONY: generated_files
341345
generated_files: $(GENERATED_FILES)
342346

@@ -387,12 +391,13 @@ psa_crypto.o:psa_crypto_driver_wrappers.h
387391

388392
clean:
389393
ifndef WINDOWS
390-
rm -f *.o libmbed*
391-
rm -f $(THIRDPARTY_CRYPTO_OBJECTS)
394+
rm -f *.o *.s libmbed*
395+
rm -f $(THIRDPARTY_CRYPTO_OBJECTS) $(THIRDPARTY_CRYPTO_OBJECTS:.o=.s)
392396
else
393397
if exist *.o del /Q /F *.o
398+
if exist *.s del /Q /F *.s
394399
if exist libmbed* del /Q /F libmbed*
395-
del /Q /F del_errors_out_if_the_file_list_is_empty_but_not_if_a_file_does_not_exist $(subst /,\,$(THIRDPARTY_CRYPTO_OBJECTS))
400+
del /Q /F del_errors_out_if_the_file_list_is_empty_but_not_if_a_file_does_not_exist $(subst /,\,$(THIRDPARTY_CRYPTO_OBJECTS) $(THIRDPARTY_CRYPTO_OBJECTS:.o=.s))
396401
endif
397402

398403
neat: clean

tests/scripts/components-compiler.sh

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ support_test_clang_latest_opt () {
5656

5757
component_test_clang_earliest_opt () {
5858
scripts/config.py full
59-
test_build_opt 'full config' "$CLANG_EARLIEST" -O0
59+
test_build_opt 'full config' "$CLANG_EARLIEST" -O2
6060
}
6161

6262
support_test_clang_earliest_opt () {
@@ -74,7 +74,7 @@ support_test_gcc_latest_opt () {
7474

7575
component_test_gcc_earliest_opt () {
7676
scripts/config.py full
77-
test_build_opt 'full config' "$GCC_EARLIEST" -O0
77+
test_build_opt 'full config' "$GCC_EARLIEST" -O2
7878
}
7979

8080
support_test_gcc_earliest_opt () {
@@ -83,20 +83,20 @@ support_test_gcc_earliest_opt () {
8383

8484
component_build_mingw () {
8585
msg "build: Windows cross build - mingw64, make (Link Library)" # ~ 30s
86-
make CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar LD=i686-w64-minggw32-ld CFLAGS='-Werror -Wall -Wextra -maes -msse2 -mpclmul' WINDOWS_BUILD=1 lib programs
86+
make CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar CFLAGS='-Werror -Wall -Wextra -maes -msse2 -mpclmul' WINDOWS_BUILD=1 lib programs
8787

8888
# note Make tests only builds the tests, but doesn't run them
89-
make CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar LD=i686-w64-minggw32-ld CFLAGS='-Werror -maes -msse2 -mpclmul' WINDOWS_BUILD=1 tests
89+
make CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar CFLAGS='-Werror -maes -msse2 -mpclmul' WINDOWS_BUILD=1 tests
9090
make WINDOWS_BUILD=1 clean
9191

9292
msg "build: Windows cross build - mingw64, make (DLL)" # ~ 30s
93-
make CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar LD=i686-w64-minggw32-ld CFLAGS='-Werror -Wall -Wextra -maes -msse2 -mpclmul' WINDOWS_BUILD=1 SHARED=1 lib programs
94-
make CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar LD=i686-w64-minggw32-ld CFLAGS='-Werror -Wall -Wextra -maes -msse2 -mpclmul' WINDOWS_BUILD=1 SHARED=1 tests
93+
make CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar CFLAGS='-Werror -Wall -Wextra -maes -msse2 -mpclmul' WINDOWS_BUILD=1 SHARED=1 lib programs
94+
make CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar CFLAGS='-Werror -Wall -Wextra -maes -msse2 -mpclmul' WINDOWS_BUILD=1 SHARED=1 tests
9595
make WINDOWS_BUILD=1 clean
9696

9797
msg "build: Windows cross build - mingw64, make (Library only, default config without MBEDTLS_AESNI_C)" # ~ 30s
9898
./scripts/config.py unset MBEDTLS_AESNI_C #
99-
make CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar LD=i686-w64-minggw32-ld CFLAGS='-Werror -Wall -Wextra' WINDOWS_BUILD=1 lib
99+
make CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar CFLAGS='-Werror -Wall -Wextra' WINDOWS_BUILD=1 lib
100100
make WINDOWS_BUILD=1 clean
101101
}
102102

tests/scripts/components-configuration-crypto.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2474,7 +2474,7 @@ component_test_psa_crypto_config_accel_des () {
24742474
helper_libtestdriver1_make_main "$loc_accel_list"
24752475

24762476
# Make sure this was not re-enabled by accident (additive config)
2477-
not grep mbedtls_des* library/des.o
2477+
not grep mbedtls_des library/des.o
24782478

24792479
# Run the tests
24802480
# -------------

tests/scripts/components-platform.sh

Lines changed: 57 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -149,49 +149,53 @@ component_build_aes_armce () {
149149
scripts/config.py set MBEDTLS_AES_USE_HARDWARE_ONLY
150150

151151
msg "MBEDTLS_AES_USE_HARDWARE_ONLY, clang, aarch64"
152-
make -B library/aesce.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a+crypto"
152+
make -B library/aesce.o library/aesce.s CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a+crypto"
153+
msg "clang, test aarch64 crypto instructions built"
154+
grep -E 'aes[a-z]+\s*[qv]' library/aesce.s
153155

154156
msg "MBEDTLS_AES_USE_HARDWARE_ONLY, clang, arm"
155-
make -B library/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm"
157+
make -B library/aesce.o library/aesce.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm"
158+
msg "clang, test A32 crypto instructions built"
159+
grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.s
156160

157161
msg "MBEDTLS_AES_USE_HARDWARE_ONLY, clang, thumb"
158-
make -B library/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
162+
make -B library/aesce.o library/aesce.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
163+
msg "clang, test T32 crypto instructions built"
164+
grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.s
159165

160166
scripts/config.py unset MBEDTLS_AES_USE_HARDWARE_ONLY
161167

162-
msg "no MBEDTLS_AES_USE_HARDWARE_ONLY, clang, aarch64"
163-
make -B library/aesce.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a+crypto"
164-
165-
msg "no MBEDTLS_AES_USE_HARDWARE_ONLY, clang, arm"
166-
make -B library/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm"
167-
168-
msg "no MBEDTLS_AES_USE_HARDWARE_ONLY, clang, thumb"
169-
make -B library/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
168+
msg "MBEDTLS_AES_USE_both, clang, aarch64"
169+
make -B library/aesce.o library/aesce.s CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a+crypto"
170+
msg "clang, test aarch64 crypto instructions built"
171+
grep -E 'aes[a-z]+\s*[qv]' library/aesce.s
170172

171-
# test for presence of AES instructions
172-
scripts/config.py set MBEDTLS_AES_USE_HARDWARE_ONLY
173+
msg "MBEDTLS_AES_USE_both, clang, arm"
174+
make -B library/aesce.o library/aesce.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm"
173175
msg "clang, test A32 crypto instructions built"
174-
make -B library/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -S"
175-
grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.o
176+
grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.s
177+
178+
msg "MBEDTLS_AES_USE_both, clang, thumb"
179+
make -B library/aesce.o library/aesce.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
176180
msg "clang, test T32 crypto instructions built"
177-
make -B library/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb -S"
178-
grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.o
179-
msg "clang, test aarch64 crypto instructions built"
180-
make -B library/aesce.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a -S"
181-
grep -E 'aes[a-z]+\s*[qv]' library/aesce.o
181+
grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.s
182182

183-
# test for absence of AES instructions
184-
scripts/config.py unset MBEDTLS_AES_USE_HARDWARE_ONLY
185183
scripts/config.py unset MBEDTLS_AESCE_C
184+
185+
msg "no MBEDTLS_AESCE_C, clang, aarch64"
186+
make -B library/aesce.o library/aesce.s CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a"
187+
msg "clang, test aarch64 crypto instructions not built"
188+
not grep -E 'aes[a-z]+\s*[qv]' library/aesce.s
189+
190+
msg "no MBEDTLS_AESCE_C, clang, arm"
191+
make -B library/aesce.o library/aesce.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72 -marm"
186192
msg "clang, test A32 crypto instructions not built"
187-
make -B library/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -S"
188-
not grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.o
193+
not grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.s
194+
195+
msg "no MBEDTLS_AESCE_C, clang, thumb"
196+
make -B library/aesce.o library/aesce.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32 -mthumb"
189197
msg "clang, test T32 crypto instructions not built"
190-
make -B library/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb -S"
191-
not grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.o
192-
msg "clang, test aarch64 crypto instructions not built"
193-
make -B library/aesce.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a -S"
194-
not grep -E 'aes[a-z]+\s*[qv]' library/aesce.o
198+
not grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.s
195199
}
196200

197201
support_build_sha_armce () {
@@ -202,67 +206,59 @@ support_build_sha_armce () {
202206
component_build_sha_armce () {
203207
scripts/config.py unset MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT
204208

205-
206209
# Test variations of SHA256 Armv8 crypto extensions
207210
scripts/config.py set MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY
208211
msg "MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY clang, aarch64"
209-
make -B library/sha256.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a"
212+
make -B library/sha256.o library/sha256.s CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a+crypto"
213+
msg "MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY clang, test aarch64 crypto instructions built"
214+
grep -E 'sha256[a-z0-9]+\s+[qv]' library/sha256.s
215+
210216
msg "MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY clang, arm"
211-
make -B library/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm"
217+
make -B library/sha256.o library/sha256.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm"
218+
msg "MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY clang, test A32 crypto instructions built"
219+
grep -E 'sha256[a-z0-9]+.32\s+[qv]' library/sha256.s
212220
scripts/config.py unset MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY
213221

214222

215223
# test the deprecated form of the config option
216224
scripts/config.py set MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY
217225
msg "MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY clang, thumb"
218-
make -B library/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
226+
make -B library/sha256.o library/sha256.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
227+
msg "MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY clang, test T32 crypto instructions built"
228+
grep -E 'sha256[a-z0-9]+.32\s+[qv]' library/sha256.s
219229
scripts/config.py unset MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY
220230

221231
scripts/config.py set MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT
222232
msg "MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT clang, aarch64"
223-
make -B library/sha256.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a"
233+
make -B library/sha256.o library/sha256.s CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a+crypto"
234+
msg "MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT clang, test aarch64 crypto instructions built"
235+
grep -E 'sha256[a-z0-9]+\s+[qv]' library/sha256.s
224236
scripts/config.py unset MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT
225237

226238

227239
# test the deprecated form of the config option
228240
scripts/config.py set MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT
229241
msg "MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT clang, arm"
230-
make -B library/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -std=c99"
242+
make -B library/sha256.o library/sha256.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -std=c99"
243+
231244
msg "MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT clang, thumb"
232-
make -B library/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
245+
make -B library/sha256.o library/sha256.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
246+
msg "MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT clang, test T32 crypto instructions built"
247+
grep -E 'sha256[a-z0-9]+.32\s+[qv]' library/sha256.s
233248
scripts/config.py unset MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT
234249

235-
236-
# examine the disassembly for presence of SHA instructions
237-
for opt in MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT; do
238-
scripts/config.py set ${opt}
239-
msg "${opt} clang, test A32 crypto instructions built"
240-
make -B library/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -S"
241-
grep -E 'sha256[a-z0-9]+.32\s+[qv]' library/sha256.o
242-
243-
msg "${opt} clang, test T32 crypto instructions built"
244-
make -B library/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb -S"
245-
grep -E 'sha256[a-z0-9]+.32\s+[qv]' library/sha256.o
246-
247-
msg "${opt} clang, test aarch64 crypto instructions built"
248-
make -B library/sha256.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a -S"
249-
grep -E 'sha256[a-z0-9]+\s+[qv]' library/sha256.o
250-
scripts/config.py unset ${opt}
251-
done
252-
253-
254250
# examine the disassembly for absence of SHA instructions
255251
msg "clang, test A32 crypto instructions not built"
256-
make -B library/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -S"
257-
not grep -E 'sha256[a-z0-9]+.32\s+[qv]' library/sha256.o
252+
make -B library/sha256.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72 -marm"
253+
not grep -E 'sha256[a-z0-9]+.32\s+[qv]' library/sha256.s
258254

259255
msg "clang, test T32 crypto instructions not built"
260-
make -B library/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb -S"
261-
not grep -E 'sha256[a-z0-9]+.32\s+[qv]' library/sha256.o
256+
make -B library/sha256.s CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32 -mthumb"
257+
not grep -E 'sha256[a-z0-9]+.32\s+[qv]' library/sha256.s
262258

263259
msg "clang, test aarch64 crypto instructions not built"
264-
make -B library/sha256.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a -S"
265-
not grep -E 'sha256[a-z0-9]+\s+[qv]' library/sha256.o
260+
make -B library/sha256.s CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a"
261+
not grep -E 'sha256[a-z0-9]+\s+[qv]' library/sha256.s
266262
}
267263

268264
component_test_m32_no_asm () {

0 commit comments

Comments
 (0)