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>
This commit is contained in:
parent
baedc59543
commit
067109a5e7
5
Makefile
5
Makefile
@ -1221,8 +1221,9 @@ PTHREAD_CFLAGS =
|
||||
SPARSE_FLAGS ?= -std=gnu99
|
||||
SP_EXTRA_FLAGS = -Wno-universal-initializer
|
||||
|
||||
# For informing GIT-BUILD-OPTIONS of the SANITIZE=leak target
|
||||
# For informing GIT-BUILD-OPTIONS of the SANITIZE=leak,address targets
|
||||
SANITIZE_LEAK =
|
||||
SANITIZE_ADDRESS =
|
||||
|
||||
# For the 'coccicheck' target; setting SPATCH_BATCH_SIZE higher will
|
||||
# usually result in less CPU usage at the cost of higher peak memory.
|
||||
@ -1272,6 +1273,7 @@ SANITIZE_LEAK = YesCompiledWithIt
|
||||
endif
|
||||
ifneq ($(filter address,$(SANITIZERS)),)
|
||||
NO_REGEX = NeededForASAN
|
||||
SANITIZE_ADDRESS = YesCompiledWithIt
|
||||
endif
|
||||
endif
|
||||
|
||||
@ -2853,6 +2855,7 @@ GIT-BUILD-OPTIONS: FORCE
|
||||
@echo PAGER_ENV=\''$(subst ','\'',$(subst ','\'',$(PAGER_ENV)))'\' >>$@+
|
||||
@echo DC_SHA1=\''$(subst ','\'',$(subst ','\'',$(DC_SHA1)))'\' >>$@+
|
||||
@echo SANITIZE_LEAK=\''$(subst ','\'',$(subst ','\'',$(SANITIZE_LEAK)))'\' >>$@+
|
||||
@echo SANITIZE_ADDRESS=\''$(subst ','\'',$(subst ','\'',$(SANITIZE_ADDRESS)))'\' >>$@+
|
||||
@echo X=\'$(X)\' >>$@+
|
||||
ifdef TEST_OUTPUT_DIRECTORY
|
||||
@echo TEST_OUTPUT_DIRECTORY=\''$(subst ','\'',$(subst ','\'',$(TEST_OUTPUT_DIRECTORY)))'\' >>$@+
|
||||
|
@ -503,9 +503,10 @@ case $GIT_TEST_FSYNC in
|
||||
;;
|
||||
esac
|
||||
|
||||
# Add libc MALLOC and MALLOC_PERTURB test
|
||||
# only if we are not executing the test with valgrind
|
||||
# Add libc MALLOC and MALLOC_PERTURB test only if we are not executing
|
||||
# the test with valgrind and have not compiled with SANITIZE=address.
|
||||
if test -n "$valgrind" ||
|
||||
test -n "$SANITIZE_ADDRESS" ||
|
||||
test -n "$TEST_NO_MALLOC_CHECK"
|
||||
then
|
||||
setup_malloc_check () {
|
||||
|
Loading…
Reference in New Issue
Block a user