Commit Graph

328 Commits

Author SHA1 Message Date
Nicholas Nethercote
78b8e2c67f Arch-abstraction:
- things I forgot to do when moving the insn_* tests...


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2810
2004-10-19 19:07:32 +00:00
Nicholas Nethercote
66adb12133 Arch-abstraction:
- Moved all the insn_* tests into x86/ subdirectories.  What are the chances of
  me getting this right on the first attempt?


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2809
2004-10-19 18:54:11 +00:00
Nicholas Nethercote
f4d320e3c4 Arch-abstraction:
- Rewrote tests/cputest.c so that it can apply to different kinds of
  processors.  The idea being that any arch-specific tests have a cpu_test:
  label in their .vgtest file, so they'll only get executed if the right
  machine is being used.
- Rewrote a bunch of .vgtest files accordingly.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2802
2004-10-19 16:29:30 +00:00
Nicholas Nethercote
493933b1c6 Arch-abstraction: a nice change that removes the need for ume_entry.S. Instead
of using an assembly hack to find the stack pointer at startup, we find it from
argv.  It's much simpler, avoids linking games, is platform independent, and
works on PPC.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2782
2004-10-18 11:52:17 +00:00
Tom Hughes
58ae591be6 Suppress .stderr.diff2 files as well as .stderr.diff files.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2774
2004-10-16 11:02:33 +00:00
Nicholas Nethercote
aa5775f3a6 Avoid warning about not returning a value from main().
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2764
2004-10-14 09:48:55 +00:00
Nicholas Nethercote
e7ca2d4602 Further strengthened the unit self-test, by also testing find_auxv(). Now all
functions exported by ume.c are tested.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2762
2004-10-14 09:28:11 +00:00
Nicholas Nethercote
9f0e6ed434 Strengthened the unit self-test, by also testing foreach_map(), the other
function exported by ume.c.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2761
2004-10-14 08:52:43 +00:00
Nicholas Nethercote
5435f2c2ec Added a unit self-test -- a test program that incorporates a small part of
Valgrind itself (the files ume.c, ume_entry.c and jmp_with_stack.c).  Thus,
we are using Memcheck to check these files in a unit test setting.

I hope to do unit self-testing for many more parts of Valgrind, eventually all
the bits that can be pulled out into any kind of sensible stand-alone form.
Doing so achieves two things:

 a) it introduces unit testing into our framework (a serious shortcoming at the
    moment)
 b) it lets us use Valgrind (esp. Memcheck) on itself, to some extent

This should help reliability.  This first unit self-test isn't very exhaustive,
but it's a start.

Note that this involves something like bootstrapping, in that we are checking
parts of a Valgrind build with itself.  I don't think this will be a problem,
since we (at least, I do) tend to only run the regtests when we think the
Valgrind build is ok.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2760
2004-10-14 08:38:06 +00:00
Tom Hughes
98b5592107 Add alternate results for some tests that use mmap.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2755
2004-10-13 16:48:21 +00:00
Nicholas Nethercote
ce3c7200a7 Fix for bug 91162: cope with jumps to bogus addresses when there is a SEGV
signal handler present -- previously, Valgrind would abort unnecessarily on
this case.

Added a regression test for it.

MERGE TO STABLE


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2743
2004-10-13 09:47:24 +00:00
Nicholas Nethercote
fd06d82b71 Update second expected output to match the first.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2742
2004-10-12 08:38:19 +00:00
Tom Hughes
86ffb724c2 Remove reference to --tool=memcheck being the default.
CCMAIL: 90086-done@bugs.kde.org


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2729
2004-10-06 12:25:49 +00:00
Tom Hughes
248c27a3b3 Remove spurious (void) cast from VALGRIND_CHECK_DEFINED so that it
actually does what the comment says it does. Patch from Nathan Kurz.

CCMAIL: 90778-done@bugs.kde.org


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2728
2004-10-06 12:18:47 +00:00
Nicholas Nethercote
4a8d89cfdc Fix grammar
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2708
2004-09-13 11:18:13 +00:00
Nicholas Nethercote
eea34ddbd6 Avoid spurious warning about using posix_memalign()
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2657
2004-09-03 14:04:40 +00:00
Nicholas Nethercote
18355ff96b Arch-abstraction:
- Added include/x86/:  contains tool_arch.h, Makefile.am, .cvsignore.

- Added coregrind/x86/state.c.  Contains some arch-specific code for dealing
  with x86 registers -- eg. setting up the baseBlock, loading/saving the whole
  register state.  It is compiled into coregrind/x86/libarch.a and linked via
  ${VG_ARCH} with the core.

  Relatedly, also added coregrind/x86/{core_arch.h,core_arch_asm.h}.

- Correspondingly abstracted the register state out of ThreadState.  This
  affected every place that touches registers, and there are a lot of them.
  (Eventually all the register touching should be abstracted out in an
  arch-neutral way, but not yet;  one step at a time.)

