Commit Graph

176 Commits

Author SHA1 Message Date
Nicholas Nethercote
c78a4f9c30 - Turn exit_group() into exit() in the Memcheck filter, for greater
determinism and portability.
- Update the xml1 .exp files accordingly (getting rid of one which is no
  longer necessary).
- Update origin4-many.stderr.exp accordingly.
- Update the handling of scalar_exit_group accordingly.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9421
2009-03-16 00:59:17 +00:00
Nicholas Nethercote
190ad4143e - Removed leakotron. It was not a very useful test, and hard to make
portable.
- Rewrote leak-tree to be deterministic and clearer.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9372
2009-03-12 03:00:05 +00:00
Bart Van Assche
f8080bd125 Un-break 'make dist'.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9360
2009-03-11 18:30:59 +00:00
Nicholas Nethercote
1d75b1ac58 Some tweaks to make more tests pass, or get closer to passing, on
--enable-only32bit builds on my Ubuntu box:

- For all tests, replace all operator new/new[]/delete/delete[] variants
  with a common form, eg. "...operator new...".  This makes
  exp-ptrcheck/tests/ccc and memcheck/tests/mismatches pass.

- For Helgrind tests, replace all libpthread paths with "/...libpthread...",
  as is done for libc paths.  This avoids problems when /lib32/libpthread.so
  is the path.  No extra tests pass, but many of them get a lot closer to
  passing.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9333
2009-03-10 03:34:00 +00:00
Nicholas Nethercote
bafed25ae9 This commit completely overhauls the leak checker. In particular:
- It heavily refactors the code:  uses better names for things, splits up
  complex functions that behaved very differently depending on how they were
  called, removes some redundancies, and generally makes it much simpler and
  easier to follow.

- It adds lots of comments, both inline, and also a big explanatory one at
  the top which makes it clear exactly how the leak checker works and also
  exactly what is meant by definite, possible, and indirect leaks.  It also
  has some ideas for future improvements.

- All tabs have been converted to spaces.

It also improves the functionality:

- Previously if you did --leak-check=summary, indirect and suppressed
  blocks were counted as definite leaks.  Now they are done properly, and so
  the summary results from --leak-check=summary match those from
  --leak-check=yes.

- Previously, some possibly reachable blocks were miscategorised as
  definitely reachable, because only the pointer to the block itself was
  considered, not any preceding pointers in the chain.  This is now fixed.

- Added memcheck/tests/leak-cases, which fully tests all the possible
  combinations of directly/indirectly reachable and possibly/definitely
  reachable.

And it improves the manual quite a bit, and the FAQ a little bit.

This doesn't fix the leak checker to handle MALLOCLIKE_BLOCK works that have
been taken from within malloc'd blocks, but I think I know how to do it and
hope to do so in a subsequent commit.

It also changes all instances of "<constant>memcheck</constant>" in the
Memcheck manual to "Memcheck", for consistency and because "Memcheck" is
easier to write.  There's one similar case for DRD but I didn't change that.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9330
2009-03-09 22:52:24 +00:00
Nicholas Nethercote
344a003c5c Remove .exp64 files that are identical to their corresponding .exp files and
thus unnecessary.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9322
2009-03-06 02:58:12 +00:00
Nicholas Nethercote
e97076e0f3 Merge r9299..r9303 (various leak-check test fixes) from the DARWIN branch.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9304
2009-03-02 05:11:06 +00:00
Nicholas Nethercote
e67c3fc54e Remove toobig-allocs.c -- it was unreliable and didn't test any
functionality of note.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9261
2009-02-25 04:34:44 +00:00
Nicholas Nethercote
380078f688 Delete memcheck/tests/zeropage. The original purpose of the test is no
longer valid, as the comment indicates.  Furthermore it mmaps arbitrary bits
of address space and so is horribly unportable, and doesn't work on Darwin.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9257
2009-02-25 04:04:29 +00:00
Nicholas Nethercote
2ae89cee5d Get rid of all "make check" compile warnings, except for the ones from
fxtract.c.

