Files
ftmemsim-valgrind/memcheck/tests/Makefile.am
Nicholas Nethercote b55751404f Improved Memcheck's error checking messages in two significant ways:
- All memory-related errors are now clear whether they are caused by
  unaddressable or uninitialised memory.  (Previously, writes were
  clearly addressability errors, but reads could be either.)  Mostly
  done by replacing the 'isWrite' field in MAC_Error with 'isUnaddr'.
  Also, mc_check_readable() now indicates not just if an error occurred,
  but what kind of error (ie. addressability or definedness).

- Put machinery into place in the core to inform tools when registers
  are being read by the core -- ie. a 'pre_reg_read' event.  Most
  notably, this facilitates syscall scalar arg definedness checking for
  Memcheck.  Currently this is only working for read(), write(), exit()
  and exit_group(), but it will be extended as the syscalls are
  overhauled as part of the arch-abstraction work.

  A consequence of this is that the ParamErr messages have changed.  This:

    Syscall param write(buf) contains uninitialised byte(s)

  now means that the pointer 'buf' is partially undefined.  If the memory
  pointed to by 'buf' is partially undefined or unaddressable, it says one of:

    Syscall param write(buf) points to uninitialised byte(s)
    Syscall param write(buf) points to unaddressable byte(s)

  The docs have been updated accordingly.

  I also added a couple of regression tests.

These two change sare notable for being the first improvements to
Memcheck's checking/errors in a long time.

I also folded mc_clientreqs.c into mc_main.c, which saves exporting a
whole bunch of things that are not used anywhere else.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2949
2004-11-08 19:20:09 +00:00

176 lines
6.1 KiB
Makefile

