Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ cflow(1) — Dell System V Release 4 Issue 2.2

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

as(1)

cc(1)

lex(1)

lint(1)

nm(1)

yacc(1)

pr(1)



cflow(1)              UNIX System V(Advanced C Utilities)              cflow(1)


NAME
      cflow - generate C flowgraph

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

DESCRIPTION
      The cflow command analyzes a collection of C, yacc, lex, assembler, and
      object files and builds a graph charting the external function
      references.  Files suffixed with .y, .l, and .c are processed by yacc,
      lex, and the C compiler as appropriate.  The results of the preprocessed
      files, and files suffixed with .i, are then run through the first pass of
      lint.  Files suffixed with .s are assembled.  Assembled files, and files
      suffixed with .o, have information extracted from their symbol tables.
      The results are collected and turned into a graph of external references
      that is written 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.  Normally 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 (e.g., char *), 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.

      As an example, suppose the following code is in file.c:

            int   i;
            main()
            {
                  f();
                  g();
                  f();
            }
            f()
            {
                  i = h();
            }

      The command

            cflow -ix file.c

      produces the output




10/89                                                                    Page 1







cflow(1)              UNIX System V(Advanced C Utilities)              cflow(1)


            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 the pr command, using the -e option, to compress the tab expansion to
      something less than every eight spaces.

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

      -r     Reverse 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    Include external and static data symbols.  The default is to
             include only functions in the flowgraph.

      -i    Include 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 number is very large.  Attempts to
             set the cutoff depth to a nonpositive integer will be ignored.

SEE ALSO
      as(1), cc(1), lex(1), lint(1), nm(1), yacc(1)
      pr(1) in the User's Reference Manual

DIAGNOSTICS
      Complains about multiple definitions and only believes the first.

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
















Page 2                                                                    10/89





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