Also, gets rid of some of the warnings that -Wextra finds in Massif.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9237
2009-02-23 06:44:51 +00:00
Nicholas Nethercote
a6448a3006 Test files were being passed multiple arch options (eg. "-m32 -m64") when
built.  This worked fine on the x86/Linux and AMD64/Linux but broke
ppc*/Linux.  This commit fixes the problem.  Thanks to Bart for spotting it.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9222
2009-02-22 23:38:10 +00:00
Nicholas Nethercote
13c8106f4f - Add 'unit_libcbase', the beginnings of a unit test module for m_libcbase.
- Rename 'oset_test' as 'unit_oset' to make its meaning more clear.
- Remove VG_(atoll36), VG_(strtoll8)() and VG_(strtoll36)();  they're not
  used and so untested, but easy to crib from similar functions if they need
  to be added again later.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9204
2009-02-20 06:10:44 +00:00
Nicholas Nethercote
c8d150dbaa Various build system clean-ups and simplifications:
- Created Makefile.tool-tests.am, put standard AM_CFLAGS et al for tests in
  it.
- A number of tests are shared between Helgrind and DRD.  They used to be
  built in both directories.  Now they are only built in helgrind/tests/,
  and the DRD .vgtest files just point to the executable in helgrind/tests/.
  Most of these (about 30) had the source files in helgrind/tests/;  I moved
  the three that were in drd/tests/ into helgrind/tests/ for consistency.
- Fixed rwlock_test, which was failing to run due to a wrong name in the
  .vgtest file.
- Removed remnants of unused 'hello' test for Memcheck.
- Avoided redundant flag specification in various places, esp.
  memcheck/tests/Makefile.am.
- Removed unnecessary _AIX guards in some Linux-only tests.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9202
2009-02-19 09:52:05 +00:00
Nicholas Nethercote
b327b8dd60 Remove unnecessary Memcheck test filters.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9188
2009-02-17 00:47:10 +00:00
Nicholas Nethercote
cf6cd2bb31 Stack traces for Memcheck's syscall param errors are terribly unreliable, so
I changed it to just filter the entire stack trace out for these errors (both
normal and XML cases).  The syscall name is still present in the error
string.  This allows a one or more alternative expected output files to be
removed for several tests, which is A Very Good Thing.

Also, I killed filter_test_paths because it was weird and clumsy and the
above change obviated most of its use and the remaining effects could be
achieved in other ways.

Also, I fixed up the scalar* tests a little and they now pass on my machine,
(and hopefully at least some other machines) for the first time ever!


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9178
2009-02-16 05:11:49 +00:00
Nicholas Nethercote
6031d626c1 Moved 3 Linux-specific tests into linux/ directories.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9144
2009-02-13 06:23:46 +00:00
Nicholas Nethercote
dbcc3e99d6 Move memcheck/tests/brk to the linux/ subdir, as it's Linux-specific (merged
from the DARWIN branch).  Also filter the output more so the .stderr.exp2
isn't needed.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9038
2009-01-23 00:57:31 +00:00
Nicholas Nethercote
ed322feb84 Rename all the arch/OS/platform-related variables in configure.in to make it
clearer what they mean:
- They all have VGCONF_ prefixes now, to indicate they come out of
  configure.in (and are clearly distinguished from the VGA_/VGO_/VGP_
  #defines passed in to C files).
- The ones that refer to the primary *or* secondary platform have _INCLUDES_
  in them.
- The ones that are in all-caps have a _CAPS suffix.

So, for example, what was VGP_X86_LINUX is now
VGCONF_PLATFORMS_INCLUDE_X86_LINUX, which is more verbose but also a lot
clearer.  The names of the #defines used in the C files (VGA_x86, VGO_linux,
etc) are unchanged.

cputest.c: changed to reflect the Valgrind installation's capabilities,
rather than the machine's capabilities.  In particular, if
--enable-only32bit is used on a 64-bit machine, then this program will claim
to only support 32-bits.  Also use the VGA/VGO/VGP macros which are clearer
than the __i386__ ones.  (This is partially merged from the DARWIN branch.)

configure.in: clean up the comments, distinguish different sections more
clearly, and generally make it more readable.