SUBDIRS = ${VG_ARCH} .
noinst_SCRIPTS = filter_allocs filter_leak_check_size \
filter_stderr filter_stderr_backtrace
EXTRA_DIST = $(noinst_SCRIPTS) \
badaddrvalue.stderr.exp \
badaddrvalue.stdout.exp badaddrvalue.vgtest \
badfree-2trace.stderr.exp badfree-2trace.vgtest \
badfree.stderr.exp badfree.vgtest \
badjump.stderr.exp badjump.vgtest \
badjump2.stderr.exp badjump2.vgtest \
badloop.stderr.exp badloop.vgtest \
badpoll.stderr.exp badpoll.vgtest \
badrw.stderr.exp badrw.vgtest \
brk.stderr.exp brk.vgtest \
brk2.stderr.exp brk2.vgtest \
buflen_check.stderr.exp buflen_check.vgtest \
clientperm.stderr.exp \
clientperm.stdout.exp clientperm.vgtest \
custom_alloc.stderr.exp custom_alloc.vgtest \
doublefree.stderr.exp doublefree.vgtest \
error_counts.stderr.exp error_counts.stdout.exp error_counts.vgtest \
errs1.stderr.exp errs1.vgtest \
exitprog.stderr.exp exitprog.vgtest \
execve.stderr.exp execve.vgtest \
execve2.stderr.exp execve2.vgtest \
fprw.stderr.exp fprw.vgtest \
fwrite.stderr.exp fwrite.stdout.exp fwrite.vgtest \
inits.stderr.exp inits.vgtest \
inline.stderr.exp inline.stdout.exp inline.vgtest \
malloc1.stderr.exp malloc1.vgtest \
malloc2.stderr.exp malloc2.vgtest \
malloc3.stderr.exp malloc3.stdout.exp malloc3.vgtest \
manuel1.stderr.exp manuel1.stdout.exp manuel1.vgtest \
manuel2.stderr.exp manuel2.stdout.exp manuel2.vgtest \
manuel3.stderr.exp manuel3.vgtest \
memalign_test.stderr.exp memalign_test.vgtest \
memalign2.stderr.exp memalign2.vgtest \
memcmptest.stderr.exp memcmptest.stdout.exp memcmptest.vgtest \
mempool.stderr.exp mempool.vgtest \
mismatches.stderr.exp mismatches.vgtest \
mmaptest.stderr.exp mmaptest.vgtest \
nanoleak.stderr.exp nanoleak.vgtest \
nanoleak_supp.stderr.exp nanoleak_supp.vgtest nanoleak.supp \
new_nothrow.stderr.exp new_nothrow.vgtest \
new_override.stderr.exp new_override.stdout.exp new_override.vgtest \
null_socket.stderr.exp null_socket.vgtest \
overlap.stderr.exp overlap.stdout.exp overlap.vgtest \
pth_once.stderr.exp pth_once.stdout.exp pth_once.vgtest \
realloc1.stderr.exp realloc1.vgtest \
realloc2.stderr.exp realloc2.vgtest \
realloc3.stderr.exp realloc3.vgtest \
scalar.stderr.exp scalar.vgtest \
scalar_supp.stderr.exp scalar_supp.vgtest scalar.supp \
sigaltstack.stderr.exp sigaltstack.vgtest \
signal2.stderr.exp \
signal2.stdout.exp signal2.vgtest \
str_tester.stderr.exp str_tester.vgtest \
supp1.stderr.exp supp1.vgtest \
supp2.stderr.exp supp2.vgtest \
supp.supp \
suppfree.stderr.exp suppfree.vgtest \
toobig-allocs.stderr.exp toobig-allocs.vgtest \
trivialleak.stderr.exp trivialleak.vgtest \
weirdioctl.stderr.exp weirdioctl.stdout.exp weirdioctl.vgtest \
metadata.stderr.exp metadata.stdout.exp metadata.vgtest \
threadederrno.stderr.exp threadederrno.stdout.exp \
threadederrno.vgtest \
vgtest_ume.stderr.exp vgtest_ume.vgtest \
writev.stderr.exp writev.stderr.exp2 writev.vgtest \
zeropage.stderr.exp zeropage.stderr.exp2 zeropage.vgtest
check_PROGRAMS = \
badaddrvalue badfree badjump badjump2 \
badloop badpoll badrw brk brk2 buflen_check \
clientperm custom_alloc \
doublefree error_counts errs1 exitprog execve execve2 \
fprw fwrite hello inits inline \
malloc1 malloc2 malloc3 manuel1 manuel2 manuel3 \
memalign_test memalign2 memcmptest mempool mmaptest \
nanoleak new_nothrow \
null_socket overlap \
realloc1 realloc2 realloc3 scalar sigaltstack signal2 \
str_tester supp1 supp2 suppfree \
trivialleak weirdioctl \
mismatches new_override metadata threadederrno \
vgtest_ume \
writev zeropage
AM_CPPFLAGS = -I$(top_builddir)/include
AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -g
AM_CXXFLAGS = $(AM_CFLAGS)
# C ones
badaddrvalue_SOURCES = badaddrvalue.c
badfree_SOURCES = badfree.c
badjump_SOURCES = badjump.c
badjump2_SOURCES = badjump2.c
badloop_SOURCES = badloop.c
badpoll_SOURCES = badpoll.c
badrw_SOURCES = badrw.c
brk_SOURCES = brk.c
brk2_SOURCES = brk2.c
buflen_check_SOURCES = buflen_check.c
clientperm_SOURCES = clientperm.c
custom_alloc_SOURCES = custom_alloc.c
doublefree_SOURCES = doublefree.c
error_counts_SOURCES = error_counts.c
errs1_SOURCES = errs1.c
execve_SOURCES = execve.c
execve2_SOURCES = execve2.c
exitprog_SOURCES = exitprog.c
fprw_SOURCES = fprw.c
fwrite_SOURCES = fwrite.c
inits_SOURCES = inits.c
inline_SOURCES = inline.c
malloc1_SOURCES = malloc1.c
malloc2_SOURCES = malloc2.c
malloc3_SOURCES = malloc3.c
manuel1_SOURCES = manuel1.c
manuel2_SOURCES = manuel2.c
manuel3_SOURCES = manuel3.c
mmaptest_SOURCES = mmaptest.c
memalign_test_SOURCES = memalign_test.c
memalign2_SOURCES = memalign2.c
memcmptest_SOURCES = memcmptest.c
mempool_SOURCES = mempool.c
nanoleak_SOURCES = nanoleak.c
null_socket_SOURCES = null_socket.c
overlap_SOURCES = overlap.c
realloc1_SOURCES = realloc1.c
realloc2_SOURCES = realloc2.c
realloc3_SOURCES = realloc3.c
scalar_SOURCES = scalar.c
signal2_SOURCES = signal2.c
supp1_SOURCES = supp.c
supp2_SOURCES = supp.c
suppfree_SOURCES = suppfree.c
sigaltstack_SOURCES = sigaltstack.c
trivialleak_SOURCES = trivialleak.c
weirdioctl_SOURCES = weirdioctl.c
metadata_SOURCES = metadata.c
str_tester_SOURCES = str_tester.c
str_tester_CFLAGS = $(AM_CFLAGS) -Wno-shadow
threadederrno_SOURCES = threadederrno.c
threadederrno_LDADD = -lpthread
writev_SOURCES = writev.c
zeropage_SOURCES = zeropage.c
# C++ ones
mismatches_SOURCES = mismatches.cpp
new_nothrow_SOURCES = new_nothrow.cpp
new_override_SOURCES = new_override.cpp
# Valgrind unit self-tests
hello_SOURCES = hello.c
## If we support PIE, build hello as a PIE, otherwise vgtest_ume cannot load
## (I'm not completely sure why, since stage2 can load both PIEs and non-PIEs,
## maybe it's because stage2 is loaded up high; anyway, it doesn't really
## matter so long as vgtest_ume can load hello ok. --njn)
if USE_PIE
hello_CFLAGS = $(AM_CFLAGS) -fpie
hello_LDFLAGS = -pie
else
hello_LDFLAGS = -Wl,-defsym,kickstart_base=0x50000000 \
-Wl,-T,../../coregrind/${VG_ARCH}/stage2.lds
hello_DEPENDENCIES = ../../coregrind/${VG_ARCH}/stage2.lds
endif
vgtest_ume_SOURCES = vgtest_ume.c
vgtest_ume_LDADD = ../../coregrind/ume.o \
../../coregrind/jmp_with_stack.o