@@ -512,6 +512,18 @@ CI_UNIX_OPTS_QEMU_RISCV64=(
512
512
MICROPY_STANDALONE=1
513
513
)
514
514
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
+
515
527
function ci_unix_build_helper {
516
528
make ${MAKEOPTS} -C mpy-cross
517
529
make ${MAKEOPTS} -C ports/unix " $@ " submodules
@@ -742,6 +754,28 @@ function ci_unix_settrace_stackless_run_tests {
742
754
ci_unix_run_tests_full_helper standard " ${CI_UNIX_OPTS_SYS_SETTRACE_STACKLESS[@]} "
743
755
}
744
756
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
+
745
779
function ci_unix_macos_build {
746
780
make ${MAKEOPTS} -C mpy-cross
747
781
make ${MAKEOPTS} -C ports/unix submodules
0 commit comments