• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1-------------------------------------------------------------------
2Guide to the directory structure
3-------------------------------------------------------------------
4[This should be merged with coregrind/README_MODULES.txt]
5
6Valgrind has 2 main levels of genericity.
7
8 1. Multiple tools, plus the core.
9 2. Multiple architectures, OSes, and platforms (arch/OS combinations).
10
11This file is a guide to where different things live.
12
13
14Basic layout
15------------
161. Core stuff lives in:
17    - include/              for declarations that must be seen by tools
18    - coregrind/            for code that need not be seen by tools
19
20   Some subdirs of coregrind/ hold modules that consist of multiple files.
21
22   Tool stuff lives in:
23    - $TOOL/                main files
24    - $TOOL/tests           regression tests
25    - $TOOL/docs            documentation
26
27   Other stuff lives in:
28    - docs/                 main, non-tool-specific docs
29    - tests/                regression test machinery
30    - nightly/              overnight test stuff (should be in tests/)
31    - auxprogs/             auxiliary programs
32
332. Generic things go in the directory specified in (1).
34
35   Arch-specific, OS-specific, or platform-specific things are sprinkled
36   throughout the code -- there is no single place for all the
37   architecture-specific things, for example.
38
39   Sometimes we have a whole file holding things specific to a particular
40   arch/OS/platform.  Such files have an appropriate suffix, eg.
41   sigframe-x86-linux.c.
42
43   More often we use #ifdefs inside source files to specify the different
44   cases for different archs/OSes/platforms.  It's pretty straightforward.
45
46   A final case:  arch-specific regression tests for tools go in a
47   subdirectory, eg. cachegrind/tests/x86/.
48
49
50Guide to headers
51----------------
52See coregrind/README_MODULES.txt for details of the core/tool header file
53split.
54
55Note that every single C file will #include pub_basics.h.  Every single asm
56file will #include pub_basics_asm.h.
57
58Our versions of kernel types are in the vki*.h headers.
59
60When searching for something, rgrep is very useful.  If you don't have a
61version of rgrep, use a command something like this:
62
63   find . -name '*.h' | xargs grep <pattern>
64
65   find . -name '*.h' \
66          -type f \
67          -not -path '*.svn\/*' | xargs grep "$1"
68
69The -name option gives the file wildcard, the -type says "look in normal
70files only" and the -not -path tells it to not look in Subversions hidden
71directories.
72
73