tests: make SANITIZE=address imply TEST_NO_MALLOC_CHECK

As the address sanitizer checks for a superset of the issues detected by setting MALLOC_CHECK_ (which tries to detect things like double frees and off-by-one errors) there is no need to set the latter when compiling with -fsanitize=address. This fixes a regression introduced by 131b94a10a ("test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34", 2022-03-04) which causes all the tests to fail with the message ASan runtime does not come first in initial library list; you should either link runtime to your application or manually preload it with LD_PRELOAD. when git is compiled with SANITIZE=address on systems with glibc >= 2.34. I have tested SANITIZE=leak and SANITIZE=undefined and they do not suffer from this regression so the fix in this patch should be sufficient. Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Phillip Wood committed Apr 9, 2022 at 12:28 UTC 067109a5e7db3fdffc25240bfc3b350962cd6bd6
2 files changed +7 -3
Makefile
+4 -1
@@ -1221,8 +1221,9 @@ PTHREAD_CFLAGS =
1221 SPARSE_FLAGS ?= -std=gnu99
1222 SP_EXTRA_FLAGS = -Wno-universal-initializer
1223
1224 -# For informing GIT-BUILD-OPTIONS of the SANITIZE=leak target
1224 +# For informing GIT-BUILD-OPTIONS of the SANITIZE=leak,address targets
1225 SANITIZE_LEAK =
1226 +SANITIZE_ADDRESS =
1227
1228 # For the 'coccicheck' target; setting SPATCH_BATCH_SIZE higher will
1229 # usually result in less CPU usage at the cost of higher peak memory.
@@ -1272,6 +1273,7 @@ SANITIZE_LEAK = YesCompiledWithIt
1273 endif
1274 ifneq ($(filter address,$(SANITIZERS)),)
1275 NO_REGEX = NeededForASAN
1276 +SANITIZE_ADDRESS = YesCompiledWithIt
1277 endif
1278 endif
1279
@@ -2853,6 +2855,7 @@ GIT-BUILD-OPTIONS: FORCE
2855 @echo PAGER_ENV=\''$(subst ','\'',$(subst ','\'',$(PAGER_ENV)))'\' >>$@+
2856 @echo DC_SHA1=\''$(subst ','\'',$(subst ','\'',$(DC_SHA1)))'\' >>$@+
2857 @echo SANITIZE_LEAK=\''$(subst ','\'',$(subst ','\'',$(SANITIZE_LEAK)))'\' >>$@+
2858 + @echo SANITIZE_ADDRESS=\''$(subst ','\'',$(subst ','\'',$(SANITIZE_ADDRESS)))'\' >>$@+
2859 @echo X=\'$(X)\' >>$@+
2860 ifdef TEST_OUTPUT_DIRECTORY
2861 @echo TEST_OUTPUT_DIRECTORY=\''$(subst ','\'',$(subst ','\'',$(TEST_OUTPUT_DIRECTORY)))'\' >>$@+
t/test-lib.sh
+3 -2
@@ -503,9 +503,10 @@ case $GIT_TEST_FSYNC in
503 ;;
504 esac
505
506 -# Add libc MALLOC and MALLOC_PERTURB test
507 -# only if we are not executing the test with valgrind
506 +# Add libc MALLOC and MALLOC_PERTURB test only if we are not executing
507 +# the test with valgrind and have not compiled with SANITIZE=address.
508 if test -n "$valgrind" ||
509 + test -n "$SANITIZE_ADDRESS" ||
510 test -n "$TEST_NO_MALLOC_CHECK"
511 then
512 setup_malloc_check () {