From 268264fe64d04b82434c8efb2e9e94e8712719d4 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Sun, 15 Jun 2025 16:35:13 +0200 Subject: [PATCH] tools/ci.sh: Add functions for sanitizer builds. Includes both undefined and address sanitizer configurations. Signed-off-by: Jeff Epler --- tools/ci.sh | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tools/ci.sh b/tools/ci.sh index a5cd326c1c..b0e59509ad 100755 --- a/tools/ci.sh +++ b/tools/ci.sh @@ -512,6 +512,18 @@ CI_UNIX_OPTS_QEMU_RISCV64=( MICROPY_STANDALONE=1 ) +CI_UNIX_OPTS_SANITIZE_ADDRESS=( + VARIANT=coverage + CFLAGS_EXTRA="-fsanitize=address" + LDFLAGS_EXTRA="-fsanitize=address" +) + +CI_UNIX_OPTS_SANITIZE_UNDEFINED=( + VARIANT=coverage + CFLAGS_EXTRA="-fsanitize=undefined -fno-sanitize=nonnull-attribute" + LDFLAGS_EXTRA="-fsanitize=undefined -fno-sanitize=nonnull-attribute" +) + function ci_unix_build_helper { make ${MAKEOPTS} -C mpy-cross make ${MAKEOPTS} -C ports/unix "$@" submodules @@ -742,6 +754,28 @@ function ci_unix_settrace_stackless_run_tests { ci_unix_run_tests_full_helper standard "${CI_UNIX_OPTS_SYS_SETTRACE_STACKLESS[@]}" } +function ci_unix_sanitize_undefined_build { + make ${MAKEOPTS} -C mpy-cross + make ${MAKEOPTS} -C ports/unix submodules + make ${MAKEOPTS} -C ports/unix "${CI_UNIX_OPTS_SANITIZE_UNDEFINED[@]}" + ci_unix_build_ffi_lib_helper gcc +} + +function ci_unix_sanitize_undefined_run_tests { + ci_unix_run_tests_full_helper coverage "${CI_UNIX_OPTS_SANITIZE_UNDEFINED[@]}" +} + +function ci_unix_sanitize_address_build { + make ${MAKEOPTS} -C mpy-cross + make ${MAKEOPTS} -C ports/unix submodules + make ${MAKEOPTS} -C ports/unix "${CI_UNIX_OPTS_SANITIZE_ADDRESS[@]}" + ci_unix_build_ffi_lib_helper gcc +} + +function ci_unix_sanitize_address_run_tests { + ci_unix_run_tests_full_helper coverage "${CI_UNIX_OPTS_SANITIZE_ADDRESS[@]}" +} + function ci_unix_macos_build { make ${MAKEOPTS} -C mpy-cross make ${MAKEOPTS} -C ports/unix submodules