1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownRelease notes for Valgrind
3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown~~~~~~~~~~~~~~~~~~~~~~~~~~
4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownIf you are building a binary package of Valgrind for distribution,
5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownplease read README_PACKAGERS.  It contains some important information.
6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownIf you are developing Valgrind, please read README_DEVELOPERS.  It contains
8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownsome useful information.
9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownFor instructions on how to build/install, see the end of this file.
11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownIf you have problems, consult the FAQ to see if there are workarounds.
13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownExecutive Summary
16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown~~~~~~~~~~~~~~~~~
17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownValgrind is a framework for building dynamic analysis tools. There are
18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownValgrind tools that can automatically detect many memory management
19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownand threading bugs, and profile your programs in detail. You can also
20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownuse Valgrind to build new tools.
21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownThe Valgrind distribution currently includes six production-quality
23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntools: a memory error detector, two thread error detectors, a cache
24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownand branch-prediction profiler, a call-graph generating cache abd
25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownbranch-prediction profiler, and a heap profiler. It also includes
26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownthree experimental tools: a heap/stack/global array overrun detector,
27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browna different kind of heap profiler, and a SimPoint basic block vector
28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browngenerator.
29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownValgrind is closely tied to details of the CPU, operating system and to
31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browna lesser extent, compiler and basic C libraries. This makes it difficult
32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownto make it portable.  Nonetheless, it is available for the following
33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownplatforms: 
34ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
35ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown- x86/Linux
36ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown- AMD64/Linux
37ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown- PPC32/Linux
38ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown- PPC64/Linux
39ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown- ARM/Linux
40ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown- x86/MacOSX
41ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown- AMD64/MacOSX
42ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
43ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownNote that AMD64 is just another name for x86-64, and Valgrind runs fine
44ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownon Intel processors.  Also note that the core of MacOSX is called
45ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"Darwin" and this name is used sometimes.
46ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
47ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownValgrind is licensed under the GNU General Public License, version 2. 
48ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownRead the file COPYING in the source distribution for details.
49ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
50ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownHowever: if you contribute code, you need to make it available as GPL
51ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownversion 2 or later, and not 2-only.
52ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
53ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
54ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownDocumentation
55ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown~~~~~~~~~~~~~
56ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownA comprehensive user guide is supplied.  Point your browser at
57ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown$PREFIX/share/doc/valgrind/manual.html, where $PREFIX is whatever you
58ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownspecified with --prefix= when building.
59ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
60ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
61ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownBuilding and installing it
62ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown~~~~~~~~~~~~~~~~~~~~~~~~~~
63ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTo install from the Subversion repository :
64ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
65ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  0. Check out the code from SVN, following the instructions at
66ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown     http://www.valgrind.org/downloads/repository.html.
67ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
68ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  1. cd into the source directory.
69ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
70ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  2. Run ./autogen.sh to setup the environment (you need the standard
71ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown     autoconf tools to do so).
72ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
73ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  3. Continue with the following instructions...
74ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
75ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTo install from a tar.bz2 distribution:
76ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
77ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  4. Run ./configure, with some options if you wish.  The only interesting
78ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown     one is the usual --prefix=/where/you/want/it/installed.
79ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
80ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  5. Run "make".
81ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
82ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  6. Run "make install", possibly as root if the destination permissions
83ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown     require that.
84ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
85ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  7. See if it works.  Try "valgrind ls -l".  Either this works, or it
86ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown     bombs out with some complaint.  In that case, please let us know
87ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown     (see www.valgrind.org).
88ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
89ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownImportant!  Do not move the valgrind installation into a place
90ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browndifferent from that specified by --prefix at build time.  This will
91ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browncause things to break in subtle ways, mostly when Valgrind handles
92ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownfork/exec calls.
93ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
94ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
95ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownThe Valgrind Developers
96