============================================================================= 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.2.0 ----------------------------------------------------------------------------- Scheduled for end-Mar 06 (3.1.0 + 4 months) ? 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)