valgrind.pc.in: try to make this more accurate.  I doubt anyone's using it.
It doesn't appear to be set up to handle dual-architecture builds.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9031
2009-01-22 21:56:32 +00:00
Nicholas Nethercote
cace8b55cd - No longer using VG_ARCH_ALL to determine the DIST_SUBDIRS used for
arch/OS/platform-specific tool test dirs, instead writing it by hand.
  This is important because up until now if we had any arch-specific test
  dirs, we needed such dirs for all archs.  Now that we also have
  OS-specific and platform-specific test dirs, we don't want to have
  (mostly) empty dirs for every arch/OS/platform.

- Correspondingly, removed several empty directories under memcheck/tests/
  and cachegrind/tests that are no longer needed.

- Also removed VG_ARCH_ALL from configure.in.

- Also used an arch-specific guard rather than a platform-specific one where
  appropriate in cachegrind/tests/Makefile.am.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9017
2009-01-22 01:13:16 +00:00
Nicholas Nethercote
c07262448b - Split up m_ume.c into m_ume/{main,elf,script}.c. This will make merging
the DARWIN branch easier later.
- Remove the disabled vgtest_ume test, it's very unlikely it'll ever work
  again.
- Move VG_(find_auxv) to initimg-linux.c, the only place it's used, and make
  it static.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9004
2009-01-21 02:26:56 +00:00
Nicholas Nethercote
0051efda41 Create memcheck/tests/linux/ and move some Linux-specific tests
into it.  Partial merge from DARWIN branch, r8943.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8975
2009-01-19 03:44:19 +00:00
Nicholas Nethercote
53b147dfb8 Create memcheck/tests/x86-linux/ and move some platform-specific tests (the
scalar* ones) into it.  Partial merge from DARWIN branch, r8943.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8974
2009-01-19 03:16:59 +00:00
Nicholas Nethercote
dafa3d1d8c trunk/memcheck/tests/Makefile.am
trunk/memcheck/tests/vcpu_bz2.c
trunk/memcheck/tests/vcpu_bz2.vgtest
    vcpu_bz2.c was (I think) an "svn copy" of perf/bz2.c.  Because it's a
    copy, the two can get out of sync, which was a problem with Greg
    Parker's Darwin patch.  So we remove vcpu_bz2.c, and make
    vcpu_bz2.vgtest invoke perf/bz2 directly.

trunk/cachegrind/tests/wrap5.c
trunk/cachegrind/tests/Makefile.am
trunk/cachegrind/tests/wrap5.vgtest
    wrap5.c was likewise an "svn copy" of memcheck/tests/wrap5.c, so we do
    the equivalent thing with it.

trunk/Makefile.am
    Fix a typo.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8919
2009-01-08 06:07:05 +00:00
Julian Seward
e791eae7c6 A couple of 'make dist' fixes.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8782
2008-11-18 02:10:33 +00:00
Julian Seward
8f7ec4c30b Add a second expected output. It appears that a recent glibcs print
one (or a value near it) as "+1.0000e+00" instead of "+1.0000e-00".
Or it could be a rounding issue .. I dunno.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8745
2008-11-08 15:17:50 +00:00
Julian Seward
40399aab00 Fix longstanding bug in dual-arch support, which originated in
memcheck/tests/Makefile.am and was copied into drd/tests/Makefile.am.

When building regtests for a 32-bit only build on a 64-bit CPU, the
use of $(VG_ARCH) in these Makefiles is incorrect, because VG_ARCH
will be set to the 64-bit architecture, not the 32-bit architecture.

See comments on VG_ARCH_PRI and VG_ARCH_MAX in configure.in for more
details.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8623
2008-09-19 09:02:19 +00:00
Bart Van Assche
1f63c5ebc4 Added regression test for Linux' capget system call.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8553
2008-08-27 17:41:06 +00:00
Bart Van Assche
9c5e7c6670 Added extra filtering for the stderr output of malloc_free_fill such that the output of this test becomes independent of the Linux distribution the test is run on. Should fix #162819.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8285
2008-06-27 07:33:18 +00:00
Bart Van Assche
857eaf6fdb Added regression test for POSIX advisory locking (fcntl(..., F_SETFL, ...)).
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8269
2008-06-23 11:43:28 +00:00
Julian Seward
111294590f Add an expected output for ppc64-linux; probably required due to dodgyness in
line number info, either in writing on gcc's part or reading on Valgrind's part.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8010
2008-05-06 16:54:53 +00:00
Julian Seward
b012d72856 Add a test for origin tracking through large floating point arrays.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8008
2008-05-06 08:14:57 +00:00
Bart Van Assche
57478205c9 Disable gcc warnings about shadowed variables when compiling varinfo2.c.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8003
2008-05-04 08:09:44 +00:00
Julian Seward
4cae5c3ed5 Merge branches/OTRACK_BY_INSTRUMENTATION into the trunk. This adds
support to Memcheck for tracking the origin of uninitialised values,
if you use the --track-origins=yes flag.

