@@ -35,11 +35,9 @@ containing the code for a different part of the system.
35
35
- Tools
36
36
37
37
* \ref cbmc
38
- * \ref clobber
39
38
* \ref goto-analyzer
40
39
* \ref goto-instrument
41
40
* \ref goto-diff
42
- * \ref memory-models
43
41
* \ref goto-cc
44
42
* \ref jbmc
45
43
@@ -84,3 +82,124 @@ develop regression tests.
84
82
The ` unit/ ` directory contains the unit test suites. See
85
83
\ref compilation-and-development for information on how to run and
86
84
develop unit tests.
85
+
86
+ ## Directory dependencies ##
87
+
88
+ This diagram shows * intended* directory dependencies. Arrows should
89
+ be read transitively - dependencies of dependencies are often used
90
+ directly.
91
+
92
+ There are ` module_dependencies.txt ` files in each directory,
93
+ which are checked by the linter. Where directories in ` module_dependencies.txt `
94
+ are marked with comments such as 'dubious' or 'should go away', these
95
+ dependencies have generally not been included in the diagram.
96
+
97
+ \dot
98
+ digraph directory_dependencies {
99
+ node [ style = filled, color = white] ;
100
+
101
+ subgraph cluster_executables {
102
+ label = "Executables";
103
+ style = filled;
104
+ color = lightgrey;
105
+ node [ style = filled, color = white] ;
106
+ CBMC [ URL = "\ref cbmc"] ;
107
+ goto_cc [ label = "goto-cc", URL = "\ref goto-cc"] ;
108
+ goto_analyzer [ label = "goto-analyzer", URL = "\ref goto-analyzer"] ;
109
+ goto_instrument [ label = "goto-instrument", URL = "\ref goto-instrument"] ;
110
+ goto_diff [ label = "goto-diff", URL = "\ref goto-diff"] ;
111
+ janalyzer [ URL = "\ref janalyzer"] ;
112
+ jdiff [ URL = "\ref jdiff"] ;
113
+ JBMC [ URL = "\ref jbmc"] ;
114
+ smt2_solver;
115
+ }
116
+
117
+ subgraph cluster_symbolic_execution {
118
+ label = "Symbolic Execution";
119
+ style = filled;
120
+ color = lightgrey;
121
+ node [ style = filled, color = white] ;
122
+ goto_symex [ label = "goto-symex", URL = "\ref goto-symex"] ;
123
+ }
124
+
125
+ subgraph cluster_abstract_interpretation {
126
+ label = "Abstract Interpretation";
127
+ style = filled;
128
+ color = lightgrey;
129
+ node [ style = filled, color = white] ;
130
+ pointer_analysis [ label = "pointer-analysis", URL = "\ref pointer-analysis"] ;
131
+ analyses [ URL = "\ref analyses"] ;
132
+ }
133
+
134
+ subgraph cluster_goto_programs {
135
+ label = "Goto Programs";
136
+ style = filled;
137
+ color = lightgrey;
138
+ goto_programs [ label = "goto-programs", URL = "\ref goto-programs"] ;
139
+ linking [ URL = "\ref linking"] ;
140
+ }
141
+
142
+ subgraph cluster_solvers {
143
+ label = "Solvers"
144
+ style = filled;
145
+ color = lightgrey;
146
+ solvers [ URL = "\ref solvers"] ;
147
+ }
148
+
149
+ subgraph cluster_languages {
150
+ label = "Languages";
151
+ style = filled;
152
+ color = lightgrey;
153
+ ansi_c [ label = "ansi-c", URL = "\ref ansi-c"] ;
154
+ langapi [ URL = "\ref langapi"] ;
155
+ cpp [ URL = "\ref cpp"] ;
156
+ jsil [ URL = "\ref jsil"] ;
157
+ java_bytecode [ URL = "\ref java_bytecode"] ;
158
+ }
159
+
160
+ subgraph cluster_utilities {
161
+ label = "Utilities";
162
+ style = filled;
163
+ color = lightgrey;
164
+ big_int [ label = "big-int", URL = "\ref big-int"] ;
165
+ miniz [ URL = "\ref miniz"] ;
166
+ util [ URL = "\ref util"] ;
167
+ nonstd [ URL = "\ref nonstd"] ;
168
+ json [ URL = "\ref json"] ;
169
+ xmllang [ URL = "\ref xmllang"] ;
170
+ assembler [ URL = "\ref assembler"] ;
171
+ }
172
+
173
+ JBMC -> { CBMC, java_bytecode };
174
+ jdiff -> { goto_diff, java_bytecode };
175
+ janalyzer -> { goto_analyzer, java_bytecode };
176
+ CBMC -> { goto_instrument, jsil };
177
+ goto_diff -> { goto_instrument };
178
+ goto_analyzer -> { analyses, jsil, cpp };
179
+ goto_instrument -> { goto_symex, cpp };
180
+ goto_cc -> { cpp, jsil };
181
+ smt2_solver -> solvers;
182
+
183
+ java_bytecode -> { analyses, miniz };
184
+ jsil -> linking;
185
+ cpp -> ansi_c;
186
+ ansi_c -> langapi;
187
+ langapi -> goto_programs;
188
+
189
+ goto_symex -> { solvers, pointer_analysis };
190
+
191
+ pointer_analysis -> { analyses, goto_programs };
192
+ analyses -> pointer_analysis;
193
+
194
+ solvers -> util;
195
+
196
+ linking -> goto_programs;
197
+ goto_programs -> { linking, xmllang, json, assembler };
198
+
199
+ json -> util;
200
+ xmllang -> util;
201
+ assembler -> util;
202
+ util -> big_int;
203
+ util -> nonstd;
204
+ }
205
+ \enddot
0 commit comments