Mercurial > octave
changeset 30277:f816a8c44924
allow build to succeed when address sanitizer is enabled (bug #61415)
* configure.ac, Makefile.am: Explicitly substitute
ADDRESS_SANITIZER_ENABLED and ADDRESS_SANITIZER_OPTIONS.
* subst-script-vals.in.sh: Also substitute ADDRESS_SANITIZER_ENABLED.
* run-octave.in: New option, -disable-asan, to suppress address
sanitizer output and disable leak checks on exit.
* graphics_properties.mk, images.awk, doc/interpreter/module.mk:
Invoke run-octave with -disable-asan.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 10 Nov 2021 11:50:31 -0500 |
parents | 63147d7d53a0 |
children | cc2330cd31e0 |
files | Makefile.am build-aux/subst-script-vals.in.sh configure.ac doc/interpreter/graphics_properties.mk doc/interpreter/images.awk doc/interpreter/module.mk run-octave.in |
diffstat | 7 files changed, 25 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile.am Wed Nov 10 10:38:12 2021 -0500 +++ b/Makefile.am Wed Nov 10 11:50:31 2021 -0500 @@ -76,6 +76,9 @@ AM_CXXFLAGS = ${CXXPICFLAG} ${XTRA_CXXFLAGS} ${WARN_CXXFLAGS} $(OCTAVE_VISIBILITY_FLAGS) +ADDRESS_SANITIZER_ENABLED = @ADDRESS_SANITIZER_ENABLED@ +ADDRESS_SANITIZER_OPTIONS = @ADDRESS_SANITIZER_OPTIONS@ + FFTW_XCPPFLAGS = @FFTW_XCPPFLAGS@ FFTW_XLDFLAGS = @FFTW_XLDFLAGS@ FFTW_XLIBS = @FFTW_XLIBS@
--- a/build-aux/subst-script-vals.in.sh Wed Nov 10 10:38:12 2021 -0500 +++ b/build-aux/subst-script-vals.in.sh Wed Nov 10 11:50:31 2021 -0500 @@ -30,6 +30,7 @@ AWK="@AWK@" FIND="@FIND@" SED="@SED@" +ADDRESS_SANITIZER_ENABLED="@ADDRESS_SANITIZER_ENABLED@" ADDRESS_SANITIZER_OPTIONS="@ADDRESS_SANITIZER_OPTIONS@" abs_top_srcdir="@abs_top_srcdir@" abs_top_builddir="@abs_top_builddir@" @@ -38,6 +39,7 @@ -e "s|%AWK%|${AWK}|g" \ -e "s|%FIND%|${FIND}|g" \ -e "s|%SED%|${SED}|g" \ + -e "s|%ADDRESS_SANITIZER_ENABLED%|${ADDRESS_SANITIZER_ENABLED}|g" \ -e "s|%ADDRESS_SANITIZER_OPTIONS%|${ADDRESS_SANITIZER_OPTIONS}|g" \ -e "s|%abs_top_srcdir%|${abs_top_srcdir}|" \ -e "s|%builddir%|${abs_top_builddir}|"
--- a/configure.ac Wed Nov 10 10:38:12 2021 -0500 +++ b/configure.ac Wed Nov 10 11:50:31 2021 -0500 @@ -2775,7 +2775,9 @@ AM_CONDITIONAL([AMCOND_ADDRESS_SANITIZER_ENABLED], [test $try_address_sanitizer_flags = yes]) +ADDRESS_SANITIZER_ENABLED=no if test $try_address_sanitizer_flags = yes; then + ADDRESS_SANITIZER_ENABLED=yes for flag in $GCC_ADDRESS_SANITIZER_FLAGS; do OCTAVE_CC_FLAG([$flag], [ WARN_CFLAGS="$WARN_CFLAGS $flag"; @@ -2793,6 +2795,7 @@ AC_MSG_RESULT([adding $flag to WARN_LDFLAGS])]) done fi +AC_SUBST(ADDRESS_SANITIZER_ENABLED) AC_SUBST(WARN_CFLAGS) AC_SUBST(WARN_CXXFLAGS)
--- a/doc/interpreter/graphics_properties.mk Wed Nov 10 10:38:12 2021 -0500 +++ b/doc/interpreter/graphics_properties.mk Wed Nov 10 11:50:31 2021 -0500 @@ -11,7 +11,7 @@ define gen-propdoc-texi rm -f $@-t $@ && \ - $(top_builddir)/run-octave -f -q -H -p $(srcdir)/interpreter --eval "genpropdoc ('$(1)');" > $@-t && \ + $(top_builddir)/run-octave -disable-asan --norc --silent --no-history --path $(srcdir)/interpreter --eval "genpropdoc ('$(1)');" > $@-t && \ mv $@-t $@ endef
--- a/doc/interpreter/images.awk Wed Nov 10 10:38:12 2021 -0500 +++ b/doc/interpreter/images.awk Wed Nov 10 11:50:31 2021 -0500 @@ -54,7 +54,7 @@ for (j = 2; j <= NF; j++) { printf ("%s%s.%s: %s%s\n", dir, $j, ext, dir, script); - printf ("\t$(AM_V_GEN)$(SHELL) run-octave --norc --silent --no-history --path $(abs_top_srcdir)/%s --eval \"%s ('%s', '%s', '%s');\"\n", + printf ("\t$(AM_V_GEN)$(SHELL) run-octave -disable-asan --norc --silent --no-history --path $(abs_top_srcdir)/%s --eval \"%s ('%s', '%s', '%s');\"\n", dir, basename, dir, $j, ext); } }
--- a/doc/interpreter/module.mk Wed Nov 10 10:38:12 2021 -0500 +++ b/doc/interpreter/module.mk Wed Nov 10 11:50:31 2021 -0500 @@ -26,7 +26,7 @@ define gen-propdoc-texi rm -f $@-t $@ && \ - $(SHELL) run-octave --norc --silent --no-history --path $(srcdir)/doc/interpreter --eval "genpropdoc ('$(1)');" > $@-t && \ + $(SHELL) run-octave -disable-asan --norc --silent --no-history --path $(srcdir)/doc/interpreter --eval "genpropdoc ('$(1)');" > $@-t && \ mv $@-t $@ endef
--- a/run-octave.in Wed Nov 10 10:38:12 2021 -0500 +++ b/run-octave.in Wed Nov 10 11:50:31 2021 -0500 @@ -30,7 +30,8 @@ : ${AWK=%AWK%} : ${FIND=%FIND%} : ${SED=%SED%} -: ${ADDRESS_SANITIZER_OPTIONS="%ADRESS_SANITIZER_OPTIONS%"} +: ${ADDRESS_SANITIZER_ENABLED="%ADDRESS_SANITIZER_ENABLED%"} +: ${ADDRESS_SANITIZER_OPTIONS="%ADDRESS_SANITIZER_OPTIONS%"} # FIXME: is there a better way to handle the possibility of spaces # in these names? @@ -90,6 +91,9 @@ elif [ "x$1" = "x-cli" ]; then octave_executable="$builddir/src/octave-cli" shift + elif [ "x$1" = "x-disable-asan" ]; then + disable_asan=yes + shift else break fi @@ -119,7 +123,15 @@ OCTAVE_VERSION_INITFILE="$top_srcdir/scripts/startup/version-rcfile"; export OCTAVE_VERSION_INITFILE if [ "$ADDRESS_SANITIZER_ENABLED" = yes ]; then - ASAN_OPTIONS=symbolize=1; export ASAN_OPTIONS + if [ "$disable_asan" = yes ]; then + ## Is there a better way to do this so that we don't fill /tmp + ## with junk files? Using /dev/null won't work because asan + ## appends the process ID to the file name. + ASAN_OPTIONS="leak_check_at_exit=0:log_path=/tmp/oct-asan-log:verbosity=0" + else + ASAN_OPTIONS="$ADDRESS_SANITIZER_OPTIONS" + fi + export ASAN_OPTIONS fi exec $builddir/libtool --mode=execute $driver \