blob: 8c520cdec33ab1222ad6d01b28a87bfd98bd2b93 [file] [log] [blame]
=============================================================================
Valgrind Roadmap
=============================================================================
This file serves as a rough roadmap for Valgrind development. It shows a
minimal set of features we hope to implement for each version. It's in
reverse chronological order.
-----------------------------------------------------------------------------
3.3.0
-----------------------------------------------------------------------------
Scheduled for mid-to-late 2007?
* Add ppc{32,64}/AIX5 support [Done by Julian]
* Add some more experimental tools?
* Rework Massif [Done by Nick]
* Rework Helgrind [Done by Julian]
* Add experimental tools (Omega + DRD) [Julian]
-----------------------------------------------------------------------------
3.2.4
-----------------------------------------------------------------------------
Scheduled for mid-2007?
-----------------------------------------------------------------------------
3.2.3
-----------------------------------------------------------------------------
[Was released on Jan 29, 2007]
-----------------------------------------------------------------------------
3.2.2
-----------------------------------------------------------------------------
[Was released on Jan 22, 2007]
-----------------------------------------------------------------------------
3.2.1
-----------------------------------------------------------------------------
Scheduled for Dec 06?
[Was released on 16 Sep, 2006]
-----------------------------------------------------------------------------
3.2.0
-----------------------------------------------------------------------------
Scheduled for end-Mar 06 (3.1.0 + 4 months) ?
[Was released on Sep 16, 2006]
In order of increasing speculativeness
--------------------------------------
* Add ppc64-linux support. [Done by Julian]
* Fold in the V bit compression stuff if it works well (early signs
are promising) and get rid of Addrcheck.
[Done by Nick. Average speedup of 1.20x, shadow memory size reduction of
4.2x.]
* Get function wrapping working again. [Done by Julian]
Reinstate basic thread checks.
Reinstate Helgrind.
* Performance tuning:
- faster register allocation in vex
- improve stack-update pass [Done by Nick]
- assess effect of branch misprediction in dispatchers
* Try to accelerate development for Darwin ?
Smaller things
--------------
* Consider using the following defaults:
--leak-check=yes
--num-callers=20
* Expose some of m_redir's functionality to tools so that Memcheck
can replace strlen/strcmp on PPC32 (remove the 3.1.0 hack for this
which checked in m_redir.c if the current tool was Memcheck).
[Won't bother. The fix is worse than the problem it's trying to solve;
the issue is that the replacement functions are in m_trampoline.S and must
be between VG_(trampoline_stuff_start) and VG_(trampoline_stuff_end) for
arcane reasons and moving them into a tool-visible place is a pain.]
-----------------------------------------------------------------------------
3.1.1
-----------------------------------------------------------------------------
Tentatively end-Dec 05 (3.1.0 + 1 month): fix any critical bugs in
3.1.0.
[Was released on Mar 16, 2006]
-----------------------------------------------------------------------------
3.1.0
-----------------------------------------------------------------------------
Scheduled for around November 2005. (Released 27 Nov 05).
Definite
--------
* Get 32-bit and 64-bit programs working smoothly on AMD64 (Tom?). Several
levels of smoothness here, we should aim for at least level 3.
1. Be able to build a 32-bit valgrind on a 64-bit machine, so you can
build and install both, and manually choose between bin/valgrind and
bin64/valgrind.
2. Build both automatically when installing.
3. Choose the appropriate executable automatically at startup just from
"valgrind".
4. With --trace-children=yes, allow 32-bit programs to exec 64-bit
programs and vice versa, and invoke the appropriate Valgrind
automatically.
[All four levels done by Tom]
* Get PPC32 working usably with Memcheck (Julian). Has already improved a
lot since. Get Cachegrind working with it (Nick).
[Both done by Julian]
* Rewrite address space manager; statically link the core with
each tool; remove all glibc dependencies (Julian).
[Done by Julian]
* What about --time-stamp=yes?
[Fixed by Julian to give relative time since startup]
* Make it work with GCC 2.95 (bug #111781) -- don't put declarations after
statements in blocks. Do it after merging ASPACEM with the trunk.
-Wdeclaration-after-statement is the GCC warning that detects this, but
it is only present in GCC after 3.4.0 (ie. not in 3.0.X--3.3.X)...
[Done by Tom and others]
* We need to reintroduce some kind of core/tool interface versioning,
so that if external tools link with libcoregrind.a incompatibilities
are detected.
Maybe
-----
* Get pthread modelling and Helgrind working again. Requires function
wrapping (Nick).
[Won't happen for 3.1.0. Function wrapping is difficult.]
* Reinstate Addrcheck and/or implement V-bit compression in Memcheck (?).
[Won't happen for 3.1.0.]
* Allow suppressions by filename + line number? (Joseph Link's patch)