Merge pull request #7968 from gowthamsk-arm/use_earliest_latest_compilers

Use earliest latest compilers
This commit is contained in:
Bence Szépkúti 2023-08-02 05:58:02 +00:00 committed by GitHub
commit 9661f8ab0d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 95 additions and 21 deletions

View File

@ -3641,7 +3641,7 @@ cleanup:
#if defined(MBEDTLS_TEST_HOOKS) #if defined(MBEDTLS_TEST_HOOKS)
MBEDTLS_STATIC_TESTABLE MBEDTLS_STATIC_TESTABLE
mbedtls_ecp_variant mbedtls_ecp_get_variant() mbedtls_ecp_variant mbedtls_ecp_get_variant(void)
{ {
return MBEDTLS_ECP_VARIANT_WITH_MPI_STRUCT; return MBEDTLS_ECP_VARIANT_WITH_MPI_STRUCT;
} }

View File

@ -13,7 +13,7 @@ mbedtls_time_t dummy_constant_time(mbedtls_time_t *time)
} }
#endif #endif
void dummy_init() void dummy_init(void)
{ {
#if defined(MBEDTLS_PLATFORM_TIME_ALT) #if defined(MBEDTLS_PLATFORM_TIME_ALT)
mbedtls_platform_set_time(dummy_constant_time); mbedtls_platform_set_time(dummy_constant_time);

View File

@ -15,7 +15,7 @@ typedef struct fuzzBufferOffset {
#if defined(MBEDTLS_HAVE_TIME) #if defined(MBEDTLS_HAVE_TIME)
mbedtls_time_t dummy_constant_time(mbedtls_time_t *time); mbedtls_time_t dummy_constant_time(mbedtls_time_t *time);
#endif #endif
void dummy_init(); void dummy_init(void);
int dummy_send(void *ctx, const unsigned char *buf, size_t len); int dummy_send(void *ctx, const unsigned char *buf, size_t len);
int fuzz_recv(void *ctx, unsigned char *buf, size_t len); int fuzz_recv(void *ctx, unsigned char *buf, size_t len);

View File

@ -125,12 +125,12 @@ const char buf_ln_err[] = "Buffer does not have enough data to complete the pars
/* /*
* Basic printing functions * Basic printing functions
*/ */
void print_version() void print_version(void)
{ {
printf("%s v%d.%d\n", PROG_NAME, VER_MAJOR, VER_MINOR); printf("%s v%d.%d\n", PROG_NAME, VER_MAJOR, VER_MINOR);
} }
void print_usage() void print_usage(void)
{ {
print_version(); print_version();
printf("\nThis program is used to deserialize an Mbed TLS SSL session from the base64 code provided\n" printf("\nThis program is used to deserialize an Mbed TLS SSL session from the base64 code provided\n"
@ -179,7 +179,7 @@ void printf_err(const char *str, ...)
/* /*
* Exit from the program in case of error * Exit from the program in case of error
*/ */
void error_exit() void error_exit(void)
{ {
if (NULL != b64_file) { if (NULL != b64_file) {
fclose(b64_file); fclose(b64_file);

View File

@ -644,7 +644,7 @@ void delay_packet(packet *delay)
memcpy(&prev[prev_len++], delay, sizeof(packet)); memcpy(&prev[prev_len++], delay, sizeof(packet));
} }
int send_delayed() int send_delayed(void)
{ {
uint8_t offset; uint8_t offset;
int ret; int ret;

View File

@ -105,9 +105,37 @@ echo
print_version "gcc" "--version" "" "head -n 1" print_version "gcc" "--version" "" "head -n 1"
echo echo
if [ -n "${GCC_EARLIEST+set}" ]; then
print_version "${GCC_EARLIEST}" "--version" "" "head -n 1"
else
echo " GCC_EARLIEST : Not configured."
fi
echo
if [ -n "${GCC_LATEST+set}" ]; then
print_version "${GCC_LATEST}" "--version" "" "head -n 1"
else
echo " GCC_LATEST : Not configured."
fi
echo
print_version "clang" "--version" "" "head -n 2" print_version "clang" "--version" "" "head -n 2"
echo echo
if [ -n "${CLANG_EARLIEST+set}" ]; then
print_version "${CLANG_EARLIEST}" "--version" "" "head -n 2"
else
echo " CLANG_EARLIEST : Not configured."
fi
echo
if [ -n "${CLANG_LATEST+set}" ]; then
print_version "${CLANG_LATEST}" "--version" "" "head -n 2"
else
echo " CLANG_LATEST : Not configured."
fi
echo
print_version "ldd" "--version" "" "head -n 1" print_version "ldd" "--version" "" "head -n 1"
echo echo

View File

@ -176,7 +176,10 @@ pre_initialize_variables () {
: ${ARMC6_BIN_DIR:=/usr/bin} : ${ARMC6_BIN_DIR:=/usr/bin}
: ${ARM_NONE_EABI_GCC_PREFIX:=arm-none-eabi-} : ${ARM_NONE_EABI_GCC_PREFIX:=arm-none-eabi-}
: ${ARM_LINUX_GNUEABI_GCC_PREFIX:=arm-linux-gnueabi-} : ${ARM_LINUX_GNUEABI_GCC_PREFIX:=arm-linux-gnueabi-}
: ${CLANG_LATEST:="clang-latest"}
: ${CLANG_EARLIEST:="clang-earliest"}
: ${GCC_LATEST:="gcc-latest"}
: ${GCC_EARLIEST:="gcc-earliest"}
# if MAKEFLAGS is not set add the -j option to speed up invocations of make # if MAKEFLAGS is not set add the -j option to speed up invocations of make
if [ -z "${MAKEFLAGS+set}" ]; then if [ -z "${MAKEFLAGS+set}" ]; then
export MAKEFLAGS="-j$(all_sh_nproc)" export MAKEFLAGS="-j$(all_sh_nproc)"
@ -191,9 +194,7 @@ pre_initialize_variables () {
# Gather the list of available components. These are the functions # Gather the list of available components. These are the functions
# defined in this script whose name starts with "component_". # defined in this script whose name starts with "component_".
# Parse the script with sed. This way we get the functions in the order ALL_COMPONENTS=$(compgen -A function component_ | sed 's/component_//')
# they are defined.
ALL_COMPONENTS=$(sed -n 's/^ *component_\([0-9A-Z_a-z]*\) *().*/\1/p' <"$0")
# Exclude components that are not supported on this platform. # Exclude components that are not supported on this platform.
SUPPORTED_COMPONENTS= SUPPORTED_COMPONENTS=
@ -275,6 +276,10 @@ General options:
Tool path options: Tool path options:
--armc5-bin-dir=<ARMC5_bin_dir_path> ARM Compiler 5 bin directory. --armc5-bin-dir=<ARMC5_bin_dir_path> ARM Compiler 5 bin directory.
--armc6-bin-dir=<ARMC6_bin_dir_path> ARM Compiler 6 bin directory. --armc6-bin-dir=<ARMC6_bin_dir_path> ARM Compiler 6 bin directory.
--clang-earliest=<Clang_earliest_path> Earliest version of clang available
--clang-latest=<Clang_latest_path> Latest version of clang available
--gcc-earliest=<GCC_earliest_path> Earliest version of GCC available
--gcc-latest=<GCC_latest_path> Latest version of GCC available
--gnutls-cli=<GnuTLS_cli_path> GnuTLS client executable to use for most tests. --gnutls-cli=<GnuTLS_cli_path> GnuTLS client executable to use for most tests.
--gnutls-serv=<GnuTLS_serv_path> GnuTLS server executable to use for most tests. --gnutls-serv=<GnuTLS_serv_path> GnuTLS server executable to use for most tests.
--gnutls-legacy-cli=<GnuTLS_cli_path> GnuTLS client executable to use for legacy tests. --gnutls-legacy-cli=<GnuTLS_cli_path> GnuTLS client executable to use for legacy tests.
@ -441,9 +446,13 @@ pre_parse_command_line () {
--armcc) no_armcc=;; --armcc) no_armcc=;;
--armc5-bin-dir) shift; ;; # assignment to ARMC5_BIN_DIR done in pre_parse_command_line_for_dirs --armc5-bin-dir) shift; ;; # assignment to ARMC5_BIN_DIR done in pre_parse_command_line_for_dirs
--armc6-bin-dir) shift; ;; # assignment to ARMC6_BIN_DIR done in pre_parse_command_line_for_dirs --armc6-bin-dir) shift; ;; # assignment to ARMC6_BIN_DIR done in pre_parse_command_line_for_dirs
--clang-earliest) shift; CLANG_EARLIEST="$1";;
--clang-latest) shift; CLANG_LATEST="$1";;
--error-test) error_test=$((error_test + 1));; --error-test) error_test=$((error_test + 1));;
--except) all_except=1;; --except) all_except=1;;
--force|-f) FORCE=1;; --force|-f) FORCE=1;;
--gcc-earliest) shift; GCC_EARLIEST="$1";;
--gcc-latest) shift; GCC_LATEST="$1";;
--gnutls-cli) shift; GNUTLS_CLI="$1";; --gnutls-cli) shift; GNUTLS_CLI="$1";;
--gnutls-legacy-cli) shift; GNUTLS_LEGACY_CLI="$1";; --gnutls-legacy-cli) shift; GNUTLS_LEGACY_CLI="$1";;
--gnutls-legacy-serv) shift; GNUTLS_LEGACY_SERV="$1";; --gnutls-legacy-serv) shift; GNUTLS_LEGACY_SERV="$1";;
@ -4023,6 +4032,7 @@ component_test_cmake_shared () {
test_build_opt () { test_build_opt () {
info=$1 cc=$2; shift 2 info=$1 cc=$2; shift 2
$cc --version
for opt in "$@"; do for opt in "$@"; do
msg "build/test: $cc $opt, $info" # ~ 30s msg "build/test: $cc $opt, $info" # ~ 30s
make CC="$cc" CFLAGS="$opt -std=c99 -pedantic -Wall -Wextra -Werror" make CC="$cc" CFLAGS="$opt -std=c99 -pedantic -Wall -Wextra -Werror"
@ -4035,14 +4045,45 @@ test_build_opt () {
done done
} }
component_test_clang_opt () { # For FreeBSD we invoke the function by name so this condition is added
# to disable the existing test_clang_opt function for linux.
if [[ $(uname) != "Linux" ]]; then
component_test_clang_opt () {
scripts/config.py full scripts/config.py full
test_build_opt 'full config' clang -O0 -Os -O2 test_build_opt 'full config' clang -O0 -Os -O2
}
fi
component_test_clang_latest_opt () {
scripts/config.py full
test_build_opt 'full config' "$CLANG_LATEST" -O0 -Os -O2
}
support_test_clang_latest_opt () {
type "$CLANG_LATEST" >/dev/null 2>/dev/null
} }
component_test_gcc_opt () { component_test_clang_earliest_opt () {
scripts/config.py full scripts/config.py full
test_build_opt 'full config' gcc -O0 -Os -O2 test_build_opt 'full config' "$CLANG_EARLIEST" -O0
}
support_test_clang_earliest_opt () {
type "$CLANG_EARLIEST" >/dev/null 2>/dev/null
}
component_test_gcc_latest_opt () {
scripts/config.py full
test_build_opt 'full config' "$GCC_LATEST" -O0 -Os -O2
}
support_test_gcc_latest_opt () {
type "$GCC_LATEST" >/dev/null 2>/dev/null
}
component_test_gcc_earliest_opt () {
scripts/config.py full
test_build_opt 'full config' "$GCC_EARLIEST" -O0
}
support_test_gcc_earliest_opt () {
type "$GCC_EARLIEST" >/dev/null 2>/dev/null
} }
component_build_mbedtls_config_file () { component_build_mbedtls_config_file () {

View File

@ -667,6 +667,11 @@ def parse_function_code(funcs_f, dependencies, suite_dependencies):
code = code.replace(name, 'test_' + name, 1) code = code.replace(name, 'test_' + name, 1)
name = 'test_' + name name = 'test_' + name
# If a test function has no arguments then add 'void' argument to
# avoid "-Wstrict-prototypes" warnings from clang
if len(args) == 0:
code = code.replace('()', '(void)', 1)
for line in funcs_f: for line in funcs_f:
if re.search(END_CASE_REGEX, line): if re.search(END_CASE_REGEX, line):
break break

View File

@ -647,7 +647,7 @@ void func()
self.assertEqual(arg, []) self.assertEqual(arg, [])
expected = '''#line 1 "test_suite_ut.function" expected = '''#line 1 "test_suite_ut.function"
void test_func() void test_func(void)
{ {
ba ba black sheep ba ba black sheep
have you any wool have you any wool
@ -690,7 +690,7 @@ exit:
expected = '''#line 1 "test_suite_ut.function" expected = '''#line 1 "test_suite_ut.function"
void test_func() void test_func(void)
{ {
ba ba black sheep ba ba black sheep
have you any wool have you any wool
@ -750,7 +750,7 @@ exit:
void void
test_func() test_func(void)
{ {
ba ba black sheep ba ba black sheep
have you any wool have you any wool
@ -803,7 +803,7 @@ exit:
void test_func() void test_func(void)
{ {
ba ba black sheep ba ba black sheep
have you any wool have you any wool
@ -1139,7 +1139,7 @@ void func2()
#if defined(MBEDTLS_ENTROPY_NV_SEED) #if defined(MBEDTLS_ENTROPY_NV_SEED)
#if defined(MBEDTLS_FS_IO) #if defined(MBEDTLS_FS_IO)
#line 13 "test_suite_ut.function" #line 13 "test_suite_ut.function"
void test_func1() void test_func1(void)
{ {
exit: exit:
; ;
@ -1156,7 +1156,7 @@ void test_func1_wrapper( void ** params )
#if defined(MBEDTLS_ENTROPY_NV_SEED) #if defined(MBEDTLS_ENTROPY_NV_SEED)
#if defined(MBEDTLS_FS_IO) #if defined(MBEDTLS_FS_IO)
#line 19 "test_suite_ut.function" #line 19 "test_suite_ut.function"
void test_func2() void test_func2(void)
{ {
exit: exit:
; ;