Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

as(1)

cc(1)

lex(1)

lint(1)

nm(1)

pr(1)

yacc(1)



CFLOW(1)                COMMAND REFERENCE                CFLOW(1)



NAME
     cflow - generates C flow graph

SYNOPSIS
     cflow [-r] [-ix] [-i_] [ -dnum ] filename...

DESCRIPTION
     Cflow analyzes a collection of C, YACC, LEX, assembler, and
     object files and attempts to build a graph charting the
     external references.  Files suffixed in .y, .l, .c, and .i
     are YACC'd, LEX'd, and C-preprocessed (bypassed for .i
     files), respectively, and then run through the first pass of
     lint (1). (The -I, -D, and -U options of the C-preprocessor
     are also understood.) Files suffixed with .s are assembled
     and information is extracted (as in .o suffixed files) 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 number (for
     example, line number), followed by a suitable number of tabs
     indicating the level.  Then the name of the global (normally
     only a function not defined as an external or beginning with
     an underscore; see below for the -i inclusion option) a
     colon and its definition.  For information extracted from C
     source, the definition consists of an abstract type
     declaration (for example, 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 filename 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 definition may be found.  For undefined
     references, only <> is printed.

OPTIONS
     -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 flow graph.

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




Printed 4/6/89                                                  1





CFLOW(1)                COMMAND REFERENCE                CFLOW(1)



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

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

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

     the command:

          cflow file.c

     produces the 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.

DIAGNOSTICS
     Complains about bad options.

     Complains about multiple definitions and only believes the
     first.

     Other messages may come from the various programs used (for
     example, from the C-preprocessor).

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





Printed 4/6/89                                                  2





CFLOW(1)                COMMAND REFERENCE                CFLOW(1)



SEE ALSO
     as(1), cc(1), lex(1), lint(1), nm(1), pr(1), and yacc(1).





















































Printed 4/6/89                                                  3



%%index%%
na:264,82;
sy:346,312;
de:658,2224;
op:2882,663;3881,283;
ex:4164,782;
di:4946,340;
ca:5286,464;
se:6086,244;
%%index%%000000000143

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