This currently causes some Memcheck regression tests to fail, because
they now print an extra line of advisory text in their output.  This
will be fixed.

The core-tool interface is slightly changed.  The version number for
the interface needs to be incremented.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7982
2008-05-01 20:24:26 +00:00
Bart Van Assche
2d8928196c Fixed typo.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7945
2008-04-27 13:20:07 +00:00
Bart Van Assche
3ed6a4e595 Added regression test for timerfd_create(), timerfd_gettime() and timerfd_settime() system calls.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7941
2008-04-27 12:52:33 +00:00
Bart Van Assche
3d1727957d Added regression test for Linux' syslog system call (called klogctl by glibc).
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7921
2008-04-26 10:59:23 +00:00
Bart Van Assche
e31611fb5c Added support for epoll_pwait(), utimensat(), eventfd(), timerfd() and signalfd(). Fixes bug 160907.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7917
2008-04-26 07:45:10 +00:00
Bart Van Assche
fcb7b31e55 Moved mallinfo regression test from none/tests to memcheck/tests.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7903
2008-04-22 16:11:23 +00:00
Julian Seward
14af4957fc Merge in the DATASYMS branch.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7540
2008-03-03 01:35:41 +00:00
Julian Seward
0f3db08246 Add a couple of regtests for large stack frame management.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7303
2007-12-19 11:01:13 +00:00
Julian Seward
575143a24c Update expected outputs. Use new naming scheme now permitted by
tests/vg_regtest.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7277
2007-12-05 01:19:20 +00:00
Julian Seward
9ad4d494fa New options for Memcheck, --malloc-fill=<hexnumber> and
--fill-free=<hexnumber>, which cause malloc'd(etc) and free'd(etc)
blocks to be filled with the specified value.  This can apparently be
useful for shaking out hard-to-track-down memory corruption.  The
definedness/addressability of said areas is not affected -- only the
contents.  Documentation to follow.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7259
2007-11-30 21:41:40 +00:00
Julian Seward
dfebdf0206 Add regtest for the --child-silent-after-fork added in r7177.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7178
2007-11-17 23:00:47 +00:00
Julian Seward
422c3d7eab Add a test that very long function names are safely truncated in
memcheck's XML output.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6541
2007-01-19 20:28:44 +00:00
Nicholas Nethercote
824abc79ce Fix a bug reported by Bruce Lowekamp involving the interaction of
--gen-suppressions with leak checking.  Added a regtest for it.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6514
2007-01-12 23:59:50 +00:00
Julian Seward
bd211db8f5 Include missing files in tarball.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6397
2006-12-13 14:35:03 +00:00
Julian Seward
b650be145e Fix various regtests, mostly by adding 64-bit outputs.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6394
2006-12-11 03:23:41 +00:00
Julian Seward
4413190e1a Updated expected with-TOC output.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6307
2006-10-17 11:33:23 +00:00
Julian Seward
713b2d46c0 Merge r6086:
Makefile.am changes for AIX5.  Almost all boilerplate stuff fitting in
with the existing factorisation scheme.  The only change of interest
is that configure.in now generates automake symbols of name
VGP_platform and VGO_os, whereas previously it just made VG_platform
which was a bit inconsistent with the VGP/VGO/VGA scheme used in C
code.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6242
2006-10-17 00:56:43 +00:00
Julian Seward
d45c6296eb Regression tests for Graydon Hoare's enhanced mempool stuff, from
Graydon himself.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6198
2006-10-06 11:45:00 +00:00