cflow(1)cflow(1)Namecflow - generate C flow graph
Syntaxcflow [-r] [-ix] [-i_] [-dnum] files
Description
The command analyzes a collection of C, YACC, LEX, assembler, and
object files and attempts to build a graph charting the external refer‐
ences. Files suffixed in .y, .l, .c, and .i are YACC'd, LEX'd, and C-
preprocessed (bypassed for .i files) as appropriate and then run
through the first pass of The -I, -D, and -U options of the C-pre‐
processor are also understood. Files suffixed with .s are assembled
and information is extracted from the symbol table. The output of all
this non-trivial processing is collected and turned into a graph of
external references which is displayed upon the standard output.
Each line of output begins with a reference, or line, number, followed
by a suitable number of tabs indicating the level. Following the ref‐
erence number is the name of the global, a colon, and the global's def‐
inition. (See the option for information on names that begin with an
underscore.) For information extracted from C source, the definition
consists of an abstract type declaration (for example, char ∗), and,
the name of the source file and the line number where the definition
was found. The name of the source file and the line number are delim‐
ited by angel brackets. Definitions extracted from object files indi‐
cate the file name and location counter under which the symbol appeared
(for example, text). Leading underscores in C-style external names are
deleted.
Once a definition of a name has been printed, subsequent references to
that name contain only the reference number of the line where the defi‐
nition may be found. For undefined references, only <> is printed.
The following is an example in file.c:
int i;
main()
{
f();
g();
f();
}
f()
{
i = h();
}
The command
cflow-ix file.c
produces the following output:
1 main: int(), <file.c 4>
2 f: int(), <file.c 11>
3 h: <>
4 i: int, <file.c 1>
5 g: <>
When the nesting level becomes too deep, the -e option of can be used
to compress the tab expansion to something less than every eight spa‐
ces.
Options-dnum The num decimal integer indicates the depth at
which the flow graph is cut off. By default this
is a very large number. Attempts to set the cutoff
depth to a nonpositive integer will be met with
contempt.
-i_ Includes names that begin with an underscore. The
default is to exclude these functions (and data if
-ix is used).
-ix Includes external and static data symbols. The
default is to include only functions in the flow
graph.
-r Reverse the ``caller:callee'' relationship produc‐
ing an inverted listing showing the callers of each
function. The listing is also sorted in lexico‐
graphical order by callee.
Restrictions
Files produced by and cause the reordering of line number declarations
which can confuse To get proper results, feed the or input.
Diagnostics
Complains about bad options. Complains about multiple definitions and
only believes the first. Other messages may come from the various pro‐
grams used (for example, the C-preprocessor).
See Alsoas(1), cc(1), lex(1), lint(1), nm(1), pr(1), yacc(1)cflow(1)