Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ cflow(1) — sys5 — Apollo Domain/OS SR10.4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cc(1)

cpp(1)

lex(1)

lint(1)

nm(1)

yacc(1)

pr(1)

CFLOW(1)                             SysV                             CFLOW(1)



NAME
     cflow - generate C flowgraph

SYNOPSIS
     cflow [-r] [-ix] [-i_ ] [-dnum] files

DESCRIPTION
     cflow analyzes a collection of C, yacc, lex, and object files and
     attempts to build a graph charting the external references.  Files
     suffixed with .y, .l, and .c are yacced, lexed, and C-preprocessed as
     appropriate.  The results of the preprocessed files, and files suffixed
     with .i, are then run through the first pass of lint(1). Files suffixed
     with .o, have information extracted from their symbol tables. The results
     are collected and turned into a graph of external references, which is
     displayed on the standard output.

     Each line of output begins with a reference number, followed by a
     suitable number of tabs indicating the level, then the name of the global
     symbol followed by a colon and its definition.  Usually only function
     names that do not begin with an underscore are listed (see the -i
     options below). For information extracted from C source, the definition
     consists of an abstract type declaration (char, for instance), and,
     delimited by angle brackets, the name of the source file and the line
     number where the definition was found.  Definitions extracted from object
     files indicate the file name and location counter under which the symbol
     appeared (e.g., 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
     definition may be found.  For undefined references, only <> is printed.

OPTIONS
     In addition to the -D, -I, and -U options [which are interpreted just as
     they are by cc(1) and cpp(1)], the following options are interpreted by
     cflow:

     -r        Reverses the "caller:callee" relationship producing an inverted
               listing showing the callers of each function.  The listing is
               also sorted in lexicographical order by callee.

     -ix       Includes external and static data symbols. The default is to
               include only functions in the flowgraph.

     -i_       Includes names that begin with an underscore. The default is to
               exclude these functions (and data if -ix is used).

     -dnum     The num decimal integer indicates the depth at which the
               flowgraph is cut off.  By default this is a very large number.
               Attempts to set the cutoff depth to a nonpositive integer will
               be ignored.

EXAMPLE
     As an example, given the following in file.c:

          int  i;

          main()
          {
               f();
               g();
               f();
          }

          f()
          {
               i = h();
          }

     the command

          cflow -ix file.c

     produces the 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 output of cflow can be piped
     to pr(1), using the -e option, to compress the tab expansion to something
     less than every eight spaces.

DIAGNOSTICS
     Notifies you of bad options.  Complains about  multiple  definitions  and
     only  believes  the  first.   Other  messages  may  come from the various
     programs used (e.g., the C-preprocessor).

BUGS
     Files produced by lex(1) and yacc(1) cause the reordering of line  number
     declarations  which can confuse cflow.  To get proper results, feed cflow
     the yacc or lex input.

SEE ALSO
     cc(1), cpp(1), lex(1), lint(1), nm(1), yacc(1).
     pr(1) in Using Your SysV Environment.

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026