Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ cflow(1) — sys5 — Apollo Domain/IX SR9.5

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cc(1)

cpp(1)

lex(1)

lint(1)

pr(1)

yacc(1)



CFLOW(1)                 DOMAIN/IX SYS5                  CFLOW(1)



NAME
     cflow- generate C flow graph

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

DESCRIPTION
     Cflow analyzes a collection of files created by C, yacc(1),
     and lex(1) in an attempt to build a graph charting the
     external references.  (Note that DOMAIN/IX does not
     currently support cflow analysis of assembler and object
     files, although some other systems do.)

     Files suffixed in .y, .l, .c, and .i are passed through
     lex(1) and the C preprocessor (bypassed for .i files) as
     appropriate.  They are then run through the first pass of
     lint(1).  The -I, -D, and -U options of the C preprocessor
     are also understood.  The output of all this nontrivial pro-
     cessing 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 (i.e., line)
     number, followed by a suitable number of tabs indicating the
     level.  Then the name of the global (normally only a func-
     tion not defined as an external or beginning with an under-
     score; see below for the -i inclusion option), a colon, and
     its definition.

     For information extracted from C source, the definition con-
     sists of an abstract type declaration (e.g., char *), and,
     delimited by angle brackets, the name of the source file,
     and the line number where the definition was found.  Defini-
     tions extracted from object files indicate the filename and
     location counter under which the symbol appeared (e.g.,
     text).  Leading underscores in C-style external names are
     deleted.

     Once the 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
     -r        Reverse the ``caller:callee'' relationship produc-
               ing an inverted listing showing the callers of
               each function.  The listing is also sorted in lex-
               icographical order by callee.

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



Printed 12/4/86                                           CFLOW-1







CFLOW(1)                 DOMAIN/IX SYS5                  CFLOW(1)



               graph.

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

     -dnum     Use the num decimal integer to indicate the depth
               at which the flow graph is cut off.  By default
               this is a very large number.  You may not set the
               cut-off depth to a nonpositive integer.











































CFLOW-2                                           Printed 12/4/86







CFLOW(1)                 DOMAIN/IX SYS5                  CFLOW(1)



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

CAUTIONS
     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.

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

RELATED INFORMATION
     cc(1), cpp(1), lex(1), lint(1), pr(1), yacc(1).







Printed 12/4/86                                           CFLOW-3





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