diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fd785451d7..dda1d96bfd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -129,6 +129,7 @@ test:ubsan: after_script: - grep 'runtime error' logs/*.log > runtime-errors.log artifacts: + when: always paths: - logs/ - runtime-errors.log @@ -161,6 +162,7 @@ test:ubsan:cs: after_script: - grep 'runtime error' cs-logs/*.log > runtime-errors.log artifacts: + when: always paths: - cs-logs/ - runtime-errors.log diff --git a/racket/src/ac/ubsan.m4 b/racket/src/ac/ubsan.m4 new file mode 100644 index 0000000000..715de38f67 --- /dev/null +++ b/racket/src/ac/ubsan.m4 @@ -0,0 +1,7 @@ +if test "${enable_ubsan}" = "yes" ; then + UBSAN="-fsanitize=undefined -fno-sanitize=alignment -fno-sanitize=float-divide-by-zero" + CFLAGS="$CFLAGS $UBSAN" + CPPFLAGS="$CPPFLAGS $UBSAN" + PREFLAGS="$PREFLAGS $UBSAN" + LDFLAGS="$LDFLAGS $UBSAN" +fi diff --git a/racket/src/ac/ubsan_arg.m4 b/racket/src/ac/ubsan_arg.m4 new file mode 100644 index 0000000000..4aa7b36036 --- /dev/null +++ b/racket/src/ac/ubsan_arg.m4 @@ -0,0 +1 @@ +AC_ARG_ENABLE(ubsan, [ --enable-ubsan compile with -fsanitize=undefined)]) diff --git a/racket/src/cfg-racket b/racket/src/cfg-racket index a26d1ffb66..87c93dd0ab 100755 --- a/racket/src/cfg-racket +++ b/racket/src/cfg-racket @@ -2880,6 +2880,7 @@ if test "${enable_ubsan+set}" = set; then : enableval=$enable_ubsan; fi + # Check whether --enable-jitframe was given. if test "${enable_jitframe+set}" = set; then : enableval=$enable_jitframe; @@ -6763,6 +6764,7 @@ if test "${enable_ubsan}" = "yes" ; then LDFLAGS="$LDFLAGS $UBSAN" fi + ############## usersetup ################ if test "${enable_usersetup}" != "yes" ; then diff --git a/racket/src/cs/c/configure b/racket/src/cs/c/configure index c447f721ce..c1cdc68ae9 100755 --- a/racket/src/cs/c/configure +++ b/racket/src/cs/c/configure @@ -780,6 +780,7 @@ enable_libfw enable_userfw enable_mac64 enable_noopt +enable_ubsan enable_csdefault enable_csonly enable_parent @@ -1422,6 +1423,7 @@ Optional Features: --enable-userfw install Mac OS frameworks to ~/Library/Frameworks --enable-mac64 allow 64-bit Mac OS build (enabled by default) --enable-strip strip debug on install (usually enabled by default) + --enable-ubsan compile with -fsanitize=undefined) --enable-csdefault use CS as default build --enable-csonly build CS only --enable-parent Create "../Makefile" (internal use) @@ -2437,6 +2439,12 @@ strip_debug_flags="" enable_strip_by_default=yes strip_needs_dash_s=no +# Check whether --enable-ubsan was given. +if test "${enable_ubsan+set}" = set; then : + enableval=$enable_ubsan; +fi + + # Check whether --enable-csdefault was given. if test "${enable_csdefault+set}" = set; then : enableval=$enable_csdefault; @@ -4315,6 +4323,17 @@ if test "${enable_natipkg}" = "yes" ; then CONFIGURE_RACKET_SO_COMPILE="${CONFIGURE_RACKET_SO_COMPILE} env PLT_CS_SLSP_SUFFIX=-natipkg" fi +############## ubsan ################ + +if test "${enable_ubsan}" = "yes" ; then + UBSAN="-fsanitize=undefined -fno-sanitize=alignment -fno-sanitize=float-divide-by-zero" + CFLAGS="$CFLAGS $UBSAN" + CPPFLAGS="$CPPFLAGS $UBSAN" + PREFLAGS="$PREFLAGS $UBSAN" + LDFLAGS="$LDFLAGS $UBSAN" +fi + + ############## Makefile includes ################ if test "$INCLUDEDEP" = "#" ; then diff --git a/racket/src/cs/c/configure.ac b/racket/src/cs/c/configure.ac index 74f6232869..add3ef862e 100644 --- a/racket/src/cs/c/configure.ac +++ b/racket/src/cs/c/configure.ac @@ -25,6 +25,7 @@ AC_ARG_ENABLE(target, [ --enable-target= Cross-build for Chez Scheme m4_include(../ac/natipkg_arg.m4) m4_include(../ac/sdk_arg.m4) m4_include(../ac/strip_arg.m4) +m4_include(../ac/ubsan_arg.m4) AC_ARG_ENABLE(csdefault, [ --enable-csdefault use CS as default build]) AC_ARG_ENABLE(csonly, [ --enable-csonly build CS only]) AC_ARG_ENABLE(parent, [ --enable-parent Create "../Makefile" (internal use)]) @@ -415,6 +416,10 @@ if test "${enable_natipkg}" = "yes" ; then CONFIGURE_RACKET_SO_COMPILE="${CONFIGURE_RACKET_SO_COMPILE} env PLT_CS_SLSP_SUFFIX=-natipkg" fi +############## ubsan ################ + +m4_include(../ac/ubsan.m4) + ############## Makefile includes ################ if test "$INCLUDEDEP" = "#" ; then diff --git a/racket/src/racket/configure.ac b/racket/src/racket/configure.ac index aad40065b6..fca7944147 100644 --- a/racket/src/racket/configure.ac +++ b/racket/src/racket/configure.ac @@ -78,7 +78,7 @@ AC_ARG_ENABLE(gcov, [ --enable-gcov compile to gather gcov statist m4_include(../ac/strip_arg.m4) AC_ARG_ENABLE(noopt, [ --enable-noopt drop -O C flags (useful for low-level debugging)]) -AC_ARG_ENABLE(ubsan, [ --enable-ubsan compile with -fsanitize=undefined)]) +m4_include(../ac/ubsan_arg.m4) AC_ARG_ENABLE(jitframe,[ --enable-jitframe x86_64: use frame pointer for internal calls]) m4_include(../ac/crossany_arg.m4) @@ -1289,13 +1289,7 @@ fi ############## ubsan ################ -if test "${enable_ubsan}" = "yes" ; then - UBSAN="-fsanitize=undefined -fno-sanitize=alignment -fno-sanitize=float-divide-by-zero" - CFLAGS="$CFLAGS $UBSAN" - CPPFLAGS="$CPPFLAGS $UBSAN" - PREFLAGS="$PREFLAGS $UBSAN" - LDFLAGS="$LDFLAGS $UBSAN" -fi +m4_include(../ac/ubsan.m4) ############## usersetup ################