summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJeff Epler <jepler@gmail.com>2025-06-15 16:35:13 +0200
committerDamien George <damien@micropython.org>2025-06-16 23:28:08 +1000
commit268264fe64d04b82434c8efb2e9e94e8712719d4 (patch)
tree3e204aa8fc8c17cce508ba672997ff7b3844c741
parent2c8ccd3ee8945d53857e383911bf822374174257 (diff)
downloadmicropython-268264fe64d04b82434c8efb2e9e94e8712719d4.tar.gz
micropython-268264fe64d04b82434c8efb2e9e94e8712719d4.zip
tools/ci.sh: Add functions for sanitizer builds.
Includes both undefined and address sanitizer configurations. Signed-off-by: Jeff Epler <jepler@gmail.com>
-rwxr-xr-xtools/ci.sh34
1 files changed, 34 insertions, 0 deletions
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