@@ -512,6 +512,18 @@ CI_UNIX_OPTS_QEMU_RISCV64=(
512512 MICROPY_STANDALONE=1
513513)
514514
515+ CI_UNIX_OPTS_SANITIZE_ADDRESS=(
516+ VARIANT=coverage
517+ CFLAGS_EXTRA=" -fsanitize=address"
518+ LDFLAGS_EXTRA=" -fsanitize=address"
519+ )
520+
521+ CI_UNIX_OPTS_SANITIZE_UNDEFINED=(
522+ VARIANT=coverage
523+ CFLAGS_EXTRA=" -fsanitize=undefined -fno-sanitize=nonnull-attribute"
524+ LDFLAGS_EXTRA=" -fsanitize=undefined -fno-sanitize=nonnull-attribute"
525+ )
526+
515527function ci_unix_build_helper {
516528 make ${MAKEOPTS} -C mpy-cross
517529 make ${MAKEOPTS} -C ports/unix " $@ " submodules
@@ -742,6 +754,28 @@ function ci_unix_settrace_stackless_run_tests {
742754 ci_unix_run_tests_full_helper standard " ${CI_UNIX_OPTS_SYS_SETTRACE_STACKLESS[@]} "
743755}
744756
757+ function ci_unix_sanitize_undefined_build {
758+ make ${MAKEOPTS} -C mpy-cross
759+ make ${MAKEOPTS} -C ports/unix submodules
760+ make ${MAKEOPTS} -C ports/unix " ${CI_UNIX_OPTS_SANITIZE_UNDEFINED[@]} "
761+ ci_unix_build_ffi_lib_helper gcc
762+ }
763+
764+ function ci_unix_sanitize_undefined_run_tests {
765+ ci_unix_run_tests_full_helper coverage " ${CI_UNIX_OPTS_SANITIZE_UNDEFINED[@]} "
766+ }
767+
768+ function ci_unix_sanitize_address_build {
769+ make ${MAKEOPTS} -C mpy-cross
770+ make ${MAKEOPTS} -C ports/unix submodules
771+ make ${MAKEOPTS} -C ports/unix " ${CI_UNIX_OPTS_SANITIZE_ADDRESS[@]} "
772+ ci_unix_build_ffi_lib_helper gcc
773+ }
774+
775+ function ci_unix_sanitize_address_run_tests {
776+ ci_unix_run_tests_full_helper coverage " ${CI_UNIX_OPTS_SANITIZE_ADDRESS[@]} "
777+ }
778+
745779function ci_unix_macos_build {
746780 make ${MAKEOPTS} -C mpy-cross
747781 make ${MAKEOPTS} -C ports/unix submodules
0 commit comments