- Added some declarations about register loading/saving functions to core.h;
  all architectures will have to provide these functions.

- Rejigged the build system so that the arch-specific stuff is all done via
  ${VG_ARCH}, rather than naming e.g. x86/ directly.  Appropriate -I arguments
  are used so that all the headers are found, etc.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2656
2004-09-03 13:45:29 +00:00
Nicholas Nethercote
3a59d9013f Update docs for filename change.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2652
2004-09-02 15:50:29 +00:00
Nicholas Nethercote
90369deb78 Arch-abstraction:
- renamed "vg_constants.h" as "core_asm.h".
- renamed "vg_constants_skin.h" as "tool_asm.h".
- renamed "mc_constants.h" as "mc_asm.h".


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2650
2004-09-02 15:37:39 +00:00
Nicholas Nethercote
13a74aa53a Arch-abstraction: renamed "vg_skin.h" as "tool.h". Kept a residual vg_skin.h
(which just #includes tool.h) for backward-compatibility.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2647
2004-09-02 08:51:43 +00:00
Nicholas Nethercote
a32b040099 Update .cvsignore for recently added regression tests.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2642
2004-09-01 23:34:37 +00:00
Nicholas Nethercote
acd57ac595 Use Makefile.am includes. This gets rid of 110 lines of repetitive Makefile.am
cruft, yay!


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2641
2004-09-01 23:20:49 +00:00
Nicholas Nethercote
2f53ead94d Fix problem with brk(). Thanks to Paull Mackerras for the patch.
Added a regression test for it.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2619
2004-08-25 13:43:44 +00:00
Nicholas Nethercote
29d59df719 Remove three unnecessary compile-time warnings.
Two were trivial.  The one for strncmp is slightly trickier;  you have to be
careful with the signedness of chars when comparing them... but the code
already casts s1 and s2 to (unsigned char*) before comparing them, so it's not
a problem.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2618
2004-08-25 13:33:17 +00:00
Nicholas Nethercote
0db27515b1 Putting "dist_" in front of a "_DATA" variable means it is included in "make
dist".  This avoids the need to put it in "EXTRA_DIST", and saves a few lines
in all the docs Makefile.am files.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2614
2004-08-25 11:40:07 +00:00
Tom Hughes
090cf06f43 Prevent a memcpy of zero bytes from complaining if one or both of the
pointers given as arguments is uninitialised.

CCMAIL: 86989-done@bugs.kde.org


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2608
2004-08-23 18:39:09 +00:00
Nicholas Nethercote
a2b3609df7 Small step in factoring out arch-specific code: replace
__attribute((regparm(n))) with REGPARM(n) everywhere.  REGPARM() is defined in
vg_skin.h, but will eventually be defined separately for each arch.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2601
2004-08-23 15:06:23 +00:00
Nicholas Nethercote
1bd17a3d0f Remove a bunch of unnecessary -DVG_LIBDIR="\"$(libdir)"\" arguments in
Makefile.am files.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2597
2004-08-23 14:02:03 +00:00
Nicholas Nethercote
841b4ec9ae Remove 3 identical and self-admittedly spurious assertions.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2592
2004-08-18 22:26:01 +00:00
Nicholas Nethercote
9033020ae4 Big overhaul of the allocator. Much of the structure is the same, but
lots of the details changed.  Made the following generalisations:

- Recast everything to be entirely terms of bytes, instead of a mixture
  of (32-bit) words and bytes.  This is a bit easier to understand, and
  made the following generalisations possible...

- Almost 64-bit clean;  no longer assuming 32-bit words/pointers.  Only
  (I think) non-64-bit clean part is that VG_(malloc)() et al take an
  Int as the size arg, and size_t is 64-bits on 64-bit machines.

- Made the alignment of blocks returned by malloc() et al completely
  controlled by a single value, VG_MIN_MALLOC_SZB.  (Previously there
  were various magic numbers and assumptions about block alignment
  scattered throughout.) I tested this, all the regression tests pass
  with VG_MIN_MALLOC_SZB of 4, 8, 16, 32, 64.  One thing required for
  this was to make redzones elastic;  the asked-for redzone size is now
  the minimum size;  it will use bigger ones if necessary to get the
  required alignment.

Some other specific changes:

- Made use of types a bit more;  ie. actually using the type 'Block',
  rather than just having everything as arrays of words, so that should
  be a bit safer.

- Removed the a->rz_check field, which was redundant wrt. a->clientmem.

- Fixed up the decision about which list to use so the 4 lists which
  weren't ever being used now are -- the problem was that this hasn't
  been properly updated when alignment changed from 4 to 8 bytes.

- Added a regression test for memalign() and posix_memalign().
  memalign() was aborting if passed a bad alignment argument.

- Added some high-level comments in various places, explaining how the
  damn thing works.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2579
2004-08-11 09:40:52 +00:00
Nicholas Nethercote
82c053aafc Remove some more global variables from vg_include.h, replacing them with
(fewer) functions.

Also fixed execve() so that it works better with .in_place.

Also added a regression test for --trace-children=yes (there were none!)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2577
2004-08-09 12:21:57 +00:00
Nicholas Nethercote
4ecbc561da Comment changes only -- compacting
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2566
2004-08-04 10:37:49 +00:00
Nicholas Nethercote
a545bc15cc Tweaked sanity-checking: made function naming more consistent, removed
unnecessarily global functions from vg_include.h, etc.

Also tweaked printing of malloc stats.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2562
2004-08-03 23:14:00 +00:00
Nicholas Nethercote
38ff4e69d1 Comment changes only: s/skin/tool/
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2555
2004-08-03 13:29:09 +00:00
Tom Hughes
8582802cb3 Add instruction tests for the LFENCE/MFENCE/SFENCE instructions.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2523
2004-07-25 15:18:21 +00:00
Nicholas Nethercote
c6ea38d087 Include new_override.stdout.exp in 'make dist'.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2509
2004-07-18 12:05:37 +00:00
Nicholas Nethercote
755111b88d Slightly change, with J's approval, startup copyright messages to better
reflect reality.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2489
2004-07-16 17:44:00 +00:00
Nicholas Nethercote
854d2ec10e Fix for bug #78048.
Problem was that the malloc-replacing tools (memcheck, addrcheck, massif,
helgrind) would assert if a too-big malloc was attempted.  Now they return 0 to
the client.  I also cleaned up the code handling heap-block-metadata in Massif
and Addrcheck/Memcheck a little.

This exposed a nasty bug in VG_(client_alloc)() which wasn't checking if
find_map_space() was succeeding before attempting an mmap().  Before I added
the check, very big mallocs (eg 2GB) for Addrcheck were overwriting the client
space at address 0 and causing crashes.

Added a regtest to all the affected skins for this.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2462
2004-07-10 14:56:28 +00:00
Tom Hughes
a2a0946b8a Make VPATH builds work so that valgrind can be built in a different
directory from the source tree. This resolves bug 83040.

Based on patch from Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2450
2004-06-29 09:45:37 +00:00
Tom Hughes
414846a941 Removed all uses of nested functions as they only work with gcc and
cause the stack to be marked as executable in order for them to work.

All assembler files have also had a declaration added so that the
object they generate will be marked as not needing an executable stack.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2446
2004-06-27 17:37:21 +00:00
Nicholas Nethercote
58ae9c9722 Update .cvsignore files
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2434
2004-06-22 14:01:40 +00:00
Nicholas Nethercote
2fab200ad0 Renamed the following options:
--logfile-fd  -->  --log-fd
  --logfile     -->  --log-file
  --logsocket   -->  --log-socket

to be consistent with each other and other options (esp. --input-fd).  Also
renamed some related variables.  The old names still work, for backwards
compatibility, but they're not documented.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2429
2004-06-21 12:42:35 +00:00
Robert Walsh
79b252dfdf Memory pool support.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2428
2004-06-19 18:12:36 +00:00
Nicholas Nethercote
55cb3cd764 Introduced 4 macros to minimise boilerplate command line processing code.
Nicely cuts around 130 lines of code, spread over the core and several tools.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2422
2004-06-16 21:26:32 +00:00
Nicholas Nethercote
874fc865a4 Fix for bug #80942.
Addrcheck wasn't doing overlap checking as it should.  This is because
mac_replace_strmem.o was being linked with vgskin_addrcheck.so instead of
vgpreload_addrcheck.so.  I fixed the Makefile, and also moved
_VG_USERREQ__MEMCHECK_GET_RECORD_OVERLAP so Addrcheck could see it.  And I
added the 'overlap' test (from memcheck/tests/) to Addrcheck's regression
suite.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2394
2004-05-05 10:46:22 +00:00
Nicholas Nethercote
a4069eaab5 Add missing SSE case for Memcheck's instrumentation (sigh).
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2389
2004-04-26 13:06:16 +00:00
Nicholas Nethercote
7f5d0885be SETV and TESTV never have an ArchReg as their first argument.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2383
2004-04-22 12:58:05 +00:00
Robert Walsh
7c558d6199 Fix new override test.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2361
2004-04-13 19:11:27 +00:00
Robert Walsh
4fa065bb03 Update test for recent "recently" fix.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2360
2004-04-13 19:08:34 +00:00
Nicholas Nethercote
979860ca67 Suppressions of jump errors were broken, because the size was zero and
so caused an assertion failure.  So set size == 1 -- it's only used for
suppressions.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2359
2004-04-13 08:47:35 +00:00