mirror of
git://sourceware.org/git/valgrind.git
synced 2026-01-12 00:19:31 +08:00
Add a new top level make target ltpchecks which will fetch the latest linux test project (ltp) release as defined by the LTP_VERSION and LTP_SHA256 variables in auxprogs/Makefile.am (update those when a new version of ltp is released). If the ltp tar.xz has already been downloaded, or it has already been unpacked and build, the (cached) file and build will be reused. The actual testing is done through the auxprogs/ltp-tester.sh script. It takes all executable tests from the ltp testcases under kernel/syscalls and runs them 3 times. Once directly, not under valgrind, once with -q --tool=none and once with -q --tool=memcheck. It then checks that valgrind didn't produce any messages with the none tool, that there were no fatal errors produced (as defined in auxprogs/ltp-error-patterns.txt) and that the ltp results are the same with and without valgrind. Currently there are 1472 test binaries and running them all (serially) takes more than three hours and detects various missing or incomplete syscall handlers in valgrind, plus various crashers. https://bugs.kde.org/show_bug.cgi?id=502679
162 lines
4.2 KiB
Makefile
162 lines
4.2 KiB
Makefile
|
|
AUTOMAKE_OPTIONS = 1.13
|
|
|
|
ACLOCAL_AMFLAGS = -I m4
|
|
|
|
include $(top_srcdir)/Makefile.all.am
|
|
|
|
TOOLS = \
|
|
memcheck \
|
|
cachegrind \
|
|
callgrind \
|
|
helgrind \
|
|
drd \
|
|
massif \
|
|
dhat \
|
|
lackey \
|
|
none
|
|
|
|
EXP_TOOLS = \
|
|
exp-bbv
|
|
|
|
# Put docs last because building the HTML is slow and we want to get
|
|
# everything else working before we try it.
|
|
SUBDIRS = \
|
|
include \
|
|
VEX \
|
|
coregrind \
|
|
. \
|
|
$(TOOLS) \
|
|
$(EXP_TOOLS) \
|
|
shared \
|
|
tests \
|
|
perf \
|
|
gdbserver_tests \
|
|
memcheck/tests/vbit-test \
|
|
none/tests/s390x/disasm-test \
|
|
auxprogs \
|
|
mpi \
|
|
solaris \
|
|
docs
|
|
DIST_SUBDIRS = $(SUBDIRS)
|
|
|
|
SUPP_FILES = \
|
|
glibc-2.2.supp glibc-2.3.supp glibc-2.4.supp glibc-2.5.supp \
|
|
glibc-2.6.supp glibc-2.7.supp glibc-2.X.supp.in \
|
|
xfree-3.supp xfree-4.supp \
|
|
glibc-2.X-helgrind.supp \
|
|
glibc-2.2-LinuxThreads-helgrind.supp \
|
|
glibc-2.X-drd.supp \
|
|
darwin9.supp darwin9-drd.supp \
|
|
freebsd.supp freebsd-helgrind.supp freebsd-drd.supp \
|
|
darwin10.supp darwin10-drd.supp \
|
|
darwin11.supp darwin12.supp darwin13.supp darwin14.supp darwin15.supp \
|
|
darwin16.supp darwin17.supp \
|
|
bionic.supp \
|
|
solaris11.supp solaris12.supp \
|
|
musl.supp
|
|
DEFAULT_SUPP_FILES = @DEFAULT_SUPP@
|
|
|
|
# We include all the base .supp files in the distribution, but not
|
|
# default.supp, as it is built from the base .supp files at compile-time.
|
|
dist_noinst_DATA = $(SUPP_FILES)
|
|
|
|
vglibdir = $(pkglibexecdir)
|
|
vglib_DATA = default.supp
|
|
|
|
pkgconfigdir = $(libdir)/pkgconfig
|
|
pkgconfig_DATA = valgrind.pc
|
|
|
|
BUILT_SOURCES = default.supp include/vgversion.h valgrind.pc
|
|
CLEANFILES = default.supp
|
|
|
|
default.supp: $(DEFAULT_SUPP_FILES)
|
|
echo "# This is a generated file, composed of the following suppression rules:" > default.supp
|
|
echo "# " $(DEFAULT_SUPP_FILES) >> default.supp
|
|
cat $^ >> default.supp
|
|
|
|
## Preprend @PERL@ because tests/vg_regtest isn't executable
|
|
## Ensure make exits with error if PERL fails or post_regtest_checks fails.
|
|
regtest: check
|
|
$(top_srcdir)/gdbserver_tests/make_local_links $(GDB)
|
|
if @PERL@ tests/vg_regtest gdbserver_tests $(TOOLS) $(EXP_TOOLS) ; then \
|
|
tests/post_regtest_checks $(abs_top_srcdir) gdbserver_tests $(TOOLS) $(EXP_TOOLS); \
|
|
else \
|
|
tests/post_regtest_checks $(abs_top_srcdir) gdbserver_tests $(TOOLS) $(EXP_TOOLS); \
|
|
false; \
|
|
fi
|
|
post-regtest-checks:
|
|
tests/post_regtest_checks $(abs_top_srcdir) gdbserver_tests $(TOOLS) $(EXP_TOOLS)
|
|
nonexp-regtest: check
|
|
@PERL@ tests/vg_regtest $(TOOLS)
|
|
exp-regtest: check
|
|
@PERL@ tests/vg_regtest gdbserver_tests $(EXP_TOOLS)
|
|
# Nb: gdbserver_tests are put in exp-regtest rather than nonexp-regtest
|
|
# because they are tested with various valgrind tools, so might be using
|
|
# an experimental tool.
|
|
|
|
## Preprend @PERL@ because tests/vg_perf isn't executable
|
|
perf: check
|
|
@PERL@ perf/vg_perf perf
|
|
|
|
# Auxiliary test suites run under valgrind
|
|
auxchecks: all
|
|
$(MAKE) -C auxprogs auxchecks
|
|
|
|
ltpchecks: all
|
|
$(MAKE) -C auxprogs ltpchecks
|
|
|
|
# Nb: no need to include any Makefile.am files here, or files included from
|
|
# them, as automake includes them automatically. Also not COPYING, README
|
|
# or NEWS.
|
|
# We include valgrind.spec as well as valgrind.spec.in to save packagers
|
|
# from having to run configure (bug 188560).
|
|
EXTRA_DIST = \
|
|
COPYING.DOCS \
|
|
README_DEVELOPERS \
|
|
README_DEVELOPERS_processes \
|
|
README_PACKAGERS \
|
|
README_MISSING_SYSCALL_OR_IOCTL \
|
|
README.s390 \
|
|
README.android \
|
|
README.android_emulator \
|
|
README.mips \
|
|
README.aarch64 \
|
|
README.riscv64 \
|
|
README.solaris \
|
|
README.freebsd \
|
|
NEWS.old \
|
|
valgrind.pc.in \
|
|
valgrind.spec.in \
|
|
valgrind.spec \
|
|
autogen.sh \
|
|
m4
|
|
|
|
dist-hook: include/vgversion.h
|
|
cp -p include/vgversion.h $(distdir)/include/vgversion_dist.h
|
|
|
|
dist_noinst_SCRIPTS = \
|
|
vg-in-place
|
|
|
|
all-local: default.supp include/vgversion.h
|
|
mkdir -p $(inplacedir)
|
|
rm -f $(inplacedir)/default.supp
|
|
ln -s ../default.supp $(inplacedir)
|
|
|
|
clean-local:
|
|
rm -rf $(inplacedir) include/vgversion.h
|
|
find . -name '*.vgtest.log' -print0 | xargs -r -0 rm
|
|
find . -name '*.vgtest.trs' -print0 | xargs -r -0 rm
|
|
find . -name test-suite.log -print0 | xargs -r -0 rm
|
|
rm -f test-suite-overall.log
|
|
|
|
# Need config.h in the installed tree, since some files depend on it
|
|
pkginclude_HEADERS = config.h
|
|
|
|
# vgversion.h defines accurate versions to report with -v --version
|
|
include/vgversion.h:
|
|
$(top_srcdir)/auxprogs/make_or_upd_vgversion_h $(top_srcdir)
|
|
|
|
.PHONY: include/vgversion.h
|
|
|